#深度学习相关的模式识别知识

本文记录了博主学习《模式识别:算法及实现方法》一书中总结的与深度学习相关的知识点,如果有兴趣建议阅读原著。更新于2018.09.15。
附书的信息:书名《模式识别:算法及实现方法》,英文名《Pattern Recognition: an Algorithmic Approach》,原著作者M.Narasimaha Murty和V.Susheela Devi,翻译作者王振永。出版时间2017.10.1。

更多内容,欢迎加入星球讨论。

文章目录

##第一章 导论

书中对模式识别的定义:

模式识别可以定义为一种基于已知知识或者依据模式表述所抽象出的统计信息进行数据分类的方法。

也就是说模式识别是一种分类方法,目前博主所研究的深度学习就属于模式识别的一种手段。因此,想要真正在深度学习的方向上走得更远,模式识别的基础知识是必不可少的。

书中推荐了模式上识别相关应用可以参考的文献:

Pattern Recognition
IEEE Transactions on Pattern Analysis and Machine Intelligence

以及一些数据库:

用于训练分类算法的 UC Irvine的机器学习库 (博主搜索书中提供的网址提示数据库不存在,因此附上搜索到的另一个网址)
用于数据挖掘的大型数据库UCI KDD数据库 和 KDNuggets数据库

解决模式识别问题最主要的两种理论框架是统计模式识别和结构模式识别。其中,统计模式识别应用更广泛,因为在大多数实际问题中,都需要处理有噪声数据和不确定性,而统计和概率在这方面更有优势。


##第二章 模式集合的表征

模式是一个物理对象或抽象概念,也就是通常深度学习中所说的特征的组合。这种应用不同模式特征组合起来的描述就是模式。
模式可以表示为:

**1. 矢量:**矢量中的每个元素代表模式的一个属性,该元素就存储其对应属性下所描述物体的值。抽象理解的话,深度学习中所学到的“特征”就是隐含属性下各个目标所对应的值。学习的也就是这样一个矢量矩阵。

**2. 字符串:**字符串可以看作某种语言中的句子,如一个DNA序列或蛋白质序列(例如GAAGTCCAG…)。

**3. 逻辑类型:**也就是用逻辑运算的组合描述模式:(x1=a1..a2)∧(x2)=b1..b2∧⋅⋅⋅(x_1 = a_1 .. a_2)\wedge (x_2) = b_1 .. b_2 \wedge \cdot\cdot\cdot(x1​=a1​..a2​)∧(x2​)=b1​..b2​∧⋅⋅⋅。比如一个球可以描述为(颜色=红∨白)∧(质地=皮革)∧(形状=球体)(颜色=红 \vee 白)\wedge (质地 = 皮革)\wedge(形状 = 球体)(颜色=红∨白)∧(质地=皮革)∧(形状=球体)。

**4. 模糊集和粗糙集:**粗糙集用于描述无法精确描述的模式,通常由上近似和下近似给一个范围。这一种方式比较复杂,博主不是数学系出身,无法充分理解。好在目前还没有遇到需要用模糊的方式描述的模式,因此这一部分暂时略过,只给出粗略描述。

**5. 树和图:**树或图中的每一个节点都可以表示一个或多个模式,例如最小生成树、德劳奈树、R树和k-d树等。博主目前主攻卷积神经网络,对于树和图的深入学习后面用到再进行。

--------------------------------------------------------------------

###相似度度量方法
书中详细阐述了基于距离的度量方法、基于加权距离的度量方法、非度量相似函数、编辑距离、互近邻距离、概念内聚性、核函数这7中度量方法,博主从目前接触到的深度学习应用出发,着重看了其中的几种。

**需要注意的是,**这里所说的是用于度量模式是否相似的方法,要与深度学习中经常用到的损失函数区分开。相似度量只是判断相似性,并未对是否相似作出处罚;而损失函数则是将这种相似性量化,惩罚不相似的部分。

1. 基于距离的度量方法
距离函数可以是量化的也可以是非量化的,量化的方法应当具有:

(1) 正自反性:d(x,x)=0d(x,x) = 0d(x,x)=0
(2) 对称性:d(x,y)=d(y,x)d(x,y) = d(y,x)d(x,y)=d(y,x)
(3) 三角不等式:d(x,y)≤d(x,z)+d(z,y)d(x,y)\leq d(x,z)+d(z,y)d(x,y)≤d(x,z)+d(z,y)

常用的距离计量闵科夫斯基计量形式为

