码迷,mamicode.com
首页 > Web开发 > 详细

Convolutional Neural Networks for Visual Recognition 7

时间:2016-02-26 12:26:22      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

Two Simple Examples

softmax classifier

后,我们介绍两个简单的例子,一个是线性分类器,一个是神经网络。由于网上的讲义给出的都是代码,我们这里用公式来进行推导。首先看softmax classifier 的例子。给定输入XRN×D,权值WRD×K,偏移量bR1×K,我们可以得到分类器对每个样本的预测分数:f=XW+b,我们可以用softmax 函数将预测分数转为概率:pi=efijefjpi
表示样本属于第i类的概率,fi,fj表示线性函数对样本属于第i,j类的预测分数。

我们可以建立如下的loss function:

Li=?log(pyi)=?log??efyijefj??

L=1NiLi+12λklW2k,l

下面我们推导loss对W,b的偏导数,我们可以先计算loss对f的偏导数,利用链式法则,我们可以得到:

?Li?fk=?Li?pk?pk?fk?pi?fk=pi(1?pk)i=k?pi?fk=?pipkik?Li?fk=?1pyi?pyi?fk=(pk?1{yi=k})

进一步,由f=XW+b,可知?f?W=XT,?f?b=1,我们可以得到:

ΔW=?L?W=1N?Li?W+λW=1N?Li?p?p?f?f?W+λWΔb=?L?b=1N?Li?b=1N?Li?p?p?f?f?bW=W?αΔWb=b?αΔb

Neural Networks

上面介绍的是softmax 分类器,下面我们介绍神经网络。神经网络与softmax分类器类似,只是多了一个隐含层。我们先考虑其前向传递。

f1=XW1+b1h=max(0,f1)f2=hW2+b2pi=ef2ijef2jL=1NiLi+12λw21+12λw22

下面我们看如何利用BP对网络中的参数进行更新:

?L?f2=1N?Li?f2=1N(pk?1{yi=k})ΔW2=?L?W2=?L?f2?h+λW2Δb2=?L?b2=?L?f2ΔW1=?L?W1=?L?f2?f2?h?X+λW1Δb1=?L?b1=?L?f2?f2?h

上面的表达式忽略了矩阵运算里的一些转置,实际编写代码的时候需要注意这一点,最后,我们可以得到如下的参数更新表达式:

W1=W2?αΔW2b1=b2?αΔb2W1=W1?αΔW1b1=b1?αΔb1

还有一点,上式的N表示训练集里的样本总数,如果我们要用batch模型,那么可以将整个训练集分成若干个batch,那么此时的N就是每个batch的样本数。

Reference

http://cs231n.stanford.edu/

Convolutional Neural Networks for Visual Recognition 7

标签:

原文地址:http://blog.csdn.net/matrix_space/article/details/46709739

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!