假设有两个输入值,一个隐藏节点,一个输出节点,隐藏层和输出层的激活函数都是 sigmoid 。下图描述了这个网络。假设损失函数是平方误差L=1/2(y-y^) 2
在这里插入图片描述

一、正向传播

假设我们试着输入一些二分类数据,目标是 y=1。我们从正向传导开始,首先计算输入到隐藏层

h=∑​​w​i​​x​i​​=0.1×0.4−0.2×0.3=−0.02

隐藏层的输出 (激活函数f=sigmoid)

a=f(h)=sigmoid(−0.02)=0.495.

把它作为输出层的输入,神经网络的输出是:

​y​^​​=f(W⋅a)=sigmoid(0.1×0.495)=0.512.

二、反向传播

有了这个输出,我们就可以开始反向传播来计算两层的权重更新了。sigmoid 函数特性 f​′​​(x)=f(x)(1−f(x)),输出误差是:

δ​o​​=(y−​y​^​​)f​′​​(W⋅a)=(1−0.512)×0.512×(1−0.512)=0.122.

现在我们要通过反向传播来计算隐藏层的误差。这里我们把输出误差与隐藏层到输出层的权重 W 相乘。隐藏层的误差 δ​j​h​​=∑​k​​W​jk​​δ​ko​​f​′​​(h​j​​),这里因为只有一个隐藏节点,这就比较简单了

δ​h​​=Wδ​o​​f​′​​(h)=0.1×0.122×0.495×(1−0.495)=0.003

有了误差,就可以计算梯度下降步长了。隐藏层到输出层权重步长是学习率η乘以输出误差再乘以隐藏层激活值。

ΔW=ηδ​o​​a=0.5×0.122×0.495=0.0302

从输入到隐藏层的权重 w​i​​,是学习率乘以隐藏节点误差再乘以输入值。

Δw​i​​=ηδ​h​​x​i​​=(0.5×0.003×0.1,0.5×0.003×0.3)=(0.00015,0.00045)

posted on 2020-05-09 22:19  一抹烟霞  阅读(1012)  评论(0编辑  收藏  举报

Live2D