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/

Convolutional Neural Networks for Visual Recognition 7的更多相关文章

  1. Convolutional Neural Networks for Visual Recognition 1

    Introduction 这是斯坦福计算机视觉大牛李菲菲最新开设的一门关于deep learning在计算机视觉领域的相关应用的课程.这个课程重点介绍了deep learning里的一种比较流行的模型 ...

  2. Convolutional Neural Networks for Visual Recognition

    http://cs231n.github.io/   里面有很多相当好的文章 http://cs231n.github.io/convolutional-networks/ Table of Cont ...

  3. 卷积神经网络用于视觉识别Convolutional Neural Networks for Visual Recognition

    Table of Contents: Architecture Overview ConvNet Layers Convolutional Layer Pooling Layer Normalizat ...

  4. Convolutional Neural Networks for Visual Recognition 8

    Convolutional Neural Networks (CNNs / ConvNets) 前面做了如此漫长的铺垫,现在终于来到了课程的重点.Convolutional Neural Networ ...

  5. Convolutional Neural Networks for Visual Recognition 5

    Setting up the data and the model 前面我们介绍了一个神经元的模型,通过一个激励函数将高维的输入域权值的点积转化为一个单一的输出,而神经网络就是将神经元排列到每一层,形 ...

  6. Convolutional Neural Networks for Visual Recognition 2

    Linear Classification 在上一讲里,我们介绍了图像分类问题以及一个简单的分类模型K-NN模型,我们已经知道K-NN的模型有几个严重的缺陷,第一就是要保存训练集里的所有样本,这个比较 ...

  7. Convolutional Neural Networks for Visual Recognition 4

    Modeling one neuron 下面我们开始介绍神经网络,我们先从最简单的一个神经元的情况开始,一个简单的神经元包括输入,激励函数以及输出.如下图所示: 一个神经元类似一个线性分类器,如果激励 ...

  8. cs231n spring 2017 lecture1 Introduction to Convolutional Neural Networks for Visual Recognition 听课笔记

    1. 生物学家做实验发现脑皮层对简单的结构比如角.边有反应,而通过复杂的神经元传递,这些简单的结构最终帮助生物体有了更复杂的视觉系统.1970年David Marr提出的视觉处理流程遵循这样的原则,拿 ...

  9. Stanford CS231n - Convolutional Neural Networks for Visual Recognition

    网易云课堂上有汉化的视频:http://study.163.com/course/courseLearn.htm?courseId=1003223001#/learn/video?lessonId=1 ...

随机推荐

  1. 动态创建Lambda表达式实现高级查询

    需求简介 最近这几天做的东西总算是回归咱的老本行了,给投资管理项目做一个台账的东西,就是类似我们的报表.其 中有一个功能是一个高级查询的需求,在查询条件方面大概有7.8个查询条件.需求就是如果一个条件 ...

  2. Linux时间时区详解与常用时间函数

    时间与时区 整个地球分为二十四时区,每个时区都有自己的本地时间. Ø  UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT = UTC),格林威治时间和UTC时间都用秒数来计 ...

  3. centos7.0 安装redis 3.2.9

    wget http://download.redis.io/releases/redis-3.2.9.tar.gz tar xzf redis-3.2.9.tar.gz cd redis-3.2.9 ...

  4. 【原创】Hibernate自动生成(1)

    本实战是博主初次学习Java,分析WCP源码时,学习HibernateTools部分的实战,由于初次接触,难免错误,仅供参考,希望批评指正. 开发环境: Eclipse Version: Photon ...

  5. android菜鸟学习笔记23----ContentProvider(三)利用内置ContentProvider监听短信及查看联系人

    要使用一个ContentProvider,必须要知道的是它所能匹配的Uri及其数据存储的表的结构. 首先想办法找到访问短信及联系人数据的ContentProvider能接受的Uri: 到github上 ...

  6. Hibernate 表连接hql语句

    现有两个表 user 表 和 VIPcard 表 UserVo  user VIPcardVo 中含有 UserVo user select v from VIPCardVo v left join ...

  7. linux下查找指定时间内修改过的或新建的文件

    1.简单命令 # find -type f \( -newermt '2017-04-19 00:00' -a -not -newermt '2017-04-27 23:59' \) 2.简单实现(参 ...

  8. iOS 导航引发坐标高度问题

    iOS7 后导航结构发生变化,有新的控制属性诞生,一下为两个属性引发的控制器视图高度问题 translucent  = YES  导航透明    (默认) translucent  = NO   导航 ...

  9. Symfony 上传图片教程

    介绍:我使用的Bundle:"vich/uploader-bundle": "^1.4"; "liip/imagine-bundle": & ...

  10. 【模式识别】CART和GML AdaBoost MATLAB TOOLBOX

    GML AdaBoost Matlab Toolbox是一款很优秀的AdaBoost工具箱,内部实现了Real AdaBoost, Gentle AdaBoost和Modest AdaBoost三种方 ...