ML读书笔记(前向神经网络)

A.

1. 拟合异或的问题

2个输入变量X和Y,写出异或真值表(<0,0>=>0, <0,1>=>1, <1,0>=>1, <1,1>=>0),拟合异或:

如果直接使用线性变化+激活函数,即f(aX+bY+c), f可以为sigmoid函数,根据激活函数单调性,由第1和第2条可得b是正数,由第1和第3条可得a是正数,第2和第4条可得a是负数和之前矛盾,第3和第4条可得b是负数和之前矛盾。

使用一层隐藏层+激活函数+线性输出层,隐藏层只有2个神经元,激活函数用ReLU; 神经元H1=X+Y-1;神经元H2=-X-Y+1; 前者得(-1,0,0,1),后者得(1,0,0,-1);经过ReLU,前者得Z1=(0,0,0,1),后者得Z2=(1,0,0,0);输出层-Z1-Z2+1, 得(0,1,1,0),即异或;

通用近似定理:至少一层具有任何一种“挤压”性质的激活函数的隐藏层+线性输出层,只要隐藏层单元足够多,可以以任意精度近似任何函数。(一层隐藏层,不太好学习到参数,所以通常都是多层)

 

B.

激活函数的作用:对于线性不可分问题(如异或函数),需要非线性变换对数据的分布进行重新映射。非线性激活函数,可避免多层网络等效于单层线性函数(M*N=V),从而获得更强大的拟合能力。

sigmoid函数的导数=p(1-p); tanh函数的样子:f(z)=(e^z-e^(-z))/(e^z+e^(-z)), 导数=1-p^2; ReLU函数的导数=当z>0时为1,当z<=0时为0。

梯度消失问题(导数接近0时,叫做“饱和”):sigmoid函数,当p接近0和接近1时,导数p(1-p)接近0;tanh函数,当p接近1和-1时,导数1-p^2接近0;

tanh(x)=2sigmoid(2x)-1,即tanh函数相当于sigmoid经过伸缩和平移后的;

ReLU的3个优点:1.不需要计算指数,计算复杂度低;2.ReLU的非饱和性可以有效解决梯度消失问题,提供相对宽的激活边界(x>0都是激活范围?);3. ReLU的单侧抑制提供了网络的稀疏表达能力(?)

ReLU的缺点:负输入值的梯度被置0,可能导致一定比例的神经元不可逆死亡,部分参数的梯度无法更新,可能导致训练失败。

ReLU, Leaky ReLU, PReLU, RReLU

 

C.

反向传播的梯度推导:注意最后一层,平方误差损失函数则不要加激活函数,交叉熵损失函数是softmax后的p和Label-y进行交叉熵,也不用激活函数(softmax函数之前也是线性变化,没有激活函数)

softmax的梯度推导,很麻烦;

平方误差损失函数,为什么最后一层不使用激活函数:从梯度消失的角度看,加了激活会使梯度更容易消失;

 

D.

权重初始化,除了bias可以初始化为0之外,不能全部初始化为相等值或者0:如果全相等,会导致每层所有神经元的值全相等,反向传播时每层梯度也全相等,废了;

随机初始化权重:(-\frac{1}{\sqrt{d}},\frac{1}{\sqrt{d}})   d是神经元的输入向量维度;

 

Dropout: 本质是模型集成,可降低过拟合。假设有N个神经元,则相当于2^N个不同的网络,进行集成;

书上说在测试阶段进行缩放;先进些的是在训练阶段期间对激活值进行缩放,而测试阶段保持不变,从而减少测试阶段计算量

当前Dropout被大量利用于全连接网络,而且一般人为设置为0.5或者0.3,而在卷积隐藏层由于卷积自身的稀疏化以及稀疏化的ReLu函数的大量使用等原因,Dropout策略在卷积隐藏层中使用较少

Dropout为何有效:1. 减少神经元之间的联合适应性,可降低过拟合;2.下一层的节点减少受上一层某个特别“强”的节点影响,相当于加了正则化;3. 模型集成,可降低过拟合;

 

输入数据归一化的原因:如果数据分布离原点远,只分布在某一个象限,则要学习的分割超平面w就会1.学习慢,2.容易陷入局部最优;归一化以后数据分布落在原点的四周,有助于w的快速收敛;

归一化之后还得伸缩和平移,尽量恢复原始数据分布(?)

BN(Batch Normalization): 每个神经元(而不是整个层)(u,\sigma ,\gamma ,\beta的个数:BP神经网络的话,等于神经元的个数;卷积神经网络的话,等于卷积核的个数,在当前mini-batch上进行归一化;可使得网络在每次mini-batch都去拟合范围类似的数据分布,更容易训练;相当于给数据加了约束,增强了模型的泛化能力;

BN在测试时,就并没有batch的概念,因此,这个时候用的均值和方差是全量训练数据的均值和方差,这个可以通过移动平均法求得。

训练时用mini-batch的归一化,而不是全局归一化,目的是增强模型鲁棒性,减少过拟合。也正是因此,BN一般要求将训练集完全打乱,并用一个较大的batch值,否则,一个batch的数据无法较好得代表训练集的分布,会影响模型训练的效果。

\gamma ,\beta的作用:如果使用激活函数使用sigmoid,那么这个操作会强制输入数据分布在sigmoid接近线性的部分,接近线性的模型显然不好(影响整个模型的表达能力)。所以要学习伸缩和平移这两个参数;

 

E.

1. CNN的稀疏交互:输出之和输入的局部区域有关;物理意义:现实世界中的数据都具有局部的特征结构,先学习局部特征,再将局部特征组合起来得到复杂特征。

2. CNN的参数共享:卷积核对不同的输入区域用的同一组参数;物理意义:使得卷积层具有平移等变性,即先卷积再平移,和先平移再卷积,是等价的。

均值池化VS最大池化:均值池化对背景的保留效果更好;最大池化更好的提取纹理信息;

重叠池化:步长小于窗口时;空间金字塔池化:用多种size的池化,最后将结果拼在一起;

池化能保持对平移、伸缩、旋转操作的不变形(?)

CNN用在文本上:他用了2种embedding(1.预训练好就不改变的;2.随着Task训练而变化的),卷积的输入就变成了2个通道;

反向传播的公式推导,可以说明梯度消失问题,随着层数增多而明显消失;

ResNet:为了解决退化问题(层数越多,在训练集和测试集上的效果不升反降);原因:梯度消散;

把x直接加到后面两层的输出F(x)上,即H(x)=F(x)+x,这样F(x)只需要拟合H(x)-x即残差,使得多加一层不会让效果更差;反向传播时,梯度可直接传至两层之前;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值