李宏毅2020机器学习深度学习

P1机器学习

1.机器学习就是自动寻找函数(函式)

2.找到的函数输出是一个数值即可称之为regression (回归)

3.generation 不同于回归与分类 是一个让机器创造的过程 作业中RNN中的Seq2seq可翻译产生语句(文句) CNN中的GAN 产生二次元人物头像

4.Supervised learning 告诉机器每张图片对应的正确分类输出就是做label 即理想输出。而有label的训练 即Supervised learning 有了label后即可计算实际与理想的偏差 即找到的函数的Loss

5.Reinforcement learning 一个例子: α-go。

以围棋为例,比较Supervised learning与Reinforcement learning 。

前者是需要在每一种棋局的局势下告诉机器应该怎样的落子;后者是让机器通过一种策略自己学习(通过最终的输赢来得到哪几步走的好 哪几步走的不好)

6.unsupervised learning即仅给数据不做label(与Reinforcement learning 的区别?)

7.Network Architecture网络架构 包括RNN和CNN

8.几个前沿研究 均需要用到CNN

Explainable AI 即让机器解释做出分类的理由。

Adversarial Attack 怀着恶意攻击某个系统 即刻意制造出噪音(杂讯)来“骗”过机器,使之出错。 

Network Compression 简化复杂模型。

9.Anomaly Detection让机器知道 自己不知道某些事物

10.Meta Learing = Learn to learn

P3Regression - Case Study

1.应用:股票预测 无人驾驶 推荐系统 预测一只宝可梦的CP值

2.一个回归问题的流程:

 损失函数   即找到函数的函数,是衡量找到函数的好坏的函数。

求出损失函数取得最小值时的参数w,b的值 作为最终的参数。而求最小值可通过最小二乘法。引入梯度下降来求解各个形式的损失函数。

 

 为提高准确率,采用了增加模型的复杂度的方法,在不断增加模型的复杂度的情况下,发现在训练集的准确率逐渐降低,而在测试集上准确率会先降低后升高,原因是出现了过拟合。

还考虑了影响实际cp值的其他因素,不仅仅是输入的x,还有其他因素,加以考虑。

为解决过拟合问题,引入了正则项。

 这里选用的正则项要求参数w越小越好 即越平滑越好。原因是w较小对噪声更不敏感,倘若w很大会使得将噪声放大。正则项与bias无关,是因为bias不影响曲线的平滑程度,即bias仅仅是将曲线上下平移固定的长度,不影响噪声放大与否。

虽然期望参数越小越好,但是当其过小时,会发现测试集上的error反而会增大,这就是因为其过小会直接抹平变化的差值,抹平了变化。

 P4 Basic Concept

1.error的来源:bias 和variance 偏差和方差

样本方差的期望应该等于总体方差??

 

 越简单的model,多次实验中的方差较小。考虑的极端情况就是函数为一个常值函数,它足够简单,在多次实验中其方差为0,足够小。

 

 模型越复杂,其方差较大,但其bias就越小。简单的模型,其方差较小,包含的“空间”也较小,当这个空间都不包含target时,再怎么平均也无法得到与target很近的模型,即bias较大。而模型较大的时候,其包含“空间”较大,平均下来就更可能接近target,bias较小。

 当偏置过大时,可以重新设计模型,考虑更多的因素,或者采用更复杂的模型。

当方差较大时,即可能出现过拟合的情况下,可以增大数据量(数据增强等自己生成数据),加入正则项。但加入正则项后可能会伤害bias,筛出较为平滑的曲线就可能会漏掉f-hat

勿滥用测试集来筛选,越是滥用测试集来筛选,测试集不再是测试集而变成了训练集。故在所得的训练集将其分为真正的训练集和验证集,通过验证集来选择model

P5 Gradient Decent

1.小心调整learing rate

lr过大或者过小均会出现问题。lr的设置,往往是随着更新而逐渐减小。由于 刚开始可能距离最低点较远,步幅需要较大,故采取较大的lr,而不断地更新后,逐渐接近最低点,步幅较小

 

 

 

 

 

 这里认为,并非某处的梯度越大,该点距离最优解的距离越小,仅在一个变量时成立。

 2.SGD

 随机梯度下降可以使得在相同的时间内走的更快

 

 3

 若两个变量量级相差过大,往往会形成第一个椭圆的形状,此时每次更新,是按照当前梯度更新,但也许它并不是朝着最优解处更新,会有许多更新是无效的。倘使两个分布极为相近,极端情况下为一个正圆,那么每走一步都是朝着最优解处更新。

