深度学习是机器学习的一个特定分支,要想充分理解深度学习,就必须对机器学习的基本原理有深刻的理解。机器学习的本质属于应用统计学,其更多地关注如何用计算机统计地估计复杂函数,而不太关注为这些函数提供置信区间,大部分机器学习算法可以分成监督学习和无监督学习两类;通过组合不同的算法部分,例如优化算法、代价函数、模型和数据集可以建立一个完整的机器学习算法。
通过对两个文本分词,TF-IDF
算法向量化,利用空间中两个向量的夹角,来判断这两个向量的相似程度:(计算夹角的余弦,取值 0-1
)
计算两个向量a、b的夹角余弦:
我们知道,余弦定理: c o s ( θ ) = a 2 + b 2 + c 2 2 a b cos(\theta) = \frac {a^2+b^2+c^2}{2ab} cos(θ)=2aba2+b2+c2 ,由此推得两个向量夹角余弦的计算公式如下:
c o s ( θ ) = a b ∣ ∣ a ∣ ∣ × ∣ ∣ b ∣ ∣ = x 1 x 2 + y 1 y 2 x 1 2 + y 1 2 x 2 2 + y 2 2 cos(\theta) = \frac {ab}{||a|| \times ||b||} = \frac {x_{1}x_{2}+y_1y_2}{\sqrt{x^2_1+y^2_1}\sqrt{x^2_2+y^2_2}} cos(θ)=∣∣a∣∣×∣∣b∣∣ab=x12+y12x22+y22x1x2+y1y2
(分子就是两个向量的内积,分母是两个向量的模长乘积)
欧式距离和 L2 范数计算公式相同。
在欧几里得空间中,欧式距离其实就是向量空间中两点之间的距离。点 x = ( x 1 , . . . , x n ) x = (x_{1}, ..., x_{n}) x=(x1,...,xn) 和 y = ( y 1 , . . . , y n ) y = (y_{1}, ..., y_{n}) y=(y1,...,yn) 之间得欧氏距离计算公式如下:
d ( x , y ) = ( ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 + . . . + ( x n − y n ) 2 ) d(x,y) = \sqrt {((x_{1}-y_{1})^{2} + (x_{2}-y_{2})^{2} + ... + (x_{n}-y_{n})^{2})} d(x,y)=((x1−y1)2+(x2−y2)2+...+(xn−yn)2)
2
个向量之间的相似度两点之间
的直线距离,而余弦相似度计算的是两个向量
之间的夹角[0, +∞]
,而余弦相似度的范围是 [-1, 1]
;余弦距离是计算相似程度,而欧氏距离计算的是相同程度(对应值的相同程度)当我们讨论预测模型时,预测误差可以分解为我们关心的两个主要子成分:“偏差”引起的误差和“方差”引起的误差。 在模型最小化偏差和方差的能力之间存在权衡。 了解这两类错误可以帮助我们诊断模型结果,避免出现过拟合或欠拟合的错误。
有两个不同的概念都被称为“方差”。一种是理论概率分布的方差。而另一种方差是一组观测值的特征(统计意义上的方差)。
统计领域为我们提供了很多工具来实现机器学习目标,不仅可以解决训练集上的任务,还可以泛化。偏差-方差指标方法是试图对学习算法(模型)的期望泛化错误率进行拆解:
E r r o r = B i a s + V a r i e n c e Error = Bias + Varience Error=Bias+Varience
Varience(Error due to Variance), Bias(Error due to Bias)
Error
: 反映的是整个模型的准确度。Bias
:偏差引起的误差被视为我们模型的预期(或平均)预测与我们试图预测的正确值之间的差异,即模型的准确性。当然,您只有一个模型,因此谈论预期或平均预测值可能看起来有点奇怪。但是,想象一下您可以多次重复整个模型构建过程:每次您收集新数据并运行新分析时都会创建一个新模型。由于基础数据集中的随机性,生成的模型将具有一系列预测。偏差通常衡量这些模型的预测与正确值之间的差距。Varience
:方差引起的误差被视为给定数据点的模型预测的可变性,即**即模型的稳定性。同样,假设您可以多次重复整个模型构建过程。方差是给定点的预测在模型的不同实现之间的变化程度。Bias
: 反映的是模型在样本上的输出与真实值之间的误差,即模型的准确性。以打靶事件为例,low bias
,一般就得复杂化模型,表现出来就是点都打在靶心中间,但这样容易过拟合 (overfitting
),过拟合对应下图是 high variance
,点很分散。Varience
: 反映的是模型每一次输出的结果与模型输出期望之间的误差,即模型的稳定性,是训练集上训练出来的模型在测试集上的表现。同样以打靶事件为例,low variance
对应就是点都打的很集中,但不一定是靶心附近,手很稳,但是瞄的不准。Bias
和 Varience
的图形定义:
我们可以使用靶心图创建偏差和方差的图形可视化。想象一下,目标的中心是一个可以完美预测正确值的模型。当我们远离靶心时,我们的预测会变得越来越糟。
Low Bias
表现出来就是点都打在靶心中间,但这样容易过拟合 (overfitting
),过拟合对应下图是 High Variance
,表现就是点很分散,没有集中在一起,手不稳啊(对应就是模型预测结果变化性太大)。
Low Variance
对应就是点都打的很集中,但不一定是靶心附近,手很稳,但是瞄的不一定准。
图片来源 Understanding the Bias-Variance Tradeoff。
总的来说,参数估计、偏差和方差虽然是统计领域的基本概念,但它们的关系也和机器学习的模型容量、欠拟合和过拟合的概念紧密相联。
偏差和方差度量着估计量的两个不同误差来源:
假设对测试样本 x x x, 令 y D y_{D} yD 为 x x x 在数据集中的标记, y y y 为 x x x 的真实标记, f ( x ; D ) f(x;D) f(x;D) 为在训练集 D D D 上学习到的模型 f f f 在 x x x 上的预测输出。
bias
): b i a s 2 ( x ) = ( f ˉ − y ) 2 bias^{2}(x) = (\bar{f} - y)^{2} bias2(x)=(fˉ−y)2方差
为: $var(x) = E_{D}[(f(x;D) - \bar{f})^{2}] $机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
正则化方法
。bias
)过大,表现为模型不够”准“,优化算法目的在于解决欠拟合问题。variance
)过大,表现为模型不够”稳“,正则化目的在于解决过拟合问题。训练误差
train error
,泛化误差generalization error
(也叫测试误差test error
)。
模型容量与偏差、方差的关系图如下所示:
从上图可以看出,当容量增大(x 轴)时,偏差(蓝色虚线)随之减小,而方差(绿色虚线)随之增大,使得泛 化误差(加粗曲线)产生了另一种 U 形。如果我们沿着轴改变容量,会发现最佳容量(optimal capacity),当容量小于最佳容量会呈现欠拟合,大于时导致过拟合。这种关系与第一章中讨论的容量、欠拟合和过拟合之间的关系类似。
本章中样本方差与总体方差概念是统计学意义上的。
方差是在概率论和统计学中衡量随机变量或一组数据时离散程度的度量,在统计描述和概率分布中各有不同的定义,并有不同的公式。
概率论中,方差(variance)衡量的是当我们对 x \textrm{x} x 依据它的概率分布进行采样时,随机变量 x \textrm{x} x 的函数值会呈现多大的差异,简单理解就是用来度量随机变量和其数学期望之间的偏离程度。
统计学中,方差是一组观测值的特征,观测值通常是从真实世界的系统中测量的。如果给出系统的所有可能的观测,则它们算出的方差称为总体方差;然而,一般情况下我们只使用总体的一个子集(样本),由此计算出的方差称为样本方差。用样本计算出的方差可认为是对整个总体的方差的估计量。
1,均方误差(MSE,mean squared error)与均方根误差(RMSE)
均方误差是预测值与真实值之差的平方和的平均值,即误差平方和的平均数。计算公式形式上接近方差,它的开方叫均方根误差 RMSE
,均方根误差才和标准差形式上接近。
计算公式如下:
1 n ∑ i = 1 n [ f ( x i ) − y i ] 2 \frac{1}{n} \sum_{i=1}^{n}[f(x_i)-y_i]^2 n1i=1∑n[f(xi)−yi]2
在机器学习中均方误差常用作预测和回归问题的损失函数,均方误差越小,说明模型预测的越准确,反之则越不准确。
2,总体方差
统计中的总体方差 σ 2 \sigma^2 σ2 就是对整个总体运用方差计算方法得到的结果,即样本实际值与实际值的总体平均值之差的平方和的平均值。
另一种定义:各个样本误差之平方(而非取绝对值,使之肯定为正数)相加之后再除以总数。
总体方差计算公式如下:
σ 2 = ∑ i = 1 N ( X i − μ ) 2 N \sigma ^2 = \frac{\sum_{i=1}^{N}(X_{i}-\mu)^2}{N} σ2=N∑i=1N(Xi−μ)2
公式解析:
由于方差是数据的平方,与检测值本身相差太大,难以直观的衡量,所以常用方差开根号换算回来,就成了标准差(Standard Deviation)用 σ \sigma σ 表示。
3,样本方差
在实际项目中,总体均值很难获得,所以常用样本方差来估计总体方差(统计术语:样本方差是对总体方差的无偏估计)。所谓样本方差,是指样本各单位变量值与其算术平均数的离差平方的平均数。
应用样本统计量替代总体参数,经校正后,样本方差的计算公式如下:
σ 2 = ∑ i = 1 n − 1 ( X i − x i . . x n ‾ ) 2 n − 1 \sigma ^2 = \frac{\sum_{i=1}^{n-1}(X_{i}-\overline{x_{i}..x_{n}})^2}{n-1} σ2=n−1∑i=1n−1(Xi−xi..xn)2
x i . . x n ‾ \overline{x_{i}..x_{n}} xi..xn 表示样本均值公式分母由总体方差的 N
变为了 n-1
,使得样本方差更能反映总体方差。
更多深入内容可参考《花书》第三章概率与信息论。
一个事件发生后另一个事件发生的概率。设 A 与 B 为样本空间 Ω 中的两个事件,其中 P(B)>0。那么在事件 B 发生的条件下,事件 A 发生的条件概率为:
P ( A ∣ B ) = P ( A ∩ B ) P ( B ) P(A|B) = \frac {P(A\cap B)} {P(B)} P(A∣B)=P(B)P(A∩B)
事件发生前的概率,可以是基于以往经验/分析,也可以是基于历史数据的统计,甚至可以是人的主观观点给出。一般是单独事件概率,如 P ( x ) P(x) P(x), P ( y ) P(y) P(y)。
贝叶斯
公式求得,公式如下:贝叶斯公式是建立在条件概率的基础上寻找事件发生的原因(即大事件 A
已经发生的条件下,分割中的小事件 Bi
的概率),设 B1,B2,...
是样本空间 Ω
的一个划分,则对任一事件 A(P(A)>0)
, 有: P ( B i ∣ A ) = P ( A ∣ B i ) P ( B i ) ∑ j = 1 n P ( B j ) P ( A ∣ B j ) P(B_{i}|A) = \frac {P(A|B_{i})P(B_{i})}{\sum_{j=1}^{n}P(B_{j})P(A|B_{j})} P(Bi∣A)=∑j=1nP(Bj)P(A∣Bj)P(A∣Bi)P(Bi)
Bi
常被视为导致试验结果A发生的”原因“;P(Bi)(i=1,2,...)
表示各种原因发生的可能性大小,故称先验概率;P(Bi|A)(i=1,2...)
则反映当试验产生了结果A之后,再对各种原因概率的新认识,故称后验概率。假设一个学校里有 60%
男生和 40%
女生。女生穿裤子的人数和穿裙子的人数相等,所有男生穿裤子。一个人在远处随机看到了一个穿裤子的学生。那么这个学生是女生的概率是多少?
根据贝叶斯定理,我们计算出后验概率P(A|B):
P ( A ∣ B ) = P ( B ∣ A ) P ( A ) P ( B ) = 0.5 × 0.4 0.8 P(A|B) = \frac {P(B|A)P(A)}{P(B)} = \frac {0.5\times 0.4} {0.8} P(A∣B)=P(B)P(B∣A)P(A)=0.80.5×0.4
也可参考文章【直观详解】信息熵、交叉熵和相对熵、为什么交叉熵(cross-entropy)可以用于计算代价和神经网络基础部件-损失函数详解。
其实信息熵是香农信息量( l o g 1 p log\frac{1}{p} logp1)的期望(均值),它不是针对每条信息,而是针对整个不确定性结果集而言,信息熵越大,事件不确定性就越大。单条信息只能从某种程度上影响结果集概率的分布。信息熵定义:
H ( P ) = ∑ i P ( i ) l o g a 1 P ( i ) = − ∑ i P ( i ) l o g a P ( i ) H(P) = \sum_{i} P(i)log_{a} \frac{1}{P(i)} = -\sum_{i}P(i)log_{a} P(i) H(P)=i∑P(i)logaP(i)1=−i∑P(i)logaP(i)
P i P_{i} Pi 表示第 i i i 个事件发生得概率,总的来说信息熵其实从某种意义上反映了信息量存储下来需要多少存储空间。
总结为:根据真实分布,我们能够找到一个最优策略,以最小的代价消除系统的不确定性(比如编码),而这个代价的大小就是信息熵。
KL
散度,有时候也叫 KL 距离
,一般被用于计算两个分布之间的不同,记为 D K L ( P ∣ ∣ Q ) = H ( P , Q ) − H ( P ) D_{KL}(P||Q) = H(P,Q) - H(P) DKL(P∣∣Q)=H(P,Q)−H(P),对于同一个离散随机变量 x \textrm{x} x 有两个单独的概率分布 P ( x ) P(x) P(x) 和 Q ( x ) Q(x) Q(x),其 KL
散度为:
D K L ( P ∥ Q ) = ∑ i P ( i ) l o g a P ( i ) Q ( i ) = ∑ i P ( i ) [ l o g P ( x ) − l o g Q ( x ) ] D_{KL}(P \| Q) = \sum_i P(i)log_{a} \frac{P(i)}{Q(i)} = \sum_i P(i)[logP(x) - log Q(x)] DKL(P∥Q)=i∑P(i)logaQ(i)P(i)=i∑P(i)[logP(x)−logQ(x)]
当 P ( i ) = Q ( i ) P(i) = Q(i) P(i)=Q(i) 的时候,该值为 0
,深度学习过程也是一个降低该值的过程,该值越低,训练出来的概率 Q Q Q 越接近样本集概率 P P P,即越准确,或者可以理解为相对熵是一把标尺,用来衡量两个函数是否相似,相似就是 0。即,相对熵 = 某个策略的交叉熵 - 信息熵(根据系统真实分布计算而得的信息熵,为最优策略),当信息熵为常量时,交叉熵与KL散度相等。
交叉熵是由信息熵而得来的,和 KL
散度关系密切,拓展用在机器学习/深度学习中作损失函数。假定在确定性更大的概率分布情况下,用更不确定的存储策略来计算,比如使用 P
的概率乘上 Q
的存储因子,套用信息熵公式:
H ( P , Q ) = ∑ i P ( i ) l o g a 1 Q ( i ) = − ∑ i P ( x i ) l o g a Q ( x i ) H(P,Q) = \sum_{i} P(i)log_{a} \frac{1}{Q(i)} = -\sum_{i}P(x_i)log_{a} Q(x_i) H(P,Q)=i∑P(i)logaQ(i)1=−i∑P(xi)logaQ(xi)
用预测概率 q q q 分布,去编码真实标签 p p p 的分布,得到的信息量。交叉熵,用来衡量在给定的真实分布下,使用非真实分布指定的策略消除系统的不确定性所需要付出努力的大小。总的来说,我们的目的是:让熵尽可能小,即存储空间小(消除系统的不确定的努力小)。交叉熵的一些性质:
KL
散度相同,交叉熵也不具备对称性,即 H ( P , Q ) ≠ H ( Q , P ) H(P,Q)≠H(Q,P) H(P,Q)=H(Q,P)。从数学上来理解就是,为了让学到的模型分布更接近真实数据的分布,我们需要最小化模型数据分布与训练数据之间的 KL 散度
,而因为训练数据的分布是固定的,因此最小化 KL 散度
等价于最小化交叉熵,而且交叉熵计算更简单,所以机器/深度学习中常用交叉熵 cross-entroy
作为分类问题的损失函数。
使用交叉熵损失大大提高了具有 sigmoid
和 softmax
输出的模型的性能,而当使用均方误差损失时会存在饱和和学习缓慢的问题。
KL
散度和交叉熵在特定条件下等价80%
的训练数据用于训练,20%
用于验证。所谓正则化,是指我们通过修改学习算法,使其降低泛化误差而非训练误差的方法。
正则化是一种思想(策略),它是机器学习领域的中心问题之一,其重要性只有优化能与其相媲美。
许多正则化方法通过对目标函数 J J J 添加一个参数范数惩罚项 Ω ( θ ) \Omega(\theta) Ω(θ),限制模型 (如神经网络、线性回归或逻辑回归)的学习能力。我们将正则化后的目标函数记为
J ~ \tilde{J} J~ :
J ~ ( θ ; X , y ) = J ( θ ; X , y ) + α Ω ( θ ) \tilde{J}(\theta; X, y) = J(\theta; X, y) + \alpha \Omega(\theta) J~(θ;X,y)=J(θ;X,y)+αΩ(θ)
其中 α ∈ [ 0 , ∞ ) \alpha \in[0,∞) α∈[0,∞) 是权衡范数惩罚项 Ω \Omega Ω 和标准目标函数 J ( X ; θ ) J(X;\theta) J(X;θ) 相对贡献的超参数。将 α \alpha α 设为 0 表示没有正则化。 α \alpha α 越大,对应正则化惩罚越大。
常用的参数正则化策略有 L1 和 L2 范数。L1 范数(L1 norm
)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。 比如,向量 A = [ 1 , − 1 , 3 ] A = [1,-1,3] A=[1,−1,3], 那么 A 的 L1 范数为 ∣ 1 ∣ + ∣ − 1 ∣ + ∣ 3 ∣ |1|+|-1|+|3| ∣1∣+∣−1∣+∣3∣。简单总结就是:
L1
范数可以使权值参数稀疏,方便特征提取。L2 范数可以防止过拟合,提升模型的泛化能力。