这两年,人工智能已经火到了全民皆知的地步。随着阿尔法狗声名鹊起之后,无人驾驶、人脸识别、邮箱分类、图片美化、声纹识别等人工智能的产物都进入了大家的视线。大家都对人工智能的前景很看好。其中不乏一些想入门人工智能的学生和IT类职员。
本文并不是给大家上人生课,用机器学习的语言来说,我这篇文章不是分类文,而是回归文。也就是说,具体要不要入门人工智能,大家要自己想好了,如果已经坚定了信念,今后要在人工智能的路上走下去的话,恭喜你,你至少已经成功了四分之一。我结合着自己在人工智能领域的经验,给大家分享下该如何入门人工智能,希望能够帮助处于迷茫中的人群。
人工智能只是一个大领域,他拥有两个小领域,一个是机器学习,另一个是深度学习。那么同学们是不是一入门,就要抉择是选择深度学习还是机器学习呢? 一入门就选的话,估计同学们会很痛苦,还好,这个时候并不需要选择,因为深度学习是机器学习的子类,换句话说就是,想要学习深度学习,机器学习的部分知识你也是要掌握的。那么摆在大家面前的就只剩下一条路了,先学习机器学习!
我不会像很多文章那样列举几十个链接堆在那,毫无前后关系,内容多的让人崩溃。我结合着自己学习的心路历程,推荐几个经典的东西,让大家优雅的入门。
数学基础部分
学习机器学习,要有一些数学基础,好在要求的数学基础都是高中及大学的层次,相信大家都学过。即使忘了,再去寻找以前的记忆也相对容易一些。我列举下必备的知识。
1.线性代数(矩阵、特征值、特征向量、秩)
2.微积分(极限、导数、拉格朗日中值、泰勒级数展开)
3.统计学 (相关性分析、期望、方差、分布、指标)
注:很多文章都说凸优化的知识,其实凸优化多数都是用在研究领域,对于刚入门作用不大,暂时不建议大家看。
书籍方面:去翻下大学相关课程教材即可。不建议从头开始学,很耗时,去翻翻上面说的几部分内容就可以。如果觉得不够可以再去看看吴军的《数学之美》和李航的《统计学习方法》。这两本书还是比较经典的。
视频方面:我录制了一门机器学习入门的课,感兴趣的话,可以看下。
Python语言基础
现在机器学习中,Python语言用的居多。如果你是程序员出身,已经有过Python,C++,Java语言的话,这一步就很简单了。如果你现在还不懂编程语言,也没关系,Python是一门很简单的语言。Python语言其实也有难点,但好在机器学习里面用不上,是不是有难以掩饰的激动【劫后余生脸】.相信大家经过1周时间基本就可以应用了。我给同学们列举下该学习哪部分。
基础部分:推荐给大家一个网上的教程,如果这个链接失效了,也可以自己在搜索引擎上搜《Python3教程》关键字(这里推荐大家学习Python3,如果已经有了Python2的基础,也可以忽略) https://m.runoob.com/python3/。
模块部分:Numpy、Pandas、Matplotlib。这几个是需要大家掌握的。大家自己在搜索引擎上搜。如果我以后发现好的这方面的文章,再推荐给大家。
视频方面:我也录制了一门Python基础入门的课,就是针对这三个模块进行的讲解。感兴趣的话,可以看下。
其他的呢,可以看下scikit-learn这个模块。他是机器学习的一个Python库。有很多机器学习方面的模型,用scikit-learn可以很快的实现。大家也可以在了解机器学习之后,再学习也可以。
机器学习基础
这一部分内容还是很多的,讲的都是一些经典的入门算法,大家要好好的感受下这些算法的精髓。
线性回归、梯度下降、逻辑回归
决策树和随机森林(ID3、C4.5、CART、GBDT、RandomForest)
SVM (软间隔、损失函数、核函数、SMO算法、libSVM)
聚类(K-Means、聚谱类SC)
EM算法(最大似然估计、Jensen不等式、混合高斯分布、主题模型pLSA)
主题模型LDA
隐马尔可夫模型
书籍方面:Andrew Ng — Machine Learning Coursera from Stanford
视频方面:我也录制了一门机器学习基础入门的课。
有了上面的基础,选择一门由浅入深的课程来学习。基础打下后,对机器学习已经有了充足的了解,可以用机器学习来解决一个实际的问题。解决实际问题的时候,可能涉及到上面基础部分的延伸,相信有了上面的基础部分,再继续学习起来就容易很多。通过实战经验积累以后,可以考虑继续进行学习。这时候有两个选择,深度学习或者继续机器学习。深度学习是目前最火热的机器学习方向,这里推荐大家选择TensorFlow框架。它是谷歌公司的开源框架,虽然说并不是最早的,但是无论它背后的技术沉淀,还是它的更新速度都是好的。也在开源的众多深度学习的框架中遥遥领先。深度学习其中一些方法已经跟传统的机器学习不太一样,因此可以单独学习。除了深度学习以外,机器学习还包括统计学习,集成学习等实用方法。如果条件足够,可以同时学习两者,一些规律对两者是共通的。学习完后,你已经具备了较强的知识储备,可以进入较难的实战。这时候有两个选择,工业界的可以选择看开源项目,以改代码为目的来读代码;学术界的可以看特定领域的论文,为解决问题而想发论文。无论哪者,都需要知识过硬,以及较强的编码能力,因此很能考察和锻炼水平。经过这个阶段以后,可以说是踏入AI领域的门了。
入门之后也算是值得高兴了,但是你离精通其实还有很远的一段路要走,想要在这个行业长久地活下去,内功的修炼要比外功重要得多,不然会活得很累,也很难获得一个优秀的晋升空间。入门之后,赶快找一家公司去工作。在工作中会把你学习的知识融会贯通。而且刚步入公司,也会有一些大拿级别的人带你。这样的话,对你今后的发展都有很大的帮助。
另外列举一些面试中经常考的知识点。
线性回归数学推导
可用性评估:获取难度、覆盖率、准确率
特征清洗:清洗异常样本
采样:数据不均衡、样本权重
单个特征:无量纲化(标准化、归一化)、二值化、离散化、缺失值(均值)、哑编码(一个定性特征扩展为N个定量特征)
数据变换:log、指数、Box-Cox 降维:主成分分析PCA、线性判别分析LDA、SVD分解
特征选择:Filter(相关系数、卡方检验)、Wrapper(AUC、设计评价函数A*、Embedded(L1-Lasso、L2-Ridge、决策树、DL)
原文地址:http://blog.51cto.com/12133258/2054718