zoukankan      html  css  js  c++  java
  • Convolutional Neural Networks for Visual Recognition 7

    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)=logefyijefj

    L=1NiLi+12λklW2k,l

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

    Lifk=Lipkpkfkpifk=pi(1pk)i=kpifk=pipkikLifk=1pyipyifk=(pk1{yi=k})

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

    ΔW=LW=1NLiW+λW=1NLippffW+λWΔb=Lb=1NLib=1NLippffbW=WαΔWb=bαΔb

    Neural Networks

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

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

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

    Lf2=1NLif2=1N(pk1{yi=k})ΔW2=LW2=Lf2h+λW2Δb2=Lb2=Lf2ΔW1=LW1=Lf2f2hX+λW1Δb1=Lb1=Lf2f2h

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

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

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

    Reference

    http://cs231n.stanford.edu/

  • 相关阅读:
    Mybatis基础最后一篇。缓存,实体类序列化(例子:public class User implements Serializable)
    Mybatis基础 lombok插件常用注解(待更)
    mysql面试题,主从复制,读写分离
    Java并发编程实战笔记—— 并发编程1
    Redis——发布和订阅
    Redis——基础使用
    javacv——读取摄像头的图像、截取视频的画面
    LeetCode——372. Super Pow
    Java——数组
    Java——擦除
  • 原文地址:https://www.cnblogs.com/mtcnn/p/9412602.html
Copyright © 2011-2022 走看看