机器学习基本概念总结

时间:2023-02-08 21:15:40

机器学习的本质属于应用统计学,其更多地关注如何用计算机统计地估计复杂函数,而不太关注为这些函数提供置信区间,大部分机器学习算法可以分成监督学习和无监督学习两类;通过组合不同的算法部分,例如优化算法、代价函数、模型和数据集可以建立一个完整的机器学习算法。

一,余弦相似度与欧氏距离

1.1,余弦相似度

通过对两个文本分词,TF-IDF 算法向量化,利用空间中两个向量的夹角,来判断这两个向量的相似程度:(计算夹角的余弦,取值 0-1)

  • 当两个向量夹角越大,距离越远,最大距离就是两个向量夹角 180°;
  • 夹角越小,距离越近,最小距离就是两个向量夹角 0°,完全重合。
  • 夹角越小相似度越高,但由于有可能一个文章的特征向量词特别多导致整个向量维度很高,使得计算的代价太大不适合大数据量的计算。

计算两个向量a、b的夹角余弦: 我们知道,余弦定理:$cos(\theta) = \frac {a^2+b^2+c^2}{2ab}$ ,由此推得两个向量夹角余弦的计算公式如下:

$$ 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}} $$

(分子就是两个向量的内积,分母是两个向量的模长乘积)

1.2,欧式距离

欧式距离和 L2 范数计算公式相同。

在欧几里得空间中,欧式距离其实就是向量空间中两点之间的距离。点 $x = (x_{1}, ..., x_{n})$ 和 $y = (y_{1}, ..., y_{n})$ 之间得欧氏距离计算公式如下:

$$ d(x,y) = \sqrt {((x_{1}-y_{1})^{2} + (x_{2}-y_{2})^{2} + ... + (x_{n}-y_{n})^{2})} $$

1.3,余弦相似度和欧氏距离的区别

  • 欧式距离和余弦相似度都能度量 2 个向量之间的相似度
  • 放到向量空间中看,欧式距离衡量两点之间的直线距离,而余弦相似度计算的是两个向量之间的夹角
  • 没有归一化时,欧式距离的范围是 [0, +∞],而余弦相似度的范围是 [-1, 1];余弦距离是计算相似程度,而欧氏距离计算的是相同程度(对应值的相同程度)
  • 归一化的情况下,可以将空间想象成一个超球面(三维),欧氏距离就是球面上两点的直线距离,而向量余弦值等价于两点的球面距离,本质是一样。

二,Bias(偏差)和Varience(方差)

机器学习中的 Bias(偏差),Error(误差),和 Variance(方差)有什么区别和联系?

有两个不同的概念都被称为“方差”。一种是理论概率分布的方差。而另一种方差是一组观测值的特征(统计意义上的方差)。观测值通常是从真实世界的系统中测量的。如果给出系统的所有可能的观测,则它们算出的方差称为总体方差;然而,一般情况下我们只使用总体的一个子集(样本),由此计算出的方差称为样本方差。用样本计算出的方差可认为是对整个总体的方差的估计量。

更多名词定义参考 总体、样本、总体方差、样本方差、抽样方差和标准误差

统计领域为我们提供了很多工具来实现机器学习目标,不仅可以解决训练集上的任务,还可以泛化。偏差-方差指标方法是试图对学习算法(模型)的期望泛化错误率进行拆解。Error = Bias + Varience

  • Error: 反映的是整个模型的准确度。
  • Bias: 反映的是模型在样本上的输出与真实值之间的误差,即模型的准确性,以打靶事件为例,low bias,一般就得复杂化模型,表现出来就是点都打在靶心中间,但这样容易过拟合 (overfitting),过拟合对应下图是 high variance,点很分散。
  • Varience: 反映的是模型每一次输出的结果与模型输出期望之间的误差,即模型的稳定性,是训练集上训练出来的模型在测试集上的表现,同样以打靶事件为例,low variance 对应就是点都打的很集中,但不一定是靶心附近,手很稳,但是瞄的不准。

机器学习基本概念总结

总的来说,参数估计、偏差和方差虽然是统计领域的基本概念,但它们的关系和机器学习容量、欠拟合和过拟合的概念紧密相联。偏差和方差度量着估计量的两个不同误差来源。偏差度量着偏离真实函数或参数的误差期望。而方差度量着数据上任意特定采样可能导致的估计期望的偏差。

2.1,偏差与方差公式

假设对测试样本 $x$, 令 $y_{D}$ 为 $x$ 在数据集中的标记,$y$ 为 $x$ 的真实标记, $f(x;D)$ 为在训练集 $D$ 上学习到的模型 $f$ 在 $x$ 上的预测输出。

  • 训练过程中期望输出与真实标记(标签)的差别称为偏差(bias):$bias^{2}(x) = (\bar{f} - y)^{2}$
  • (交叉验证训练模型)使用样本数相同不同训练集训练出来的模型在测试集上产生的方差为: $var(x) = E_{D}[(f(x;D) - \bar{f})^{2}] $

