[神经网络这次真的搞懂了!] (6) 使用神经网络识别手写数字 - 反向传播(1)

英文原文:http://neuralnetworksanddeeplearning.com/
对原文的表达有部分改动

在前几章中,我们看到了神经网络如何使用梯度下降算法确定的权重和偏差。然而,我们并没有解释一个关键问题:如何计算代价函数的梯度?在本章中,我将介绍一种用于计算此类梯度的快速算法,一种称为反向传播(backpropagation)的算法。

反向传播算法最初是在 1970 年代引入的,但直到 1986 年 David Rumelhart、Geoffrey Hinton 和 Ronald Williams 发表的一篇著名论文才让人们充分认识到其重要性。那篇论文中描述的几个神经网络,其中使用反向传播的工作速度比早期的学习方法快得多,这使得使用神经网络解决以前无法解决的问题成为可能。今天,反向传播算法是神经网络学习的主力。

与本系列的其余部分相比,本章涉及更多的数学计算,可能你的数学并不好,但理解反向传播是很有必要的。反向传播的核心是代价函数 C 的偏导 \frac {∂C}{∂w} 相对于网络中的任何权重 w(或偏差 b)的表达式。该表达式告诉我们,当我们改变权重和偏差时,成本变化的速度有多快。虽然表达方式有些复杂,但它也有一种美感,每个元素都有自然、直观的解释。因此,反向传播不仅仅是一种快速学习算法。它实际上让我们详细了解权重和偏差的变化如何改变网络的整体行为。这非常值得详细研究。

基于矩阵的快速计算神经网络输出

在讨论反向传播之前,让我们先用基于矩阵的快速算法来计算神经网络的输出。我们实际上已经在上一章的结尾处简要地看到了这个算法,但我没有详细讲述,这里值得详细回顾一下。特别是,这是熟悉反向传播中使用的各种各样符号的好机会。

让我们从一个符号开始,它让我们以明确的方式引用网络中的权重。我们将使用 w^{l}_{jk} 来表示从第 (l−1)^{th} 层中的第 k^{th} 个神经元到第 l^{th} 层中的第 j^{th} 个神经元的连接权重。因此,例如,下图显示了从第二层中的第四个神经元到网络第三层中的第二个神经元的连接权重:

这种表示法(w^{l}_{jk} 而不是 w^{l}_{kj})一开始很麻烦,掌握它确实需要一些时间。但是只要稍加努力,您就会发现符号变得简单而自然。您可能认为使用 j 来指代输入神经元,使用 k 指代输出神经元更有符合习惯,我将在下面解释其中的原因。

我们对网络的偏差和激活使用类似的符号。明确地,我们使用 b^l_j 来表示第 l^{th} 层中第 j^{th} 个神经元的偏置。并且我们使用 a^l_j 来表示第 l^{th} 层中的第 j^{th} 个神经元的激活值。下图显示了这些符号的使用示例:

有了这些符号,第 l^{th} 层中第 j^{th} 个神经元的激活 a^l_j与第 第 (l-1)^{th} 层中的激活有关,等式如下:
a^l_j = σ (\sum_k w^{l}_{jk}a^{l-1}_k + b^l_j)

其中求和是第 (l−1)^{th} 层中所有神经元的总和。为了以矩阵形式重写该表达式,我们为每一层定义了一个权重矩阵 w^l。权重矩阵 w^l的条目就是连接第(l)^{th}层神经元的权重,第j^{th}行第k^{th}列的条目是w^l_{jk}。类似地,对于每一层我们定义一个偏置向量 b^l。您可能会猜到,偏置向量的分量只是值 b^l_j。最后,我们定义了一个激活向量 a^l,它的组成部分是激活 a^l_j

我们需要以矩阵形式重写a^l_j = σ (\sum_k w^{l}_{jk}a^{l-1}_k + b^l_j),其中最后一个要素是向量化一个函数(例如 σ)的想法。我们希望将一个函数(例如 σ)应用于向量 v 中的每个元素。我们使用明显的符号 σ(v) 来表示函数的这种按元素处理。也就是说,σ(v) 的分量就是 σ(v)_j=σ(v_j)。举个例子,如果我们有函数 f(x)=x^2 那么 f 的向量化形式可得出:
f(\begin{bmatrix} 2 \\ 3 \end{bmatrix}) = \ \begin{bmatrix} f(2) \\ f(3) \end{bmatrix} = \begin{bmatrix} 4 \\ 9 \end{bmatrix}
也就是说,向量化的 f 只是对向量的每个元素进行平方。

有了这些符号,我们可以将激活方程改写为漂亮而紧凑的矢量化形式:
a^l= σ(w^la^{l-1}+ b^l)

这个表达式为我们提供了一种更全局的思考方式,让我们思考一层中的激活如何与前一层中的激活相关联:我们只需将权重矩阵应用于前一层激活,然后添加偏置向量,最后应用 σ 函数(这里体现了 w^{l}_{jk} 而不是 w^{l}_{kj} 的优势,如果使用后者,则矢量化会改写成 a^l= σ((w^l)^Ta^{l-1}+ b^l),这增加了复杂性)。该表达式在实践中也很有用,因为大多数矩阵库提供了实现矩阵乘法、向量加法和向量化的快速方法。事实上,之前手写识别代码隐含地使用了这个表达式来计算网络输出的行为。

当使用上述方程计算 a^l 时,定义中间量 z^l≡w^la^{l−1}+b^l。我们称 z^l 为第 l 层神经元的加权输入(Weighted Input)。我们将在本系列后面大量使用了加权输入 z^l。如果根据加权输入来写,则表示为 a^l=σ(z^l)。还值得注意的是,z^l 有分量 z^l_j=\sum_{k}w^l_{jk}a^{l-1}_k+ b^l_j,即 z^l_j只是第 l 层神经元第j^{th}个神经元的加权输入。

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

推荐阅读更多精彩内容