视频链接
主要授课内容
第一讲(P1).Course Introduction
一、机器学习的基本概念
1.什么是机器学习?
机器学习就是自动找函式。例如:2.你想找什么样的函示?
要找的函示不同,机器学习的任务也就不同。例如3.机器学习不只有两类任务
很多教材认为机器学习可以分为两大类任务:
Regression:返回一个数值
Classification:让机器做选择题
但是!除此之外还有机器学习还有一个十分重要的任务,那就是:
Generation:产生有结构的复杂的东西(例如文句、图片)
4.怎样告诉机器你想找什么样的函示?
1.Supervised Learning
函式的loss可以用来评估一个函示的好坏,Loss是通过对训练数据的测试得出的,它可以看成一个函示的错误率,但实际计算起来要比单纯的计算错误率要复杂得多。Loss越小越好,一个函示的Loss越小,代表它越接近我们心里想要机器找出来的那个function。机器会自动找出那个Loss最低的函示,课中会讲到机器用什么样的演算法找到这个function。
2.Reinforcement Learning
以Alpha go为例来展示Supervised Learning与Reinforcement Learning的区别:
3.Unsupervised Learning
给机器一堆没有lable的data
5.机器怎样找出你想要的函示?
1.需要给机器一个函示寻找的范围。不是所有函示都有可能是好的函示。常见的寻找范围有Linear architecture,Network architecture(如RNN和CNN)
2.运用寻找函数的算法。这门课运用的算法为Gradient Descent和pytorch框架。
二、机器学习的前沿研究
这门课涉及的机器学习的前沿研究如下
1. Explainable AI
以上面图片识别的机器学习为例,Explainable AI就是说机器不仅可以识别出一张图片是猫,它还可以解释为什么它觉得这张图片是一只猫。
2. Adversarial Attack
现在的图像识别系统大多都很robust,就算图片中添加了noise还是可以正确识别。Adversarial Attack就是说如果人类怀着恶意去攻击这个系统(刻意增加难以识别的noise)会发生什么事。
3. Network Compression
现在一些一通在做图像辨识也许可以得到很高的正确率,但是这个正确率可能来自于一个十分硕大的model,Network Compression就是研究能否将这个巨大的network压缩以致于可以将它放到手机甚至更小的base device上。
4.Anomaly Detection
还是以上面的图片识别系统为例,Anomaly Detection就是说,假如给这个系统一张奇奇怪怪的训练中没有见过的图片(比如一拳超人),那么这个系统能做出判断说它不知道,也就是机器知道“我不知道”,而不是将这张图片强行识别成一种动物。
5.Transfer Learning
现在的情景是,给你一些资料,这些资料氛围training data和Testing data,我们在进行测试的时候使用的training data 和testing data是十分相似的,而如果客户并不知道这一点,使用了和训练数据差别比较大的测试数据,那么这个系统的正确率可能会暴跌。Transfer Learning研究的就是如何解决这个问题。6. Meta Learning
Meta Learning比机器学习更进一步。机器学期是让机器具备学习的能力,而Meta Learning是让机器学习如何具备学习的能力。7. Lifelong Learning
Lifelong Learning研究的是让机器终身学习。第二讲(P3)Regression
1. Regression的输出是一个标量。
例如:2. 示例应用
设计一个function来预测Pokemon的CP。其中,x代表以某一只Pokemon,xcp为这只Pokemon的当前战力,xs代表这只Pokemon的种类,xhp代表这只Pokemon的生命值,xw代表它的重量,xh代表它的高度,最后的输出y为进化后的CP。
步骤为:
第一步,定义一个model(function set)。
第二步,评估model里function的好坏。
第三步,找出一个最好的function。
求最好function的一个方法(方法是可微的):Gradient Descent
已知一个loss function L(w),如何找出一个w值让L(w)值最小呢?一个方法就是穷举法,但是这样是很没有效率的,那么怎样做比较有效呢?这就是Gradient Descent要告诉我们的。首先先随机选取一个w的初始值w0,求L关于w的微分,如果微分为正,说明在这点的切线斜率为正,向左走L(w)值会变小,反之向右走。已经确定了w的移动方向,那么w要移动多少呢?取决于两个因素,一个为微分值的大小,一个为事先定好的learning rate.
第六讲 (P10) Classification
Classification:输入一组数据,输出一个类别
以下的学习还是使用Pokemon的例子,输入一只Pokemon的HP, Attack,Defense,SP Atk, SP Def,Speed属性,输出它的属性类别。
如何实现分类?
(首先要收集训练数据)
一种思路是把按照Regression的方式来进行Classification,以Binary Classification为例,对于训练数据。如果输出值为1则Class为1,如果输出值为-1,则Class属于2;对于测试数据,如果输出值比较接近1则为Class 1,如果比较接近-1则为Class 2。但是这样做有一个问题就是“惩罚那些‘太正确’的例子”。如果分成多个类,如输出值为1则为Class1,输出值为2则为Class2,输出值为3则为Class3...但是这样同样是有问题的,因为如果这些Class是互相独立的,把这个问题当作Regression来处理就无法得到一个好的函示。
如何找出最好的函示:Generative Moel
从训练数据中估计几率值
首先Prior(P(C1)和P(C2))比较好求:
剩下的两个值根据Gaussian Distribution来求:
如何找μ和∑?
方法为:Maximum Likelihood
求出来的结果准确率为47%,准确率比较低,因为上面的例子只是一个二元分类,实际上要预测一个Pokemon的种类是要在7维数据上进行操作的。上面的例子中不同的Class有不同的∑值,但是这在实际中是很少见的,常见的做法是不同的Class用同一个∑,因为∑是跟input fearture size的平方成正比的,如果用不同的∑的话,Model参数多就容易overfitting。