写给想转行机器学习深度学习的同学

choice-2692575_960_720.jpg

update 1:很多同学还是私信我,让我推荐或者提供一些电子书给他们,我这边也打包了一些我认为比较重要的,如果有需要的同学可以「邮箱」联系我。申明,我所发送的书个人均已购买正版实体书,建议大家也支持正版,谢谢。


自从我毕业以来,先是火机器学习,然后火大数据,之后火深度学习,现在火人工智能这些算法领域。越来越多的朋友想从工业,金融等等行业转行到算法相关的行业,我一年前在知乎上写了一个答案本科生怎样通过努力拿到较好的机器学习/数据挖掘相关的offer?,当时拿了不少的赞,所以也一直有同学找我咨询相关的问题,确确实实也有相当一批人拿到了不错的offer。

我个人不是很喜欢更新非技术的文章,但是我还是觉得如果能帮助到一些人,其实也是另一种技术输出的展现,所以我就写下了下面这篇短文,希望对迷茫的人有所帮助。

评估转行难度

今天一大早,我在刷知乎的时候,刷到这个题目非计算机专业学生如何转行AI,并找到算法offer?,我看到这个叫做BrianRWang的答主的一个“10问检验你的基础水平”,我觉得是至少我看来非常全面考验数学基础的,所以这边就和大家分享一下(答案我会在最后给出,有兴趣的最好自己做一下,括号里面的我个人觉得没有意义所以没有给出解释,有兴趣的却又解不出来的同学可以私信我):

1.什么是贝叶斯定理?请简述其公式?现分别有 A,B 两个容器,在容器 A 里分别有 7 个红球和 3 个白球,在容器 B 里有 1 个红球和 9 个白球,现已知从这两个容器里任意抽出了一个球,且是红球,问这个红球是来自容器 A 的概率是多少?

这题考了概率论的基础,虽然考了贝叶斯,但是后面的容器问题完全可以不用贝叶斯也可以算出来,算是一题数学敏感度的测试题,看看自己适不适合去努力切入这个方向。

2.请简述卡方分布和卡方检验的定义?(给你一个2*2的列表让你算卡方分布,你会怎么做?)

这题考了梳理统计的基础,括号里面的我个人觉得没有意义,有兴趣的可以查表算一下。

3.在概率统计学里,自由度是如何被定义的,又该怎样去应用?

原作者BrianRWang认为这题比较偏,属于冷门题目。个人看法:其实我觉得如果是任何一个理工科的同学,这题都应该能答出来,大学的课程里,自由度的理解直接决定了统计科目大家的学习质量。

以上的三题考了概率论与数理统计的基础,在机器学习理论中,概率论和数理统计的基础是否扎实直接决定了能否很好的理解各个理论的前置条件,适用场景,提升方向等,着实重要。

4.请简述什么是线性代数里的矩阵特征值和特征向量?(求矩阵:A=np.array([[1,2],[3,4]])的特征值,特征向量,写出其运算公式)

线性代数题目,很简单给出对应的公式即可,我在SVD介绍的时候就完全讲过。如果换成,如何理解特征值及特征向量在空间中的实际意义,这题就会变得非常卡人。

5.如何使用级数分解的方法求解e^x?(并给出在数值计算中可能遇到的问题。)

数学分析的题目,一个公式。

以上的题目都是线性代数,数学分析的题目,都是比较考验大学的基本功,如果不记得也很正常,只要能说出大概的思想就行,比如空间选择啊,点导数展开。

6.数据结构的定义是什么?运用数据结构的意义是什么?

计算机题,这题应该是几个问答中最简单的了。

7.请说明至少两种用于数据可视化(data visualization)的package。并且说明,在数据分析报告里用数据可视化的意义是什么?

前一问如果主动接触过计算科学的人这题比较好答,如果是纯新手,这题就是无从下手的。后面一小问也是属于考察你的数据敏感度的,如果能够match到一些点,很加分。

8.假如让你用编程方法,比如python,处理一个你没见过的数学问题,比如求解一个pde或者整快速傅里叶变换,你应该查什么东西,找哪一个package的参考资料?

同上一条前一部分。

9.请简述面向对象编程和函数式编程分别的定义,并举出其案例。

计算机题,考了基础的编程的一些风格的了解程度,说实话,这题我第一次看到也很懵,还去Google了一下。

原作者还有一个第10题,不涉及技术,我就没放。以上四题更偏向coding的能力,虽然说算法工程师、数据挖掘工程师、NLP工程师,等等,都是挂着科研的title,但是过硬的coding能力是完全不能缺少的,要其他人把很复杂的数学理论用代码帮你实现出来的交流成本巨大,我觉得精通或者熟悉至少一门语言还是非常重要的。

原作者认为:

以上提问如果能闭卷对7个及以上,证明一个学生的基础还是比较好的。只要聪明肯学,一定是有所裨益的。在7个,到3个之间,不妨提高一下自己的数学水平;努努力还是可以学会机器学习的。如果写对不了两个(“这都啥啊?”),郴州勃学院复读班欢迎你过去。

其实我还是比较认同的,答对3个或者2.5个以上的同学,完全可以试一试转一转,我觉得不存在说入不了门的情况。能答对7个或者7.5以上的同学,我觉得可以投简历了,如果我收到你的简历,即便是你没有历史的工作经验,我很愿意让你试一试的。

一些资料

很多转行的朋友会问我,到底看什么书会比较好,我刚开始会推荐一堆,后来自己想了想发现,还是太天真,大家工作忙的要死,看一本就很难了,别说一堆。

我最后就浓缩了三本::周志华老师的西瓜书(《机器学习》周志华 清华大学出版社),李航的带你玩转基础理论(《统计学习方法》李航 清华大学出版社),经典厕所读物(《数学之美》吴军 人民邮电出版社)。

确实是很经典很经典的书,我现在基本上每次必回答以上三本。

除此之外,在coursera上找吴恩达(Andrew Ng)教授的机器学习课程,他把要用到的数学知识也做了简单的讲解,机器学习方面的理论和算法讲的也很详细,而且很基础,肯定可以看懂。Machine Learning | Coursera,应该是最适合看的视频类的资料没有之一。

我不反对也不支持大家去参加几千几万的速成班,几十几百的live课程,但是我觉得你不妨先看完以上的书和视频再做决定,一定不会让你失望。之前我一直在给team做吴恩达(Andrew Ng)在线课程的分享,一直到最近我发现不如整理出来给team以外的大家一起看算了,所以在Gradient Checking(9-5)这节课之后的所有课程,如果有价值的地方,我都做了笔记后面会分享在我的GitHub中,希望给大家一些帮助。

最后,希望我们都不负自己的青春。

附录:
1.BrianRWang的十条问题的答案链接
2.吴恩达(Andrew Ng)Gradient Checking(9-5)这节课之后的课程整理(持续更新中)

打赏的大佬可以联系我,赠送超赞的算法资料