李宏毅机器学习笔记

李宏毅机器学习笔记

看李宏毅的机器学习总结的笔记,自己复习用。

神经网络训练效果不好解决方法

局部最小和鞍点

优化失败:卡在了critical point(驻点)

1.局部最小点

2.鞍点

在这里插入图片描述

鞍点的话可解,但是局部最小值不可解,

通过增加维度,使得低维角度的局部最小点 从高维角度看成为了鞍点。

在这里插入图片描述

如果所有的eigen values为正,说明为局部最小

否则为鞍点

批次和动量

batch

批次:batch

每次取出一部分batch的训练集来代替整体的训练集求梯度。

在这里插入图片描述

一次epoch对比举例

在这里插入图片描述

由于并行运算,左边不是很长,但是并行有极限。
在这里插入图片描述

比较实际一次epoch
在这里插入图片描述

但是大的batchsize会带来一个比较差的结果,如下:
在这里插入图片描述

一个解释是:小批量可以跳过局部最优点
在这里插入图片描述

想到的有两点:

  1. epoch的batch_size约小则每个batch的分布差异越大,训练的epoch往往是多次的,同时因为shuffle,相当于提高了数据量。

  2. batch_size与整体分布具有一定差异时,更容易帮助模型突破鞍点,相对于方向的不稳定,没有梯度才是最致命的。

但是,当设置到train loss在大小batch size相同时,在测试集上的表现,还是小的batch好。
在这里插入图片描述在这里插入图片描述

momentum

不止往梯度的反方向移动参数,而是通过上一步的方向加上新的一步的方向的新方向进行移动。
在这里插入图片描述

另一种角度,m是考虑过去所有的方向的耦合
在这里插入图片描述

learning rate

比驻点更麻烦的是,实际上很难达到critical points 附近,而是左右摇摆,如下图
在这里插入图片描述在这里插入图片描述

特制化学习率

在这里插入图片描述

学习率也会改变

在这里插入图片描述

最终结果:大梯度,学习率小,小梯度,学习率大。
在这里插入图片描述

但是仍不够,我们期待:学习率在同一个参数,同一个方向上,也可以动态的调整。

RMS Prop

在这里插入图片描述

举例:
在这里插入图片描述

杀死比赛的优化方法:Adam

Adam= RMS Prop + Momentum

learning rate scheduling

采用Adagrad:

喷的地方是从平滑突然到了陡峭的区域,斜率变大的同时学习率不能及时下降引发的问题

在这里插入图片描述

learning rate decay

随着时间来限制学习率的大小

在这里插入图片描述

warm up

学习率先增大,后减小

(hyperparameter)
在这里插入图片描述

解释:开始时候,先收集sigma的统计数据,大致了解error surface

总结

m和sigma都考虑了过去所有的gradient。

区别:

momentum主要考虑方向

sigma主要考虑大小

momentus是为了增加历史运动的惯性,RMS是为了缓和步伐的大小,变得更平缓
在这里插入图片描述

分类

在这里插入图片描述

回归和分类比较
在这里插入图片描述

softmax:归一化。
在这里插入图片描述

当有两个时,直接套用sigmoid函数
在这里插入图片描述

交叉熵为什么好——极大似然估计。

或者举个例子,如下图,在loss比较大的时候
在这里插入图片描述

use validation set but overfitting

在这里插入图片描述在这里插入图片描述

模型选择

large H表示大模型,它的训练的loss可能和实际的loss差距很大;

相反表示小模型,它的训练的loss和实际的loss差距小,但两者都很大

H太大,理想与现实差距很大,但loss较小;H太小,理想与现实差距小,但loss大。

这个地方可以这样理解,相当于我们希望能在更小范围的H中找到最好的h使得Loss最小。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

deep learning 真正的强项是不容易overfitting

在这里插入图片描述

深度学习比宽度学习好的例子

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

deep learning 过程

图中有误,weight为2,即乘以2

确实讲错了,老师在课程主页上的PDF课件中做出了修正,第二层以后的weight每一项都要乘2(不包括bias项)

PPT写错了,第一个RELU层的权重是2不是1

因为这里的relu后应该是y=2f(x)(f(x)>0),y=0(f(x)<0)图中写错了

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Convolutional Neural Network

CNN,卷积神经网络

图片分类

在这里插入图片描述

三维的tensor

长宽和channels(R,G,B)
在这里插入图片描述

简化1 receptive field

不需要fully connected network,一些特别重要的细节只占整个图片的很小一部分。

在这里插入图片描述

receptive field:每个neruon只关心自己的感受野即可。

在这里插入图片描述

  1. 互相可重叠。

  2. 同个范围可以有多个感知野。
    在这里插入图片描述

