深度学习中的Logistic Regression 2---简单神经网络的反向传播推导

为什么要关注反向传播(Back Propagation)计算

其实单节点的神经网络也就是Logistic Regression。虽然之前的文章想从一元线性回归一直慢慢过渡到Logisitc回归,但是有些细节还不是特别明白。所以这篇小文着重说明一下,单神经节点的反向传播计算公式的推导。其实从工程的角度,软件工程师是不需要特别了解这些细节,因为具体做工程的时候都会利用现有的深度学习框架,比如 TensorFlow, Caffe,编程框架往往已经把神经网络的反向传播都已经实现的很傻瓜了,框架使用者不必关注这些细节了。但是如果能够把反向传播背后的原理搞的清楚一点,还是有利于做一些创新的工作。

单个神经网络的简单架构

架构如下图:

arch

这是一个识别猫咪的简单的case study,输入像素值,输出0 or 1,代表是否是猫!只有一层,一个神经网络,也叫Logistic Regression。从图上我们可以先把前向传播的计算公式列出来:

对于一个实例数据 x^{(i)}:

z^{(i)} = w^T x^{(i)} + b
\hat{y}^{(i)} = a^{(i)} = sigmoid(z^{(i)})
\mathcal{L}(a^{(i)}, y^{(i)}) = - y^{(i)} \log(a^{(i)}) - (1-y^{(i)} ) \log(1-a^{(i)})

简单解释一下,其实要解释的内容也正是逻辑回归的精髓,不知道只言片语可否表达清楚。式子1表示的是神经网络节点的前半段的计算,即多元线性回归,其中向量w和b是学习算法想要找到或者说训练的参数,这和一元线性回归是一样的,即找到一个最优的直线,多元回归则是找到最优的超平面。但是逻辑回归要求输出的值只有1或者0,所以必须加上式子2的补充, 即sigmoid函数,sigmoid函数定义如下:

sigmoid(x) = \frac{1}{1+e^{-x}}

他的函数图像是这样的:

Sigmoid

从图像可知,sigmoid函数可以把几乎是全实数的定义域,转化成只有(0, 1)之间的实数,满足Logistic Regresion(逻辑回归)的要求

然后基于全部m个样本数据的总代价函数为:
J = \frac{1}{m} \sum_{i=1}^m \mathcal{L}(a^{(i)}, y^{(i)})

式子3代表的代价函数的细节和线性回归不太一样,在这里先做为已知结论,以后有时间再做解释。

什么是反向传播计算

反向传播这个名比较酷,好像不明觉厉。但是其实说白了就是在梯度下降法里的对代价函数J求w和b的偏导数,可以继续迭代下去找到最优解即:

\left\{ \begin{aligned} w := w - \alpha\frac{\partial J(w, b)}{\partial w}\\ b := b - \alpha\frac{\partial J(w, b)}{\partial b}\\ \end{aligned} \right.

反向传播计算其实就是要计算这两个偏导数。

开始推导

推导背后的原理其实很简单,就是对多元函数的链式求导数,把高等数学的微积分好好了解一下就有希望推导出来。说得简单,其实还不是很容易,深度神经网络学习里的反向传播公式计算简直是灾难!所以先从单节点的推导比较容易理解。

将上面的代价函数结合起来:

J = \frac{1}{m} \sum_{i=1}^m (- y^{(i)} \log(a^{(i)}) - (1-y^{(i)} ) \log(1-a^{(i)}))

再加上其他前向计算公式:

Z = w^T X + b
\hat{Y} = A = sigmoid(Z)

a. 先求\frac{\partial J}{\partial w}

通过链式求导得:

\left\{ \begin{aligned} \frac{\partial J}{\partial w} = \frac{\partial J}{\partial Z} \frac{\partial Z}{\partial w}\\ \frac{\partial J}{\partial Z} = \frac{\partial J}{\partial A} \frac{\partial A}{\partial Z}\\ \end{aligned} \right.

A是a^{(i)}组成的向量,所以先直接对J求A的偏导数得:

\frac{\partial J}{\partial A}= - \frac{1}{m} \sum_{i=1}^m(\frac{y^{(i)}}{a^{(i)}} - \frac{1 - y^{(i)}}{1 - a^{(i)}})

\frac{\partial A}{\partial Z} 就是对Sigmoid函数的求导,直接用结论就行,因为比较容易:

\frac{\partial A}{\partial Z}=sigmoid'(Z)= (1 - A)A

然后将\frac{\partial A}{\partial Z}\frac{\partial J}{\partial A} 相乘得到:

\frac{\partial J}{\partial Z} = - \frac{1}{m} \sum_{i=1}^m(\frac{y^{(i)}}{a^{(i)}} - \frac{1 - y^{(i)}}{1 - a^{(i)}}) (1 - A)A
\frac{\partial J}{\partial Z} = \frac{1}{m} \sum_{i=1}^m (a^{(i)} - y^{(i)})

\frac{\partial J}{\partial w} = \frac{1}{m}X(A-Y)^T

再求 \frac{\partial Z}{\partial w}

\frac{\partial Z}{\partial w} = (w^T X + b)' = X

最后得到:

\frac{\partial J}{\partial w} = \frac{\partial J}{\partial Z} \frac{\partial Z}{\partial w}= \frac{1}{m} \sum_{i=1}^m (a^{(i)} - y^{(i)})X

\frac{\partial J}{\partial w} = \frac{1}{m}X(A-Y)^T

b. 再求\frac{\partial J}{\partial b}

同样是应用链式求导大法:

\frac{\partial J}{\partial b}=\frac{\partial J}{\partial A} \frac{\partial A}{\partial Z} \frac{\partial Z}{\partial b}

可以将上面的中间结果代入:

\frac{\partial J}{\partial b} = - \frac{1}{m} \sum_{i=1}^m(\frac{y^{(i)}}{a^{(i)}} - \frac{1 - y^{(i)}}{1 - a^{(i)}}) (1 - A)A

\frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^m (a^{(i)} - y^{(i)}) 这里是因为\frac{\partial Z}{\partial b}=(w^T X + b)'=1

最后结论总结

再把结果综合一下在这里:
\frac{\partial J}{\partial w} = \frac{1}{m}X(A-Y)^T

\frac{\partial J}{\partial b} = \frac{1}{m} \sum_{i=1}^m (a^{(i)}-y^{(i)})

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

推荐阅读更多精彩内容

  • 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 声明:作者翻译论文仅为学习,如有侵权请...
    SnailTyan阅读 5,065评论 0 8
  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,333评论 0 2
  • 一放寒假,妈妈就带我去泰国苏梅岛玩,还有四个学校的小朋友一起。在苏梅岛的最后一天早上,我和黄英博还有虎子一起在游泳...
    王鑫宁阅读 393评论 0 0
  • 安引阅读 93评论 0 0
  • 你比演员还出色 表情真挚 动作自然 路人纷纷献出爱心 装满了破碗 虚伪的道谢背后 是嘲笑与消费 一片丰收 是时候转...
    四季无颜阅读 290评论 12 21