机器学习复习

机器学习复习

这是一篇非常不完整的学习笔记,只会记录一些我觉得需要记录的东西

绪论

归纳偏置

在机器学习中,归纳偏置(Inductive bias)指的是学习算法在学习过程中对特定解决方案的偏好或倾向。它描述了学习算法在面对有限数据和不确定性时,如何做出合理的预测和泛化。

更直白地说,归纳偏置可以理解为学习算法对世界的“假设”。这些假设可以帮助算法更好地理解训练数据,并做出更准确的预测。

举个例子,假设我们正在训练一个用于图像识别的机器学习模型。该模型需要学习如何将图像中的对象分类为不同的类别,例如猫、狗或汽车。为了做到这一点,模型需要对图像中的物体可能是什么以及它们可能如何出现做出一些假设。

例如,模型可以假设猫通常有四条腿和胡须,而狗通常有四条腿和耷拉着的耳朵。这些假设可以帮助模型更好地理解训练数据,并做出更准确的预测。

归纳偏置在机器学习中起着重要作用。它可以帮助算法:

  • 提高泛化能力:泛化能力是指算法在遇到新数据时做出准确预测的能力。归纳偏置可以帮助算法学习更一般的模式,从而提高泛化能力。
  • 减少过拟合:过拟合是指算法在训练数据上表现非常好,但在新数据上表现很差。归纳偏置可以帮助算法避免过拟合,从而提高泛化能力。
  • 提高学习效率:归纳偏置可以帮助算法更快地学习,因为它可以减少需要考虑的假设数量。

常用的归纳偏置包括:

  • 奥卡姆剃刀(Occam’s razor):奥卡姆剃刀是一种原则,认为在解释现象时,应尽量选择简单而有效的假设。在机器学习中,奥卡姆剃刀可以用来选择具有较少参数的模型。
  • 正则化(Regularization):正则化是一种技术,用于惩罚模型的复杂度。通过正则化,可以避免模型过拟合训练数据。
  • 先验知识(Prior knowledge):先验知识是指在学习之前已知的关于世界的信息。先验知识可以用来约束模型的假设,从而提高泛化能力。

归纳偏置是机器学习中一个重要概念。它可以帮助算法更好地学习和泛化,从而提高机器学习模型的性能。

CNN

卷积神经网络(CNN)具有以下两个重要的归纳偏置:

  • 局部性(Locality):CNN假设图像中的相邻像素点是相关的。这意味着局部区域内的像素点比相距较远的像素点更相关。这种归纳偏置反映了自然图像的统计特性,即相邻像素点往往具有相同的颜色或纹理。
  • 平移不变性(Translation invariance):CNN假设图像内容的平移不会改变其类别。这意味着图像在空间上平移后,CNN应该输出相同的类别预测。这种归纳偏置反映了自然图像的另一个统计特性,即物体的类别与其在图像中的位置无关。

这两个归纳偏置使得 CNN 能够很好地学习图像特征,并应用于图像分类、目标检测等任务。

具体来说,CNN 中的卷积操作可以实现局部性,而权重共享机制则可以实现平移不变性。

  • 卷积操作:卷积操作可以提取图像局部区域的特征。在卷积操作中,一个滤波器会被应用于图像的局部区域,以提取该区域的特征。由于相邻像素点是相关的,因此卷积操作可以有效地提取图像的局部特征。
  • 权重共享机制:CNN 中的权重共享机制是指同一层中的所有滤波器共享相同的权重。这意味着不同位置的局部区域会被用相同的权重来提取特征。由于平移不变性,因此权重共享机制可以确保图像内容的平移不会改变 CNN 的输出。

由于 CNN 具有局部性和平移不变性这两个归纳偏置,因此它能够很好地学习图像特征,并应用于图像分类、目标检测等任务。

此外,CNN 还具有以下一些其他归纳偏置:

  • 尺度不变性(Scale invariance):CNN 假设图像内容的缩放不会改变其类别。
  • 旋转不变性(Rotation invariance):CNN 假设图像内容的旋转不会改变其类别。
  • 不变性组合(Composition of invariances):CNN 可以组合多个不变性,例如尺度不变性和旋转不变性,以学习更复杂的特征。

这些归纳偏置使得 CNN 能够更加有效地学习图像特征,并应用于更广泛的任务。

