前言
近年来.
随着 Google 的 AlphaGo 打败韩国围棋棋手李世乭[shí]之后.
机器学习尤其是深度学习的热潮席卷了整个IT界.
所有的互联网公司.
尤其是 Google 微软.百度.腾讯等巨头.
无不在布局人工智能技术和市场.
百度.腾讯.阿里巴巴.京东.等互联网巨头甚至都在美国硅谷大肆高薪挖掘人工智能人才.
现在在北京.只要是机器学习算法岗位.少则月薪 20k.甚至100k 以上
不错.新时代时代来了.
我们从互联网
走向移动互联网
.
现在又从移动互联网
走向人工智能时代
.
业内有人称这一次的人工智能爆发是互联网3.0时代
的开启.
所以现在搞IT开发的工程师的不懂机器学习.
就相当于低级程序员.赶紧从基础学起.入门机器学习.
走进人工智能的大门
20世纪50-70年代
.人工智能提出后.力图模拟人类智慧.
冷却原因:
1. 过分简单的算法,
2. 匮乏的难以应对不确定环境的理论.
3. 计算能力的限制.
20世纪80年代
.人工智能的关键应用——”专家系统”得以发展.
冷却原因:
1. 数据较少.
2. 难以捕捉专家的隐性知识.
3. 建造和维护大型系统的复杂性和成本太高
20世纪90年代
神经网络
,遗传算法
等科技”进化”出许多解决问题的最佳方案.
21世纪前10年
.复兴人工智能研究进程的各种要素,推动人工智能在20世界20年代进入快速增长时期.
1. 摩尔定律
2. 大数据
3. 云计算
4. 新算法
预计未来十年.会在一些难以逾越的困惑中迎来奇点时代
的爆发式增长.
人工智能(AI)问世之初曾经狂妄自大,令人失望.
它如何突然变成当今最热门的技术领域?
这个词语首次出现在1956年
的一份研究计划书中.
该计划书写道:
只要精心挑选一群科学家.
让他们一起研究一个夏天.
就可以取得重大进展.
使机器能够解决目前只有人类才能解决的那些问题.”
至少可以说.这种看法过于乐观.
尽管偶有进步.但AI在人们心目中成为了言过其实的代名词.
以至于研究人员基本上避免使用这个词语.宁愿用"专家系统"
或者"神经网络"
代替.
“AI”的平反和当前的热潮可追溯到2012年
的ImageNet Challenge在线竞赛
.
ImageNet
是一个在线数据库
.包含数百万张图片.全部由人工标记.
每年一度的ImageNet Challenge竞赛旨在鼓励该领域的研究人员比拼和衡量他们在计算机自动识别和标记图像方面
的进展.
他们的系统首先使用一组被正确标记的图像进行训练.然后接受挑战.
标记之前从未见过的测试图像.
在随后的研讨会上.获胜者分享和讨论他们的技术.
72%
(人类平均为95%).杰夫·辛顿(Geoff Hinton)
领导的一支团队凭借一项名为"深度学习"的新技术
大幅提高了准确率.达到85%
.ImageNet Challenge竞赛
中.这项技术使准确率进一步提升至96%
.首次超越人类.不错.这一切都归功于一个概念:" 深度学习(Deep Learning) "
.
虽然2016年之前.深度学习技术已经火了起来.
但是真正大爆发的事件却是
2016年
Google在韩国首尔举行的人工智能机器人AlphaGo与围棋九段选手李世石之间的人机五翻棋大战.
最终人类最强选手输给了机器人.
曾几时何.人们认为围棋是人类棋牌类游戏的最后的尊严阵地.
就这样在人工智能轻松地攻陷了人类智力的最后一块阵地!
这件事震惊了所有人.
从这以后.全球学术界和工业界都躁动了.
巨头们都在加紧布局人工智能:
Google
挖来了神经网络算法
的奠基人,深度学习之父
Geoffrey Hinton
;Facebook
则挖到了Hinton
的学生.卷积神经网络(CNN)
的奠基人Yann LeCun
;微软
也是说动了一直保持中立留在学术界的深度学习领域三大牛的最后一位Yoshua Bengio
. 百度
,阿里
,腾讯
,京东
,滴滴
,美团
等也都在布局AI
. AI
上已经All In
了.入门AI.机器学习
是必须要学习的.
可以这么说:机器学习是人工智能的基石和精髓.
只有学好了机器学习算法原理和思想.
你才算真正的入门人工智能.
但是.对于非专业的半路出家的你们该如何入门?
这个问题其实很难回答.
因为每个人的目标不一样.
技术基础和数学基础也都不一样.
所以因人而异.
但是通常来说.
学习机器学习算法.
需要的必备知识还是可以罗列的.
机器学习的学习过程
1. 数学基础 经典算法学习 编程技术
2. 实现简单算法代码
3. 数据科学竞赛(kaggle)
4. 实际工作项目
之所以最左边写了『数学基础』 『经典算法学习』 『编程技术』 三个并行的部分.
是因为机器学习是一个将数学
,算法理论
和工程实践
紧密结合的领域.
需要扎实的理论基础帮助引导数据分析
与模型调优
.
同时也需要精湛的工程开发能力
去高效化地训练
和部署
模型和服务.
在互联网领域从事机器学习的人基本上属于以下两种背景:
1. 绝大部分是程序员出身.这类童鞋工程经验相对会多一些;
2. 另一部分是学数学统计领域的.这部分童鞋理论基础相对扎实一些.
因此对比上图.这二类童鞋入门机器学习.所欠缺和需要加强的部分是不一样的.
曾经有无数的满怀激情.誓要在机器学习领域有一番作为的同学.
在看到公式的一刻突然就觉得自己狗带了.
是的.机器学习之所以门槛高并且显得高大上的主要原因就是数学.
每一个算法.要在训练集上最大程度拟合同时又保证泛化能力.
需要不断分析结果和数据.调优参数
.
这需要我们对数据分布
和模型底层的数学原理
有一定的理解.
所幸的是如果只是想合理应用机器学习
.而不是做相关方向高精尖的研究.
所需要的数学知识读完本科的理工科童鞋还是能很容易的把这些数学知识学明白的.
基本所有常见机器学习算法需要的数学基础.
都集中在微积分
,线性代数
和概率与统计
当中.
下面我们先过一过知识重点.文章的后部分会介绍一些帮助学习和巩固这些知识的资料.
微分的计算及其几何,物理含义是机器学习中大多数算法的求解过程的核心.
比如算法中运用到梯度下降法
,牛顿法
等.
如果对其几何意义有充分的理解.就能理解
梯度下降是用平面来逼近局部.
牛顿法是用曲面逼近局部
能够更好地理解运用这样的方法.
凸优化
和条件最优化
的相关知识在算法中的应用随处可见.
如果能有系统的学习将使得你对算法的认识达到一个新高度.
大多数机器学习的算法要应用起来.依赖于高效的计算
.
这种场景下.程序员童鞋们习惯的多层for循环通常就行不通了.
而大多数的循环操作可转化成矩阵之间的乘法运算
.
这就和线性代数
有莫大的关系了.
向量
的内积运算
更是随处可见.
矩阵乘法与分解
在机器学习的主成分分析(PCA)
和奇异值分解(SVD)
等部分呈现刷屏状地出现.
在机器学习领域.有相当多的应用与奇异值分解
都有非常紧密的联系.
1. 机器学习中常做feature reduction
的PCA
.
2. 做数据压缩(以图像压缩为代表)的算法.
3. 做搜索引擎语义层次检索的LSI(Latent Semantic Indexing)
从广义来说.机器学习在做的很多事情.和统计层面数据分析和发掘隐藏的模式.是非常类似的.
以至于传统的机器学习很大一部分被称作统计学习理论
.
这充分说明了统计学在机器学习领域的重要性.
理论基础
1. 极大似然思想
2. 贝叶斯模型
高级形态
1. 朴素贝叶斯( )
2. 语言模型( )
3. 隐马尔科夫( )
4. 隐变量混合概率模型
常见分布如高斯分布
是混合高斯模型( )
等的基础.
机器学习中有很多的经典算法:
1. 感知机.
2. KNN.
3. 朴素贝叶斯.
4. K-Means.
5. SVM.
6. AdaBoost.
7. EM.
8. 决策树.
9. 随机森林.
10. GDBT.
11. HMM
算法这么多.那么对于初学者应该怎么学习呢?
我的答案是:分门别类很重要
.
基本上.对机器学习算法的分类普遍的观点是分为三大类:
1. 有监督学习.
2. 无监督学习.
3. 强化学习.
有监督学习是指进行训练的数据包含两部分信息:
特征向量 + 类别标签
.也就是说.
他们在训练的时候每一个数据向量
所属的类别
是事先知道的.
在设计学习算法的时候.
学习调整参数
的过程会根据类标进行调整.
类似于学习的过程中被监督了一样.
而不是漫无目标地去学习.
故此得名.
下图中.
不同颜色的点代表不同的类别.
直线就是我们学习出来的分界面
(也叫学习器.分类器)
相对于有监督而言.无监督方法的训练数据没有类标
.
只有特征向量
.
甚至很多时候我们都不知道总共的类别有多少个.
因此.无监督学习就不叫做分类
.
而往往叫做聚类
.
就是采用一定的算法.
把特征性质相近的样本聚在一起成为一类.
K-Means算法
就是一个无监督学习算法
.
在它执行前数据是没有类标的.
执行过程中才会有类标.
但是此时类标不固定.
只有当聚类完成后每个样本的类标才能固定.
如下图所示就是无监督算法的执行过程.
所谓强化学习就是智能系统
从环境
到行为映射
的学习.
以使奖励信号(强化信号)函数值
最大.
强化学习不同于连接主义学习
中的监督学习.主要表现在教师信号上.
强化学习中由环境提供的强化信号是对产生动作的好坏作一种评价(通常为标量信号
).
而不是告诉强化学习系统RLS(reinforcement learning system)
如何去产生正确的动作.
由于外部环境提供的信息很少.RLS
必须靠自身的经历进行学习.
通过这种方式.RLS
在行动-评价
的环境中获得知识.
改进行动方案以适应环境.
本文是一个教你入门的方法.
只是带你领略了解机器学习的大致框架.
不会介绍具体的算法的详细原理与过程.
所以想要深入了解可以查看相关书籍或者文献.
对于具体的算法属于哪一类.
并且为什么这么划分.
请读者认真学习相关的机器学习教程.
对于编程技术学习和选择.
无非就是 编程语言 和 开发环境
.
我个人的建议是 Python + PyCharm
.
原因很简单.
python简单易学.不至于让我们把太多的时间花在语言的学习上
(PS:学习机器学习的重点在于各个机器学习算法理论的学习和掌握).
并且Jetbrains公司
开发的Python集成开发环境PyCharm
也是非常的简单易用.
说完了机器学习的入门过程.
我得给大家泼点冷水.
虽然说目前AI真的很火热.
就在刚刚.
我写累了休息看新闻的时候就有新闻推送给我:
商汤科技
B轮融资4.5亿美元.这场革命是机遇.
但是它真的适合你吗?
我可以很肯定的说.
并不是所有人都适合转行AI.
下面是的总结.
想转行的人可以自我对照:
1. 数学一般,代码一般,不要转行AI
2. 数学一般,代码优秀,可以转行AI,走应用化的AI道路
3. 数学优秀,代码一般,可以转行AI,提高代码水平
4. 数学优秀(菲尔兹奖),代码优秀(Apache顶级项目),强烈转行。
Google : 神经网络算法奠基人–>深度学习之父–>Geoffrey Hinton[杰弗里·希尔顿]
Facebook : 卷积神经网络奠基人–>Yann LeCun
Microsoft: 深度学习三大牛之一–>Yoshua Bengio
Baidu : 吴恩达 Andrew Ng
书单
李航. 统计学习方法[M]. 清华大学出版社, 2012.
周志华. 机器学习 : = Machine learning[M]. 清华大学出版社, 2016.
机器学习(三)常见算法优缺点