期末学习报告
0.目录
1.基础概念
- 分类 C l a s s i f i c i a t i o n Classificiation Classificiation:输出为离散值、二分类、多分类
- 回归 R e g r e s s i o n Regression Regression:输出为连续值
- 排序 R a n k i n g Ranking Ranking:预测排列顺序
- 有监督学习 S u p e r w i s e d L e a r n i n g Superwised\ Learning Superwised Learning
- 无监督学习 U n s u p e r w i s e d L e a r n i n g Unsuperwised\ Learning Unsuperwised Learning
- 半监督学习 S e m i − s u p e r w i s e d L e a r n i n g Semi-superwised\ Learning Semi−superwised Learning
- 强化学习
R
e
i
n
f
o
r
c
e
m
e
n
t
L
e
a
r
n
i
n
g
Reinforcement\ Learning
Reinforcement Learning
2.多媒体信息表示
2.1 图像
-
彩色图像
颜色通道是保存图片颜色信息的通道,颜色模式决定图片的颜色通道数,常见的颜色模式有RGB、CMYK、Lab等,所有颜色通道的颜色混合叠加后就是所产生的颜色就是原彩色图像上对应像素点的颜色。
-
图像格式
图像格式分为位图和矢量图两种。位图记录了每一个像素点的颜色值,并将这些像素点合成为一张图像,其特点是放大能够看到像素点;而矢量图记录的则是节点的位置、曲线和颜色,其特点是放大后不会出现失真的情况。
2.2 视频
视频就是一组内容随实践变化的一组动态图像,利用的是人眼的视觉残留原理。
2.3 作业中涉及的图像特征提取算法
-
方向梯度直方图 HOG
HOG的主要思想是在边缘具体位置未知的情况下,边缘方向的分布也可以很好的表示图像中物体的外形轮廓,但会忽略掉颜色信息。
其主要操作流程如下
-
颜色直方图 (color histogram)
颜色直方图特征则是提取图像的颜色信息并忽略掉纹理信息。算法过程是获取每个像素值对应的光谱,把它划分到柱状图中,将每一个像素都映射到这些柱状里。然后计算出每一个不同柱状中像素点出现的频次。这个特征可以从全局上告诉我们图像中有哪些颜色。
2.4 作业中涉及到的KNN算法
K N N KNN KNN 算法是最简单并且最常用的分类算法之一。其原理是通过暴力计算与预测新值对应的点距离最近的 k k k 个点,根据这 k k k 个点的类型来预测新值所属的类别。
3.线性模型
3.1 基本形式
f ( x ) = b + ∑ i = 1 d w i x i f(x) =b+\sum_{i = 1}^d w_ix_i f(x)=b+i=1∑dwixi
其中
x
i
x_i
xi 是
x
x
x 在第
i
i
i 个属性上的取值,转换为向量表示则是
f
(
x
)
=
w
T
x
+
b
f(x) = w^Tx+b
f(x)=wTx+b
3.2 特点
- 形式简单、易于建模
- 可解释性:通过对于 w w w 的量化表示,可以体现对于每一种属性的权值分配
- 是非线性模型的基础
3.3 线性回归
目的是学得一个可以尽可能准确地预测实值并尽可能准确地输出标记的线性模型
即对于函数 f ( x ) = w x i + b f(x) = wx_i+b f(x)=wxi+b,找到一组 w w w 和 b b b,使得 f ( x i ) ⋍ y i f(x_i)\backsimeq y_i f(xi)⋍yi
3.3.1 最小二乘法
( w ∗ , b ∗ ) = arg m i n ( w , b ) ∑ i = 1 m ( f ( x i ) − y i ) 2 (w^*,b^*)={\arg min\atop{(w,b)}}\sum_{i=1}^m(f(x_i)-y_i)^2 (w∗,b∗)=(w,b)argmini=1∑m(f(xi)−yi)2
为最小化均方误差,分别对
w
w
w 和
b
b
b 求导后可得闭式解
w
=
∑
i
=
1
m
y
i
(
x
i
−
x
‾
)
∑
i
=
1
m
x
i
2
−
1
m
(
∑
i
=
1
m
x
i
)
2
w = \frac{\sum_{i=1}^m y_i(x_i-\overline{x})}{\sum_{i=1}^mx_i^2-\frac{1}{m}(\sum_{i=1}^mx_i)^2}
w=∑i=1mxi2−m1(∑i=1mxi)2∑i=1myi(xi−x)
b = 1 m ∑ i = 1 m ( y i − w x i ) b = \frac{1}{m}\sum_{i=1}^m(y_i-wx_i) b=m1i=1∑m(yi−wxi)
3.3.2 多元线性回归
与线性回归同理,令 ∂ E w ^ ∂ w ^ = 2 X T ( X w ^ − y ) = 0 \frac{\partial E_{\hat w}}{\partial\hat w}=2X^T(X\hat w-y)=0 ∂w^∂Ew^=2XT(Xw^−y)=0,即可得到 w w w 多元线性回归下的增广矩阵 w ^ = ( w ; b ) \hat w=(w;b) w^=(w;b)的最优闭式解。
3.3.3 线性回归拓展
为解决模型爆炸式增长等问题,可以将输出标记的对数作为输出的目标。即 ln y = w T x + b \ln y=w^Tx+b lny=wTx+b
3.3.4 广义线性回归
将问题通过联系函数 g ( ⋅ ) g(·) g(⋅) 转换为一般的线性模型,即 y = g − 1 ( w T x + b ) y = g^{-1}(w^Tx+b) y=g−1(wTx+b)
3.4 二分类
3.4.1 单位阶跃函数
利用0,1来表示两种分类,其结果直观且易于理解,但缺点在于不连续,无法对其进行微分。
y
=
{
1
z
>
0
0.5
z
=
0
0
z
<
0
y=\begin{cases}1 &z >0\\0.5 &z=0\\0&z<0\end{cases}
y=⎩
⎨
⎧10.50z>0z=0z<0
3.4.2 对数几率函数
用于替代单位阶跃函数,其特点是单调可微且任意阶可导。
y
=
1
1
+
e
−
z
y = \frac{1}{1 +e^{-z}}
y=1+e−z1
二者比较
3.4.3 对数几率回归
运用对数几率函数,令 z = w T x + b z = w^Tx+b z=wTx+b 将 y y y 变为 y = 1 1 + e − ( w T x + b ) y = \frac{1}{1 + e^{-(w^Tx+b)}} y=1+e−(wTx+b)1,对数几率即为将样本作为正例的相对可能性的对数 ln y 1 − y \ln \frac{y}{1-y} ln1−yy。
极大似然法是最大化样本属于其真实标记的概率。
即最大化对数似然函数
ℓ
(
w
,
b
)
=
∑
i
=
1
m
ln
p
(
y
i
∣
x
i
;
w
i
,
b
)
\ell (w,b)=\sum_{i=1}^m\ln p(y_i|x_i; w_i,b)
ℓ(w,b)=i=1∑mlnp(yi∣xi;wi,b)
令
β
=
(
w
;
b
)
x
^
=
(
x
;
1
)
\beta =(w;b)\\\hat x=(x;1)
β=(w;b)x^=(x;1)
并利用牛顿法求解得
β
∗
=
arg
m
i
n
β
ℓ
(
β
)
\beta ^*={\arg min\atop{\beta}}\ell(\beta)
β∗=βargminℓ(β)
3.4.4 线性判别分析LDA
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。LDA希望让同类的点间距尽可能近,而不同类的点的距离尽可能远。
3.5 多分类
二分类问题还可以利用不同的拆分策略推广到多分类任务上
- 一对一:N个类别两两配对
- 一对其余:某一类别作为正例,其余作为反例
多对多:若干类作为正类,若干类作为反类
4.决策树
基于树结构进行预测。
4.1 基本流程
决策树的构建是一个自根至叶的递归过程,并在每个中间结点寻找一个“划分”(split or test)属性。
决策树算法采用分而治之的学习策略,首先根据一定的准则选取最优的属性进行划分,根据属性值得到若干个子集,然后在每个子集上利用同样方法构造决策树。当下面三个条件中一个条件满足时,将含有较多样本的类别作为叶结点中对应的类别标签。
而遇到如下三种情形将导致递归返回:
- 当前结点包含的样本全属于同一类别,无需划分
- 当前属性集为空, 或是所有样本在所有属性上取值相同,无法划分
- 当前结点包含的样本集合为空,不能划分
4.2 划分选择
在递归构建决策树的过程中,我们希望随着划分过程的不断进行,其结点的纯度越来越高。
经典的属性划分方法有:信息增益、增益率、基尼指数。
4.2.1 信息熵
H ( X ) = − ∑ x ∈ X P ( x ) l o g P ( x ) H(X) = -\sum_{x\in X}P(x)logP(x) H(X)=−x∈X∑P(x)logP(x)
4.2.2 信息增益
G a i n ( D , a ) = E n t ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ E n t ( D v ) Gain(D,a)=Ent(D)-\sum_{v=1}^V\frac{|D^v|}{|D|}Ent(D^v) Gain(D,a)=Ent(D)−v=1∑V∣D∣∣Dv∣Ent(Dv)
一般来说,信息增益越大则对应纯度越大,但是通过公式我们可以发现,信息增益会对可取值数目较多的属性有所偏好。
4.2.3 增益率
G a i n _ r a t i o ( D , a ) = G a i n ( D , a ) I V ( a ) I V ( a ) = − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ l o g 2 ∣ D v ∣ ∣ D ∣ Gain\_ratio(D,a)=\frac{Gain(D,a)}{IV(a)}\\ IV(a)=-\sum_{v=1}^V\frac{|D^v|}{|D|}log_2\frac{|D^v|}{|D|} Gain_ratio(D,a)=IV(a)Gain(D,a)IV(a)=−v=1∑V∣D∣∣Dv∣log2∣D∣∣Dv∣
I V ( a ) IV(a) IV(a) 称为属性 a a a 的固有值。增益率可能dui可取值数目较少的属性有所偏好。
4.2.4 基尼指数
G i n i ( D ) = ∑ k = 1 γ ∑ k ′ ! = k p k p k ′ Gini(D)=\sum_{k=1}^\gamma\sum_{k'!=k}p_kp_{k'} Gini(D)=k=1∑γk′!=k∑pkpk′
G i n i ( D ) Gini(D) Gini(D) 越小,代表数据集的纯度越高。
4.3 剪枝处理
在普通算法意义下的剪枝是降低时间复杂度的有效手段,而决策树的剪枝是一种避免过拟合的策略,可以一定程度上避免决策分支过多,以至于把训练集自身的一些特点当做所有数据都具有的一般性质而导致的过拟合。
- 预剪枝:划分后若不能带来泛化性能提升,则停止划分当前节点
- 后剪枝:自底向上地对于决策树的泛化性能进行考虑,若叶节点替换子树可以达到泛化性能的提升,则将子树替换为叶节点。
4.4 多变量决策树
对于一个单变量决策树,如果将其的决策过程转化到二维平面上则是对于平面上所有的点,利用多条与轴平行的线段划分边界;而多变量决策树的划分边界则不一定与轴平行,即多变量决策树的非叶子节点是一个对属性的线性组合。
5.支持向量机SVM
5.1 间隔与支持向量
间隔 γ = 2 ∣ ∣ w ∣ ∣ \gamma = \frac{2}{||w||} γ=∣∣w∣∣2,支持向量机的基本型就是寻找参数 w w w 和 b b b 使得 γ \gamma γ 最大。
问题可转化为
arg
m
i
n
w
,
b
1
2
∣
∣
w
∣
∣
2
s
.
t
.
y
i
(
w
T
x
i
+
b
)
≥
1
,
i
=
1
,
2
,
.
.
.
,
m
.
{\arg min \atop{w,b}} \frac{1}{2}||w||^2\\ s.t.\quad y_i(w^Tx_i+b)\ge1,i=1,2,...,m.
w,bargmin21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m.
5.2 对偶问题
对偶问题是固定原始直线上的一个点 A = [ A x , A y ] A = [A_x, A_y] A=[Ax,Ay],将参数作为变量后画出新的直线,在原始直线方程上不同的点 A A A 对应参数空间的直线交于一点。
根据拉格朗日乘子法可推出支持向量机的解具有稀疏性,故最终模型仅与支持向量有关。
求解对偶问题使用的是SMO算法,其步骤是:第一步选取一对 a i a_i ai 和 a j a_j aj,。第二步,固定除 a i a_i ai 和 a j a_j aj 之外的其他参数,确定 W W W 极值条件下 a i a_i ai,并用 a i a_i ai 表示 a j a_j aj。
5.3 核函数
不存在一个能正确划分两类样本的情况称为线性不可分,此时应将样本从原始空间映射到一个更高维的空间,使得样本在新的空间内线性可分。
5.3.1 核函数
核函数是将原始空间映射到更高维的“核函数”空间表达。
κ
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
\kappa(x_i,x_j)=\phi(x_i)^T\phi(x_j)
κ(xi,xj)=ϕ(xi)Tϕ(xj)
- M e r c e r Mercer Mercer 定理:只要一个对称函数所对应的矩阵半正定,则它就能作为核函数来使用(充分不必要条件)
5.3.2 常见核函数
5.4 软间隔与正则化
5.4.1 软间隔
现实中很难确定合适的核函数使得训练样本在特征空间中线性可分,同时一个线性可分的结果也很难确定是否有过拟合的情况,故引入了“软间隔”的概念,允许支持向量机在一些样本上不满足约束。
5.4.2 0/1损失函数
最大化间隔的同时,让不满足约束的样本尽可能少。
m
i
n
w
,
b
1
2
∣
∣
w
∣
∣
2
+
C
∑
i
=
1
m
l
0
/
1
(
y
i
(
w
T
ϕ
(
x
i
)
+
b
)
−
1
)
{min \atop{w,b}} \frac{1}{2}||w||^2+C\sum_{i=1}^ml_{0/1}(y_i(w^T\phi(x_i)+b)-1)
w,bmin21∣∣w∣∣2+Ci=1∑ml0/1(yi(wTϕ(xi)+b)−1)
其中
l
0
/
1
l_{0/1}
l0/1是
l
0
/
1
=
{
1
z
<
0
0
o
t
h
e
r
w
i
s
e
l_{0/1}=\begin{cases}1&z<0\\0&otherwise \end{cases}
l0/1={10z<0otherwise
5.4.3 替代损失函数
l h i n g e ( z ) = m a x ( 0 , 1 − z ) l_{hinge}(z)=max(0,1-z) lhinge(z)=max(0,1−z)
有着极好的数学性质,一般是0/1损失函数的上界。
5.4.4 正则化
支持向量机的模型还可以转换为
min
f
Ω
(
f
)
+
C
∑
i
=
1
m
l
(
f
(
x
i
)
,
y
i
)
{\min\atop{f}}\quad \Omega(f)+C\sum_{i=1}^ml(f(x_i),y_i)
fminΩ(f)+Ci=1∑ml(f(xi),yi)
5.5 支持向量回归
允许模型输出与实际输出之间存在 2 e 2e 2e 的偏差。
其损失函数
ℓ
(
z
)
\ell(z)
ℓ(z)
ℓ
e
(
z
)
=
{
0
i
f
∣
z
∣
≤
e
∣
z
∣
−
e
o
t
h
e
r
w
i
s
e
\ell_e(z)=\begin{cases}0&if|z|\leq e\\|z|-e&otherwise \end{cases}
ℓe(z)={0∣z∣−eif∣z∣≤eotherwise
6.神经网络
6.1 M-P神经元模型
神经元的输出需要得到激活函数的处理,理想的激活函数是阶跃函数,而线性模型中我们就提到过阶跃函数不可微,故常用的激活函数是 s i g m o i d sigmoid sigmoid 函数。
6.2 感知机与多层网络
感知机由两层神经元组成,输入层接受外界输入信号传递给输出层,输出层所用的则是 M − P M-P M−P神经元,感知机可用于实现逻辑与、或、非运算。
6.2.1 感知机学习
对于给定数据集学习权重 w i ( i = 1 , 2 , . . . , n ) w_i(i=1,2,...,n) wi(i=1,2,...,n) 与阈值 θ \theta θ 。
感知机权重的调整规则为:
w
i
←
w
i
+
Δ
w
i
Δ
w
i
=
η
(
y
−
y
^
)
x
i
w_i\gets w_i+\Delta w_i\\ \Delta w_i=\eta(y-\hat{y})x_i
wi←wi+ΔwiΔwi=η(y−y^)xi
其中
η
∈
(
0
,
1
)
\eta \in(0,1)
η∈(0,1)称为学习率。若感知机对于训练样例
(
x
,
y
)
(x,y)
(x,y)预测正确,则感知机不发生变化,否则根据错误程度进行权重的调整。
若两类模式线性可分,则感知机学习过程收敛,否则会发生震荡,对于非线性可分问题则需要通过多层感知机进行求解。
6.2.2 多层前馈神经网络
多层前馈[multilayer feed-forward]神经网络由一个输入层、一个或多个隐藏层和一个输出层组成,每层神经元与下一层神经元全互联,神经元之间不存在同层连接,也不存在跨层连接。
6.3 误差逆传播算法
BP神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络。
基本思想是通过输出层得到输出结果,并将其与期望输出的误差来简介调整隐层的权值。其学习过程由信号的**正向传播(求损失)与误差的反向传播(误差回传)**组成
6.3.1 BP算法的步骤
-
正向传播FP(求损失).在这个过程中,我们根据输入的样本,给定的初始化权重值W和偏置项的值b, 计算最终输出值以及输出值与实际值之间的损失值.如果损失值不在给定的范围内则进行反向传播的过程; 否则停止W,b的更新.
-
反向传播BP(回传误差).将输出以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号即作为修正各单元权值的依据。
前向计算:
s
t
e
p
1
:
b
h
=
f
(
a
h
−
γ
h
)
,
a
h
=
∑
i
=
1
d
v
i
h
x
i
s
t
e
p
2
:
y
^
j
k
=
f
(
β
j
−
θ
j
)
,
β
j
=
∑
i
=
1
q
w
h
j
b
h
s
t
e
p
3
:
E
k
=
1
2
∑
j
=
1
l
(
y
^
j
k
−
y
j
k
)
2
step1:b_h=f(a_h-\gamma_h),a_h = \sum_{i=1}^d v_{ih}x_i\\ step2:\hat{y}_j^k=f(\beta_j-\theta_j),\beta_j=\sum_{i=1}^qw_{hj}b_h\\ step3:E_k=\frac{1}{2}\sum_{j=1}^l(\hat{y}_j^k-y_j^k)^2\quad\quad\quad\quad\quad
step1:bh=f(ah−γh),ah=i=1∑dvihxistep2:y^jk=f(βj−θj),βj=i=1∑qwhjbhstep3:Ek=21j=1∑l(y^jk−yjk)2
参数优化:
任意的参数
v
v
v 的更新估计式为
v
←
v
+
Δ
v
v\gets v+\Delta v
v←v+Δv
6.3.2 标准BP算法及其优化
标准BP算法需要每次针对单个训练样例更新权值与阈值,但参数的更新频繁,不同样例可能抵消,需要多次迭代。
一种更新的方法是将目标转换为最小化整个训练集上的累计误差。
E
=
1
m
∑
k
=
1
m
E
k
E=\frac{1}{m}\sum_{k=1}^mE_k
E=m1k=1∑mEk
因此只需要在读取整个训练集一遍后才对参数进行更新,极大的降低了参数的更新频率。
但是在很多任务中,当累计误差下降到一定程度时,进一步下降会变得非常缓慢,此时使用标准BP算法往往会获得较好的解,在训练集非常大的时候效果更加明显。
6.4 全局最小与局部最小
对于
w
∗
w^*
w∗ 和
θ
∗
\theta^*
θ∗ 若存在
ϵ
>
0
\epsilon > 0
ϵ>0 使得
∀
(
w
;
θ
)
∈
{
∣
∣
(
w
;
θ
)
−
(
w
∗
;
θ
∗
)
∣
∣
≤
ϵ
}
,
\forall (w;\theta) \in \{||(w;\theta)-(w^*;\theta^*)||\leq\epsilon\},
∀(w;θ)∈{∣∣(w;θ)−(w∗;θ∗)∣∣≤ϵ},
都有
E
(
w
,
θ
)
≥
E
(
w
∗
,
θ
∗
)
E(w,\theta)\ge E(w^*,\theta^*)
E(w,θ)≥E(w∗,θ∗) 成立,则
(
w
∗
,
θ
∗
)
(w^*,\theta^*)
(w∗,θ∗) 为局部极小解;若对于参数空间中任意的
E
(
w
,
θ
)
E(w,\theta)
E(w,θ),都有
E
(
w
,
θ
)
≥
E
(
w
∗
,
θ
∗
)
E(w,\theta)\ge E(w^*,\theta^*)
E(w,θ)≥E(w∗,θ∗) 成立,则
(
w
∗
,
θ
∗
)
(w^*,\theta^*)
(w∗,θ∗) 为局部最小解。
当误差函数有多个局部极小时,基于梯度的搜索不能保证找到的解就是全局最小,故应该使用一些策略来跳出局部最小。如:
- 模拟退火算法
- 随机梯度下降法
- 遗传算法
6.5 其他常见神经网络
6.5.1 RBF网络
是一种单隐层前馈神经网络。利用径向基函数作为隐层神经元激活函数,而输出层则是隐层神经元输出的线性组合。
可表示为
φ
(
x
)
=
∑
i
=
1
p
w
i
ρ
(
x
,
c
i
)
\varphi(x)=\sum_{i=1}^p w_i\rho(x,c_i)
φ(x)=i=1∑pwiρ(x,ci)
6.5.2 Boltzmann机
是一种基于能量的模型。具有隐层和显层,显层是数据的输入输出,而隐层则表示数据的内在表达,其神经元为布尔型,1表示激活状态,0表示抑制状态。
其状态向量
s
∈
{
0
,
1
}
n
s\in {\{0,1\}}^n
s∈{0,1}n 对应的Boltzmann机的能量定义为
E
(
s
)
=
−
∑
i
=
1
n
−
1
∑
j
=
i
+
1
n
w
i
j
s
i
s
j
−
∑
i
=
1
n
θ
i
s
i
E(s)=-\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}w_{ij}s_is_j-\sum_{i=1}^n\theta_is_i
E(s)=−i=1∑n−1j=i+1∑nwijsisj−i=1∑nθisi
Boltamann机是将每个训练样本视为一个状态向量,使其出现的概率尽可能大。
6.5.3 受限Boltzmann机
仅保留显层与隐层间的连接,从而将Boltzmann机由完全图简化为二部图。常用对比散度算法进行训练。
6.6 深度学习
典型的深度学习就是很深层的神经网络,而复杂模型因为有多隐层,导致误差在多隐层内逆传播时往往不能收敛,故难以直接使用经典算法。
6.6.1 复杂模型训练方法
- 预训练+微调:逐层进行训练,每次将上一隐层的输出作为输入,这称为预训练;而在预训练完成后再对整个网络进行微调训练。
- 权共享:一组神经元使用相同的连接权值。
- 卷积神经网络:一类包含卷积计算且具有深度结构的前馈神经网络,包含卷积层、采样层和连接层。
Reference
机器学习概念与生活中常见概念对照:课程教学PPT
HOG流程图
单位阶跃函数与对数几率函数比较示意图:课程教学PPT
常见核函数:课程教学PPT
神经元模型:课程教学PPT