当前位置: 首页 > 学习社区 > 转行经历 > 文章

转行AI之学习方法分享

霍华德 2019-04-01 15:10 1212

初学机器学习可能有一个误区,就是一上来就陷入到对各种高大上算法的追逐当中。动不动就我能不能用深度学习去解决这个问题啊?我是不是要用boosting算法做一些模型融合啊?我一直持有一个观点,『脱离业务和数据的算法讨论是毫无意义的』。

实际上按我们的学习经验,从一个数据源开始,即使是用最传统,已经应用多年的机器学习算法,先完整地走完机器学习的整个工作流程,不断尝试各种算法深挖这些数据的价值,在运用过程中把数据、特征和算法搞透,真正积累出项目经验 才是最快、最靠谱的学习路径。

那如何获取数据和项目呢?一个捷径就是积极参加国内外各种数据挖掘竞赛,数据直接下载下来,按照竞赛的要求去不断优化,积累经验。国外的Kaggle和国内的DataCastle 以及阿里天池比赛都是很好的平台,你可以在上面获取真实的数据和数据科学家们一起学习和进行竞赛,尝试使用已经学过的所有知识来完成这个比赛本身也是一件很有乐趣的事情。和其他数据科学家的讨论能开阔视野,对机器学习算法有更深层次的认识。

有意思的是,有些平台,比如阿里天池比赛,甚至给出了从数据处理模型训练模型评估可视化模型融合增强的全部组件,你要做的事情只是参与比赛,获取数据,然后使用这些组件去实现自己的idea即可。不废话,直接划重点上干货。如果你觉得机器学习难,那一定是你打开的方式不对(认真脸)。

机器学习看似难度大,但对入门者来说,也还是有一条通用的学习路径。正如前几个专栏里介绍的,还有很多优秀的入门资料可以大大降低学习门槛,同时激发学习的乐趣。

简单的说,学习方法大概如下:

编程技能
机器学习知识-----动手实践撸代码-----数据科学比赛-----实际项目经验
数学基础

机器学习是一个将理论算法与计算机工程技术紧密结合的领域,你需要扎实的理论基础来帮助你分析数据,同业是需要工程能力去开发模型和部署服务。所以需要【编程技能】【机器学习知识】【数学基础】三个方面军齐头并进,才能最终夺取胜利的果实。

转行AI的人里也可以分三类,一类是程序员出身,具有很好的工程经验;一类是统计学数学电子通信类出身,具有较为扎实的理论基础;还有一类既没有丰富的编程经验也没有扎实理论基础,例如我们学材料的...这三类同学入门AI,需要加强的部分是不一样的。

1.编程技能-python

Life is short, I use python!

在google, facebook等巨头钦定之后,人工智能领域的当红辣子鸡莫过于python。Python的工具库还是满全的,从数据获取到数据清理和机器学习算法应有尽有。与R相比,更加全面。

对于python, 除掌握其自身语法外,还应该着重掌握下面这些库:

pandas:超级excel,表格式操作数据,数据清洗和预处理的强大工具。

numpy:数值计算库,快的不要不要的。

matplotlib:模仿MATLAB的数据可视化工具。

scikit-learn:封装超级好的机器学习库,一些简便的算法用起来不要太顺手。

ipython notebook:数据科学家和算法工程师的笔记本,强力推荐。


2.数学基础

微积分:是机器学习中的核心知识之一,无论是梯度下降法中的求梯度还是反向传播中的误差传递的推导都需要用到微积分。

线性代数:神经网络中大量的计算都是矩阵乘法,这就需要用到线性代数的知识了。计算向量的余弦相似度也要用到内积运算。此外,矩阵的各种分解办法也出现在主成分分析和奇异值分解中。

概率论与统计学:广义的说,机器学习的核心是统计推断。所以机器学习的巨头不少都是统计学大师,如迈克尔乔丹,杨乐坤,辛顿等。机器学习中大量的用到贝叶斯公式,隐马尔科夫模型等等。

诚然,数学很重要,但是我建议,具有本科数学基础的你,不要花费太多时间去刷数学书,这是南辕北辙,最好的办法还是直捣黄龙学习机器学习算法,到了看不懂的地方再去补充相应的数学知识,斯坦福的教程里就有大量的数学补充材料,很多时候读明白这些补充材料就够了。


3.项目经验

一个误区:很多新手初学机器学习,上来就追求复杂的深度学习模型和高大上的算法如AlexNet, ResNet。tensorflow和keras各种API全部调用一遍,却不知道自己在干什么,俗称调包侠。

一个观点:脱离实际业务和数据的算法都是空中楼阁。

一条路径:按照我的学习经验,从数据清洗到特征工程,再用最传统的算法把整个流程走一遍,不断的比较和尝试各种算法,把特征和算法搞透,才是最快最靠谱的学习方法。

两个项目:国外的Kaggle阿里云天池都是获取项目经验的好途径。我的建议是每个入门机器学习的人都应该参加两个项目。一个传统机器学习应用场景的项目,如阿里移动推荐算法。通过传统应用场景熟悉逻辑斯特回归,支持向量机和梯度增强决策树等算法。一个深度学习应用场景的项目,如肺癌识别和诊断,通过深度学习应用场景熟悉深度学习各种算法的优势和应用场景。

就说这么多,大家放手去干吧!