总而言之,CNN 具有多种归纳偏置,这些偏置使得 CNN 能够很好地学习图像特征,并应用于图像分类、目标检测等任务。

RNN

循环神经网络(RNN)具有以下两个重要的归纳偏置:

  • 序列性(Sequentiality):RNN 假设序列中的元素是相互依赖的。这意味着序列中前一个元素的信息可以帮助理解后一个元素。这种归纳偏置反映了自然语言和时间序列数据的统计特性,即序列中的元素往往存在顺序关系。
  • 时间不变性(Time invariance):RNN 假设模型在处理序列的不同时间步时具有相同的行为。这意味着模型的参数在不同的时间步之间共享。这种归纳偏置可以提高模型的效率,并减少模型的参数数量。

这两个归纳偏置使得 RNN 能够很好地学习序列数据中的依赖关系,并应用于自然语言处理、时间序列预测等任务。

具体来说,RNN 中的循环连接可以实现序列性,而权重共享机制则可以实现时间不变性。

  • 循环连接:RNN 中的每个神经元都与它自己在上一个时间步的状态相连接。这意味着 RNN 可以利用序列中前一个元素的信息来理解后一个元素。
  • 权重共享机制:RNN 中的不同时间步共享相同的参数。这意味着 RNN 在处理序列的不同时间步时具有相同的行为。

由于 RNN 具有序列性和时间不变性这两个归纳偏置,因此它能够很好地学习序列数据中的依赖关系,并应用于自然语言处理、时间序列预测等任务。

此外,RNN 还具有以下一些其他归纳偏置:

  • 平滑性(Smoothness):RNN 假设序列中的元素是平滑变化的。这意味着相邻时间步之间的元素差异较小。
  • 局部依赖性(Local dependency):RNN 假设序列中元素之间的依赖关系是局部的。这意味着只有相邻的元素之间存在依赖关系。

这些归纳偏置使得 RNN 能够更加有效地学习序列数据中的依赖关系,并应用于更广泛的任务。

总而言之,RNN 具有多种归纳偏置,这些偏置使得 RNN 能够很好地学习序列数据中的依赖关系,并应用于自然语言处理、时间序列预测等任务。

模型评估与选择

精确率&召回率

精确率:查准率

召回率:查准率

精确率和召回率是两个常用的分类模型评价指标,用于衡量模型的性能。

精确率(Precision)是指模型预测为正例的样本中,实际为正例的样本的比例。换句话说,就是预测正确的结果占所有预测结果的比例。

公式

1
精确率 = TP / (TP + FP)

其中:

  • TP:真正例(True Positive),指模型预测为正例且实际为正例的样本数。
  • FP:假正例(False Positive),指模型预测为正例但实际为负例的样本数。

举个例子:假设我们训练了一个用于垃圾邮件过滤的机器学习模型。该模型需要学习如何将电子邮件分类为垃圾邮件或非垃圾邮件。

如果该模型将 100 封电子邮件标记为垃圾邮件,其中 80 封确实是垃圾邮件,那么该模型的精确率为 80%。这意味着该模型预测为垃圾邮件的邮件中,有 80% 是真正的垃圾邮件。

召回率(Recall)是指实际为正例的样本中,被模型预测为正例的样本的比例。换句话说,就是实际存在的正例中有多少被正确识别出来了。

公式

1
召回率 = TP / (TP + FN)

其中:

  • FN:假反例(False Negative),指模型预测为负例但实际为正例的样本数。

使用相同的例子:如果实际有 100 封垃圾邮件,该模型将 80 封标记为垃圾邮件,那么该模型的召回率为 80%。这意味着实际存在的垃圾邮件中有 80% 被该模型正确识别出来了。

精确率和召回率是两个相互矛盾的指标。通常情况下,提高一个指标会降低另一个指标。例如,如果我们提高模型的精确率,这意味着模型会更加谨慎地将邮件标记为垃圾邮件,从而降低召回率,即可能会漏掉一些真正的垃圾邮件。

在实际应用中,需要根据具体情况来选择合适的指标或权衡两者之间的关系。例如,对于垃圾邮件过滤系统,如果更重要是尽量减少误报(即提高精确率),那么可以适当降低召回率;如果更重要是尽量不放过任何垃圾邮件(即提高召回率),那么可以适当降低精确率。

