一、特征提取
1.传统机器学习中,特征提取是人为选定明显的数据特征。作数据训练时:人为选定特征+分类器"。对于高维空间的特征,人是很难看出来的。
2.针对此难题,机器学习中催生了"特征工程"的方法。
Ps:特征工程存在问题:在于不同的数据、不同的问题中的好的特征都是不同的。eg:在图像处理中,好的特征,往往不适用于语音信号处理;甚至两个同样是图像识别的任务,因为所包含的数据不同,对应的好的特征也不同。该方法主要是依赖于经验和运气
3.于是,深度学习提出了"卷积神经网络"作为特征提取器。卷积神经网络,从字面上包括两个部分:卷积+神经网络。其中,卷积就是特征提取器,而神经网络,可以看作分类器。训练一个卷积神经网络,就是同时训练了特征提取器 (卷积) 和后面的分类器 (神经网络)。
Ps:用函数的角度来看,传统的分类模型:y = f( x, θclassifier )调试只有分类器中的参数“θclassifier”。卷积神经网络分类模型y = f( x, θfilter, θclassifier )可以调试特征提取器中的参数θfilter+分类器中的参数θclassifier。
二、卷积神经网络
1.卷积神经网络如何提取特征
1.图像在计算机中的存储
1.黑白(灰度)图像(以数字8为例)
- 对数字8进行放大,会发现图像失真,出现一个个小的像素块(Pixels),通常我们所提及的图像的维度H*W(即:图像的尺寸就是图像的高度(H)和宽度(W)上的像素数)
- 我们肉眼所看到的像素块,在计算机眼中是对应一个个像素值(像素的强度)存储的。对于灰度或黑白图像,像素值范围是[0 ~255] :接近零的较小数字表示较深的阴影,而接近255的较大数字表示较浅或白色的阴影。(亮部数值大,暗部数值小)
- 最终计算机中图像以矩阵的形式保存,该矩阵也称为通道Channel。
总结:
1.图像以数字矩阵形式存储在计算机中,数字称为像素值
2.像素值代表每个像素的强度:0代表黑色,255代表白色(暗部值小,亮部值大)
3.数字矩阵成为通道,灰度图只有一个通道。
2.彩色图像(美女图像为例)
-
每个RGB彩色图像都是由红,绿,蓝三原色组成。
- 在彩色图像中矩阵的数量或通道的数量更多。以此例子讲诉,我们分别由红色,绿色,蓝色三个通道。
总结
1.像素是0-255的值,每个数字代表像素的强度(可以说红色,绿色和蓝色的阴影)。所有通道或所有矩阵都将叠加一起。加载到计算机时,就是C * H * W。
2.C 表示通道数(彩色图像 C为 3),H 是整个高度上的像素数,W 是整个宽度上的像素数。
2.矩阵的特征值和特征向量
- 矩阵的概念:
一个矩阵代表的是一个线性变换规则
,而一个矩阵的乘法运行代表的是一个变换。 - 举例说明
-
有一个方阵n*n,总能找到一些向量,这个矩阵跟这些向量的作用效果,只是对这个向量造成了拉伸的作用
,换有一个方阵句话说,矩阵的作用跟一个系数的作用是等价的。也就是如下这个式子:
- 图像处理中,有种方法是特征值分解。图像是一个像素值组成的矩阵,假设有一个100x100的图像,对这个图像矩阵做特征值分解(即:提取这个图像中的特征,所提取出的特征是一个个的向量,即对应着特征向量。这些特征在图像中到底有多重要,这个重要性则通过特征值来表示。)
- eg:100x100 的图像矩阵A分解之后,会得到一个100x100的特征向量组成的矩阵Q,以及一个100x100的只有对角线上的元素不为0的矩阵E,这个矩阵E对角线上的元素就是特征值,而且还是按照从大到小排列的(取模,对于单个数来说,其实就是取绝对值),也就是说这个图像A提取出来了100个特征,这100个特征的重要性由100个数字来表示,这100个数字存放在对角矩阵E中(特征向量其实反应的是矩阵A本身固有的一些特征)。
- 在实际中我们发现,提取出来的这100个特征从他们的特征值大小来看,大部分只有前20(这个20不一定,有的是10,有的是30或者更多)个特征对应的特征值很大,后面的就都是接近0了,也就是说后面的那些特征对图像的贡献几乎可以忽略不计。我们知道,图像矩阵A特征值分解后可以得到矩阵Q和矩阵E:
【注意:特征值分解要求必须是n*n的方阵,如果不是行列相等的方阵,请使用奇异值分解】
3.图像特征与特征向量
- 通俗理解:(卷积核 ≈ 特征向量集,反向传播 ≈ 求解特征向量集,数据集中图片 ≈ 矩阵A)
4.卷积提取特征
1.卷积介绍
- 卷积核(滤波器,convolution kernel)是可以用来提取特征的。图像和卷积核卷积,就可以得到特征值,就是 destination value。
- 卷积核就是图像处理时,给定输入图像,输入图像中一个小区域中像素加权平均后成为输出图像中的每个对应像素,其中权值由一个函数定义,这个函数称为卷积核。
- 卷积核放在神经网络里,就代表对应的权重(weight)。
Ps: 权重矩阵[4,0,0;0,0,0;0,0,-4]是如何得到的呢?
答:神经网络训练前一般会随机初始化参数,然后随着训练的加深,不断更新参数。神经网络 的训练一般采用BP算法,因此CNN同样采用BP算法更新参数。
优化的过程主要有两个阶段:1、前向计算,2、反向更新参数。
(1)前向计算不用多说,就是根据输入从前向后依次计算,最终得到输出层的输出;
(2)计算当前输出与目标的差距,即计算损失函数。
分类任务通常采用交叉熵,回归任务通常采用均方误差;
(3)利用梯度下降、Adam等优化算法最小化损失函数,从后向前依次更新参数。
- 卷积核和图像进行点乘(dot product),就代表卷积核里的权重单独对相应位置的Pixel进行作用。
- 最后把点乘完所有结果加起来,实际上就是把所有作用效果叠加起来。类似于前面提到的RGB图片,红绿蓝分量叠加起来产生了一张真正意义的美女图。
2.卷积计算过程
- 已知各个通道分量以及各通道对应的卷积核权重矩阵。
- 知道输入,知道神经元权值W,根据公式:
- 实现卷积运算的方式:从左到右,每隔 stride(步幅)列 Pixel,向右移动一次卷积核进行卷积;从上到下,每隔 stride(步幅)行 pixel,向下移动一次卷积核,移动完成。