DNN及其误差逆传播算法

        为方便计算和书写,本次DNN只包含一个隐藏层,当隐藏层更深时,其原理和方法一样。网络结构如下:

DNN网络结构图

         其中 i=1,...p用来代指输入层的神经元,j=1,...h用来代指隐藏层的神经元,k=1,,,q 用来代指输出层的神经元。激活函数选取sigmoid函数,计算公式为:                                                       f(x)=sigmoid(x)=\frac{1}{1+e^{-x}}

y_1,...,y_h表示经过DNN后的输出(预测值),d_1,...,d_h为标签(实际值).激活函数的导数为:

                            \frac{ \partial f(x)}{ \partial x}=\frac{e^{-x}}{(1+e^{-x})^2}=f(x)(1-f(x))

前向传播:

1.隐藏层的计算: 

             net_j =\sum^{p}_{i=1} w_{ji} *x_i+b_j               Z_j =f(net_j)               

      上式中net_j表示的式隐藏层未激活的神经元,Z_j表示隐藏层激活后的神经元 (此时的数值式下一次的输出),w_{ji}表示的是输入层的第i个神经元和隐藏层的第j个神经元之间的权重,b_j表示的是隐藏层的偏置,是一个h维的向量。

2.输出层的计算

             net_k=\sum^{h}_{j=1}w_{kj}z_j +b_k                y_k=f(net_k)

    上式中w_{kj}表示的隐藏层的第j个神经元和输出层的第k个神经元之间的权重,b_k表示输出层的偏置,是一个q维的向量。net_k表示输出层未激活的神经元,y_k表示输出层激活的神经元,此时作为输出层的输出。

3.误差计算

选取mse作为误差的计算公式(其他的还有交叉熵,KL等,一般来说交叉熵用的比较多)

                                             E=\frac{1}{2} \sum^{q}_{k=1}(y_k-d_k)^2

这里前面的常数不影响误差的计算,为后面反向传播书写方方便,这里取二分之一。

梯度反向更新

1.隐藏层和输出层参数更新

1.1 权重的更新

误差对隐藏层和输出层之间权重的更新通过对输出层的输出传递到权重,其更新的公式如下:

                                              \frac{\partial E}{\partial {w_{kj}}}=\frac{\partial E}{\partial y_k}*\frac{\partial y_k}{\partial {w_{kj}}}

等式右边的偏导数单独计算如下:

\frac{\partial E}{\partial y_k}=y_k-d_k

\frac{\partial y_k}{\partial {w_{kj}}}=\frac{\partial y_k}{\partial net_k} *\frac{\partial net_k}{\partial {w_{kj}}} =y_k*(1-y_k)*z_j

综上隐藏层和输出层之间的权重梯度为:

\nabla w_{kj}= (y_k-d_k)*y_k*(1-y_k)*z_j

运用梯度下降算法更新权重

w_{kj}^{t+1}=w_{kj}^{t}-\eta*\nabla w_{kj}

1.2 偏置的更新

                                             \frac{\partial E}{\partial {w_{kj}}}=\frac{\partial E}{\partial y_k}*\frac{\partial y_k}{\partial b_kb_k}

等式右边偏导数单独计算如下:

\frac{\partial E}{\partial y_k}=y_k-d_k

\frac{\partial y_k}{\partial b_k}=\frac{\partial y_k}{\partial net_k} *\frac{\partial net_k}{\partial {b_k}} =y_k*(1-y_k)

综上隐藏层和输出层之间的偏置梯度为:

\nabla b_k =(y_k-d_k)*y_k*(1-y_k)

运用梯度下降算法更新偏置

b_k^{t+1} = b_k^t-\eta*\nabla b_k

2.输入层和隐藏层之间参数的更新

2.1 权重的更新

       误差对输入层和隐藏层之间的w_{ji}的更新与输出层和隐藏层之间的w_{kj}更新不同,w_{kj}只和输出层的第k个神经元有关,所以误差传递时只通过net_k就可以了,与输出层其他的神经元无关,但是在隐藏层的第j个神经元net_j,其与输出层的每个神经元都有关,所以误差在反向传到隐藏层时,需要通过输出层的每一个神经元传到隐藏层的net_j,因此对w_{ji}的梯度计算公式如下:

                                \frac{\partial E}{\partial {w_{ji}}}=\sum^{q}_{k=1}{(\frac{\partial E}{\partial y_k}*\frac{\partial y_k}{\partial z_j}*\frac{\partial z_j}{\partial {w_{ji}}})}

等式右边括号内的式子单独计算如下:

\frac{\partial E}{\partial y_k}=y_k-d_k

\frac{\partial y_k}{\partial z_k}=\frac{\partial y_k}{ \partial net_k}*\frac{ \partial net_k}{ \partial z_j}=y_k*(1-y_k)*w_{kj}

\frac{\partial z_j}{\partial w_{ji}}= \frac{\partial z_j}{\partial net_j}*\frac{\partial net_j}{ \partial w_{ji}}=z_j*(1-z_j)*x_i

综上,w_{ji}的梯度为:

\nabla w_{ji}=z_j*(1-z_j)*\sum^{q}_{k=1}{((y_k-d_k)*y_k*(1-y_k)*w_{kj}*x_i)}

梯度下降法更新权重:

w_{ji}^{t+1}=w_{ji}^{t}-\eta*\nabla w_{ji}

2.2 偏置的更新

对输出层和隐藏层偏置的更新和权重的更新一样,都需要经过输出层的每一个神经元才能到达net_j。其计算公式如下:

                                        \frac{\partial E}{\partial b_j}=\sum^{q}_{k=1}{(\frac{\partial E}{\partial y_k}*\frac{\partial y_k}{ \partial b_j})}

等式右边的式子单独计算如下:

\frac{\partial E}{\partial y_k}=y_k-d_k

\frac{\partial y_k}{\partial b_j}=\frac{\partial y_k}{\partial net_k}*\frac{\partial net_k}{\partial z_j}*\frac{\partial z_j}{\partial net_j}*\frac{\partial net_j}{\partial b_j}=y_k(1-y_k)*w_{ki}*z_j (1-z_j)

综上,b_j 的梯度为:

\nabla b_j=z_j(1-z_j)\sum^{q}_{k=1}(y_k-d_k)y_k(1-y_k)w_{kj}

梯度下降更新偏置:

b_j^{t+1} = b_j^t-\eta*\nabla b_j

注:

在更新过程中,所有的参数都是用上一步的所有信息进行更新,不是前面的更新之后立刻用于后面,后面的参数在更新过程中依旧使用上一时间段的所有信息。即t+1时刻的参数更新全部用的t时刻的信息,就算某些参数提前更新到了t+1,但是其他参数并不会用t+1的参数,而是继续使用t时刻的参数,这个和坐标下降算法不一样。

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