2.2,导致偏差和方差的原因

机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?

  • 偏差通常是由于我们对学习算法做了错误的假设,或者模型的复杂度不够;
    • 比如真实模型是一个二次函数,而我们假设模型为一次函数,这就会导致偏差的增大(欠拟合);
    • 由偏差引起的误差通常在训练误差上就能体现,或者说训练误差主要是由偏差造成的
  • 方差通常是由于模型的复杂度相对于训练集过高导致的;
    • 比如真实模型是一个简单的二次函数,而我们假设模型是一个高次函数,这就会导致方差的增大(过拟合);
    • 由方差引起的误差通常体现在测试误差相对训练误差的增量上。

2.3,深度学习中的偏差与方差

  • 神经网络的拟合能力非常强,因此它的训练误差(偏差)通常较小;
  • 但是过强的拟合能力会导致较大的方差,使模型的测试误差(泛化误差)增大;
  • 深度学习的核心工作之一就是研究如何降低模型的泛化误差,这类方法统称为正则化方法

2.4,均方误差和方差、标准差

1,均方误差(MSE,mean squared error)与均方根误差(RMSE)

均方误差是预测值与真实值之差的平方和的平均值,即误差平方和的平均数。计算公式形式上接近方差,它的开方叫均方根误差 RMSE,均方根误差才和标准差形式上接近。 计算公式如下:

$$ \frac{1}{n} \sum_{i=1}^{n}[f(x_i)-y_i]^2 $$

在机器学习中均方误差常用作预测和回归问题的损失函数,均方误差越小,说明模型预测的越准确,反之则越不准确。

2,方差(variance)与标准差

方差是在概率论和统计学中衡量随机变量或一组数据时离散程度的度量,在统计描述和概率分布中各有不同的定义,并有不同的公式。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是样本实际值与实际值的总体平均值之差的平方和的平均值,即将各个误差之平方(而非取绝对值,使之肯定为正数)相加之后再除以总数。总体方差计算公式如下:

$$ \sigma ^2 = \frac{\sum_{i=1}^{N}(X_{i}-\mu)^2}{N} $$

公式解析:

  1. 因为和样本数无关,所以分母为样本数
  2. 累加每个值和均值差值的平方,对应于每个值相对于均值的偏差,对应于离散程度,平方是对离散程度的加剧,同时能让差值总为正数,以符合偏差的概念意义
  3. $\sigma$ 的平方表示总体方差,$X$ 表示变量,$\mu $ 表示总体的均值,$N$ 表示总体样本数量。

由于方差是数据的平方,与检测值本身相差太大,难以直观的衡量,所以常用方差开根号换算回来,就成了标准差(Standard Deviation)用$\sigma$ 表示,标准差计算公式如下:

$$ \sigma = \sqrt{\frac{\sum_{i=1}^{N}(X_{i}-\mu)^2}{N}} $$

3,样本方差

在实际项目中,总体均值难以得到时,应用样本统计量替代总体参数,经校正后,样本方差的计算公式如下:

样本方差是指总体各单位变量值与其算术平均数的离差平方的平均数。样本方差的意义是用来估计总体方差(统计术语:样本方差是对总体方差的无偏估计)。

$$ \sigma ^2 = \frac{\sum_{i=1}^{n-1}(X_{i}-\overline{x_{i}..x_{n}})^2}{n-1} $$

$\overline{x_{i}..x_{n}}$ 表示样本均值公式分母由总体方差的 $N$ 变为了 $n-1$,使得样本方差更能反映总体方差。

三,先验概率与后验概率

更多深入内容可参考《花书》第三章概率与信息论。

3.1,条件概率

一个事件发生后另一个事件发生的概率。设 A 与 B 为样本空间 Ω 中的两个事件,其中 P(B)>0。那么在事件 B 发生的条件下,事件 A 发生的条件概率为:

$$ P(A|B) = \frac {P(A\cap B)} {P(B)} $$

3.2,先验概率

事件发生前的概率,可以是基于以往经验/分析,也可以是基于历史数据的统计,甚至可以是人的主观观点给出。一般是单独事件概率,如 $P(x)$, $P(y)$。