除了精确率和召回率之外,还有一些其他的分类模型评价指标,例如准确率(Accuracy)、F1 值(F1 Score)等。

  • 准确率(Accuracy)是指所有样本中预测正确的样本数占总样本数的比例。它是衡量模型总体性能的指标,但对于数据类别分布不均衡的情况可能给出误导性的结果。
  • F1 值(F1 Score)是精确率和召回率的调和平均值,可以综合衡量模型的准确性和召回能力。

总结

  • 精确率和召回率是两个常用的分类模型评价指标,用于衡量模型的性能。
  • 精确率是指模型预测为正例的样本中,实际为正例的样本的比例。
  • 召回率是指实际为正例的样本中,被模型预测为正例的样本的比例。
  • 精确率和召回率是两个相互矛盾的指标,需要根据具体情况来选择合适的指标或权衡两者之间的关系。

P-R曲线

P-R曲线(Precision-Recall Curve),又称为精度-召回率曲线,是用于评估信息检索系统、文本分类系统等性能的一种常用方法。它以召回率(Recall)为横轴,以精确率(Precision)为纵轴,绘制出一条曲线。

P-R曲线可以直观地反映出模型在不同召回率下的精确率水平。曲线越靠近右上角,说明模型的性能越好。

P-R曲线的==绘制方法==如下:

  1. 将样本按照模型预测的概率排序,从高到低排列。
  2. 计算每个排序位置的召回率和精确率。
  3. 将召回率和精确率作为坐标,绘制出一条曲线。

P-R曲线的分析方法如下:

  1. 观察曲线的位置:曲线越靠近右上角,说明模型的性能越好。
  2. 观察曲线的形状:曲线越陡峭,说明模型在不同召回率下的精确率变化越快。
  3. 计算曲线下面积:曲线下面积越大,说明模型的整体性能越好。

P-R曲线在以下场景中具有广泛的应用:

  • 信息检索系统:评估搜索引擎的性能,例如召回率和精确率。
  • 文本分类系统:评估垃圾邮件过滤器的性能,例如召回率和精确率。
  • 推荐系统:评估推荐算法的性能,例如召回率和精确率。
  • 自然语言处理:评估机器翻译系统的性能,例如召回率和精确率。

P-R曲线ROC曲线(Receiver Operating Characteristic Curve)是两种常用的分类模型评价指标。ROC曲线假阳率(False Positive Rate)为横轴,以真阳率(True Positive Rate)为纵轴,绘制出一条曲线。

P-R曲线ROC曲线的区别在于:

  • P-R曲线更关注正例的识别情况,而ROC曲线则同时关注正例和负例的识别情况。
  • P-R曲线适用于数据类别分布不均衡的情况,而ROC曲线则对数据类别分布的均衡性没有要求。

在实际应用中,可以根据具体情况来选择合适的指标或权衡两者之间的关系。

偏差&方差&噪声

在机器学习中,偏差(Bias)、方差(Variance)和噪声(Noise)是三个重要的概念,它们用来衡量机器学习模型的性能。

偏差是指模型的预测值与真实值之间的差异。偏差越小,说明模型越准确。偏差通常是由模型的假设引起的。例如,如果我们假设线性回归模型,那么对于非线性的数据,该模型就会产生偏差。

方差是指模型每一次输出结果与模型输出期望之间的误差的平方的期望。方差越小,说明模型越稳定。方差通常是由数据的波动引起的。例如,如果训练数据量不足,或者数据本身存在噪声,那么模型的方差就会比较大。

噪声是指真实标记与数据集中的实际标记间的偏差。噪声是不可控的,它是由数据本身的随机性引起的。

偏差、方差和噪声的关系可以表示如下:

1
均方误差 = 偏差^2 + 方差 + 噪声

也就是说,模型的总误差是由偏差、方差和噪声三部分共同决定的。

为了提高模型的性能,我们需要降低偏差和方差。然而,偏差和方差通常是此消彼长的。例如,如果我们通过增加模型的复杂度来降低偏差,那么模型的方差就会增加。

在实际应用中,我们需要根据具体情况来权衡偏差和方差之间的关系。例如,对于一些对准确性要求很高的任务,我们可以降低模型的偏差,即使这会导致模型的方差增加。而对于一些对鲁棒性要求很高的任务,我们可以降低模型的方差,即使这会导致模型的偏差增加。

