梯度消失与爆炸
Vanishing/Exploding Gardients
在反向传播过程中需要对激活函数进行求导,如果导数大于1,那么随着网络层数的增加梯度更新将会朝着指数爆炸的方式增加这就是梯度爆炸。同样如果导数小于1,那么随着网络层数的增加梯度更新信息会朝着指数衰减的方式减少这就是梯度消失。
RNN梯度消失或爆炸原因。
https://zhuanlan.zhihu.com/p/28687529
如何解决梯度爆炸?
假设梯度用g表示,如果||g||大于我们设置的阈值threshold,
则$g = g·\frac{threshold}{||g||}$
RE:https://www.bilibili.com/video/av86991001/?p=304
LSTM如何解决(缓解)梯度消失的?
https://www.zhihu.com/question/34878706/answer/665429718
https://weberna.github.io/blog/2017/11/15/LSTM-Vanishing-Gradients.html
LSTM通过gate可以决定梯度消失的程度,比如让遗忘门接近于1,从而让这个时刻的信息一直传递下去而不丢失。
生成式&判定模型
判别式
机器学习“判定模型”和“生成模型”有什么区别? - politer的回答 - 知乎 https://www.zhihu.com/question/20446337/answer/256466823
Dropout
vanilla dropout和inverted dropout
inverted dropout指的是若以概率p丢弃神经元,前向传播的时候要先除以(1-p)以保持总期望不变。
注意:在test时候不需要使用dropout
re:神经网络Dropout层中为什么dropout后还需要进行rescale? - 小莲子的回答 - 知乎
https://www.zhihu.com/question/61751133/answer/794717140
过拟合overfitting
避免overfitting 的方法:early stop, data augmentation, 正则化regularization(包括L1,L2;L2 regularization也叫做weight decay), dropout。
为什么正则化有用?
正则项 $\lambda||w||^2_2$,为了方便有时候携程$\frac{\lambda}{2}$
$\lambda$大的适合,w变得更小,$\lambda$小的适合,w变得更大。
加入正则化项,使参数w变小,即权重衰减(weight decay).更小的权值w,从某种意义上说,表示网络的复杂度更低,对数据的拟合刚刚好(这个法则也叫做奥卡姆剃刀)
Re:https://www.cnblogs.com/alexanderkun/p/6922428.html
Model
logistic regression
逻辑回归
注意逻辑回归不是回归(结果是连续性变量的任务为回归),是用来做分类的。
输入是feature vector$x$,逻辑回归模型的输出是$\hat y = P(y=1|x)$即x属于类别1 的概率
$P(y=1|x) = sigmoid(W^Tx+b)=\frac{1}{1+e^{-W^Tx-b}}$
对于单个训练样本$(x^i,y^i)$,$y^i$是true answer,
其lossFunction为对数损失函数(或对数似然损失函数或logistic损失或交叉熵损失)
若是二分类,cross entropy可简化为
$$L(y,\hat y)=-[y^ilog \hat y^i+(1-y^i)log(1- \hat y^i)]$$
对于全体样本的loss function为
$$J(W,b) = \frac{1}{N}\sum_i^NL(yi, \hat yi)$$
softmax regression
softmax regression将logistic regression(二分类)推广到多分类。
输入是feature vector$x$,逻辑回归模型的输出是$\hat y = P(y=i|x)$即x属于每个类别i 的概率
$P(y=1|x) = softmax(W^Tx+b)$
其lossFunction为对数损失函数(或对数似然损失函数或logistic损失或交叉熵损失)
$$L(y,\hat y)=-y^ilog \hat y^i$$
对于全体样本的loss function为
$$Loss Function = \frac{1}{N}\sum_i^NL(yi, \hat yi)$$
multi label learning
在分类任务中,如果样本i只有一个label:
$y^i=\left[ \begin{matrix} 0 \ 1 \ 0 \ 0 \ 0 \end{matrix} \right]$
在多标签学习中,一个样本可能有多个标签,多标签分类问题是判断一个样本是否同时属于多个不同类别。
$y^i=\left[ \begin{matrix} 0 \ 1 \ 1 \ 1 \ 0 \end{matrix} \right]$
将一个多标签问题转化为在每个标签上的二分类问题。
$$L(y^i_j,\hat y^i_j)=-[y^i_jlog \hat y^i_j+(1-y^i_j)log(1- \hat y^i_j)]$$
$$Loss Function = \frac{1}{N}\sum_i^N \sum_{j=1}^5 L(y^i_j, \hat y^i_j)$$
激活函数使用sigmoid,j是j-th class
分类问题 | 价格 | 数量 |
---|---|---|
二分类 | sigmoid函数 | 二分类交叉熵损失函数(Binary_crossentropy) |
多分类 | softmax函数 | 多类别交叉熵损失函数 (Categorical_crossentropy) |
多标签分类 | sigmoid函数 | 二分类交叉熵损失函数 (Binary_crossentropy) |
beam search
假定词汇表大小是10000,beam width设为3
第一步从1000个中选出概率值最大的前3个,第二步是从30000个中选出概率值最大的前3个。
如果最大的3个来自 in 和 jane,就去掉sepetmber,减少计算量。
若beam width设为1,就是贪心搜索。
beam width大,速度慢,效果好。beam width小,速度快,效果差。
改进beam search:
采用$log$计算概率的对数和,避免连续概率相乘造成数值下溢。
length normalization
Re:https://www.cnblogs.com/cloud-ken/p/9566030.html
为什么要除以$T^\alpha$
因为每个概率的值大小都远小于1(使用log函数后,变为远小于0),因此越长的句子概率值越小,使得模型倾向于选择较短的句子。
负数除以一个正数后,值将变大,除以$T^\alpha$后很明显的减少了对输出长句子的结果的惩罚。
T是生成的句子长度,$\alpha$是超参数
问题
softmax为什么采用指数
为什么不能标准化?
softmax目的是为了获得max的那个元素
假设一向量是[2,4,2,1]
使用max() 得到[0,1,0,0],但是max不可导;
使用标准化得到[0.222,0.444,0.222,0.111]
使用softmax得到[0.1025,0.7573,0.1025,0.0377]
可以看出比标准化更接近max()的结果.