3.3,后验概率

  • 事情已经发生,要求这件事情发生的原因是由某个因素引起的可能性的大小(由果推因:就是在知道“果”之后,去推测“因”的概率)
  • 后验概率和和先验概率的关系可以通过贝叶斯公式求得,公式如下: $$ P(B_{i}|A) = \frac {P(B_{i}\cdot P(A|B_{i}}{P(B_{1})\cdot P(A|B_{1}) + P(B_{2})\cdot P(A|B_{2}) } $$

3.4,贝叶斯公式

贝叶斯公式是建立在条件概率的基础上寻找事件发生的原因(即大事件 A 已经发生的条件下,分割中的小事件 Bi 的概率),设 B1,B2,... 是样本空间 Ω 的一个划分,则对任一事件 A(P(A)>0), 有:$$P(B_{i}|A) = \frac {P(A|B_{i})P(B_{i})}{\sum_{j=1}^{n}P(B_{j})P(A|B_{j})}$$

  • Bi 常被视为导致试验结果A发生的”原因“;
  • P(Bi)(i=1,2,...) 表示各种原因发生的可能性大小,故称先验概率;
  • P(Bi|A)(i=1,2...) 则反映当试验产生了结果A之后,再对各种原因概率的新认识,故称后验概率。

3.5,后验概率实例

假设一个学校里有 60% 男生和 40% 女生。女生穿裤子的人数和穿裙子的人数相等,所有男生穿裤子。一个人在远处随机看到了一个穿裤子的学生。那么这个学生是女生的概率是多少?

  • 使用贝叶斯定理,事件A是看到女生,事件B是看到一个穿裤子的学生。我们所要计算的是 $P(A|B)$。
  • $P(A)$ 是忽略其它因素,看到女生的概率,在这里是 40%;
  • $P(A')$ 是忽略其它因素,看到不是女生(即看到男生)的概率,在这里是 60%;
  • $P(B|A)$ 是女生穿裤子的概率,在这里是 50%;
  • $P(B|A')$ 是男生穿裤子的概率,在这里是 100%;
  • $P(B)$ 是忽略其它因素,学生穿裤子的概率,$P(B) = P(B|A)P(A) + P(B|A')P(A')$,在这里是 0.5×0.4 + 1×0.6 = 0.8。

根据贝叶斯定理,我们计算出后验概率P(A|B):

$$ P(A|B) = \frac {P(B|A)P(A)}{P(B)} = \frac {0.5\times 0.4} {0.8} $$

四,相对熵(KL散度)与交叉熵

也可参考文章【直观详解】信息熵、交叉熵和相对熵为什么交叉熵(cross-entropy)可以用于计算代价神经网络基础部件-损失函数详解

4.1,信息熵

其实信息熵是香农信息量($log\frac{1}{p}$)的期望(均值),它不是针对每条信息,而是针对整个不确定性结果集而言,信息熵越大,事件不确定性就越大。单条信息只能从某种程度上影响结果集概率的分布。信息熵定义:

$$ H(P) = \sum_{i} P(i)log_{a} \frac{1}{P(i)} = -\sum_{i}P(i)log_{a} P(i) $$

$P_{i}$ 表示第 $i$ 个事件发生得概率,总的来说信息熵其实从某种意义上反映了信息量存储下来需要多少存储空间。 总结为:根据真实分布,我们能够找到一个最优策略,以最小的代价消除系统的不确定性(比如编码),而这个代价的大小就是信息熵

4.2,相对熵/KL散度

KL 散度,有时候也叫 KL 距离,一般被用于计算两个分布之间的不同,记为 $D_{KL}(P||Q) = H(P,Q) - H(P)$,对于同一个离散随机变量 $\textrm{x}$ 有两个单独的概率分布 $P(x)$ 和 $Q(x)$,其 KL 散度为:

$$D_{KL}(P | Q) = \sum_i P(i)log_{a} \frac{P(i)}{Q(i)} = \sum_i P(i)[logP(x) - log Q(x)]$$

当 $P(i) = Q(i)$ 的时候,该值为 0,深度学习过程也是一个降低该值的过程,该值越低,训练出来的概率 $Q$ 越接近样本集概率 $P$,即越准确,或者可以理解为相对熵是一把标尺,用来衡量两个函数是否相似,相似就是 0。即,相对熵 = 某个策略的交叉熵 - 信息熵(根据系统真实分布计算而得的信息熵,为最优策略),当信息熵为常量时,交叉熵与KL散度相等

4.3,交叉熵 cross-entroy

交叉熵是由信息熵而得来的,和 KL 散度关系密切,拓展用在机器学习/深度学习中作损失函数。假定在确定性更大的概率分布情况下,用更不确定的存储策略来计算,比如使用 P 的概率乘上 Q 的存储因子,套用信息熵公式:

$$H(P,Q) = \sum_{i} P(i)log_{a} \frac{1}{Q(i)} = -\sum_{i}P(x_i)log_{a} Q(x_i)$$

用预测概率 $q$ 分布,去编码真实标签 $p$ 的分布,得到的信息量。交叉熵,用来衡量在给定的真实分布下,使用非真实分布指定的策略消除系统的不确定性所需要付出努力的大小。总的来说,我们的目的是:让熵尽可能小,即存储空间小(消除系统的不确定的努力小)。交叉熵的一些性质:

  • 非负。
  • KL 散度相同,交叉熵也不具备对称性,即 $H(P,Q)≠H(Q,P)$。
  • 交叉熵主要用于描述两个事件之间的相互关系,对同一个分布求交叉熵等于对其求熵

4.4,为什么交叉熵可以用作代价

从数学上来理解就是,为了让学到的模型分布更接近真实数据的分布,我们需要最小化模型数据分布与训练数据之间的 KL 散度,而因为训练数据的分布是固定的,因此最小化 KL 散度等价于最小化交叉熵,而且交叉熵计算更简单,所以机器/深度学习中常用交叉熵 cross-entroy 作为分类问题的损失函数。

使用交叉熵损失大大提高了具有 sigmoidsoftmax 输出的模型的性能,而当使用均方误差损失时会存在饱和和学习缓慢的问题。

4.5,KL 散度与交叉熵的关系

  • KL 散度和交叉熵在特定条件下等价
  • $D_{KL}(P||Q) = H(P,Q) - H(P)$

五,模型容量、过拟合和欠拟合

  • 模型容量是指模型拟合各种函数的能力,决定了模型是欠拟合还是过拟合。
  • 欠拟合就是指模型的训练误差过大,即偏差过大,表现为模型不够”准“,优化算法目的在于解决欠拟合问题。
  • 过拟合就是指训练误差和测试误差间距过大,即方差过大,表现为模型不够”稳“,正则化目的在于解决过拟合问题。
  • 机器学习模型的目的是解决欠拟合和过拟合的问题,这也是机器学习算法的两个挑战。

训练误差 train error,泛化误差 generalization error,也叫测试误差(test error)。

5.1,随机梯度下降算法

  • 随机梯度下降算法是目前最为广泛应用的一种神经网络优化算法,形式为 $θ=θ − ϵg$,$ϵ$ 是学习率,$g$ 是梯度,$θ$ 是权重。
  • 随机梯度下降优化算法不一定能保证在合理的时间内达到一个局部最小值,但它通常能及时地找到代价函数一个很小的值,并且是有用的。

5.2,超参数和验证集

  • 普通参数指算法权重 $w$ 的值,是可以通过学习算法本身学习得到。超参数的值不是通过学习算法本身学习出来的,可通过验证集人为选择合适的超参数
  • 将训练数据划分为两个不相交的子集,即训练集和验证集,训练集用于学习普通参数,验证集用于估计训练中或训练后的泛化误差,更新超参数(“训练超参数”)。通常,80% 的训练数据用于训练,20% 用于验证。
  • 交叉验证方法适合小规模数据集(例如几百上千张图片)训练模型的情况

六,正则化方法

所谓正则化,是指我们通过修改学习算法,使其降低泛化误差而非训练误差的方法。

正则化是一种思想(策略),它是机器学习领域的中心问题之一,其重要性只有优化能与其相媲美。

许多正则化方法通过对目标函数 $J$ 添加一个参数范数惩罚项 $\Omega(\theta)$,限制模型 (如神经网络、线性回归或逻辑回归)的学习能力。我们将正则化后的目标函数记为 $\tilde{J}$ :

$$ \tilde{J}(\theta; X, y) = J(\theta; X, y) + \alpha \Omega(\theta) $$

其中 $\alpha \in[0,∞)$ 是权衡范数惩罚项 $\Omega$ 和标准目标函数 $J(X;\theta)$ 相对贡献的超参数。将 $\alpha$ 设为 0 表示没有正则化。$\alpha$ 越大,对应正则化惩罚越大。

常用的参数正则化策略有 L1 和 L2 范数。L1 范数(L1 norm)是指向量中各个元素绝对值之和,也有个美称叫“稀疏规则算子”(Lasso regularization)。 比如,向量 $A = [1,-1,3]$, 那么 A 的 L1 范数为 $|1|+|-1|+|3|$。简单总结就是:

  • L1 范数: 为向量 x 各个元素绝对值之和。
  • L2 范数: 为向量 x 各个元素平方和的 1/2 次方,L2 范数又称 Euclidean 范数或 Frobenius 范数
  • Lp 范数: 为向量 x 各个元素绝对值 $p$ 次方和的 $1/p$ 次方.

L1 范数可以使权值参数稀疏,方便特征提取。L2 范数可以防止过拟合,提升模型的泛化能力。

参考资料

  1. 机器学习中的Bias(偏差),Error(误差),和Variance(方差)有什么区别和联系?
  2. 先验概率,后验概率,似然概率,条件概率,贝叶斯,最大似然
  3. 你对贝叶斯统计有何理解
  4. Different types of Distances used in Machine Learning Explained