神经网络学习笔记(五)

来源:互联网 发布:空间日志软件 编辑:程序博客网 时间:2024/06/06 04:16

上一章我们讨论了求输出层激励的梯度和输出层预激励的梯度的方法,可以发现,求解过程极其复杂,本章将从链式法则入手,推导出各隐层的参数梯度的一般形式。

一、链式求导法则

回顾高数的知识,若一个函数可写成若干个中间结果,即p(a)=p(q1(a),...qi(a),...,qn(a)),则有

p(a)a=ip(a)qi(a)qi(a)a
即所谓“连线相乘,分线相加”。
为了求隐层参数梯度,可以令:

参数 含义 a 某隐层中的某个单元 qi(a) 上一个隐层的预激励 p(a) 误差函数

这里写图片描述

如上图所示,对于第2个隐层的第j个单元,按照上述对应关系,我们有:

参数 此处对应的元素 a h(2)(x)j qi(a) a(3)(x)i p(a) l(f(x),y)

二、隐层误差梯度

1.隐层误差偏导

对于第k个隐层的第j个隐层单元,根据上述链式求导法则,其误差偏导有:

h(k)(x)jlogf(x)y=ilogf(x)ya(k+1)(x)ia(k+1)(x)ih(k)(x)j
注意到h(k)(x)ja(k+1)(x)i有如下关系:
a(k+1)(x)i=b(k+1)i+jW(k+1)i,jh(k)(x)j
于是
=ilogf(x)ya(k+1)(x)iW(k+1)i,j=(W,j)T(a(k+1)(x)logf(x)y)

2.隐层误差梯度

求出偏导的通式后,其梯度也非常简单,有:

h(k)(x)logf(x)y=(W(k+1))T(a(k+1)(x)logf(x)y)

3.隐层预激励误差梯度

先来求单个第k隐层的第j单元的预激励误差偏导。继续使用链式求导法则,有:

logf(x)ya(k)(x)j=logf(x)yh(k)(x)jh(k)(x)ja(k)(x)j
注意到激励分量h(k)(x)j和预激励分量a(k+1)(x)j的关系为:
h(k)(x)j=g(a(k)(x)j)
又因为logf(x)yh(k)(x)j在上面已经给出,因此
=logf(x)yh(k)(x)jg(a(k)(x)j)
由此,隐层预激励误差梯度为:
a(k)(x)logf(x)y=(h(k)(x)logf(x)y)Ta(k)(x)h(k)(x)=(h(k)(x)logf(x)y)[,g(a(k)(x)),]
其中符号为元素之间相乘再相加。

0 0
原创粉丝点击