通常选择相邻的一块,来找一个pattern

简化1 typical setting
  1. 通常会看所有的channels,所以只需要关注长宽,称之为kernel size。

kernel size:一般不会设置太大,如3X3。

  1. 每一个receptive field有一组神经元去关注它,如64个。

  2. stride: receptive field的移动的量,步幅,往往设为1或2(需要重叠),自己决定的参数。可以上下,左右移动。

需要重叠R:有一个pattern处在两个receptive field的交界上面,则完全没有一个neuron去侦测它,会错过这个pattern。

  1. 超出范围:

padding:补充超出位置

1.用0填充

2.补整张图片value 的平均
在这里插入图片描述

简化2 parameter sharing

如下图,同样的pattern会出现在不同的位置。比如鸟嘴。
在这里插入图片描述

共享参数:虽然receptive field不同,但weight完全相同。同样完全由自己决定。

PS1:由于输入不一样,output也不一样。

PS2:不会让两个receptive field 一样的neuron共享参数。

在这里插入图片描述

简化2 typical setting

如下图,每一组的相同颜色的neuron共享参数。

共用同一组参数叫filter。

在这里插入图片描述

总结

network弹性逐渐变小。

receptive field + parameter share 即为 convolutional layer。

使用卷积层的神经网络即为CNN。

CNN有比较大的bias,但是是专门为影像设计,所以在这方面做的很好
在这里插入图片描述

另外一种介绍方式

在这里插入图片描述在这里插入图片描述

每个filter和一个receptive field做inner product(内积)

filter里面的值是经验定义的,要求filter里面的值和为一,也可以定义其他的,如:九个格都设置为九分之一。

filter里的值就是神经网络的权重参数 是要训练得到

每次移动stride,再次相乘。
在这里插入图片描述

查看最大值,抓取三个1,即为pattern,这就是第一个filter。

在这里插入图片描述

第二个filter抓取中间为1的情况。

这群数字叫feature map。

在这里插入图片描述

多层convolutional layer

在这里插入图片描述

以第二层为例,当我们看左上角的时候,对应原来的3*3,如下图。

总之第二层3*3,对应原来的5 * 5

在这里插入图片描述

两种的总结

每个filter扫过一张图片,的过程,即为convolution,也就是不同receptive field的neuron的parameter sharing

在这里插入图片描述在这里插入图片描述

简化3 pooling

subsampling:下抽样,如图。

在这里插入图片描述

pooling:池化

本身没有参数,不是一个layer,也没有要learn的东西。

比较像activation function,是一个operator

max pooling:最大池化

每组里面选一个代表(最大的那个)

不一定要2*2个一组

在这里插入图片描述在这里插入图片描述

如果要找细微的特征,pooling会损害细节。

pooling主要是减少运算量。

在这里插入图片描述

最终模型

flatten:将本来排成矩阵的数据拉直成为变成一个向量。

后序把这个向量丢进fully connected layer中训练。
在这里插入图片描述

应用——阿尔法狗

48 chnanels:这个位置是不是要被叫吃,是不是有相同颜色的子等。
在这里插入图片描述

意味着围棋和影像有共同的特性
在这里插入图片描述

缺点

CNN不能处理影像放大缩小旋转的问题。

PS:pooling是对已经被filter处理过后的数据进行缩小化的,这里说的是原图片输入有缩小和放大
在这里插入图片描述

self-attention

一系列向量的输入

在这里插入图片描述

one-hot encoding和word embedding

one-hot encoding 比较难确定两个向量之间的关系
在这里插入图片描述

声音信号,每25ms看成一个向量(frame)
在这里插入图片描述

图、分子等
在这里插入图片描述

  1. 输入和输出长度相同的例子:

比如POS tagging(词性标注)等。
在这里插入图片描述

2 . 整个句子只需要一个输出

在这里插入图片描述

  1. 不知道输出多少,机器自己决定输出

在这里插入图片描述

input = output(length)

先看第一种类型,input = output

不好看整个句子,因为句子长度不确定,而且太长。
在这里插入图片描述

加一个self-attention的机制,它考虑整个sequence的咨询。

self- attention可以叠加多次,如下图,FC指 fully connected network。

self- attention处理整个句子的咨询,FC关注某一个位置的咨询。
在这里插入图片描述

详细如下图,每一个都考虑所有输入的情况。

在这里插入图片描述

具体例子来说,需要根据a1找到句子中和a1相关的向量,即找到需要决定a1输出的class或者regression的数值 所需要的咨询。

用一个符号alpha来表示和a1的相关性。

https://blog.csdn.net/Zosse/article/details/124838923

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值