Gradient Computing

前面我们介绍过分类器模型一般包含两大部分,一部分是score function,将输入的原始数据映射到每一类的score,另外一个重要组成部分是loss function,计算预测值

与实际值之间的误差,具体地,给定一个线性分类函数:f(xi;W)=Wxi,我们定义如下的loss function:

L=1N∑i∑j≠yi[max(0,f(xi,W)j−f(xi,W)yi+1)]+αR(W)

我们看到L与参数W有关,所以我们需要找到一个合适的W使得L尽可能小,这个过程称为优化。所以一个完整的分类模型,包括三个核心部分:score function,loss function 以及optimization(优化)。

一般来说,我们定义的loss function中,里面涉及的输入变量都是高维的向量,要让它们直接可视化是不可能的,我们可以通过低维的情况下得到一些直观的印象,让loss在直线或者平面上变化,比如

我们可以先初始化一个权值矩阵W,然后让该矩阵沿着方向W1变化,那么可以评估W1不同的幅值对loss的影响,即L(W+aW1),这个loss会随着不同的a生成

一条曲线,同样,我们可以让L在两个方向W1,W2变化,L(W+aW1)+bW2不同的a,b会生成不同的loss,这个loss会形成一个平面,如下图所示:

我们可以通过从数学的角度解释这个loss function,考虑只有一个样本的情况,我们有:

Li=∑j≠yi[max(0,wTjxi−wTyixi+1)]

从这个表达式可以看出,样本的loss是W的一个线性函数,如果我们考虑一个含有三个样本(每个样本是一个一维的点)的训练集,这个训练集有三个类别,那么训练集

的loss可以表示为:

L0=[max(0,wT1x0−wT0x0+1)]+[max(0,wT2x0−wT0x0+1)]L1=[max(0,wT0x1−wT1x1+1)]+[max(0,wT2x1−wT1x1+1)]L2=[max(0,wT0x2−wT2x2+1)]+[max(0,wT1x2−wT2x2+1)]L=(L0+L1+L2)/3

因为样本xi是一维的,所以系数wi也是一维的,它们的和L与与W的关系可以由下图表示:

上图给出的是一维的情况,如果是高维的话,这个要复杂的多,我们希望找到一个W使得该loss最小,上图是一个凸函数,对于这类函数的优化,是一大类属于凸优化的

问题,但是我们后面介绍的神经网络,其loss function是比这更复杂的一类函数,不是单纯地凸函数。上面的图形告诉我们这个loss function不是处处可导的,但是我们

可以利用函数subgradient(局部可导)的性质,来优化这个函数。

W的搜寻是属于一个优化问题,由于我们后面介绍的神经网络的loss function并不是凸函数,虽然我们现在看到的SVM loss function是一个凸函数,但是我们并不打算

直接用凸优化的相关方法来找这个W,我们要介绍一种在后面的神经网络也能用到的优化技术来优化这个SVM loss function。

方案一:随机搜索

最简单,但是最糟糕的方案就是随机搜索,我们对W赋予一系列的随机值,然后看哪个随机值对应的loss最低,这样肯定是耗时而且低效的。

方案二:随机局部搜索

在随机搜索的基础上,加上一个局部搜索,即W+σW,我们会判断这个更新是有助于loss减小还是增大,如果是减小,那么我们就更新,反之就不更新,而继续做

局部搜索。

方案三:梯度下降

最简洁高效的算法就是梯度下降法,这种方法也是神经网络优化方法中用的最多的一种方法。

一般来说,我们会Back-propagation去计算loss function对W的偏导数, 这是利用链式法则(chain-rule)来计算梯度的一种方式.

声明:lecture notes里的图片都来源于该课程的网站,只能用于学习,请勿作其它用途,如需转载,请说明该课程为引用来源。课程网站: http://cs231n.stanford.edu/

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

  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 7

    Two Simple Examples softmax classifier 后,我们介绍两个简单的例子,一个是线性分类器,一个是神经网络.由于网上的讲义给出的都是代码,我们这里用公式来进行推导.首先 ...

  8. Convolutional Neural Networks for Visual Recognition 4

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

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

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

  10. Stanford CS231n - Convolutional Neural Networks for Visual Recognition

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

随机推荐

  1. Shell 编程基础 --语法高速入门

    简单的说shell就是一个包括若干行Shell或者Linux命令的文件.对于一次编写,多次使用的大量命令,就能够使用单独的文件保存下来,以便日后使用.通常shell脚本以.sh为后缀.第一行一定要指明 ...

  2. PHP自动加载功能原理解析

    前言 这篇文章是对PHP自动加载功能的一个总结,内容涉及PHP的自动加载功能.PHP的命名空间.PHP的PSR0与PSR4标准等内容. 一.PHP自动加载功能 PHP自动加载功能的由来 在PHP开发过 ...

  3. vagrant系列四:vagrant搭建redis与redis的监控程序redis-stat

    上一篇php7环境的搭建 真是火爆.仅仅两天时间,就破了我之前swagger系列的一片文章,看来,大家对搭建好开发环境真是情有独钟. 为了訪问量,我今天再来一篇redis的搭建. 当然不能仅仅是red ...

  4. php之 人员的权限管理

    1.想好权限管理的作用? 2.有什么权限内容? 3.既然有权限管理那么就会有管理员? 4.登录后每个人员的界面会是不一样的? 一.想好这个权限是什么? 就做一个就像是vip的功能,普通用户和vip用户 ...

  5. BI测试

    BI概念: 商业智能(Business Intelligence 简称BI),指数据仓库相关技术与应用的通称.指利用各种智能技术,来提升企业的商业竞争力.是帮助企业更好地利用数据提高决策质量的技术,包 ...

  6. 【BZOJ3779】重组病毒 LCT+DFS序

    [BZOJ3779]重组病毒 Description 黑客们通过对已有的病毒反编译,将许多不同的病毒重组,并重新编译出了新型的重组病毒.这种病毒的繁殖和变异能力极强.为了阻止这种病毒传播,某安全机构策 ...

  7. intellij idea pycharm phpstorm webstorm 这些编辑器像 sublime text 一样使用 ctrl d 来操作光标多选。

    在Windows 和 Linux 快捷键是 Alt+J,在 Mac OS X 系统下快捷键是 Ctrl+G . 参考 https://blog.jetbrains.com/phpstorm/2014/ ...

  8. visual studio2017 无法添加引用 未能加载包ReferenceManagerPackage not such interface support 解决方法

    安装完visual studio 2017 后添加引用总是提示 未能加载包ReferenceManagerPackage, 这个问题困扰了两天,直到在网上看到了下面这一段 I just got thi ...

  9. 【python】-- web开发之CSS

    CSS CSS作用概述:(通俗的讲就是将HTML这个赤裸裸的“人”,穿上华丽的衣服) CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常 ...

  10. Android环境搭建 NDK+ADT(免cywgin)

    JDK下载: 1下载地址  http://www.oracle.com/technetwork/java/javase/downloads/index.html 2配置环境变量 JAVA_HOME:创 ...