P10 Classification

 二分类问题强行用回归来做会出现问题。第二个图中紫线更符合回归但绿线更符合分类。并且在多分类问题中,很难区分出多个种类间的数量关系,因为数字本身与数字之间具有天然的联系,而实际的类别中可能不存在这样的联系。

 

 

P11 Logistic Regression

一文搞懂交叉熵

(MSE)最小二乘法 VS 梯度下降

逻辑回归也是回归,损失函数为什么不采用均方误差而采用交叉熵损失函数?

 这种情况下,倘若微分值很小,无法区分是很接近目标还是距离目标很远,无法贸然调节lr,即步幅。

 

判别模型  VS  生成模型

判别模型(左):逻辑回归,无假设

生成模型(右):概率生成,假设概率分布为高斯分布或者伯努利分布

 人们往往认为左边的效果比右边效果好

 Naive Bayes是指产生所有的feature的几率是even的

 

 算出结果为3/7,原因是由于假设了概率分布服从正态分布,即使在class2数据集中并未出现过如class1中的样本,class2也有可能出现,当前不存在只是由于现在样本不够多。这样有助于在数据不够多的情况下,训练出来的模型可以自行“脑部”,来适当弥补数据量不足的问题。也就是说在数据量较小的情况下,Generative model可以优于Discriminative mdoel,只有当数据量慢慢增多时,后者会才会慢慢好于前者。        

 异或问题的区分,可采用适当的transformation来解决,而机器学习的过程就是自己寻找一个可以将其在高维平面划分的过程。

P15 Why deep?

“更深”要优于“更宽”。

 而产生这样效果的原因就是:“更深”意味着“模组化”,这个“模组化”是机器自己学到的。

有人认为 人工智能 = 深度学习 + 大数据,这里认为不然。倘使有足够多的数据,那么只需要机器能够实现查找功能即可(因为本身的数据集已经足够大,认为可以包含所有出现的测试情况),也就是说人工智能本身就是在已知一定数据的情况下(不多),来实现一定功能。

 

将原来的大问题切分成小问题,使得后续可以再加工,即利用之前的工作。

 这也就意味着可以用较少的数据做到较好的效果。

而实现上述过程的根因就在于“更深”的实现就是前一层的输出就是后一层的输入,后一层可充分利用前一层做的工作,各个部分分工相对明确。

 两层门电路或者两层layer可模拟任何函数或者电路,加入采用这样的方式来搭建网络,那么它的所有工作都要在这两层中实现,神经元之间联合性就更高,减少了复用的过程,相对来说效率就低了很多。这里提出的,深度学习,并非完全是利用较多数据来实现特定的功能,实际上就如同人类学习一样,人类的一大智慧就是利用一些已知的知识来以较高准确度的情况下预测未知事物,正如同deep learning。

 

 

P13 Backpropagation

正向传播

反向传播

 

 选用三角是认为这个是一个放大器(集成运放)。为何认为是反向传播,因为这样也是对应值乘上权重向后传播,只是少了偏置,并多了因式。

 无论是交叉熵损失函数还是其他损失函数,只要知道相应的损失函数就可以求得偏导。

 P14 Tips for training DNN

1.在trainDNN遇到的首要问题,更可能是无法训练出一个好的正确率,即在本应该高正确率的训练集上的正确率也不高,即欠拟合,此时要在前几个步骤中寻找问题。

 2.其次,在训练集上效果很好,在测试集上效果不好,那么说明出现过拟合。可见,过拟合必定在训练集效果很好,测试集效果不佳的情况下出现的。

 在陷入局部最优的情况下,在输入还是较为随机的情况下(也就是几乎还未更新),输出已经几乎收敛了。

在对较为靠前的layers的w进行更改时,由于sigmoid函数的特性,会将更改压缩,在逐层压缩后,即使某个w的更改较大,在其层层压缩下,最终输出也几乎不变。

 一种认为Relu快于sigmoid的原因是后者是指数运算,当运算数量达到一定程度时,相对运算较快。也有认为Relu是无穷个sigmoid函数叠加起来的效果。

 同时,也出现了一些问题,首先relu函数在原点处不可微分,无法实现反向传播。

其次认为relu函数只是过滤出了正值,那么是否就认为是线性的了?这里认为,当每一个神经元操作数的范围是一样的时候,他就是线性的;在操作数范围不同的情况下是非线性的

 

 对于部分处于最大值的神经元,该激活函数相当于一个线性函数,而其他位置的神经元在这种情况下不更新。可能产生的疑问是,这是否就造成了部分神经元参数不更新不被训练的情况?实际上当不同的输入改变时,不同组中的最大值的位置是不同的,经过反复训练后,各个位置的神经元的参数都将被训练。

 其实在这个区域内没有太多局部最优点,原因是局部最优点出现在各个维度都是“谷底”,假如每个维度是谷底的概率为p,但是由于参数多维度高,出现“谷底”概率就很小。

