吴恩达机器学习笔记-神经网络的代价函数和反向传播算法

代价函数

在神经网络中,我们需要定义一些新的参数来表示代价函数。

  • L = total number of layers in the network
  • s_l = number of units (not counting bias unit) in layer l
  • K = number of output units/classes

在上一章的神经网络的介绍中,我们有多个输出的节点。这里我们定义 h_\Theta(x)_k 来表示第k个输出结果。神经网络的代价函数应当和之前说过的Logistic Regression的代价函数的一般形式一样,如下所示:
J(\theta) = -\frac{1}{m}\sum_{i=1}^{m}[y^(i)log(h_\theta(x^(i)))+(1-y^(i))log(1-h_\theta(x^(i)))] + \frac{\lambda}{2m}\sum_{j=1}^{n}\theta_j^2
对于一个神经网络来说,我们的代价函数是这个式子的一般化形式,这里不再是仅有一个逻辑回归输出单元,取而代之的是K个。因此我们的代价函数长这样:

这是一个很复杂的函数,(复杂的我懒得用latex表达式写出来了),我们添加了一些嵌套的求和来计算多个输出节点。在函数的第一部分中括号前面我们额外添加了求出各个节点的代价函数的求和,在正则化部分,需要计算多元的矩阵运算,当前\Theta矩阵中的列数等于我们当前层中的节点数(包括偏差单元) ,在当前的\Theta矩阵中,行数等于下一层的节点数(不包括偏置单元) ,在逻辑回归之前,将每一项都进行平方。

注意(原课后笔记中的,不翻译了):

  • the double sum simply adds up the logistic regression costs calculated for each cell in the output layer
  • the triple sum simply adds up the squares of all the individual Θs in the entire network.
  • the i in the triple sum does not refer to training example i

反向传播

反向传播是神经网络中用于最小化代价函数的一个方法,类似于在logistic回归和线性回归中使用的梯度下降,目标都是计算min_\Theta(J(\Theta))。也就是说,我们需要找到一个最佳的参数来最小化J,则需要计算J(\Theta)的偏导数\frac{\partial}{\partial\Theta_{i,j}^(l)}J(\Theta)

从只有一个训练样本的情况下来看,因此先假设整个训练集只有只包含一个训练样本(x,y),也就是实数对。

我们大致看一下使用这个训练样本来计算的顺序,首先使用前向传播来计算一下在给定输入的时候,假设函数是否会真的输出结果,如上图。具体地说,这里的a^(1)就是第一层的激励值,也就是输入层所在的地方,所以设定它为x。则可以得出后续的a^(2),a^(3),a^(4)

接下来,为了计算导数项,将采用反向传播的算法。反向传播算法从直观上说,就是对每一个节点,我们计算 \delta_j^(l),代表了第l层的第j个节点的误差。之前说的a_j^(l)代表的是第l层第j个单元的激励值,所以这个\delta在某种程度上就捕捉到了在这个神经节点的激励值的误差,所以我们可能希望这个节点激励值稍微不一样。如下图,用这个有四层的神经网络结构做例子:

对于第四层,也就是\delta_j^(4) = a_j^(4) - y_j,这个很好理解,即第四层第j个节点激励值与实际值的误差,用向量方式表示就是\delta^(4) = a^(4) - y,向量的维数就是输出单元的个数。那么对于第三层,实际上是\delta_j^(3) = (\Theta^(3))^T\delta^(4).*g'(z^(3)),点乘指的是两个向量元素间对应相乘,其中的导数项其实是对激励函数g在输入值为z(3)的时候所求的导数,用微积分知识计算这个g'(z^(3)) = a^(3).*(1-a^(3)),这里a^(3)是一个对那一层的激励向量,1是以1为元素的向量(这一块没看懂)。同样后面的\delta_j^(2) = (\Theta^(2))^T\delta^(3).*g'(z^(2))g'(z^(2)) = a^(2).*(1-a^(2))。这里没有\delta_j^(1)项,因为第一层是输入层,即实际的训练集观察到的,因此不会有误差。利用反向传播算法,在忽略正则化项时,我们可以得出\frac{\partial}{\partial\Theta_{ij}^(l)}J(\Theta) = a_j^(l)\delta_i^(l+1)。通过反向传播,可以计算出这些\delta项进而计算出所有参数的偏导数项。
接下来说说当我们有一个非常大的训练样本时如何来计算关于这些参数的偏导数,使用下面的算法:

首先假设有一组训练集\{(x^(1),y^(1)),...(x^(m),y^(m))\},假设对于所有的l,i,j都有\Delta_{ij}^(l) = 0,这个实际上是用来计算\frac{\partial}{\partial\Theta_{ij}^(l)}J(\Theta)的,这些\Delta会被作为累加项慢慢的增加以算出这些偏导数。如上图所示,先循环我们的训练集,设定a^(1) = x^(i),其中a^(1)指的是输入层的激励函数,x^(i)指的是第i个训练样本的输入值,然后使用前向传播来计算所有的a^(l)直到最后一层L,接下来再使用这个样本的输出值y^(i)来计算这个输出值对应的误差项\delta^(L),即假设输出减去目标输出,接着使用反向传播算法计算\delta^(L-1),\delta^(L-2),\delta^(L-3),....,\delta^(2),最后将大写的\Delta来累计我们在前面写好的偏导数项,即:\Delta_{ij}^(l) := \Delta_{ij}^(l) + a_j^(l)\delta_i^(l+1)。如果把\Delta_{ij}看作一个矩阵,i,j代表矩阵中的位置,那么该等式可以用向量的方式表示为\Delta^(l) = \Delta^(l) + \delta^(l+1)(a^(l))^T。结束循环后,根据j是否等于0来分两种情况计算,如上图所示,当j=0时对应偏差项,因此没有加上额外的标准化项。这样,得到的就是代价函数对每一个参数的偏导数,这样就可以使用梯度下降法或是其他高级算法了。

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

推荐阅读更多精彩内容