神经元Unit(Neurons)
单元指的是,某一网络层中,通过激活函数(如sigmoid)将输入进行非线性转换的功能模块。
神经元的灵感来自生物学:
深度学习中的“神经元”:
从结构上来说,神经元模型是一个包含输入,输出与计算功能的模型。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。
层(Layers)
输入/输出层(Input/output Layers)
网络的输入端/输出端,对应着网络的开始和结束。
隐藏层(Hidden layers)
隐藏层是深度学习中除了输入层和输出层以外的网络层。网络层是深度学习中的最高级别组成模块,一个网络层通常接受加权输入数据,并用非线性函数处理,最后传输这些数据到下一个网络层。
仿射层(Affine Layer)
神经网络中的一个全连接层。仿射(Affine)的意思是前面一层中的每一个神经元都连接到当前层中的每一个神经元。仿射层通常被加在卷积神经网络或循环神经网络做出最终预测前的输出的顶层。仿射层的一般形式为y = f(Wx + b),其中 x 是层输入,w 是参数,b 是一个偏差矢量,f 是一个非线性激活函数。
Activation层
激活层对一个层的输出施加激活函数
Dropout层
为输入数据施加Dropout。Dropout将在训练过程中每次更新参数时按一定概率(rate)随机断开输入神经元,Dropout层用于防止过拟合。
批规范化(Batch Normalization)
对于深度网络的训练是一个复杂的过程,只要网络的前面几层发生微小的改变,那么后面几层就会被累积放大下去。一旦网络某一层的输入数据的分布发生改变,那么这一层网络就需要去适应学习这个新的数据分布,所以如果训练过程中,训练数据的分布一直在发生变化,那么将会影响网络的训练速度。
网络一旦train起来,那么参数就要发生更新,除了输入层的数据外(因为输入层数据,我们已经人为的为每个样本归一化),后面网络每一层的输入数据分布是一直在发生变化的,因为在训练的时候,前面层训练参数的更新将导致后面层输入数据分布的变化。
以网络第二层为例:网络的第二层输入,是由第一层的参数和input计算得到的,而第一层的参数在整个训练过程中一直在变化,因此必然会引起后面每一层输入数据分布的改变。我们把网络中间层在训练过程中,数据分布的改变称之为:“Internal Covariate Shift”。Batch Normalization,就是要解决在训练过程中,中间层数据分布发生改变的情况
原论文中的算法流程(针对mini-batch SGD):
作用:
1.极大增加收敛速度
2.不用去理会drop out、L2正则化中的参数选择问题,因为BN可以提高网络泛化能力
损失函数(Cost/Lost Functions)
最大似然估计(Maximum Likelihood Estimation)
很多损失函数来源于最大似然估计法。比如,最小二乘损失函数就可以从最大似然法推导;
参数向量θ的似然值,等于参数为θ时,样本向量x的概率密度积,表示如下:
概率密度积最大时对应的参数θ,即为参数的最大似然估计。
似然函数的对数变换,称为对数似然估计(log-likehood),可以把概率乘积变为对数概率相加的形式,更加方便运算和处理。
因为对数函数的单调性,所以似然函数和对数似然函数在相同的点取得最大值,正因如此,实际应用中,常常用对数似然估计代替最大似然估计。
一般,对于特定的数据集和统计分布,最大似然估计法选择分布参数,另似然函数取最大值。形象的说,最大似然法会使得选择的分布与样本数据最大程度相契合,也就是说,样本数据从该分布中生成的概率最大。
计算公式:
image.png
交叉熵(Cross-Entropy)
可以参考我的另一篇文章:
如何理解交叉熵(Cross Entory)?
平方损失函数(Quadratic Loss Function)
线性回归中,用最小二乘法求最优参数时,用的就是平方损失函数。平方函数的特性使得它在数学上比其它损失函数更容易处理和求解,另外,平方损失函数还具有对称性:目标上方的偏差与目标下方的偏差具有相同的在量化上一致。
该损失函数的一般形式记作:
其中,C为某一大于0的常数,t为预测值,x为实际值。
0-1 Loss
可以看出,该损失函数的意义就是,当预测错误时,损失函数值为1,预测正确时,损失函数值为0。该损失函数不考虑预测值和真实值的误差程度,也就是只考虑结果好坏,不管中间细节。这类似于把学生成绩分为及格和不及格,而不管考了多少分。
Hinge Loss
二分类情况下
其中,y是预测值(-1到1之间),t为目标值(±1)。
其含义为,y的值在-1到1之间就可以了,并不鼓励|y|>1,即并不鼓励分类器过度自信,让某个可以正确分类的样本距离分割线的距离超过1并不会有任何奖励。从而使得分类器可以更专注整体的分类误差。
正则项(Regularization)
在训练数据不够多时,或者训练过度时时,常常会导致过拟合。
随着训练过程的进行,模型复杂度增加,在训练集上的误差渐渐减小,但是在验证集上的误差却反而渐渐增大,因此很有可能得到一个不够稳定的模型。
为了防止过拟合,提高泛化能力,需要使用正则项。
L1正则化
L1正则化也被称为最小绝对误差。
带L1正则化的损失函数:
其中J0是原始的损失函数,加号后面的一项是L1正则化项,α是正则化系数。当参数w过多时,右边一项就会偏大,导致损失函数变大,因此带L1正则项的损失函数能限制参数复杂度。
在二维情况下(只有参数w1,w2),损失函数对应图形:
图中等值线是J0的等值线,黑色方形是L函数的图形。在图中,当J0等值线与L图形首次相交的地方就是最优解。
注意:L1正则化所得最优解具有稀疏性,即部分参数可能被缩减被0.
L2正则化
L2正则化也被称为最小平方误差。
带L2正则化的损失函数:
同样可以画出二维情况下的对应图形:
注意:L2正则化所得最优解不具有稀疏性,部分参数可能被缩减很小的数,但不会缩减为0.
Dropout
在训练开始时,我们随机地选择固定比例的隐藏层单元,这些单元的参数不更新,第二轮迭代时,重新随机选择固定比例的单元,同样不更新该部分单元的权重,重复以上步骤直到训练结束。
某一次迭代中,部分单元被drop(虚线部分):
网友评论