文章目录
计算机视觉分类
深度学习在计算机视觉领域四大基本任务中的应用,包括分类(图a)、定位、检测(图b)、语义分割(图c)、和实例分割(图d)
逻辑回归
广义线性模型(generalizedlinear model)
如果是连续的,就是多重线性回归;
如果是二项分布,就是Logistic回归;
如果是Poisson分布,就是Poisson回归;
如果是负二项分布,就是负二项回归;
Logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最常用的就是二分类的Logistic回归。
Logistic回归的主要用途
寻找危险因素:寻找某一疾病的危险因素等;
预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大;
判别:实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。
常规步骤
Regression问题的常规步骤为:
- 寻找h函数预测函数(即hypothesis);
- 构造J函数(损失函数);
- 想办法使得J函数最小并求得回归参数(θ)
构造预测函数h
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:
下面左图是一个线性的决策边界,右图是非线性的决策边界。
对于线性边界的情况,边界形式如下:
构造预测函数为:
函数的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:
构造损失函数J
Cost函数和J函数如下,它们是基于最大似然估计推导得到的。
梯度下降法求的最小值
θ更新过程:
θ更新过程可以写成:
正则化
过拟合问题
对于线性回归或逻辑回归的损失函数构成的模型,可能会有些权重很大,有些权重很小,导致过拟合(就是过分拟合了训练数据),使得模型的复杂度提高,泛化能力较差(对未知数据的预测能力)。
问题的主因
过拟合问题往往源自过多的特征。
解决方法
1)减少特征数量(减少特征会失去一些信息,即使特征选的很好)
可用人工选择要保留的特征;
模型选择算法;
2)正则化(特征较多时比较有效)
保留所有特征,但减少θ的大小
正则化方法
正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或惩罚项。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化项就越大。
从房价预测问题开始,这次采用的是多项式回归。左图是适当拟合,右图是过拟合。
直观来看,如果我们想解决这个例子中的过拟合问题,最好能将x3 x4的影响消除,也就是让θ3 θ4 接近0。假设我们对进行惩罚,并且令其很小,一个简单的办法就是给原有的Cost函数加上两个略大惩罚项,例如:
这样在最小化Cost函数的时候,θ3 θ4 接近0
正则项可以取不同的形式,在回归问题中取平方损失,就是参数的L2范数,也可以取L1范数。取平方损失时,模型的损失函数变为:
如果它的值很大,说明对模型的复杂度惩罚大,对拟合数据的损失惩罚小,这样它就不会过分拟合数据,在训练数据上的偏差较大,在未知数据上的方差较小,但是可能出现欠拟合的现象;
如果它的值很小,说明比较注重对训练数据的拟合,在训练数据上的偏差会小,但是可能会导致过拟合。
正则化后的梯度下降算法θ的更新变为:
其他优化算法
Conjugate gradient method(共轭梯度法)
Quasi-Newton method(拟牛顿法)
BFGS method
L-BFGS(Limited-memory BFGS)
线性回归
y=kx+b
损失函数
线性回归和逻辑回归的比较
逻辑回归
逻辑回归用于分类,而不是回归。
在线性回归模型中,输出一般是连续的, 对于每一个输入的x,都有一个对应的输出y。因此模型的定义域和值域都可以是无穷。
但是对于逻辑回归,输入可以是连续的[-∞, +∞],但输出一般是离散的,通常只有两个值{0, 1}。
这两个值可以表示对样本的某种分类,高/低、患病/ 健康、阴性/阳性等,这就是最常见的二分类逻辑回归。因此,从整体上来说,通过逻辑回归模型,我们将在整个实数范围上的x映射到了有限个点上,这样就实现了对x的分类。因为每次拿过来一个x,经过逻辑回归分析,就可以将它归入某一类y中。
可以认为逻辑回归的输入是线性回归的输出,将逻辑斯蒂函数(Sigmoid曲线)作用于线性回归的输出得到输出结果。
线性回归y = ax + b, 其中a和b是待求参数;
逻辑回归p = S(ax + b), 其中a和b是待求参数, S是逻辑斯蒂函数,然后根据p与1-p的大小确定输出的值,通常阈值取0.5,若p大于0.5则归为1这类。
神经网络中的Epoch、Iteration、Batchsize
batchsize:中文翻译为批大小(批尺寸)。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
iteration:中文翻译为迭代,1个iteration等于使用batchsize个样本训练一次;一个迭代 = 一个正向通过+一个反向通过
epoch:迭代次数,1个epoch等于使用训练集中的全部样本训练一次;一个epoch = 所有训练样本的一个正向传递和一个反向传递
举个例子,训练集有1000个样本,batchsize=10,那么:训练完整个样本集需要:100次iteration,1次epoch。
反向传播
这是一场以误差(Error)为主导的反向传播(Back Propagation)运动,旨在得到最优的全局参数矩阵,进而将多层神经网络应用到分类或者回归任务中去。
前向传递输入信号直至输出产生误差,反向传播误差信息更新权重矩阵。这两句话很好的形容了信息的流动方向,权重得以在信息双向流动中得到优化。
深度学习模型中参数量
对于全连接网络
假设输入层大小i,隐藏层h,输出层o:
则参数量为各层之间的参数+每层的偏差=(ih+ho)+(h+o)
例如输入大小3,隐藏层大小5,输出大小2:
则参数个数为:(3×5 + 5×2)+(5 + 2) = 32
对于rnn网络
- 首先我们定义三个参数:g:门的数量(RNN有1个门,GRU有3个,LSTM有4个),h:隐藏单元大小 ,i:输出层大小
- 每个门中的权重实际上是一个输入大小(h + i)(解释:上一个时刻的隐状态和当前输入的拼接)和输出大小为h(解释:当前时刻的隐状态)的FFNN。所以每个门都有h(h + i)+ h个参数。即在RNN中参数数量为:g ×[ h(h + i)+ h ]
- 注意:输出我们只关心h,不关心其上层的全连接或者softmax,因为这已经不是当前rnn的参数了。
举例:具有2个隐藏单元和输入尺寸3的LSTM:
则参数量为:g ×[ h(h + i)+ h ]= 4 ×[2(2 + 3)+ 2] = 48
具有5个隐藏单元和输入大小为8的堆叠双向GRU +具有50个隐藏单元的LSTM的参数数量为:
第一层参数:2 × g ×[ h(h + i)+ h ] = 2 ×3×[5(5 + 8)+ 5] = 420
第二层参数: g ×[ h(h + i)+ h ]= 4×[50(50 + 10)+ 50]= 12200
则总参数量为: 420 + 12200 = 12620
对于CNN网络:
首先我们定义三个参数:i:输入尺寸,f:卷积核的大小,o:输出大小
则每个滤波器对应的输出映射参数为:num_params =权重+偏差= [ i×(f×f)×o ] + o
例如带有1 × 1滤波器的灰度图像,输出3个通道:
参数数量为: [ i×(f×f)×o ] + o= [1 ×(2 × 2)× 3] + 3= 15
CNN
经典的多层感知机由一系列全连接层组成,卷积神经网络中除全连接层外,还有卷积层和汇合(pooling)层。
(1) 卷积层
为什么要用卷积层 输入图像通常很维数很高,例如,1,000×1,000大小的彩色图像对应于三百万维特征。因此,继续沿用多层感知机中的全连接层会导致庞大的参数量。大参数量需要繁重的计算,而更重要的是,大参数量会有更高的过拟合风险。卷积是局部连接、共享参数版的全连接层。这两个特性使参数量大大降低。卷积层中的权值通常被成为滤波器(filter)或卷积核(convolution kernel )。
局部连接 在全连接层中,每个输出通过权值(weight)和所有输入相连。而在视觉识别中,关键性的图像特征、边缘、角点等只占据了整张图像的一小部分,图像中相距很远的两个像素之间有相互影响的可能性很小。因此,在卷积层中,每个输出神经元在通道方向保持全连接,而在空间方向上只和一小部分输入神经元相连。
共享参数 如果一组权值可以在图像中某个区域提取出有效的表示,那么它们也能在图像的另外区域中提取出有效的表示。也就是说,如果一个模式(pattern)出现在图像中的某个区域,那么它们也可以出现在图像中的其他任何区域。因此,卷积层不同空间位置的神经元共享权值,用于发现图像中不同空间位置的模式。共享参数是深度学习一个重要的思想,其在减少网络参数的同时仍然能保持很高的网络容量(capacity)。卷积层在空间方向共享参数,而循环神经网络(recurrent neural networks)在时间方向共享参数。
卷积层的作用 通过卷积,我们可以捕获图像的局部信息。通过多层卷积层堆叠,各层提取到特征逐渐由边缘、纹理、方向等低层级特征过度到文字、车轮、人脸等高层级特征。
描述卷积的四个量 一个卷积层的配置由如下四个量确定。
- 滤波器个数。使用一个滤波器对输入进行卷积会得到一个二维的特征图(feature map)。我们可以用时使用多个滤波器对输入进行卷积,以得到多个特征图。
- 感受野(receptive field) F,即滤波器空间局部连接大小。
- 零填补(zero-padding) P。随着卷积的进行,图像大小将缩小,图像边缘的信息将逐渐丢失。因此,在卷积前,我们在图像上下左右填补一些0,使得我们可以控制输出特征图的大小。
- 步长(stride) S。滤波器在输入每移动S个位置计算一个输出神经元。
卷积输入输出的大小关系 假设输入高和宽为H和W,输出高和宽为H’和W’, 则H’=(H-F+2P)/S+1, W’=(W-F+2P)/S+1. 当S=1时,通过设定P=(F-1)/2, 可以保证输入输出空间大小相同。例如,3*3的卷积需要填补一个像素使得输入输出空间大小不变。
应该使用多大的滤波器 尽量使用小的滤波器,如3×3卷积。通过堆叠多层3×3卷积,可以取得与大滤波器相同的感受野,例如三层3×3卷积等效于一层7×7卷积的感受野。但使用小滤波器有以下两点好处。
- 更少的参数量。假设通道数为D,三层3×3卷积的参数量为3×(D×D×3×3)=27D2, 而一层7×7卷积的参数量为D×D×7×7=49D2。
- 更多非线性。由于每层卷积层后都有非线性激活函数,三层3×3卷积一共经过三次非线性激活函数,而一层7×7卷积只经过一次。
1×1卷积 旨在对每个空间位置的D维向量做一个相同的线性变换。通常用于增加非线性,或降维,这相当于在通道数方向上进行了压缩。1×1卷积是减少网络计算量和参数的重要方式
https://zhuanlan.zhihu.com/p/40050371