过拟合

 认为偏置只是会让曲线上下平移但是不会影响其平滑程度,故不考虑偏置。

(L2范数是各个参数平方和后开根号)

 经过简单化简可知,加入L2正则项实际上就是在每次更新之前,将原来的参数乘上一个小于1的复合超参数再更新,这样经过多次更新,参数就越来越靠近0。

这里认为不断地更新是让参数不断地离零越远,而L2正则项则会减少与零之间的距离,相当于减少更新次数。

 

 l1正则项求完导数后是符号函数,无论对于较大的参数还是较小的参数变化的大小是一致的。对较小的参数变化显著,而对较大的参数变化微弱。

 

 

 直觉理解

 

 

 较为理论

 

 这些不同的网络的均值近似等于全网络乘上1-p(线性条件,relu ,maxout)

P17CNN

由于深度神经网络的“深度”保证了整个网络的“模组化”(模块化),其实很符合一张图片的构成。从最简单的纹理,再将纹理整合成较为局部的图形,再构成一个较为完整的图形。

 CNN可以比DNN更加简单,第一点就是要将一张图片进行正确的分类,不需要去关注整张图片,只需要关注部分区域即可。

 第二点就是对于同一类事物出现再一张图片的不同区域时,参数可以共用,因此可节省参数。

 

第三点就是将一张图片按照一定比例缩小后,仍不影响辨别种类。 

卷积神经网络就是通过采用卷积层与池化层来解决上述三个问题的。卷积层解决前两点,池化层解决后一点。

采用卷积核的方式就是一次只关注一张图片的一小块区域,即第一点,一张图的关键仅在某一小部分。

卷积的过程。

 同一个卷积核在感受野上不断移动,在不同的位置可以感受到相同的部分的,即第二点,同一类事物在一张图片的不同位置可用相同参数共享到。

 

主要强调的就是全连接神经网络同卷积神经网络之间的关系。当卷积核在感受野上滑动的过程,可以说每一个位置对应一个神经元,且每一个神经元对应位置的参数是相同的,都是卷积核的参数。这就实现了权值共享,参数减少。

由于梯度下降法计算梯度是对每一个权重w进行求导,而权值共享使得多处的权值w相同,对于相同的w的梯度是各个地方梯度的均值。 

池化的过程

 

P20 RNN

 在以前的网络中,同一个输入,理论上输出是一样的,但是现实生活中需要存在一些同样的输入不同的输出这样的现象,这就要求网络具有记忆,能够“记得”之前的输入,这就是循环神经网络RNN构建的初衷。

 

同样的输入造成输出不同,根源就在于不同时间点中的memory不同,因此虽然输入相同,memory不同导致输出不同 

前者是储存隐藏层的输出,后者是储存最终的输出,据说后者表现较好。隐藏层的输出并不十分清楚学到了什么,整体的输出较为清楚储存了什么。 

 RNN还可是双向的。考虑倒装句。这里针对每一个输出,以y^(t+1)为例,每一个输出都是“看过”所有输入的,即整体把握过全体输入的。

 该网络不同于之前的较为simple版本,从命名就有所体现。dash位于short与term之间,代表这是一个“比较长”的“短期”记忆。在之前的版本中,每次输入后都会覆盖掉之前的记忆,这在现实中显然是不够的。LSTM通过增加几个gate来完成这项任务。

4inputs分别代表输入,输入门控制信号,忘记门控制信号,输出门控制信号。是否输入,是否忘记,是否输出,这都是需要学习的,这也恰恰符合人们学习阅读的过程。阅读的能力实际上就是一个人联想,记忆,遗忘能力的综合体现。但为什么能够认为三个门的控制信号是一种输入呢?联想之前的神经网络,这几种门信号的实现应该是通过参数来实现的。

 

 

 

 

 

P21 RNN(2)

在训练RNN时,会比较困难。事实上在最初的一段时间内,世界上只有极少数的人能够将RNN训练好,原因就是,这片空间太过“崎岖”,经过更换激活函数后也没有明显提高。

 

 RNN在时序上是对同一参数不断使用的,这就造成了在输入维度较大的情况下,输入改变一点点就会造成输出变化极大。并且有时高有时低。而采用LSTM就是对这一问题的一种解决方式,但LSTM只能解决梯度消失的问题(即学习率可以适当小),但无法解决梯度爆炸的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值