Convolutional Neural Networks for Visual Recognition 7
2015-07-01 14:16
351 查看
Two Simple Examples
softmax classifier
后,我们介绍两个简单的例子,一个是线性分类器,一个是神经网络。由于网上的讲义给出的都是代码,我们这里用公式来进行推导。首先看softmax classifier 的例子。给定输入X∈RN×D,权值W∈RD×K,偏移量b∈R1×K,我们可以得到分类器对每个样本的预测分数:f=XW+b,我们可以用softmax 函数将预测分数转为概率:pi=efi∑jefj,pi表示样本属于第i类的概率,fi,fj表示线性函数对样本属于第i,j类的预测分数。
我们可以建立如下的loss function:
Li=−log(pyi)=−log⎛⎝efyi∑jefj⎞⎠
L=1N∑iLi+12λ∑k∑lW2k,l
下面我们推导loss对W,b的偏导数,我们可以先计算loss对f的偏导数,利用链式法则,我们可以得到:
∂Li∂fk=∂Li∂pk∂pk∂fk∂pi∂fk=pi(1−pk)i=k∂pi∂fk=−pipki≠k∂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=ef2i∑jef2jL=1N∑iLi+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/相关文章推荐
- 构造函数的一点点认识
- 怎么配置 Oracle 侦听器来使用SQL操作ST_Geometry
- 【数据分析 R语言实战】学习笔记 第十一章 对应分析
- 带filter的hbase查询优化
- rocketmq的store目录下面可以删除的东西
- Android中的数据格式化
- 关于CSS预处理器(less,sass)
- ext2、ext3与ext4的区别
- java:常用的集合类
- Spring MVC文件上传
- jquery validate 使用手册
- 排序算法(更新中)
- 结合MongoDB开发LBS应用
- 进程间通信——使用WM_COPYDATA消息通信
- Android---- 获取当前应用的版本号和当前android系统的版本号
- 【c语言】不使用+-*/计算两个数的和
- maven学习
- linux网络:常用命令(一)
- ibatis-dynamic的用法
- 进程间通信——使用WM_COPYDATA消息通信