dm(X,Y)=(∑k=1d∣xk−yk∣m)1md^m(X,Y) = (\sum_{k=1}^d{|x_k-y_k|^m})^\frac{1}{m}dm(X,Y)=(k=1∑d​∣xk​−yk​∣m)m1​

特别地,当mmm为1时,其称为曼哈顿距离或者L1L_1L1​距离;当mmm为2时就是最常见的欧氏距离,即L2L_2L2​距离。
马氏距离也是一种常见的距离计量:

d2(X,Y)=(X−Y)TΣ−1(X−Y)d^2(X,Y) = (X-Y)^T\Sigma^{-1}(X-Y)d2(X,Y)=(X−Y)TΣ−1(X−Y)
其中Σ\SigmaΣ是协防差矩阵。

注:在深度学习中,博主遇到的方法经常应用L1损失比较估计与真值之间的误差,从而作为反向传播的依据。

2. 基于加权距离的度量方法

上面这种方法是将所有的属性一视同仁地计算两个模式的相似度,但是有些情况下期望给予某个属性更多的关注,就可以在它们的值上加权重。形式如下:

d(X,Y)=(∑k=1dwk×(xk−yk)m)1md(X,Y) = (\sum_{k=1}^d{w_k}\times (x_k - y_k)^m)^{\frac{1}{m}}d(X,Y)=(k=1∑d​wk​×(xk​−yk​)m)m1​
其中wkw_kwk​是第kkk维(特征)相关的权重。

书中还提到了用于判断两种形状是否相似的豪斯多夫距离,此处因与博主所从事的深度学习任务无关,故省略。

3. 非度量相似函数

这类相似函数不遵从三角不等式也不遵从对称性,在图像及数据串的处理中往往十分有效。
**k-median距离:**如果X=(x1,x2,⋅⋅⋅,xn),Y=(y1,y2,⋅⋅⋅,yn)X=(x_1,x_2,\cdot\cdot\cdot,x_n), Y = (y_1,y_2,\cdot\cdot\cdot,y_n)X=(x1​,x2​,⋅⋅⋅,xn​),Y=(y1​,y2​,⋅⋅⋅,yn​),那么

d(X,Y)=k−median{∣x1−y1∣,⋅⋅⋅,∣xn−yn∣}d(X,Y) = k-median\{|x_1-y_1|,\cdot\cdot\cdot,|x_n-y_n|\}d(X,Y)=k−median{∣x1​−y1​∣,⋅⋅⋅,∣xn​−yn​∣}
其中k-median运算符返回排序的差分矢量的第kkk个值。

余弦相似度:

S(X,Y)=XtY∥X∥∥Y∥S(X,Y) = \frac{X^tY}{\Vert X\Vert \Vert Y\Vert}S(X,Y)=∥X∥∥Y∥XtY​

发散度距离(KL距离):
这是在深度学习的实际应用中可能用到哦啊的距离,它是一个从“真实”概率分布ppp到“目标”概率分布qqq的自然距离函数。其不具有对称性。对于离散概率分布,如果p=p1,⋅⋅⋅,pnp={p_1,\cdot\cdot\cdot,p_n}p=p1​,⋅⋅⋅,pn​且q=q1,⋅⋅⋅,qnq = {q_1,\cdot\cdot\cdot,q_n}q=q1​,⋅⋅⋅,qn​,那么KL距离定义为:

KL(p,q)=Σipilog2(piqi)KL(p,q)=\Sigma_ip_ilog_2(\frac{p_i}{q_i})KL(p,q)=Σi​pi​log2​(qi​pi​​)

对于连续概率密度,用积分代替求和。

4. 互近邻距离:

两个模式AAA和BBB之间的相似度为
S(A,B)=f(A,B,ε)S(A,B)=f(A,B,\varepsilon)S(A,B)=f(A,B,ε)
其中ε\varepsilonε为一组相互邻近的模式,称为语境,相当于周围的点。对于每一个数据点,所有其他数据点按照某种距离递增的顺序从1到N−1N-1N−1进行标号,与之最近的记为1,最远的记为N−1N-1N−1。
如果用NN(u,v)NN(u,v)NN(u,v)来表示数据带你vvv对于uuu的标号,则互近邻距离(MND)记为:
MND(u,v)=NN(u,v)+NN(v,u)MND(u,v)=NN(u,v)+NN(v,u)MND(u,v)=NN(u,v)+NN(v,u)

互近邻距离自反、对称,但不满足三角不等式。

5. 核函数:
核函数可以用来描述模式xxx和yyy之间的距离。

**多项式核函数:**多项式核函数可以将输入空间中的线性相关矢量转换为核空间的线性无关矢量。

