梯度下降法和误差反向传播推导

梯度下降法原理

梯度下降法的示意图如下
梯度下降法和误差反向传播推导_第1张图片

前提:假设 x⃗ 1×m y⃗ 1×n 的向量有一个函数关系 y⃗ =f(x⃗ |θ) ,其中 θ 是一个 l 维的参数向量,为例拟合初函数 f .
现有, k 组观测值,得到训练集矩阵 Xk×m Yk×n .误差就是

J=12i=1k[f(Xi|θ)Yi]2

上式可以将 X Y 看作是已知常数,其中 Xi Yi X Y 的第 i 行.
上式形成了一个误差曲面,即 J 是个关于 θ 的函数
为了求得 θ 的值使得误差最小,如上图所示,可以向梯度的反方向搜索,有
Δθθnew===αerrorθαi=1k[f(Xi|θ)Yi]f(Xi|θ)θθoldΔθ

当然,当 f 是线性函数的时候,参数是个开口向上的二次曲面,
f(x⃗ )=θ0+θ1x1+θ2x2++θmxm

fθj=xj

Δθj==αerrorθjαi=1k[ii=0mθiixiiYi]xj

其中 x0=1 为偏置

神经网络的误差反向传播

梯度下降法和误差反向传播推导_第2张图片
梯度下降法和误差反向传播推导_第3张图片
上面两图是简单的神经元和神经网络模型
模型假设:
现在假设神经元有三层
从上到下的坐标为 kji ,每一层的输入都是下一层的输出,函数 f 为神经元的激活函数,每个神经元连接下一层第 i 个神经元的权值为 wi ,神经元的输出为 y=f(net) ,其中 net=n1p=0wpxp ,从上到下有各层的节点数为 cba , N 为一次训练的样本总数
对于第k层,即输出层有:

netnkynkJ===j=0b1wkjynjf(netnk)12n=0N1k=0c1[ynktnk]2

其中向量 t⃗ =(t1,t2,,tc) 为教师信号.n为不同的样本
对于第j层,即输出后面的隐层有:
netnjynj==i=0a1wjiynif(netnj)

对于第 k 层和第 j 层之间的权值,使用梯度下降算法,有:
Jwkjδk======Jynkynknetnknetnkwkjn=0N1(ynktnk)f(netnk)ynjδkynjn=0N1(ynktnk)f(netnk)JynkynknetnkJnetnk

其中 δk 为误差项
对于第 j 层和第i层之间的权值,使用梯度下降法,有:
Jwji=======Jynjynjnetnjnetnjwji{12N1n=0c1k=0[ynktnk]2}ynjf(netnj)ynin=0N1k=0c1(ynktnk)ynkynjf(netnj)ynin=0N1k=0c1(ynktnk)ynknetnknetnkynjf(netnj)ynin=0N1k=0c1(ynktnk)f(netnk)wkjf(netnj)yni[k=0c1δkwkjf(netnj)]yniδjyni

由全微分公式
假设 Jwnk=δkynj
Jnetnk=δk

Jnetnj=k=0c1Jnetnknetnknetnj=k=0c1Jnetnknetnkynjynjnetnj=k=0c1δkwkjf(netj)

误差反向传播模型如下图所示:
梯度下降法和误差反向传播推导_第4张图片

你可能感兴趣的:(机器学习)