神经元模型
如上图,神经元接收到来自(n)个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。
感知机
对训练样例((x,y)),若当前感知机的输出为(hat{y}),则感知机权重将这样调整:
其中,(etain (0,1))称为学习率,(w_i)为权重。若感知机对训练样例((x,y))预测正确,则感知机不发生变化;否则将根据错误的程度进行权重调整。
多层前馈神经网络:每层神经元与下一层神经元互连,神经元之间不存在同层连接,也不存在跨层连接。
神经网络的学习过程,就是根据训练数据来调整神经元之间的“连接权”以及每个功能神经元的阈值。
BP算法(反向传播算法)
给定训练集(D={(x_1,y_1),(x_2,y_2),cdots,(x_m,y_m)}, x_iin R^d, y_iin R_l),即输入示例由(d)个属性描述,输出(l)维实值向量。
对训练集,假定神经网络的输出为(hat{y_k}=(hat{y}_1^k,hat{y}_2^k,cdots,hat{y}_l^k)),即
其中,( heta_j)表示输出层第(j)个神经元的阈值。
均方误差为:
BP是一个迭代算法,在迭代的每一轮中采用广义的感知机学习规则对参数进行更新估计。BP算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,有
由于(w_{hj})先影响到第(j)个输出层神经元的输入值(eta_j),再影响到其输出值(hat{y}_j^k),然后影响到(E_k),有:
对于Sigmoid函数,有(f'(x)=f(x)(1-f(x)))
其中,
因此,$$Delta w_{hj}=eta g_j b_h$$
类似可得:
其中,
BP算法的目标是要最小化训练集(D)上的累计误差:$$E=frac{1}{m}sum_{k=1}^mE_k$$
标准BP算法:每次仅针对一个训练样例更新连接权和阈值。
BP神经网络经常遭遇过拟合,其训练误差持续降低,但测试误差却可能上升。解决策略:
- “早停”(early stopping):将数据分成训练集和验证集,训练集用来计算梯度,更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。
- “正则化”(regularization):在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和,仍令(E_k)表示第(k)个样例上的误差,(w_i)表示连接权和阈值,则误差目标函数为:
其中,(lambda in (0,1))用于对经验误差与网络复杂度这两项进行折中,常通过交叉验证法来估计。
扩展
多隐层神经网络难以直接用经典算法(日标准BP算法)进行训练,因为误差在多隐层内逆传播时,往往会“发散”而不能收敛到稳定状态。