K(x,y)=φ(x)tφ(y)=(xty+1)2K(x,y)=\varphi(x)^t\varphi(y)=(x^ty+1)^2K(x,y)=φ(x)tφ(y)=(xty+1)2
其中,φ(x)=(x12,x22,1,2x1x2,2x1,2x2)\varphi(x)=(x_1^2,x_2^2,1,\sqrt2x_1x_2,\sqrt2x_1,\sqrt2x_2)φ(x)=(x12​,x22​,1,2​x1​x2​,2​x1​,2​x2​)。

**径向基核函数:**径向基核函数的输出依赖于xxx和yyy之间的欧氏距离。

采用RBF核如下:
K(x,y)=exp−∥x−y∥22σ2K(x,y)=exp^{\frac{-\Vert x-y\Vert^2}{2\sigma^2}}K(x,y)=exp2σ2−∥x−y∥2​

--------------------------------------------------------------------

###模式的尺寸
在深度学习中,为了保证样本具有相同的“权力”,通常需要进行一定的前期数据处理,从而解决样本长度、大小不一致的问题。解决的方式可以是进行数据的归一化,也可以选择合适的相似度度量。

--------------------------------------------------------------------

###特征提取与特征选择
特征提取对于图像数据非常重要,博主接触过的大部分处理图像的神经网络总有一部分是用来提取图像特征,从而方便进一步计算的。书中介绍了Fisher线性判别法和主分量分析法。这两种数学方法虽然效果很好,但是目前,特征提取的工作越来越多地被某种结构的神经网络隐性地习得,因此就不详细记录了。

用于分类的特征并不总是有意义的,移除那些对于分类无用的特征,可能会得到更高的分类精度。书中介绍了穷举搜索法、分支定界搜索法、最优特征选择法、顺序选择法、顺序浮动选择法、最大最小特征选择法、随机搜索法、人工神经网络等方法。其中,人工神经网络方法就类似于在神经网络训练过程中的dropout,也就是通过剔除一部分神经元的方法缓解过拟合等问题。介于其他方法与深度学习相关性有限,需要的话可自行研究。

--------------------------------------------------------------------

###分类分析方法
在使用分类器进行分类任务之前,有必要评估它的表现。尽管现在大多应用神经网络直接习得分类器,但是这些传统方法的思想在博主看来是很有启发意义的,因此也简要记录在这里。

需要考虑的分类器参数:

  1. 分类器的准确性
  2. 设计时间和分类时间
  3. 所需要的空间
  4. 解释说明能力
  5. 噪声容限

为了考察分类器的表现,可以评估训练集本身,也可以用新的数据。这对于神经网络也是适用的。不同的校验方法有:

  1. 保持法:训练集被分为两个子集,一个用于训练,一个用于测试。通常采用的比例有2/3,1/2。
  2. 随机子抽样:在这种方法中,保持法被反复应用数次,每次用不同的训练数据和校验次数。如果这个过程重复了kkk次,那么整体精确度为:accoverall=1k∑i=1kacciacc_{overall}=\frac{1}{k}\sum_{i=1}^k{acc_i}accoverall​=k1​i=1∑k​acci​
  3. 交叉校验:每个样本用同样多的次数训练和测试,比如双重交叉检验,即将数据集分成等同的两个子集,用其中一个训练,另一个测试,再交换。如果分成kkk组,则称为留一交叉法,即每次仅保留其中之一作为测试集。这种方法在神经网络的训练过程中非常常见。
  4. 拔靴法:随机从样本集合中抽取用作训练,但并不删除,其余用于测试。

##第七章 支持向量机

支持向量机(SVM)是一个二进制分类器,其利用训练序列的适当子集在多维空间分离出一个决策边界,这个子集的元素称为支持向量机。几何上,支持向量机是最接近决策边界的训练模式。

--------------------------------------------------------------------

###线性判别函数
线性判别函数可以用来判别两个或多个类别的模式。将分割两类数据的直线抽象成函数,有:

f(x)=w1x1+w2x2+b=0f(x)=w_1x_1+w_2x_2+b=0f(x)=w1​x1​+w2​x2​+b=0

运用这种表达方式,可以灵活处理模式和多维空间下的线性决策边界的问题。例如,在一个ddd维空间,决策边界是一个超平面,可以表示为:

f(x)=wtx+b=0f(x)=w^tx+b=0f(x)=wtx+b=0
其中www和xxx是ddd维向量。

