什么是机器学习?
-
写程序让Machine(机器)有学习的能力
- 给一段声音告诉他意思,下次再给他就能识别
-
实际机器学习就是在寻找一个Function函数
- 就是根据我们提供的资料去寻找我们想要的Function
-
比如语音识别
- 输入函数Function是一段声音,输出就是这段语音说的意思
- 输入函数Function是一段声音,输出就是这段语音说的意思
-
比如图像识别
- 输入一张图片。识别图片的东西
- 输入一张图片。识别图片的东西
-
等等
-
Framework:框架(一个Function库,也就是一个Model)
-
需要一个Function Set 一组函数
-
这个function set里有很多function,你输入一张猫的图片,他就能输出猫
-
这个Function库就是一个Model模型
-
然后有了Model就需要进行训练数据Tranining Data
-
训练之后,我们输入一个function,不管是图片还是语音,他就能输出指定的结果。
-
然后他就可以根据你的输入,来判断一个function是好的还是不好的
- 我们通过Goodness of function f (函数优度)来从functionset里面挑出最好的function,写作f*
- 左边Tranining是学习部分,Testing是应用部分
-
-
由此可以将整个机器学习可以分成的步骤
- 第一步就是定一个Function Set(一大组函数模型)
- 第二步就是让机器可以衡量一个Function的好坏
- 第三步就是可以让机器有一个好的演算法,挑出最好的function
- 就好像把大象放进冰箱
在此门课可以学习到的机器学习技术
学习框架图
-
监督学习supervised learning
回归Regression(线性模型)
深度学习Deep learning(决策树、SVM、神经网络等非线性模型)
结构化学习Structured learning -
半监督学习semi-supervised learning
-
无监督学习unsupervised learning
-
迁移学习transfer learning
-
强化学习reinforcement learning
-
左上角开始Regression(回归)
- 他是机器学习的一种任务
- 比如让机器找出来的function是一个scalar数值
- 比如让你预测明天的PM2.5,那么他输出的就一定是明天的PM2.5的数值,那怎么才能让他输出明天PM2.5的值呢?我们必须给他一些资讯他才能猜出,比如今天上午的PM2.5,昨天上午的PM2.5等等,他才能预测出明天的PM2.5。所以我们必须准备一些训练资料给他(Training Data)
- 你输入一定的训练数据,他才能得出最终你想要的结果
-
Classification(分类)
- 这里专注的是我们要机器输出的东西的类型是不一样的
- 有二元分类,另外就是多层次分类(选择分类)
- 二元分类就是输出yes或者no,多层次分类就是选择输出一个类别,在不同的类别里面选择一个正确的类别输出
- 二元分类典型例子就是垃圾邮件的分类,会自动过滤掉垃圾邮件保存到垃圾邮箱里
- 其实我们就只需要一个function,这个function的输入就是邮件,输出就是yes/no(是否是垃圾邮件),我要训练这样的function,怎么做?其实只需要给他一大堆的数据(Training Data),训练他,比如数据中有邮件是垃圾邮件,我们就要告诉他,这就是垃圾邮件。你教他如何判别,训练,就可以进行分类
- 其实我们就只需要一个function,这个function的输入就是邮件,输出就是yes/no(是否是垃圾邮件),我要训练这样的function,怎么做?其实只需要给他一大堆的数据(Training Data),训练他,比如数据中有邮件是垃圾邮件,我们就要告诉他,这就是垃圾邮件。你教他如何判别,训练,就可以进行分类
- 多层次分类举例:文档分类
- 比如将新闻进行自动分类,怎么做?
- 只需要把一个function的输入是一则新闻,他的输出就是这则新闻属于哪一个类别,每一个类别就是一个选项,政治、经济、体育都是一个选项。我们要做的事情就是解这个选择题。
- 我们就需要准备很多训练资料,告诉他说比如这篇文章是体育类,那篇文章是政治类。训练完后,然后当我们输入新的文章,他就可以输出正确的类别
-
上面讲的都是我们让机器解的Task任务
-
接下来要讲的就是在解任务的过程中,第一步就是要选一个function set,选不同的function set就会得到不同的结果,选不同的function set就是选不同的model,model有很多种,最简单的就是Linear Model(线性模型),我们会花很多时间在**Non-linear Model(非线性模型)**上,在非线性模型里面,最常见的就是Deep Learning(深度学习),在我们深度学习中,我们的function是特别复杂的,阿尔法狗下围棋用得就是深度学习,他输入的是棋盘,输出的就是下一步落棋子的位置。当然除了深度学习,我们还要学习SVM。
-
那刚刚讲的都是Supervised Learning(监督式学习),他的问题就是我们需要大量的Training Data训练数据。我们要找的Data中,我们要确认Input/Output间的关系,function的output输出我们一般都叫做label。
也就是说,我们要机器在Supervised Learning(监督学习)的场景下学习,我们需要告诉机器Function的Input和output是什么,而output没有办法用很自然的方式取得,我们必须要凭着人工的力量标注出来,function的output叫做labe,我们大量的需要这个label。那有没有办法来减少我们需要的量呢?有的比如另外一个场景(Semi-supervised Learning半监督式学习)
-
Semi-supervised Learning(半监督式学习)
- 举例来说,你现在想让机器鉴别猫和狗的不同,做一个分类器,输入一张图他来鉴别是猫还是狗,你有少量的猫和狗的label(function的output)的Data数据,但是同时又有大量的UnlabeledData(在这是一大堆猫和狗的图片),但是你没办法去告诉机器那些事猫哪些是狗。但他们对学习也是有帮助的。
- 另外一个减少Data用量的方向就是Transfer Learning(转移学习)
- 意思是说,假设让我们做猫和狗的分类问题,我们也只要有少量的有label的data, 但我这有一大堆的Data(在这是一堆不相干的图片),他到底能带来怎么样的功能,这就是Transfer Learning要讲的问题
-
更进阶的就是Unsupervised Learning(无监督式学习)
- 给机器看大量的东西,让机器能自己学会,比如词汇,让他看大量的词汇,然后我输入一个词汇他自己就能识别
-
Structured Learning
-
Reinforcement Learning
-
-
不同的scenario场景由你手上的Data来决定你的scenario场景,红色task任务代表你要解决的问题,你要解得这个问题随着你要找的function的output不同有Regression回归,有Classification分类,有Structured Learning结构化学习,所以在不同的场景下,都有可能要解这些task任务,在每个场景下都需要解。而在这些task里都有不同的model不同的方法,用绿色来表示,意思是说同样的task可以用不同的方法来解。