以下是一些降低偏差和方差的方法:

  • 降低偏差
    • 使用更复杂的模型
    • 使用更多的训练数据
    • 进行特征工程
  • 降低方差
    • 使用正则化技术
    • 进行早期停止
    • 使用集成学习方法

线性模型

最小二乘

为什么使偏导数为0的值是使RSS最小的值而不是最大的值?

使偏导数为0的值是使RSS(残差平方和)最小的值而不是最大的值,这是因为我们是在寻找一个函数的极值点,而根据微积分中的极值定理,当一个函数在某点处的一阶偏导数为0时,该点可能是函数的极大值点、极小值点或鞍点(既不是极大值也不是极小值的临界点)。然而,在最小二乘估计的情况下,我们可以进一步分析来确定这个点确实是极小值点。

首先,RSS是一个关于参数(在这里是ab)的非负函数,因为平方项总是非负的。因此,RSS没有上界,但理论上有一个下界(即当模型完美拟合数据时,RSS为0)。我们的目标是找到使RSS尽可能小的参数值。

其次,通过求解偏导数为0的方程组,我们找到的是RSS函数的驻点(即一阶偏导数为0的点)。由于RSS是一个二次函数(在ab上是线性的线性组合的平方),它的图形是一个向上开口的抛物面(在多维空间中)。这种抛物面只有一个极小值点,没有极大值点。因此,当我们找到使偏导数为0的点时,这个点必然是RSS的极小值点。

logistic函数

$y=1/(1+e^{-z})$,一个单增函数

Logistic函数在机器学习中被广泛使用,主要有以下几个原因:

1. 能够将输入值映射到0到1之间

Logistic函数的输出值介于0到1之间,这使得它非常适合用于二分类任务。例如,在垃圾邮件过滤中,我们可以使用Logistic函数将电子邮件分类为垃圾邮件或非垃圾邮件。Logistic函数的输出值可以解释为某个事件发生的概率。例如,在医学诊断中,我们可以使用Logistic函数预测患者患某种疾病的概率。

2. 简单易于理解

Logistic函数的公式非常简单,易于理解和实现。这使得它成为机器学习初学者入门的好选择。即使是复杂的机器学习模型,也可能包含Logistic函数作为其中的一个组件。

3. 非线性

Logistic函数是非线性的,这意味着它可以用于拟合非线性的数据。这使得它比线性回归更强大,更灵活。在许多现实世界中,数据都是非线性的,因此Logistic函数可以更好地拟合这些数据。

4. 具有良好的数学性质

Logistic函数具有良好的数学性质,这使得它易于优化。例如,Logistic函数的梯度始终存在且有界,这使得它可以用于梯度下降算法。

5. 计算效率高

Logistic函数的计算效率很高,这使得它可以在大型数据集上进行训练。

总而言之,Logistic函数在机器学习中被广泛使用,因为它具有简单易懂、非线性、具有良好的数学性质和计算效率高等优点。

以下是一些Logistic函数在机器学习中的具体应用:

  • 二分类任务:例如,垃圾邮件过滤、医学诊断、欺诈检测等。
  • 多分类任务:例如,手写数字识别、图像分类、自然语言处理等。
  • 回归任务:例如,预测房价、股票价格、客户行为等。

决策树

信息熵&信息增益&基尼指数

决策树:信息增益、增益率和基尼指数 - 小昇的博客)

信息熵越小,样本集的纯度越高

信息增益(或者信息增益率)越大,使用该属性进行划分的纯度提升越大(所以要选信息增益大的)

属性的可能取值越多,属性的固有值越大,最好取信息增益率高的

基尼越小,数据集的纯度越高;划分属性时选择划分后进制数最小的属性

CNN

参数

PyTorch中的卷积神经网络(CNN)包含多个参数,这些参数共同决定了模型的结构、特征提取能力以及最终的性能。下面将详细介绍CNN中常见的参数:

