文章目录
一、统计学习方法的概述
参考《统计学习方法》第一章
-
统计学习研究对象:数据
-
统计学习基本假设:同类数据有一定的统计规律性,所以可以用概率统计方法处理它们。用随机变量描述数据中的特征,用概率分布描述数据统计规律
-
统计学习目的/方法:基于数据通过构建概率统计模型,实现对数据的分析和预测
-
统计学习三要素:模型、策略(选取最优模型准则)和算法(如何选取最优模型)
-
统计学习分类
- 监督学习supervised learning:从标注数据中学习预测模型
- 回归:特征和标签都是连续的(输入输出变量)
- 分类:标签是有限个离散变量
- 标注:输入观测序列,输出标记或状态序列。如:隐马尔可夫模型、条件随机场。
- 无监督学习unsupervised learning:从无标注数据中学习预测模型,如聚类、主成分分析PCA、LDA等
- 强化学习structure learning:智能系统在与环境连续互动中学习最优策略行为的机器学习问题,本质是最优序贯决策,学习的策略是给定状态下的动作。
- 半监督学习semi-supervised learning:用标注和未标注数据一起学习预测模型。旨在用未标注数据中的信息,辅助标注信息,进行监督学习。
- 主动学习active learning:指机器不断主动给出实例让教师进行标注,然后利用标注数据学习预测模型的机器学习问题。通常的监督学习使用给定的标注数据,往往是随机得到的,可以看作是“被动学习”,主动学习的目标是找出对学习最有帮助的实例让教师标注,以较小的标注代价,达到较好的学习效果。
半监督学习和主动学习更接近监督学习。
- 监督学习supervised learning:从标注数据中学习预测模型
-
概率模型与非概率模型
条件概率分布最大化后得到函数,函数归一化后得到条件概率分布
概率模型 | 非概率模型 |
---|---|
监督学习中是取条件概率分布形式P(y/x) | 监督学习选取函数形式y=f(x) |
无监督学习中是取条件概率分布形式P(z/x) 或P(x/z) | 无监督学习中是取函数形式y=g(x) |
决策树、朴素贝叶斯、隐马尔可夫模型、条件随机场、概率潜在语义分析、潜在狄利克雷分配、高斯混合模型 | 感知机、支持向量机、 k 近邻、 AdaBoost 、 k 均值、潜在语义分析,以及神经网络 |
- 为什么我们需要学习机器学习:给AI选取适合的模型(即通过策略和算法来找出最优模型)
二、 机器学习的主要任务
参考《深入浅出PyTorch》第一章
2.1 什么是模型
从概率论的角度说,机器学习模型是一个概率分布 P θ ( X ) P_{\theta }(X) Pθ(X) (这里以概率密度函数来代表概率分布)
- X :训练数据
- θ = θ 1 . . . θ n \theta =\theta_{1}...\theta _{n} θ=θ1...θn表示概率分布 P θ P_{\theta } Pθ的 n个参数
机器学习的任务就是求最优参数
θ
t
\theta_{t}
θt ,使得概率分布
P
θ
(
X
)
P_{\theta }(X)
Pθ(X) 最大(即已发生的事实,其对应的概率理应最大)。
θ
t
=
a
r
g
m
a
x
θ
P
θ
X
\theta_{t} =\underset{\theta}{argmax}P_{\theta }X
θt=θargmaxPθX
其中 argmax 函数代表的是取参数使得数据的概率密度最大。
求解最优参数
θ
t
\theta_{t}
θt的过程,我们称之为模型的训练过程( Training ),用来训练这个模型的数据集称之为训练集X( Training Set ),由此得到的模型就可以用来做相应的预测。
2.2 生成式模型和判别式模型
2.2.1生成式模型和判别式模型区别
有监督学习中,训练数据包括输入X和标签Y。所以模型求的是X和Y的概率分布。根据概率论的知识可以知道,对应的概率分布(以概率密度函数指代概率分布)有两种:
- 联合概率分布: P θ ( X , Y ) P_{\theta }(X,Y) Pθ(X,Y),表示数据和标签同时出现的概率,对应于生成式模型。
- 条件概率分布:P_{\theta }(Y|X),表示给定数据条件下,对应标签的概率,对应于判别式模型。
进一步理解:
- 生成式模型:除了能够根据输入数据 X 来预测对应的标签 Y ,还能根据训练得到的模型产生服从训练数据集分布的数据( X ,Y),相当于生成一组新的数据,所以称之为生成式模型。
- 判别式模型:仅仅根据X由条件概率 P θ ( Y ∣ X ) P_{\theta }(Y|X) Pθ(Y∣X)来预测标签Y。牺牲了生成数据的能力,但是比生成式模型的预测准确率高。
2.2.2 为啥判别式模型预测效果更好
原因如下:由全概率公式和信息熵公式可以得到:
P
(
X
,
Y
)
=
∫
P
(
Y
∣
X
)
P
(
X
)
d
X
P(X,Y)=\int P(Y|X)P(X)dX
P(X,Y)=∫P(Y∣X)P(X)dX
即计算全概率公式
P
(
X
,
Y
)
P(X,Y)
P(X,Y)时引入了输入数据的概率分布
P
(
X
)
P(X)
P(X),而这个并不是我们关心的。我们只关心给定X情况下Y的分布,这就相对削弱了模型的预测能力。
另外从信息熵的角度进行定量分析。
- X的信息熵定义为:
H ( X ) = − ∫ P ( X ) l o g P ( X ) d X H(X)=-\int P(X)logP(X)dX H(X)=−∫P(X)logP(X)dX - 两个离散随机变量 X 和 Y 的联合熵 (Joint Entropy) 表示两事件同时发生系统的不确定度:
H ( X , Y ) = − ∫ P ( X , Y ) l o g P ( X , Y ) d X d Y H(X,Y)=-\int P(X,Y)logP(X,Y)dXdY H(X,Y)=−∫P(X,Y)logP(X,Y)dXdY - 条件熵 (Conditional Entropy) H(Y|X)表示在已知随机变量X的条件下随机变量Y的不确定性:
H ( Y ∣ X ) = − ∫ P ( Y ∣ X ) l o g P ( Y ∣ X ) d X H(Y|X)=-\int P(Y|X)logP(Y|X)dX H(Y∣X)=−∫P(Y∣X)logP(Y∣X)dX
可以推导出来 H ( Y ∣ X ) = H ( X , Y ) − H ( X ) H(Y|X)=H(X,Y)-H(X) H(Y∣X)=H(X,Y)−H(X).一般H(X)>0(所有离散分布和很多连续分布满足这个条件),可以知道条件分布的信息熵小于联合分布,即判别模型比生成式模型含有更多的信息,所以同条件下比生成式模型效果更好。
2.3 极大似然估计
我们可以把训练集X拆成单条数据的集合X=(X_{1}…X_{n})。每个X的子集为迷你批次。假设单条数据互相独立,上式改写的单条数据乘积可以转为概率对数的求和:
θ
t
=
a
r
g
m
a
x
θ
∏
i
P
θ
X
i
=
a
r
g
m
a
x
θ
∑
i
l
o
g
P
θ
X
i
\theta_{t}=\underset{\theta}{argmax}\prod_{i} P_{\theta }X_{i}=\underset{\theta}{argmax}\sum_{i}log P_{\theta }X_{i}
θt=θargmaxi∏PθXi=θargmaxi∑logPθXi
极大似然估计MLE(Maximum Linklihood Estimation):整体求解上式最优参数 θ t \theta_{t} θt的过程。
2.4 损失函数
以线性回归举例,其模型可以简单地认为是拟合一个函数: y = f θ ( x ) y=f_{\theta }(x) y=fθ(x)。
- 假设噪声符合正态分布 N ( 0 , σ 2 ) N(0,\sigma^{2} ) N(0,σ2),通过极大似然估计求最优参数 θ t \theta_{t} θt。将正态分布公式代入有:
θ t = a r g m a x θ ∑ i l o g P θ X i = a r g m a x θ ∑ i l o g 1 2 π σ e − f θ ( X i ) − Y i ) 2 2 σ 2 \theta_{t}=\underset{\theta}{argmax}\sum_{i}log P_{\theta }X_{i}=\underset{\theta}{argmax}\sum_{i}log \frac{1}{\sqrt{2\pi }\sigma }e^{-\frac{f_{\theta }(X_{i})-Y_{i})^{2}}{2\sigma ^{2}}} θt=θargmaxi∑logPθXi=θargmaxi∑log2πσ1e−2σ2fθ(Xi)−Yi)2
θ
t
=
a
r
g
m
i
n
θ
∑
i
l
o
g
(
f
θ
(
X
i
)
−
Y
i
)
2
\theta_{t}=\underset{\theta}{argmin}\sum_{i}log (f_{\theta }(X_{i})-Y_{i})^{2}
θt=θargmini∑log(fθ(Xi)−Yi)2
上面argmin中的函数 称之为MSE损失函数或者L2模损失函数。
- 如果噪声符合拉普拉斯分布,则有:
P
θ
(
X
i
)
=
e
−
α
∣
f
θ
(
X
i
)
−
Y
i
)
∣
P_{\theta }(X_{i})=e^{-\alpha |f_{\theta }(X_{i})-Y_{i})|}
Pθ(Xi)=e−α∣fθ(Xi)−Yi)∣
θ t = a r g m i n θ ∑ i l o g ∣ ( f θ ( X i ) − Y i ) ∣ \theta_{t}=\underset{\theta}{argmin}\sum_{i}log |(f_{\theta }(X_{i})-Y_{i})| θt=θargmini∑log∣(fθ(Xi)−Yi)∣
上面得到的称之为MAE或者L1模损失函数。
2.5 梯度下降法
2.5.1为啥使用梯度下降法求解
解方程求解的缺点:
- 机器学习的场景中,训练样本量通常很大,海量的方程通常很难求解。矩阵方式求解,涉及百万维的矩阵运算,对算力。配置要求很高
- 线性回归在对应多元一次方程,尚有解析解。当模型更复杂时(比如不止线性回归),很难找到解析解。即使有,也是特定模型求特定的解析解,无法推广到别的模型
- 解方程需要一次加载全部数据,在数据量很大时,基本做不到(内存会爆)
2.5.2 梯度下降法本质
- 梯度:在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f/∂x, ∂f/∂y)T,简称grad f(x,y)或者▽f(x,y)。
- 梯度向量的意义:从几何意义上讲,梯度就是函数变化增加最快的地方。沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值
- 梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
2.5.3 梯度下降的算法调优
- 选择合适的学习率(步长),调整每次优化时参数调整的步幅。梯度只是代表下降的方向,真正下降的步幅由学习率控制。太小会很慢,太大会震荡。
- 算法参数的初始值选择。初始值不同,获得的最小值也有可能不同,因此梯度下降求得的只是局部最小值(除非是凸函数)由于有局部最优解的风险,需要多次用不同初始值运行算法
- 归一化。样本不同特征的量纲不一样,会导致迭代很慢(而且结果主要由量纲最大的特征决定)为了减少特征取值的影响,可以对特征数据归一化,也就是对于每个特征x,求出它的期望x¯和标准差std(x),然后转化为:x−x¯/std(x)。这样特征的新期望为0,新方差为1,迭代速度可以大大加快。(也可以防止过拟合)
- 使用合适的优化器(此处不展开)
2.5 数据集的划分和正则化
- 训练集:训练模型,训练中,模型分布会逐渐趋向训练集分布。所以一定程度后会过拟合。
- 验证集:选取超参数。超参数是不随训练过程变化的模型的参数。比如lr、batch_size等。
- 测试集:避免超参数的调节影响最终结果。因为 超参数的调节总是以降低验证集的损失函数为目的。所以测试集只能使用一次。(使用多次就也成了验证集了)
2.6 如何防止过拟合
在之前的推导中,没有假设参数的范围,参数在很大范围内变动,所以模型容易过拟合。
2.6.1 先验分布和正则化
为了减小过拟合趋势,可以认为假设参数满足一定的分布,减小参数的选择范围。这种人为选择的参数分布称之为先验分布。
- 假设参数的选择服从正态分布,可以得到:
θ t = a r g m a x θ ∑ i l o g P θ ( X i ∣ θ ) P ( θ ) = a r g m i n ∑ i l o g ( f θ ( X i ) − Y i ) 2 + α 2 ∣ ∣ θ ∣ ∣ 2 \theta _{t}=\underset{\theta}{argmax}\sum_{i}log P_{\theta }(X_{i}|\theta)P(\theta)=argmin\sum_{i}log (f_{\theta }(X_{i})-Y_{i})^{2}+\frac{\alpha }{2}||\theta ||^{2} θt=θargmaxi∑logPθ(Xi∣θ)P(θ)=argmini∑log(fθ(Xi)−Yi)2+2α∣∣θ∣∣2
后一项为L2正则化系数,是所有参数的平方和乘以系数 α \alpha α。其中, α = σ 2 σ 1 2 \alpha =\frac{\sigma ^{2}}{\sigma _{1}^{2}} α=σ12σ2。正则化系数越大,正则化效果越强,模型更偏向欠拟合区域。反之偏向过拟合区域。调节正则化系数就可以调节模型的过拟合情况。 - 假设参数的选择服从拉普拉斯分布,最后会得到L1正则化项,即所有参数绝对值之和。
2.6.2 防止过拟合的其它方法
- 提前停止:验证集loss不再下降反而上升,可以判断是过拟合,提前停止训练
- dropout:把神经元按照一定概率置为零
- 权重衰减Weight Decay
这些方法本质都是减小参数的变化空间,缩小模型的表示范围,达到训练模型又较好泛化的效果。
2.7 归一化的作用
- 使得梯度下降求解时,loss在x的各个维度上的梯度比较一致,各个维度w更新幅度也比较一致,这样可以加快收敛
- 比如逻辑回归中,loss对w导数= ( y ′ − y ) x (y'-y)x (y′−y)x, x = ( x 1 , x 2 . . . x n ) x=(x_{1},x_{2}...x_{n}) x=(x1,x2...xn)。假如 x 1 x_{1} x1的量纲远远大于 x 2 x_{2} x2,则loss对w1的梯度远大于loss对w2的梯度,就会使得更次更新w的时候,在w1方向上的幅度特别大。而x1量纲很大,对w1的变化更敏感,这时候w1剧烈变化会造成loss下降震荡的情况,收敛很慢甚至难以收敛
- 为了使w1和w2对loss下降的贡献一致,我们希望w1更新幅度小,w2更新幅度大,loss对的敏感度一样,这样loss走直线直接下级到最低点。这时,可以设置较高的学习率,减少迭代次数,加快训练。所以需要对x1和x2做归一化处理。
- 消除特征之间量纲的影响,使得不同特征之间具有可比性。否则模型训练结果主要由量纲最大特征的决定。
- 防止过拟合
- 归一化有min-max归一化和零均值归一化。前者是 x = x − x m i n x m a x − x m i n x=\frac{x-x_{min}}{x_{max}-x_{min}} x=xmax−xminx−xmin。后者是 x = x − μ σ x=\frac{x-\mu }{\sigma } x=σx−μ。训练时启用BN,得到参数 μ \mu μ和 σ \sigma σ。预测时不启用BN,采用训练集的训练好的参数进行无偏估计。(待补充)
- 决策树不需要归一化。决策树进行节点分裂主要靠数据集对x的信息增益比来进行。信息增益比跟x是否归一化无关。