从某种意义上讲,bbb决定决策边界的位置,也决定着决策边界偏离原点的程度;www决定决策边界的方向。这个结论对于高维空间同样适用,此时决策边界是一个超平面,且www与决策边界正交,方向指向正半空间。这意味着,任意位于正半平面的模式xxx都会与www成θ\thetaθ角,且−90o&lt;θ&lt;90o-90^o\lt\theta\lt90^o−90o<θ<90o,因此cosθ&gt;0cos\theta\gt0cosθ>0。

另一个有用的概念是点xxx到决策平面之间的距离。任意一点xxx均可以表示成两个向量的和,其中一个向量平行于决策边界,另一个向量与决策边界正交。即

x=xb+xox=x_b+x_ox=xb​+xo​
其中xbx_bxb​是xxx在决策边界上的投影,xox_oxo​是正交分量。

考虑到www也与决策边界正交并且指向正半空间,xox_oxo​也可以携程pw∣w∣p\frac{w}{\vert w\vert}p∣w∣w​的形式,其中ppp是实数。当xxx属于正半空间内的模式时,ppp为正数;反之,当xxx属于负半空间内的模式时,ppp为负数。由此可以得出以下结论:

KaTeX parse error: No such environment: split at position 7: \begin{̲s̲p̲l̲i̲t̲}̲f(x) &=&w^tx+b=…

从上式可以得出

p=wtx+b∥w∥p=\frac{w^tx+b}{\Vert w\Vert}p=∥w∥wtx+b​

称ppp为法线或点xxx到决策边界的最短距离。
为了能够以齐次形式表示决策边界,可以将ddd为空间扩展到d+1d+1d+1维空间,此时有

z=(wb)z= \left(\begin{array}{c} w\\ b \end{array}\right)z=(wb​)

x′=(x1)x'= \left(\begin{array}{c} x\\ 1 \end{array}\right)x′=(x1​)

**后面用www代表zzz。**在二分类问题中,可以通过归一化使所有模式均处于正半平面。这是通过将位于负半平面的每个模式的特征值由其相反数来代替,包括第d+1d+1d+1项。

--------------------------------------------------------------------

###学习线性判别函数
前面已经说过,令模式空间的维数为ddd,在非齐次的情况下(b≠0b\neq 0b̸​=0),www是d+1d+1d+1维向量,第d+1d+1d+1个分量是bbb。相应地,齐次情况下,www的第d+1d+1d+1个分量是0。在这两种情况下,xxx的d+1d+1d+1个分量值选为1。这将允许在齐次和非齐次的条件下使用相同的表示形式。当类线性可分时,学习权向量www更容易。这也是为什么现在大多数神经网络所学习、更新的参数都是www和bbb,而其中www是主要更新的对象。

感知学习方法:
Step 1. 初始化www为零向量,即令i=0i=0i=0,wi=0w_i=0wi​=0;
Step 2. 对j=1,⋅⋅⋅,nj=1,\cdot\cdot\cdot, nj=1,⋅⋅⋅,n,如果witxj≤0w_i^tx_j\leq0wit​xj​≤0,令i=i+1,wi=wi−1+xii=i+1,w_i=w_i-1+x_ii=i+1,wi​=wi​−1+xi​;
Step 3. 重复步骤2,直到整个迭代过程中对所有模式iii值不再发生变化。

多个类别的分类问题:
普遍使用的方案是:一次考虑两个类,在给定的集合中有CCC类模式时,这样的模式对有C(C−1)2\frac{C(C-1)}{2}2C(C−1)​对。对每对模式学习线性判别函数,将这些决策结合起来做最终决策。

线性判别的普遍性:
线性判别函数的概念是一般性的,这个想法可以拓展到使用齐次形式处理非线性判别问题。例如:

f(x)=1+x+x2=0f(x)=1+x+x^2=0f(x)=1+x+x2=0

可以表示为