卷积层参数

  • in_channels: 输入通道数,即输入数据的通道数量。例如,对于彩色图像,in_channels通常为3(红、绿、蓝)。
  • out_channels: 输出通道数,即卷积层输出的特征图数量。这个值通常是人为设定的,决定了卷积层提取特征的种类。
  • kernel_size: 卷积核的大小,通常是一个整数或一个整数元组。它决定了卷积核在输入特征图上滑动时的窗口大小。
  • stride: 步长,表示卷积核在输入特征图上每次滑动的步数。步长越大,输出特征图的尺寸越小。
  • padding: 填充,在输入特征图的边缘添加填充值(通常为0),用于控制输出特征图的尺寸。
  • dilation: 空洞卷积率,用于控制卷积核覆盖的区域。dilation大于1时,卷积核的感受野会增大,但不会增加参数量。
  • groups: 分组卷积,将输入通道和输出通道分成多个组,每个组独立进行卷积。

池化层参数

  • kernel_size: 池化核的大小,与卷积核类似。
  • stride: 步长,与卷积层相同。
  • padding: 填充,与卷积层相同。

其他参数

  • bias: 是否添加偏置项。
  • activation: 激活函数,如ReLU、sigmoid等。

卷积核数量

对于一个3输入通道,5输出通道的CNN,有多少个卷积核?

答案:5个

为什么是5个?

  • 每个输出通道对应一个卷积核: 在卷积神经网络中,每个输出通道(即特征图)都是由一个特定的卷积核生成的。这个卷积核会对输入的多个通道进行加权求和,得到输出通道上的值。
  • 卷积核的通道数与输入通道数相同: 为了能够对输入的每个通道进行卷积操作,卷积核的通道数必须与输入的通道数相匹配。

具体解释

  • 输入: 我们的输入是3通道的图像数据,代表RGB三个颜色通道。
  • 卷积核: 为了得到5个输出通道,我们需要5个不同的卷积核。每个卷积核的尺寸和输入通道数都与输入图像相同(假设卷积核大小为3x3),即每个卷积核是一个3x3x3的张量。
  • 输出: 每个卷积核与输入图像进行卷积操作,得到一个输出通道。最终,我们得到了5个输出通道,也就对应了5个特征图。

总结

一个卷积核生成一个输出通道,所以3输入通道,5输出通道的CNN有5个卷积核。

Transformer

从训练和预测角度来理解Transformer中Masked Self-Attention的原理

【超详细】【原理篇&实战篇】一文读懂Transformer

其他的一些问题/概念

可能是深度学习里面的问题,暂时先放在这里了

few-shot problem

Few-shot problem(小样本问题)通常出现在机器学习和人工智能领域,特别是在机器学习模型的训练过程中。它指的是在只有少量训练样本的情况下,如何有效地训练一个模型以使其能够泛化到新的、未见过的数据上的问题。

在许多实际应用中,获取大量的标注数据可能非常困难或成本高昂。例如,在医学图像分析中,某些罕见疾病的图像可能很少;在自然语言处理中,某些小语种的语言数据也可能不足。在这些情况下,传统的机器学习方法可能无法有效工作,因为它们通常需要大量的数据来学习复杂的模式和特征。

为了解决few-shot问题,研究人员开发了一些方法,包括但不限于:

  1. 迁移学习(Transfer Learning):利用在一个大型数据集上预训练的模型,并将其应用到一个小样本问题上,通过微调(fine-tuning)来适应新任务。
  2. 元学习(Meta-Learning):设计模型以学习如何快速适应新任务,即使只有少量的样本。
  3. 数据增强(Data Augmentation):通过对现有数据进行变换来增加数据的多样性,从而提高模型的泛化能力。
  4. 多任务学习(Multi-task Learning):同时学习多个相关任务,以共享知识并提高模型在每个任务上的性能。
  5. 模型蒸馏(Model Distillation):将一个大模型的知识压缩到一个小模型中,以便于在资源受限的情况下使用。

Few-shot问题是一个活跃的研究领域,因为解决这一问题对于许多实际应用来说都是至关重要的。

long-tail effect

在推荐系统中,long-tail effect(长尾效应)指的是用户对商品或内容的偏好分布呈现出不均匀性,即少数热门商品或内容会得到大量用户的关注和推荐,而大量的长尾商品或内容则只被少数用户所偏好。

