机器学习训练营——机器学习爱好者的*交流空间(入群联系qq:2279055353)
神经网络是什么?
神经网络(Neural Networks
)专业术语,涵盖了一大类统计模型和学习算法。在这里,我们介绍最普遍使用的"vanilla"神经网络,有时也称单隐层后向传播网络,或者简称单层感知器(single layer perceptron
).
一个神经网络,简单地说,就是一个非线性统计模型。具体地说,一个神经网络是一个两阶段回归或分类模型,也就是说,神经网络可以应用于回归或分类问题。典型的神经网络,用一个示意图表示如下:
对于回归,通常只有一个因变量,即,神经网络的顶端只有一个输出变量 Y1. 对于K-类的分类问题,顶端有K个0-1型变量 Y1,Y2,…,YK.
中间层的导出特征 Zm(m=1,2,dots,M) 由输入 X 的线性变换得到,然后目标变量 Yk 用一个 Z1,…,ZM 的线性组合的函数拟合。
Zm=σ(α0m+αmTX),m=1,2,…,M
Tk=β0k+βkTZ,k=1,2,…,K
fk(X)=gk(T),k=1,2,…,K
这里,
Z=(Z1,Z2,…,ZM)′,T=(T1,T2,…,TK)′
其中,**函数 σ(⋅) 通常选择sigmoid
函数,即
σ(v)=1+e−v1
输出函数 gk(T) 允许输出向量 T 的最终变换。对于回归,通常选择 gk(T)=Tk; 而对于K-类分类,通常选择 gk(T)=l=1∑KeTleTk.
在神经网络的中间层,Zm′s 被称作隐变量,因为它们不是直接观测得到的。我们可以把 Z 当作原始输入 X 的基扩展,然后,使用这些变换作为输入,神经网络变成了一个标准的线性模型。这个过程里的参数是通过数据估计来的。
注意到,如果 σ(⋅) 是恒等函数,那么整个模型退化成一个线性模型。从这个角度看,神经网络可以视为线性模型的推广。通过引入非线性变换 σ, 它扩展了线性模型。
拟合神经网络
神经网络的未知参数通常称为权(weights
), 我们通过训练数据拟合它们。不妨记权集 θ, 它由
{α0m,αm;m=1,2,…,M}
β0k,βk;k=1,2,…,K
对于回归,我们使用误差平方和作为拟合测度(损失函数)
R(θ)=k=1∑Ki=1∑N(yik−fk(xi))2
对于分类,我们使用平方误差或交叉熵
R(θ)=−k=1∑Ki=1∑Nyiklogfk(xi)
则,对应的分类器 G(x)=argkmaxfk(x).
所有的参数均由最大似然法估计得到。通常的全局最小 R(θ), 可能是参数的过度拟合解。这样,就需要加一个惩罚项,或者间接地设置终止。最小化 R(θ) 的通常方法是梯度下降(Gradient Descent
), 也称为向后传播法。
向后传播算法
下面详细阐述向后传播在平方误差损失下的数学推导。令 zmi=σ(α0m+αmTxi), zi=(z1i,z2i,…,zMi)′. 则
固定当前权(参数), 使用(5)计算预测值 f^k(xi)
计算误差 δki, 使用(5)计算 smi. 然后,代入(4)计算梯度。再根据(3)升级权,回到上步。迭代进行,直到达到收敛准则。
值得注意的问题
训练一个神经网络时,模型经常出现过度参数化,优化问题是非凸的、不稳定。在这里,我们总结几个值得注意的问题。
初始值
通常,权值选择0附近的随机数,因此,模型开始时接近线性,随着权增加,变成了非线性。
过度拟合
神经网络在训练时经常包括太多的权,因此倾向过度拟合数据。这时,一个验证集对于判断迭代何时停止是有用的。
输入规模
输入变量的数量会对最终的解质量产生影响。开始时,最好归一化所有输入变量(0均值、1标准差). 这样,使用标准化的输入,权初始值典型地在[-0.7, 0.7]内均匀取值。
隐单元与隐层
一般来讲,隐层变量数倾向于多好,数量太少会使模型捕捉数据里的非线性关系变得困难。随着输入变量数与训练样本数的增加,隐单元数典型的在5~100之间。也可以使用交叉验证的方法确定最优的隐单元数。而隐层数的选择,主要受背景知识和试验的影响。
更多精彩内容请关注微信公众号“统计学习与大数据”