f(x′)=ztx′=0f(x')=z^tx'=0f(x′)=ztx′=0
其中
z=[111]z= \left[\begin{array}{c} 1\\ 1\\ 1 \end{array}\right]z=⎣⎡​111​⎦⎤​
x′=[x2x1]x'= \left[\begin{array}{c} x^2\\ x\\ 1 \end{array}\right]x′=⎣⎡​x2x1​⎦⎤​

此外,这一想法也可以扩展到量值xxx。神经网络是学习此类广义线性判别的重要工具。

--------------------------------------------------------------------

###神经网络

模拟人脑中神经元的工作方式,一个神经元的输入的加权代数和大于阈值,则神经元输出1,否则输出0。如果x1,x2,⋅⋅⋅,xnx_1,x_2,\cdot\cdot\cdot,x_nx1​,x2​,⋅⋅⋅,xn​为输入,对应的权重为w1,w2,⋅⋅⋅,wnw_1,w_2,\cdot\cdot\cdot,w_nw1​,w2​,⋅⋅⋅,wn​,激活值为:
a=w1x1+w2x2+⋅⋅⋅+wnxna=w_1x_1+w_2x_2+\cdot\cdot\cdot+w_nx_na=w1​x1​+w2​x2​+⋅⋅⋅+wn​xn​
神经元的输出ooo是激活值的函数。深度学习中常见的激活函数有:

  • ReLU / Rectified-Linear and Leaky-ReLU - ReLU and Leaky-ReLU rectification.
  • PReLU - parametric ReLU.
  • ELU - exponential linear rectification.
  • Sigmoid
  • TanH
  • Absolute Value
  • Power - f(x) = (shift + scale * x) ^ power.
  • Exp - f(x) = base ^ (shift + scale * x).
  • Log - f(x) = log(x).
  • BNLL - f(x) = log(1 + exp(x)).
  • Threshold - performs step function at user defined threshold.
  • Bias - adds a bias to a blob that can either be learned or fixed.
  • Scale - scales a blob by an amount that can either be learned or fixed.

具体的Caffe实现可以参考Caffe官方说明中的Activation/Neuron Layers部分。其中,ReLU函数的具体使用范例可以参看激活函数层说明。

反馈前向网络
这是最简单的网络,包含输入单元和输出单元。输入单元的所有节点均连接到输出单元,输出单元的输出即是网络的输出。对应的网络结构不想画了,可以参考这个,不过仅用到了前面的两层:

![前馈网络](https://img-blog.csdn.net/20180915112340584?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NodXFpYW9T/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

**训练:**网络的权值是在0到1之间随机设定的。当一个输入给到网络时,输出单元i(1≤i≤m)i(1\leq i \leq m)i(1≤i≤m)的激活值为

ai=w1ix1+w2ix2+⋅⋅⋅+wdixda_i=w_{1i}x_1+w_{2i}x_2+\cdot\cdot\cdot+w_{di}x_dai​=w1i​x1​+w2i​x2​+⋅⋅⋅+wdi​xd​

第iii个单元的输出为oi=f(ai)o_i=f(a_i)oi​=f(ai​)。

当训练模式输入到网络时,知道其正确的输出(或目标)。令正确的输出为t1,⋅⋅⋅,tmt_1,\cdot\cdot\cdot,t_mt1​,⋅⋅⋅,tm​。第iii个输出节点的误差为ei=ti−oie_i=t_i-o_iei​=ti​−oi​。这些误差值用于反向传播来更新神经网络的权重。第jjj个输入节点和第iii个输出节点之间的权重更新公式为:

wji=wji+α×xj×eiw_{ji}=w_{ji}+\alpha \times x_j \times e_iwji​=wji​+α×xj​×ei​

博主所理解的这里的α\alphaα应该就是学习率。

多层感知机
前面介绍的简单前馈网络可以处理线性可分类的分类问题,它不能代表非线性决策边界。为了处理非线性函数,需要用到多层网络,即除了输入、输出单元,还需要包含隐藏层。(也就是上图表示的整个网络)

输入为x1,x2,⋅⋅⋅,xdx_1,x_2,\cdot\cdot\cdot,x_dx1​,x2​,⋅⋅⋅,xd​,从输入到隐藏层的权重为w11,w12,⋅⋅⋅,w21,w22,⋅⋅⋅,wdkw_{11},w_{12},\cdot\cdot\cdot,w_{21}, w_{22}, \cdot\cdot\cdot,w_{dk}w11​,w12​,⋅⋅⋅,w21​,w22​,⋅⋅⋅,wdk​,隐藏层到输出层的权重为h11,h12,⋅⋅⋅,hkmh_{11},h_{12},\cdot\cdot\cdot,h_{km}h11​,h12​,⋅⋅⋅,hkm​。隐藏单元j(1&lt;j&lt;k)j(1\lt j \lt k)j(1<j<k)的激活值为

ahj=x1×w1j+x2×w2j+⋅⋅⋅+xm×wmjah_j=x_1 \times w_{1j} +x_2 \times w_{2j} + \cdot\cdot\cdot + x_m \times w_{mj}ahj​=x1​×w1j​+x2​×w2j​+⋅⋅⋅+xm​×wmj​

第jjj个隐藏节点的输出为ohj=f(ahj)oh_j=f(ah_j)ohj​=f(ahj​),输出节点lll的激活值为

a1=oh1×h11+oh2×h21+⋅⋅⋅+ohk×hk1a_1=oh_1 \times h_{11}+oh_2 \times h_{21} + \cdot\cdot\cdot + oh_k \times h_{k1}a1​=oh1​×h11​+oh2​×h21​+⋅⋅⋅+ohk​×hk1​

输出节点oio_ioi​的输出是oi=g(ai)o_i=g(a_i)oi​=g(ai​)。如果目标输出是t1,t2,⋅⋅⋅,tnt_1,t_2,\cdot\cdot\cdot,t_nt1​,t2​,⋅⋅⋅,tn​,输出节点oio_ioi​的误差为ei=ti−oie_i=t_i-o_iei​=ti​−oi​。隐藏单元和输出单元之间的权重更新公式为:

hji=hji+α×oj×ei×g′(ai)h_{ji}=h_{ji}+\alpha \times o_j \times e_i \times g'(a_i)hji​=hji​+α×oj​×ei​×g′(ai​)

这种更新方式是基于梯度下降法来最小化目标和所得到的输出之间的误差。输入单元和隐藏单元之间的权重可以通过类似的方式更新。
**要求激活函数g()g()g()可微!!(例:阈值函数不可微,Sigmoid可微。)

--------------------------------------------------------------------

###面向分类的支持向量机
支持向量机(SVM)是支持向量的集合的抽象,支持向量是训练向量的一部分。前面所确定的决策边界称为支持线(下图中的虚线),而位于支持线上的空间内待分类的点称为支持向量(位于虚线上的三个点),图中的这三个支持向量便可以表征分类器。

![支持向量机](https://img-blog.csdn.net/20180915140059886?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NodXFpYW9T/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

两条线之间的区域称为分类间隔,因为支持线对应于分类间隔的最大值,它们尽可能远离彼此。上图中的实线到两条决策边界的距离是相等的,它形成了两种类型之间的正确决策边界。

线性可分条件
根据前面的公式,可以得到决策边界与超平面之间的距离wtx+b∥w∥\frac{w^tx+b}{\Vert w\Vert}∥w∥wtx+b​。例如考虑ddd维空间下超平面wtx+b=1w^tx+b=1wtx+b=1与决策边界wtx+b=0w^tx+b=0wtx+b=0,二者之间的距离为wtx+b∥w∥=1∥w∥\frac{w^tx+b}{\Vert w\Vert}=\frac{1}{\Vert w\Vert}∥w∥wtx+b​=∥w∥1​,因此两个支持平面之间的距离为2∥w∥\frac{2}{\Vert w\Vert}∥w∥2​,称为隔离带。

可以通过最小化∥w∥\Vert w\Vert∥w∥的单调函数来获得最大距离(隔离带)。另外,每个模式均对www的值加了限制条件。对于这种约束优化问题,可以通过拉格朗日解的形式给出。考虑到现在大多数深度学习框架都有集成的求解方式,这里博主不深究其中的数学求解了,直接给出一般性的表达式:

w=∑iαiyixiw=\sum_i\alpha_iy_ix_iw=i∑​αi​yi​xi​
其中,yiy_iyi​是模式对应的类别标签(对于正模式为1,对于负模式为-1)。

非线性可分条件
前面讨论的是处理线性可分类的模式分类机制,下面讨论非线性的情况。通常解决非线性问题可以有两种方式:用形如f(x)=xkf(x)=x^kf(x)=xk的函数映射在低维空间下不可线性划分的点;或者,将一维模式转换成二维模式。具体来讲,定义两个向量(p1,p2)t(p_1,p_2)^t(p1​,p2​)t和(q1,q2)t(q_1,q_2)^t(q1​,q2​)t的点积为p1q1+p2q2p_1q_1+p_2q_2p1​q1​+p2​q2​。一般情况下,可以将ddd维空间下的点映射到D(D&gt;d)D(D&gt;d)D(D>d)维空间探索线性可分的可能性。

例如在原始空间下无法线性划分时,引入特征x1∧x2x_1 \wedge x_2x1​∧x2​,从而将二维空间变成三维空间,使得原来的问题可线性划分。

另外,支持向量机中,这样做是使得在DDD维空间中的点积计算变成ddd维空间爱那种的点积计算。


##第八章 多分类器组合

组合分类器是将一系列分类器的独立决策组合起来用于分类新样本。组合分类器通常比组成它的单个分类器要准确得多。组合分类器是补偿不完善的分类的的一种方式。使用的学习算法可以提供真值的一个很好的近似值,但是并非正确的假设。通过对这些近似值进行加权组合,就可以表示出真正的假设。实际上,这种组合等效与非常复杂的决策树。

###构建集成分类器的方法
这些方法使每个分类器的输入不同。具体构建方法包括训练样本的子采样、控制训练集和的功能、控制输出目标和引入随机性以及一些针对特殊算法的一些方法。

训练样本的二次抽样
训练样本的二次抽样是指从一个训练集中获取一些简化数据集,将学习算法针对这些简化数据集多次运行。对于使训练集中微小变化引起的输出分类器的较大变化的算法,这种方法效果很好。数据集被简化的方式主要是通过选择训练集的子集或者使用每种情况下特征值的不同子集。
*在这里插一句:博主最近了解的一片深度学习的论文就是用了这种思想,其神经网络多次截取特征中的一部分,从而优化训练结果。

常用的方法:

  • 套袋法:每次运行时,这种方法可以给分类器提供一个包含从原始训练集的nnn项中随机抽取的mmm个训练样例的训练集。这样的训练集称为引导复制的原始训练集,这项技术被称为引导聚集。每个引导复制包含大约原始训练集的三分之二,其中某些样点可能多次出现。
  • 省略互不相交的子集:原始的训练集划分成若干个互不相交的子集,然后就可以通过丢弃这些子集中的一个来构建不同的重叠训练集。
  • ADABOOST算法:ADABOST是一个引导算法(inducer/booster),它在训练集合上保持一个概率分布pt(x)p_t(x)pt​(x)。每次迭代ttt中,它根据概率分布pt(x)p_t(x)pt​(x)进行有放回抽样,以此得到一个大小为mmm的训练集。
    假设输入是大小为nnn的训练集SSS,引导器是III,实验次数为TTT,算法如下:
    第一步:S′=SS'=SS′=S,权重分配为1; m=nm=nm=n。
    第二步:考虑iii从1到TTT。
    第三步:Ci=I(S′)C_i=I(S')Ci​=I(S′)
    第四步:εi=1m∑xj∈S′:Ci(xj)≠yjweight(x)\varepsilon_i=\frac{1}{m}\sum_{x_j\in S': C_i(x_j) \neq y_j}weight(x)εi​=m1​∑xj​∈S′:Ci​(xj​)̸​=yj​​weight(x)。
    第五步:如果ε&gt;12\varepsilon \gt \frac {1}{2}ε>21​,将S′S'S′设为SSS中每个实例的权重为1的引导,然后回到第三步。
    第六步:βi=εi1−εi\beta_i=\frac{\varepsilon_i}{1-\varepsilon_i}βi​=1−εi​εi​​。
    第七步:对任意xj∈S′x_j\in S'xj​∈S′,如果Ci(xj)=yjC_i(x_j)=y_jCi​(xj​)=yj​,那么weight(xj)=weight(xj)⋅βiweight(x_j)=weight(x_j)\cdot \beta_iweight(xj​)=weight(xj​)⋅βi​
    第八步:规范化实例的权重使S′S'S′的总权重为mmm。
    第九步:C∗(x)=argmaxy∈Y∑i:Ci(x)=ylog1βiC^*(x)=argmax_{y\in Y}\sum_{i:C_i(x)=y}log\frac{1}{\beta_i}C∗(x)=argmaxy∈Y​i:Ci​(x)=y∑​logβi​1​

输入特征的处理
这项技术用来处理分类器可用的输入特征值集合,可以得到特征值的一个子集。如果所有特征值都很重要,那么这种技术不太可能好用。只有当输入特征值高度冗余并可根据某些领域的知识组合在一起时它才好用,这种组合就可以用来形成特征值子集。

输出目标的处理
这种技术称为“纠错输出编码”。博主的理解是,如果存在大量的类,这些类会被反复成不同的组,从而优化结果。

随机性注入
即对训练过程引入随机性,比如随机抽取得到某个顺序排布的特征值。

###多分类器组合方法
组合分类器的最简单并且最具鲁棒性的方法是使用无加权投票。对一个数据点的概率估计是指真正的类就是ccc的概率,也就是
Pr(f(x)=c∣hl),c=1,⋅⋅⋅,CPr(f(x)=c\vert h_l),\quad c=1,\cdot\cdot\cdot,CPr(f(x)=c∣hl​),c=1,⋅⋅⋅,C
可以把所有假设的类概率相结合得到组合的类概率
Pr(f(x)=c)=1L∑l=1LPr(f(x)=c∣hl)Pr(f(x)=c)=\frac{1}{L}\sum_{l=1}^LPr(f(x)=c\vert h_l)Pr(f(x)=c)=L1​l=1∑L​Pr(f(x)=c∣hl​)
选取拥有最高类概率的那个类作为xxx的预测类。

深度学习相关的模式识别知识相关推荐

  1. 知识图谱论文阅读(八)【转】推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现

    学习的博客: 推荐系统遇上深度学习(二十六)–知识图谱与推荐系统结合之DKN模型原理及实现 知识图谱特征学习的模型分类汇总 知识图谱嵌入(KGE):方法和应用的综述 论文: Knowledge Gra ...

  2. kpu 处理器_深度学习及 KPU 基础知识

    深度学习及 KPU 基础知识 1. 阅读完本章文档可以了解什么? 了解深度学习一些基础内容 了解 K210 内部 KPU 的特性 了解 KPU 使用过程中可能会遇到的问题,以及问题的解决方法 2. 概 ...

  3. 物理信息驱动深度学习相关报告总结

    物理信息驱动深度学习相关报告 内嵌物理的深度学习,机器之心. 报告人:麻省理工学院陆路老师. 报告内容:本次分享将回顾将物理知识嵌入机器学习的一些趋势,介绍当前的一些常用方法,包括内嵌物理的神经网络( ...

  4. 日本好的机器学习,深度学习相关书籍推荐

    日本好的机器学习,深度学习相关书籍推荐 日文书名:ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装 中文书名:用Python从0开始深度学习理论与实践 作者: ...

  5. 深度学习中的核心知识

    深度学习中的核心知识 前向运算 计算输出值的过程称为前向传播 前提:网络结构已知(两个方面:1. 每个层的构造 卷积/池化 2. 每个层的参数) 难点:1.f函数如何定义 2.每层的参数 (通过反向传 ...

  6. 深度学习面试的一些知识

    https://www.nowcoder.com/discuss/205843?type=2 1.IOU计算 求出左上角的最大值,右下角的最小值. IOU代码和NMS代码 # -*- coding: ...

  7. 深度学习英文缩写_深度学习相关专业词汇简称汇总

    深度学习相关专业词汇简称汇总 zoerywzhou@gmail.com 作者:Zhouw 2016-3-15 版权声明:本文为博主原创文章,未经博主允许不得转载. 作者是深度学习的初学者,经由导师指导 ...

  8. 如何评价深度学习相关顶级期刊论文难复现的问题?

    链接:https://www.zhihu.com/question/265953178 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 在本人的研究动作识别过程中,曾多次复现该领域顶级期刊的论文 ...

  9. 交通运输相关机器学习/深度学习相关资源列表,关于交通运输场景的机器学习/深度学习的资源这里都有

    本文素材来源于GitHub,经本人翻译及整理首发于CSDN,仅供技术交流所用,请勿商用.欢迎大家关注我的公众号: gbxiao992 原文地址:https://github.com/zzsza/Awe ...

最新文章

  1. java apache压缩多个文件大小_Java压缩多个文件并导出
  2. 通俗易懂理解GBDT算法原理-转
  3. OpenGL绘制二个不同颜色的三角形的实例
  4. P678-vect2.cpp
  5. VMware Converter P2V 时,卡住
  6. rhel系统启动过程_Linux启动过程详解
  7. 【转】unity开发android游戏(一)搭建Unity安卓开发环境
  8. setlength java_Java StringBuilder setLength()方法与示例
  9. MySql ALTER用法
  10. C# 中intptr用法
  11. 分享五个最好的BT下载软件
  12. 文安三中电子计算机老师叫什么,顶岗实习周记:记我的第一次.doc
  13. deficit记忆_背单词:不要让“捷径”欺骗你的记忆
  14. 现网必用的主备冗余技术,VRRP理论+配置
  15. 实战剖析:13步设计出一个ITSM系统
  16. Running pipenv gives TypeError: 'module' object is not callable
  17. 卸载Axure7.0
  18. 被骂了十年的国产软件,却成了世界之最...
  19. Anthony计量经济学导论-学习笔记+R语言
  20. c语言中 5.1lf什么意思,期货股指lf_中金所期货指数IF、IH、IC分别是什么英文单词的缩写_期货攻略网...

热门文章

  1. 全国分省12.5m DEM数据(ALOS 12.5m)/高程dem
  2. threeJS 根据户型图绘制 3D模型 1
  3. 根据id选择器隐藏 标签
  4. ubantu16.04安装sagemath9.3【详细+踩雷】
  5. 程序员也要学英语——介词攻略
  6. python应用-多线程下载海贼王漫画
  7. Oculus Quest2 VR全解:从购买到吃灰
  8. Mobile devices bundled with malware?
  9. 自定义整型转字符串函数
  10. 斯里兰卡地理位置极佳,为什么却发展不起来?