这种现象在推荐系统中有以下几个特点:

  1. 不均衡的流行度分布:在推荐系统中,一小部分商品或内容(头部)会获得极高的流行度,而大多数商品或内容(长尾)的流行度相对较低。

  2. 用户偏好的多样性:用户的偏好是多样化的,有些用户可能对热门商品感兴趣,而另一些用户则可能偏好那些不那么流行的长尾商品。

  3. 推荐系统挑战:长尾效应给推荐系统带来了挑战,因为系统需要在推荐热门商品和发现用户对长尾商品的偏好之间找到平衡。

  4. 多样性和新颖性:为了应对长尾效应,推荐系统可能需要引入多样性和新颖性的概念,以确保长尾商品也能得到推荐机会。

  5. 个性化推荐:推荐系统需要更好地理解用户的个性化需求,以便能够推荐那些符合用户独特口味的长尾商品。

  6. 冷启动问题:长尾效应还加剧了推荐系统中的冷启动问题,即对于新用户或新商品,系统可能缺乏足够的数据来进行有效的推荐。

  7. 数据稀疏性:长尾商品由于交互数据较少,导致数据稀疏性问题,这使得模型学习用户偏好变得更加困难。

为了解决长尾效应带来的问题,推荐系统研究者和工程师可能会采用多种策略,如利用内容基推荐、协同过滤、混合推荐方法、深度学习技术等,以提高对长尾商品的推荐效果。

Cold-start problem

Cold-start problem(冷启动问题)是推荐系统中的一个常见问题,特别是在系统初次启动或面对新用户、新物品时。这个问题描述了在缺乏足够用户行为数据的情况下,如何提供准确的个性化推荐。

在推荐系统中,冷启动问题主要分为以下几种类型:

  1. 新用户冷启动:当系统遇到一个全新的用户时,由于没有该用户的历史行为数据,系统难以了解其偏好并提供个性化推荐。

  2. 新物品冷启动:当系统中引入了新的商品或内容时,由于缺乏用户与这些新物品的交互数据,系统难以评估这些新物品的受欢迎程度或推荐给合适的用户。

  3. 系统冷启动:在推荐系统刚开始运行时,由于缺乏用户和物品的交互数据,系统需要在没有用户行为信息的情况下进行推荐。

  4. 隐式冷启动:即使用户或物品不是全新的,但如果它们在系统中的交互数据非常有限,也可能面临类似冷启动的问题。

解决冷启动问题的一些常见策略包括:

  • 基于内容的推荐:通过分析物品的属性或内容来推荐与用户过去喜欢的物品相似的新物品。
  • 基于人口统计学的推荐:根据用户的性别、年龄、地理位置等人口统计信息来推荐物品。
  • 混合推荐系统:结合多种推荐技术,如协同过滤、基于内容的推荐和人口统计学信息,以提高推荐的准确性。
  • 利用用户反馈:在用户注册或使用过程中收集用户的偏好信息,如通过问卷调查或初始评分来获取用户的兴趣。
  • 转移学习:利用在其他领域或任务上预训练的模型,将其应用到推荐系统中,以减少对大量用户行为数据的依赖。
  • 元学习:使模型能够快速适应新任务,即使在数据有限的情况下也能提供有效的推荐。
  • 主动学习:系统主动请求用户对推荐的物品进行评分或反馈,以收集更多数据并改进推荐。

冷启动问题是推荐系统领域的一个重要研究方向,解决这一问题对于提高用户满意度和系统性能至关重要。

KL散度

$$
K L(P||Q\rangle=\int p(x)\log{\frac{p(x)}{q(x)}},d x
$$

  • 如果涉及的分布是连续的且满足一定的平滑性条件,那么KL散度是可导的。
  • KL散度大于等于0,两个分布越接近,KL越小
  • KL散度不具备对称性,即$D_{K L}(P\vert\vert Q)\neq D_{K L}(Q\vert\vert P)$

机器学习_KL散度详解(全网最详细)_kl散度计算公式

JS散度

JS散度是KL散度的一个对称版本,定义为

$D_{J S}(P|![Q)={\frac{1}{2}}D_{K L}(P|!|M)+{\frac{1}{2}}D_{K L}(Q|!|M)$

其中 M=1/2* (P+Q) 是 P 和 Q 的平均分布。JS散度的值介于0和1之间,当两个分布完全相同时,JS散度为零。具有有界性和对称性。


机器学习复习
http://iamlihua.github.io/2024/06/09/ml-learn/
Author
LiHua
Posted on
June 9, 2024
Licensed under