zoukankan      html  css  js  c++  java
  • 一个例子秒懂误差反向传播

    假设有两个输入值,一个隐藏节点,一个输出节点,隐藏层和输出层的激活函数都是 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)

  • 相关阅读:
    关于非旋转Treap
    CSP2019第二轮-划水游记
    题解 Luogu P3370
    CF926B Add Points
    日常卡题
    关于SPFA
    用Docker部署自己的JupyterHub
    请不要在JDK7及以上用Json-lib了
    SQL Server 2000向SQL Server 2008 R2推送数据
    .NET实现微博粉丝服务平台接口
  • 原文地址:https://www.cnblogs.com/long5683/p/12885759.html
Copyright © 2011-2022 走看看