Convolutional Neural Networks for Visual Recognition 3

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/

时间: 2024-12-15 01:39:38

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

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

Table of Contents: Architecture Overview ConvNet Layers Convolutional Layer Pooling Layer Normalization Layer Fully-Connected Layer Converting Fully-Connected Layers to Convolutional Layers ConvNet Architectures Layer Patterns Layer Sizing Patterns C

Convolutional Neural Networks for Visual Recognition 2

Linear Classification 在上一讲里,我们介绍了图像分类问题以及一个简单的分类模型K-NN模型,我们已经知道K-NN的模型有几个严重的缺陷,第一就是要保存训练集里的所有样本,这个比较消耗存储空间:第二就是要遍历所有的训练样本,这种逐一比较的方式比较耗时而低效. 现在,我们要介绍一种更加强大的图像分类模型,这个模型会很自然地引申出神经网络和Convolutional Neural Networks(CNN),这个模型有两个重要的组成部分,一个是score function,将原始

Convolutional Neural Networks for Visual Recognition 8

Convolutional Neural Networks (CNNs / ConvNets) 前面做了如此漫长的铺垫,如今终于来到了课程的重点. Convolutional Neural Networks. 简称CNN,与之前介绍的一般的神经网络相似,CNN相同是由能够学习的权值与偏移量构成.每个神经元接收一些输入.做点积运算加上偏移量,然后选择性的通过一些非线性函数.整个网络终于还是表示成一个可导的loss function,网络的起始端是输入图像.网络的终端是每一类的预測值,通过一个ful

Convolutional Neural Networks for Visual Recognition 5

Setting up the data and the model 前面我们介绍了一个神经元的模型,通过一个激励函数将高维的输入域权值的点积转化为一个单一的输出,而神经网络就是将神经元排列到每一层,形成一个网络结构,这种结构与我们之前介绍的线性模型不太一样,因此score function也需要重新定义,神经网络实现了一系列的线性映射与非线性映射,这一讲,我们主要介绍神经网络的数据预处理以及score function的定义. data processing 给定一个训练集,S={xi∈RD|i

Convolutional Neural Networks for Visual Recognition 7

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表示线性函数对样本属于

cs231n Convolutional Neural Networks for Visual Recognition 2 SVM softmax

linear classification 上节中简单介绍了图像分类的概念,并且学习了费时费内存但是精度不高的knn法,本节我们将会进一步学习一种更好的方法,以后的章节中会慢慢引入神经网络和convolutional neural network.这种新的算法有两部分组成: 1. 评价函数score function,用于将原始数据映射到分类结果(预测值): 2. 损失函数loss function, 用于定量分析预测值与真实值的相似程度,损失函数越小,预测值越接近真实值. 我们将两者结合,损失

Convolutional Neural Networks for Visual Recognition 4

Modeling one neuron 下面我们开始介绍神经网络,我们先从最简单的一个神经元的情况开始,一个简单的神经元包括输入,激励函数以及输出.如下图所示: 一个神经元类似一个线性分类器,如果激励函数是sigmoid 函数(σ(x)=1/(1+e?x)),那么σ(∑iwixi+b)相当于是求该输入所对应的输出为1的概率,P(y=1|xi;w),那么该输入所对应的输出为0的概率为 P(y=0|xi;w)=1?P(y=1|xi;w).在神经网络中,常用的激励函数一个是sigmoid函数,另一个是

CS231n: Convolutional Neural Networks for Visual Recognition - Spring 2017

喜大普奔!!!!! CS231n 2017新鲜出炉啦!!!!! 课程主页:http://cs231n.stanford.edu/ 有讲义,有教案,有讲座,更重要的是--还有官方授课视频!!!!!意不意外?惊不惊喜?开不开心???!!!

Convolutional Neural Networks for Visual Recognition 6

-###Learning 前面,我们介绍了神经网络的构成,数据的预处理,权值的初始化等等.这一讲,我们将要介绍神经网络参数学习的过程. Gradient Checks 梯度的运算,在理论上是简单的,但是在实际的应用中,却非常容易出错,梯度的运算常见的有如下两种形式: 形式一: df(x)dx=f(x+h)?f(x)h h是一个很小的常数,实际运算的时候,h大概等于1e?5,但我们通常会用下面这种形式计算梯度: 形式二: df(x)dx=f(x+h)?f(x?h)2h 利用这个表达式,需要我们对l