CS231n学习笔记目录(2016年Andrej Karpathy主讲课程)
- Lecture1:Introduction(介绍)
- Lecture2:Image Classification Pipeline(数据驱动的图像分类方式) (上)
- Lecture2:Image Classification Pipeline(数据驱动的图像分类方式) (下)
- Lecture3:Loss functions and Optimization(线性分类器损失函数与最优化)
- Lecture4:Backpropagation and Neural Networks(反向传播与神经网络)
- Lecture5:Training Neural Networks(神经网络训练细节) Part 1
- Lecture6:Training Neural Networks(神经网络训练细节) Part 2
- Lecture7:Convolutional Neural Networks(卷积神经网络)
Linear Classification
如何描述一张图像?这个系统可以由两部分组成,一个是用于处理图像的CNN网络,另一个是RNN(Recurrent Neural Network,循环神经网络,非常适用于与排序有关的问题),用单词序列来描述图像。将这两个模块组合起来,是这两个网络之间可以相互通信。
Parametric Approach
在参数化方法中,我们要做的就是构造一个函数,输入一张图片,对每一类输出一个数值,对于任意一张图片,我们会计算出它属于哪一个类别。如输入x为32*32*3的猫的图片,我们希望输出的类别中猫的数值最大,就要通过不断改变w的值,让这个函数对训练集中的每张图片都能正确分类。这个函数可以是线性函数,也可以是神经网络等等。
对于线性函数,函数定义为f(x,w)=wx,有时候会附加参数b作为偏置,因为如果数据存在不平衡的情况,很可能将猫分类成狗或别的东西,因此希望对于猫类的偏置值更大,会使得分类结果更加准确。在训练的过程中需要不断调整w和b的值,来得到最优的解。
需要注意的是,假如训练集中有10个类别,则这10个分类器并行运算,相互独立(可以看成w和b的每一行独立计算),最后计算出的10个类别的值也都是独立的。所得到的分数实际上就是所有像素点的加权和。
问题:如何将图片展开?
使用同一个规则将像素矩阵拆成长度一致的列向量。在这个过程之前,需要保证每张图像的大小一致,实际上,最前沿的方法中使用的是方形的图片,因为这类问题一般都会对图片采取压缩。
Template Matching Approach
从模板匹配的角度来看,权重w的每一行对应着某个模板,通过乘积或点积来比较图像和模板。将学习到的w矩阵的每一行(代表每个分类器)reshape成一张图片大小,就有了下面的图形。如第一张图片呈现蓝色,意味着蓝色通道的权重很大,红色和绿色通道的权值基本为零,因此输入中出现蓝色通道的值时,就会对分数产生很大的贡献,所以这个分类器的工作就是在计算所有场景下蓝色物体的加权和。再如下图中的hourse有两个头,这是因为在数据集中有一些马的头朝左有些朝右,由于这个分类器的功能并不强大,所以结合了两种状态。神经网络不具有这个缺点,它可以分别针对不同的马训练出多个不同的模型,使得分类更加合理。
Loss Function
损失函数是一种能够定量测定每一个w在数据集上的表现有多差的方法,用来定量分类器的好坏,loss越低,代表分类器的性能越好。通过损失函数,我们不需要控制w的初始值。
(纯学习分享,如有侵权,联系删文)