深度学习(六):前向传播算法和后向传播算法

版权声明:本文为博主原创文章,转载请注明出处,商业转载请联系作者(huxingfei097@163.com),谢谢合作!
  • 前向传播算法
     在神经网络中,信息从上一个神经元直接流转到下一个神经元,直到输出,依据每一个神经元的输入并根据相应规则可以计算出输出,最终得到在当前参数下的损失函数的过程,称为前向传播
     上图所示的神经网络结构前向传播过程计算如下(为简化计算,省略偏置项):
      隐藏层的输出如下:
        a11 = x1W1,1(1) + x2W2,1(1)
        a12 = x1W1,2(1) + x2W2,2(1)
        a13 = x1W1,3(1) + x2W2,3(1)
      最终输出层的输出如下:
        y^ = a11W1,1(2) + a12W1,2(2)+ a13W1,3(2)
     最终的损失函数计算如下(以均方误差损失函数为例):
        JMSE = ½ |y - y^|2
  • 反向传播算法
    反向传播算法是在前向传播算法的基础上,从神经网络的输出层向输入层依次计算损失函数对于各个参数的梯度,并在给定学习率下更新相关参数。
     在上面的神经网络中,依据链式求导法则,可以依次求出损失函数对每个参数的导数:
       \sigma_1 = \frac{\alpha J_{MSE} }{\alpha W_{1,1}^{(2)}} = \frac{\alpha J_{MSE} }{\alpha y} * \frac{\alpha y }{\alpha W_{1,1}^{(2)}} = {|y - \hat y |} * a_{11}
       ................
       \sigma_9 = \frac{\alpha J_{MSE} }{\alpha W_{1,1}^{(1)}} = \frac{\alpha J_{MSE} }{\alpha y} * \frac{\alpha y }{\alpha a_{1,1} } * \frac{\alpha a_{1,1} }{\alpha W_{1,1}^{(1)} }
          = {|y - \hat y |} * a_{11} * x_1
     其中\sigma_1,...,\sigma_9是损失函数对对应参数求导后得到的梯度(斜率),依据该值即可修正神经网络中的参数:
         W_{1,1}^{(1) '} = W_{1,1}^{(1)} - \eta \sigma_1
    其中\eta是学习率,即沿着梯度(斜率)的方向更新参数。
     利用前向传播算法和反向传播算法不断更新损失函数的值和参数,直到损失函数下降到指定的阈值(或者最小值),即完成神经网络的训练。
  • 算法实例:
     假设如下图的一个神经网络(比上面的要复杂一些)
     已知初始值:
     w1 = 0.1,w2 = 0.2,w3 = 0.3,w4 = 0.4
     w5 = 0.5,w6 = 0.4,w7 = 0.3,w8 = 0.2
     i1 = 0.05,i2 = 0.1
     o1 = 0.01,o2 = 0.99
     b1 = 0.25,b2 = 0.45
    输入输出固定,需要优化的参数是权重w1~w8以及偏置b1,b2
    前向传播过程:
    隐藏层计算:
    h_1 = i_1 * w_1 + i_2 * w_3 + b_1 = 0.285
    h_2 = i_1 * w_2 + i_2 * w_4 + b_1 = 0.3
    输出层计算:
    \hat o_1 = h_1 * w_5 + h_2 * w_7 + b_2 = 0.4825
    \hat o_2 = h_1 * w_6 + h_2 * w_8 + b_2 = 0.624
    损失函数计算:
    J_{MSE} = \frac{1}{2}|o_1 - \hat o_1|^2 + \frac{1}{2}| o_2 - \hat o_2|^2 = 0.082103
    后向传播过程:
    权重参数导数计算:
    \sigma_1 = \frac{\alpha J_{MSE}}{\alpha w_1} = \frac{\alpha J_{MSE}}{\alpha o_1} * \frac{\alpha o_1}{\alpha h_1} * \frac{\alpha h_1}{\alpha w_1} + \frac{\alpha J_{MSE}}{\alpha o_2} * \frac{\alpha o_2}{\alpha h_1} * \frac{\alpha h_1}{\alpha w_1}
       = ( o_1 - \hat o_1) * w_5 * i_1 + ( o_2 - \hat o_2) * w_6 * i_1
        = -0.0044925
    \sigma_2 = \frac{\alpha J_{MSE}}{\alpha w_2} = \frac{\alpha J_{MSE}}{\alpha o_1} * \frac{\alpha o_1}{\alpha h_2} * \frac{\alpha h_2}{\alpha w_2} + \frac{\alpha J_{MSE}}{\alpha o_2} * \frac{\alpha o_2}{\alpha h_2} * \frac{\alpha h_2}{\alpha w_2}
       = ( o_1 - \hat o_1) * w_7 * i_1 + ( o_2 - \hat o_2) * w_8 * i_1
       = -0.0034275
    \sigma_3 = \frac{\alpha J_{MSE}}{\alpha w_3} = \frac{\alpha J_{MSE}}{\alpha o_1} * \frac{\alpha o_1}{\alpha h_1} * \frac{\alpha h_1}{\alpha w_3} + \frac{\alpha J_{MSE}}{\alpha o_2} * \frac{\alpha o_2}{\alpha h_1} * \frac{\alpha h_1}{\alpha w_3}
       = ( o_1 - \hat o_1) * w_5 * i_2 + ( o_2 - \hat o_2) * w_6 * i_2
       = -0.008985
    \sigma_4 = \frac{\alpha J_{MSE}}{\alpha w_4} = \frac{\alpha J_{MSE}}{\alpha o_1} * \frac{\alpha o_1}{\alpha h_2} * \frac{\alpha h_2}{\alpha w_4} + \frac{\alpha J_{MSE}}{\alpha o_2} * \frac{\alpha o_2}{\alpha h_2} * \frac{\alpha h_2}{\alpha w_4}
       = ( o_1 - \hat o_1) * w_7 * i_2 + ( o_2 - \hat o_2) * w_8 * i_2
       = -0.006855
    \sigma_5 = \frac{\alpha J_{MSE}}{\alpha w_5} = \frac{\alpha J_{MSE}}{\alpha o_1} * \frac{\alpha o_1}{\alpha w_5}
       = ( o_1 - \hat o_1) * h_1
       = -0.1346625
    \sigma_6 = \frac{\alpha J_{MSE}}{\alpha w_6} = \frac{\alpha J_{MSE}}{\alpha o_2} * \frac{\alpha o_2}{\alpha w_6}
       = ( o_2 - \hat o_2) * h_1
       = 0.10431
    \sigma_7 = \frac{\alpha J_{MSE}}{\alpha w_7} = \frac{\alpha J_{MSE}}{\alpha o_1} * \frac{\alpha o_1}{\alpha w_7}
       = ( o_1 - \hat o_1) * h_2
       = -0.14175
    \sigma_8 = \frac{\alpha J_{MSE}}{\alpha w_8} = \frac{\alpha J_{MSE}}{\alpha o_2} * \frac{\alpha o_2}{\alpha w_8}
       = ( o_2 - \hat o_2) * h_2
       = 0.1098
    权重计算:
    \hat \mu_1 = \frac{\alpha J_{MSE}}{\alpha b_1} = \frac{\alpha J_{MSE}}{\alpha o_1} * \frac{\alpha o_1}{\alpha h_1} * \frac{\alpha h_1}{\alpha b1} + \frac{\alpha J_{MSE}}{\alpha o_1} * \frac{\alpha o_1}{\alpha h_2} * \frac{\alpha h_2}{\alpha b1}
              +\;\frac{\alpha J_{MSE}}{\alpha o_2} * \frac{\alpha o_2}{\alpha h_1} * \frac{\alpha h_1}{\alpha b1} + \frac{\alpha J_{MSE}}{\alpha o_2} * \frac{\alpha o_2}{\alpha h_2} * \frac{\alpha h_2}{\alpha b1}
               = ( o_1 - \hat o_1) * w_5 * 1 + ( o_1 - \hat o_1) * w_7 * 1
              +\;( o_2 - \hat o_2) * w_6 * 1 + ( o_1 - \hat o_1) * w_8 * 1
                = -0.1584
    \hat \mu_2 = \frac{\alpha J_{MSE}}{\alpha b_2} = \frac{\alpha J_{MSE}}{\alpha o_1} * \frac{\alpha o_1}{\alpha b_2} + \frac{\alpha J_{MSE}}{\alpha o_2} * \frac{\alpha o_2}{\alpha b_2}
               = ( o_1 - \hat o_1) * 1 + ( o_2 - \hat o_2) * 1
                = -0.1065
     以上计算出了在初始权重和偏置的情况下的损失函数,以及损失函数对每个要学习的参数(权重参数和偏置参数)的导数,之后即可按照选定的学习率更新参数,然后不断循环计算损失函数、更新参数直到达到迭代次数或者损失函数达到指定与之或者最小值。更新公式:
    w_{i+1} = w_i - \eta\,\sigma_i
    b_{i+1} = b_i - \eta\,\mu_i

参考资料
 《深度学习》
本系列相关文章
深度学习(五):机器学习基础
深度学习(四):数值计算基础
深度学习(三):概率与信息论基础
深度学习(二):主成分分析算法
深度学习(一):线性代数基础

深度学习新手,文章若有疏漏,欢迎及时指正!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容