机器学习-机器学习的动机与应用(斯坦福公开课笔记一)

因为https://blog.csdn.net/urdfmqcul2/article/details/78788962
,博客搬家至https://juejin.im/user/59fd6315f265da4321536990

定义:

Arthur Samuel 在1959年非正式地将机器学习定义为:在计算机在没有被显式地编程的情况下能够具有学习能力的研究领域。
他在当时编写了一个西洋棋程序,能够自己和自己下棋,机器在自己和自己下了成千上万盘棋后逐渐意识到什么样的情况下能够获得优势和劣势,就像是思考“如果我的棋子占据了这些位置,就能取得胜利”这样的问题。于是在1959年,奇迹出现了,Arthur Samuel 的程序的棋艺不断提升,甚至超过了他自己。

更为现代和正式的定义:有检测方法P、经验E和任务T,计算机程序在不断执行T,并通过P检测后发现能够提升E,那么这就是机器学习。

对上面西洋棋程序来说,任务T就是不断地自己和自己下棋,任务E就是程序的棋力,P自然就是和人类对弈的胜率了。

监督学习:

假设需要搜集一组房屋的价格:

将其价格和面积的数据显示在二维上:

如果我自己的房子有4000平方英尺,我需要知道它的价格,我们可以找到一个函数曲线——一条接近这些数据样本点的曲线,然后就能得出我的房子的预测价格了。

这其实就是监督学习的一个例子,之所以叫监督学习,是因为在这个例子中,我们提供了一组价格和房屋面积的数据,通过这一系列的数据,我们希望算法去监督这些数据(标准输入)和标准答案之间的关系,在这个例子中也就是找出函数曲线,以便在输入其他数据的情况下能够给出正确的答案。
这个例子实际上属于回归的范畴,我们要预测的变量是连续的。还有另外一种类型的监督学习问题,称之为分类问题
分类问题中,我们要处理的变量是离散的而不是连续的。比如说,需要设计一个算法,通过一组乳腺癌肿瘤的数据,来预测肿瘤是良性还是恶性的。
简单起见,假设这组数据只有肿瘤大小这个参数:


我们再增加一个患者年龄的数据,用O表示良性,X表示恶性,这样数据表就变成了这样:

但是实际上在真实数据中,还需要引入其他的参数比如肿瘤细胞形状的一致性、肿块厚度,细胞大小的一致性等等,这时候数据就不能再二维图表中展示了,这时候就可以使用大名鼎鼎的向量机算法,在后面的章节中会详细说明。

无监督学习

在刚刚肿瘤的例子中,我们有一组数据,需要去判定肿瘤是良性和恶性,在监督学习的例子当中,我们已经有了一些标准答案,这些答案已经告诉我哪些病人是恶性的肿瘤,哪些病人是良性的肿瘤。于是我也希望我的程序能够给出一个标准的答案。
对比之下,在无监督学习中,我们得到的数据没有正确的答案,而算法的任务就是通过这些数据找到一些有意义的结果。比如说,一个算法会把数据分成几类,这就是聚类问题
无监督学习能够应用在很多领域当中,比如说尝试按照基因在试验中的性状,对这些基因进行分组:

再比如,使用聚类算法来进行图像识别,把图片中不同类型的像素分组:

还有个很cool的例子,通过对照片使用聚类算法,利用聚类的结果,来创建基于照片生成的3D效果模型,这实际上属于监督学习无监督学习的综合应用了:

无监督学习还可以应用在计算机集群簇、社会网络分析、市场细分、天文数据分析:

鸡尾酒例子

通过无监督学习算法,我们可以把一个鸡尾酒舞会上录音中两个不同人的声音识别并分别提取出来。甚至将BGM和人声也能分别提取。

看上去做这个工作的算法会非常复杂,如果要自己实现的话会有多复杂呢?如果使用MATLAB的话,只需要一行代码就够了。这就是推荐使用MATLAB和Octave的原因。

MATLAB: MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

Octave:Octave是一款用于数值计算和绘图的开源软件。和Matlab一样,Octave 尤其精于矩阵运算:求解联立方程组、计算矩阵特征值和特征向量等等。重点是它是免费的。

强化学习

监督学习预测肿瘤类型的类型中,我们需要预测病人的肿瘤是良性还是恶性的,通过算法产生了一个决策,这个决策要么是对的,要么是错的。
强化学习中,我们通常会在一段时间内,做出一系列的决策:
比如说,给你一个自动直升机,需要你提供一个程序让它飞起来。你可能会注意到,当你只做了一个错误的决策时,直升机并不会掉下来。实际上只有当你做出了一系列错误的决策时,直升机才可能一个跟头栽下来。所以相反的,只要做出了一系列还算不错的决策,直升机就能够飞起来了。
强化学习背后的概念是一个被称为回报函数,好比说在训狗,当你的狗狗做了一个正确的动作,你给他一块饼干,而如果狗做错了动作,你会训斥它,并且它上面都得不到。时间一长,狗狗就会知道怎样才能得到更多的饼干。强化学习的关键点就在于,定义好什么是正确的动作,什么是错误的动作,之后就是需要一个学习型的算法,来获得更多的饼干和更少的惩罚了。
强化学习可以运用在机器人领域的很多问题上。

推荐阅读更多精彩内容