导图社区 谷歌AI机器学习速成课程
探索机器学习的奥秘,从基础到高级模型,本课程带你深入理解数据的重要性。通过三个单元,你将学习如何处理数值和分类数据,理解数据集、泛化和过度拟合的核心概念。从线性回归到逻辑回归,再到多类别分类,掌握模型构建的关键步骤。深入探讨嵌入、神经网络和大型语言模型(LLM),了解微调、蒸馏和提示词工程的精髓。无论你是初学者还是资深从业者,本课程都将为你提供从数据处理到模型评估的全面指导,助你在机器学习的世界中游刃有余。
编辑于2025-03-09 11:29:29机器学习速成课程
基础课程
机器学习简介
什么是机器学习
机器学习系统
监督式学习
监督式学习是机器学习的一种方法,其中算法通过已标注的数据进行训练。每个训练样本都包括输入和相应的输出(标签)。模型的任务是学习输入和输出之间的映射关系,并且能够预测新的、未标注数据的输出。常见应用包括分类(如垃圾邮件识别)和回归(如房价预测)。
目的:监督式学习的核心目标是通过已标注的训练数据来学习一个映射函数,以便能够对未标注的新数据进行预测。这个预测不仅限于分类任务,还可以包括回归任务。 分类:将数据分配到不同的类别(例如,垃圾邮件分类)。 回归:预测一个连续的数值输出(例如,房价预测)。 总结:监督式学习的目的是建立一个模型,使其能够根据输入数据预测相应的输出。不仅仅限于分类,还包括回归等任务。
非监督式学习
非监督式学习则不依赖于标注监督数据,目标是隐藏从数据中发现的结构或模式。算法会根据输入数据的内在特征进行分组、噪声或降维。可以帮助我们了解数据的分布情况或将数据划分为不同的类别。
目的:它的目的是从未标注的数据中发现数据的内在结构、模式和关系。虽然有时它也可以用于某些类似分类的任务(如聚类),但其真正的目标通常是对数据进行探索性分析、降维或发现潜在的结构。 聚类:将数据分组为不同的簇(例如,客户细分)。 降维:减少数据的维度,同时保留数据的主要特征(例如,PCA用于数据压缩和可视化)。 总结:非监督学习的目标是探索数据的潜在结构或规律,例如聚类、降维或关联规则学习,并不是专门用于分类。
强化学习
强化学习是一种基于奖励和惩罚的学习方式,通常评价智能体与环境交互的场景。智能体通过试错学习,不断地从环境中获得反馈(奖励或惩罚) ,并根据这些反馈调整自己的行为策略,目的是最大化长期回报。强化学习在游戏、机器人控制等领域有广泛应用。
目的:强化学习的核心目标是通过与环境的交互学习最优策略,使智能体在面对复杂的决策任务时能够获得最大化的长期回报。它并不是简单地按照人类设定的方式发展,而是通过试错过程(reward/punishment)自动优化行为策略。 应用:游戏(例如AlphaGo)、机器人控制、自动驾驶等。 总结:强化学习的目的是让机器在与环境交互中通过奖励反馈学习如何采取行动以优化长期回报,并不仅仅是按照人类的期望来发展。
生成式AI
生成式AI是指能够生成新数据的模型,这些数据在形式上与训练数据相似,但并不完全相同。生成图像式AI可以用来创建文本、音频等通过学习训练数据的分配,生成模型可以生成符合该分配的新样本,广泛筛选创意设计、虚拟人物、深度格式等领域。
目的:生成式 AI 的目标是能够生成新的数据样本,这些数据样本在统计上与训练数据类似,但并不完全相同。生成式模型通过学习训练数据的分布,生成符合这种分布的新的数据。它不仅限于生成数据,还包括生成多样性和创造性。 生成图像:例如,通过生成对抗网络(GAN)生成逼真的图像。 生成文本:例如,通过GPT模型生成自然语言文本。 总结:生成式AI的目的是生成新的、与训练数据相似的高质量数据,而不仅仅是生成“数据”,它还强调创造性和多样性。
机器学习模型
什么是回归
回归(Regression)是一种统计方法,用于评估两个或多个变量之间的关系。具体来说,它帮助我们理解一个变量(称为因变量或响应变量)如何随着另一个或多个变量(称为自变量或预测变量)的变化而变化。回归分析可以用来估计这些变量之间的平均关系,即预测因变量的值。
为什么叫回归 19世纪的统计学家弗朗西斯·高尔顿(Francis Galton)。他在研究父母和子女身高之间的关系时,发现了所谓的“向平均数回归”的现象。具体来说,他观察到,如果父母非常高或非常矮,那么他们的孩子往往会比父母更接近于人群的平均身高;同样地,特别高的孩子通常会有稍微矮一点的后代,逐渐趋向于平均值。这种现象被高尔顿称为“回归到平庸”(regression towards mediocrity),即极端值有向中间值靠近的趋势。 因此,“回归”一词最初是描述这种统计趋势:即预测变量与响应变量之间关系时,倾向于估计出一个更加“普通”或者说是更接近平均值的结果。随着时间的发展,这个术语被广泛应用于指代一类用于建模和分析变量间关系的统计方法,而不仅仅是描述高尔顿所观察到的现象。
线性回归
线性回归
线性回归是一种用于查找变量之间关系的统计技术。在 ML 环境中,线性回归可查找 特征与 标签之间的关系。
预测模型可以是线性模型,也可以是非线性模型。
线性函数/一次函数
y = mx + b
m 表示斜率(slope) b表示y轴截距(y-intercept)
线性回归模型
y' = b + w₁x₁
y':预测值 这是模型预测的输出值。根据输入特征值x1和模型的参数(权重w1和偏置b),计算出预测结果。
b:偏置 表示模型的一个固定的偏移量。当输入特征值为零时,偏置控制预测值的基线。偏置是一个通过训练得到的参数。
偏置可以是0也可以不是0.
w1:权重 表示输入特征对预测值的重要性或影响力。权重也是通过训练得到的参数。它决定了特征值x1对y'的贡献程度。
x1:特征值 输入数据中的特征值。模型根据特征值计算预测值。
y' = b + w₁x₁+w₂x₂+w₃x₃+……
多个特征
其中,X1是一个特征值,X2是一个特征值。
损失
损失是一个数值指标,用于描述模型的预测有多不准确。损失函数用于衡量模型预测结果与实际标签之间的距离。训练模型的目标是尽可能降低损失,将其降至最低值。
丢失距离
在统计学和机器学习中,损失函数用于衡量预测值与实际值之间的差异。损失函数侧重于值之间的距离,而不是方向。例如,如果模型预测值为 2,但实际值为 5,我们并不关心损失为负值-3(2-5=-3)。我们关心的是这两个值之间的距离为3。因此,所有用于计算损失的方法都会移除符号。
移除符号的最常用方法为
计算实际值与预测值之差的绝对值。
特点: 对于每一个数据点,它只考虑预测值与实际值之间的距离,不考虑方向。 对异常值相对不敏感,因为不会像平方损失那样放大较大的误差。
将实际值与预测值之间的差值平方。
特点: 它不仅考虑了预测值与实际值之间的距离,还通过平方操作进一步放大了误差的影响。 对异常值更加敏感,因为较大的误差会由于平方而变得更加突出。 最小化平方损失等同于最小化预测值与实际值之间的欧几里得距离,这在很多情况下是期望的行为。
损失函数
选择损失
选择不同损失类型,会得出不同的数据。不同损失类型所适用的场景不同。
梯度下降
梯度下降(Gradient Descent)是一种用于优化函数的方法,广泛应用于机器学习和深度学习中,用来最小化损失函数。其核心思想是通过迭代地调整模型参数(如权重和偏置),沿着损失函数的梯度方向逐步向函数的最小值靠近。
该模型开始以接近零的随机权重和偏差进行训练,然后重复以下步骤: 1、利用当前的权重和偏差计算损失。 2、确定移动权重和偏差的方向以减少损失。 3、将权重和偏差值向减少损失的方向稍微移动一下。 4、回到第一步并重复该过程,直到模型无法进一步减少损失。
也就是从权重0、偏差0开始训练,初步增加权重值、偏差值。
超参数
逻辑回归
逻辑函数
这里面的e是一个常数。
特点
这个函数具有以下特点: 1、S形曲线:函数的图形呈现出一个S形,因此得名Sigmoid函数。 2、范围:函数值域在(0, 1)之间,即0<f(x)<1对于所有的x。 3、对称性:函数关于点 (0, 0.5) 对称。 4、导数:该函数的导数可以方便地表示为原函数的函数形式,具体为f ′(x)=f(x)(1−f(x))。
逻辑回归
z 是线性方程的输出(也称为 对数几率 ) b 是偏差。 w 的值是模型学习的权重。 x 的值是特定样本的特征值。
y' 是逻辑回归模型的输出。 z 为线性输出(按上述等式计算得出)。
损失
Log Loss 计算如下:
·(x,y)∈D是包含许多标记示例的数据集。 ·y是带标签的示例中标签。由于这是逻辑回归,因此y必须是 0 或 1。 ·y´是你的模型的预测(介于 0 和 1 之间),给定x。
正则化
正则化是一种在训练过程中惩罚模型复杂性的机制,在逻辑回归建模中极为重要。如果没有正则化,当模型具有大量特征时,逻辑回归的渐近性质将使损失不断趋近于 0。因此,大多数逻辑回归模型使用以下两种策略之一来降低模型复杂性:
L2正则化
停止训练:限制训练步数,在损失仍在减少时停止训练。
分类
阈值和混淆矩阵
阈值
逻辑回归模型会输出概率,比如0.75、0.5、0.1等,如果要盘点一个事物的是与非,则需要给一个规则,比如高于0.5则是反之则否,这个值就是阈值。
混淆矩阵
对于垃圾邮件分类器示例,如果将基本事实布置为列,将模型的预测布置为行,则 结果为下表(称为混淆矩阵) :
准确率、召回率、精确率及相关指标
下面是不同的指标,根据不同任务选择不同指标。
因为信息不是线性分布的,而是散点形式分布的,而逻辑回归只能去寻找概率。
准确性
准确率是所有正确分类(无论是正分类还是负分类)的比例。
召回率或真阳性率
真实阳性率(TPR),或所有实际阳性中被正确归类为阳性的比例,也称为 召回率。
假阳性率
假阳性率(FPR)是所有实际阴性结果中被错误 分类为阳性结果的比例 ,也称为误报概率
精确率
准确率 是模型所有正分类中真正为正的比例。
指标选择与权衡
在评估模型和选择阈值时,您选择优先考虑的指标取决于特定问题的成本、收益和风险。在垃圾邮件分类示例中,优先考虑召回率(抓取所有垃圾邮件)或准确率(试图确保标记为垃圾邮件的电子邮件确实是垃圾邮件)或两者之间的某种平衡(高于最低准确率水平)。
ROC和AUC
受试者工作特征曲线(ROC)
ROC 曲线是 所有阈值下模型性能的直观表示。
ROC 曲线是通过计算每个可能阈值(实际上,在选定的间隔内)的真阳性率 (TPR) 和假阳性率 (FPR),然后绘制 TPR 与 FPR 的关系图来绘制的。一个完美的模型,在某个阈值下,TPR 为 1.0,FPR 为 0.0,如果忽略所有其他阈值,可以用 (0, 1) 处的点表示,也可以用以下表示:
不理解,完美模型TPR为1.0,FPR为0.0。那么就应该是在TPR上的一个点,而不是线。
曲线下面积(AUC)
ROC 曲线下面积 (AUC)表示 如果给出随机选择的正例和负例,模型将正例排在负例之前的概率。
用于选择模型和阈值的AUC和ROC
预测偏差
在回归问题中,叫做损失。
预测偏差是模型 预测的平均值与数据中真实标签 的平均值 之间的差异。在 5% 的电子邮件为垃圾邮件的数据集上训练的模型应该平均预测其分类的电子邮件中有 5% 是垃圾邮件。换句话说,真实数据集中标签的平均值是 0.05,模型预测的平均值也应该是 0.05。如果是这样,则该模型的预测偏差为零。当然,该模型可能还存在其他问题。
预测偏差可能由以下原因造成: -数据中的偏差或噪声,包括训练集的偏差采样 -正则化太强,这意味着模型过于简单,失去了一些必要的复杂性 -模型训练流程中的错误 -提供给模型的特征集不足以完成任务
多类别分类
多类分类可以视为 二元分类 对两个以上类别的扩展。如果每个示例只能分配给一个类别,则分类问题可以作为二元分类问题处理,其中一个类别包含多个类别中的一个,另一个类别包含所有其他类别的总和。然后可以对每个原始类别重复该过程。
数据
ML 从业者在评估、清理和转换数据上花费的时间远多于构建模型的时间。数据非常重要,因此本课程专门用三个单元来讨论这个主题: ·处理数值数据(本单元) ·处理分类数据 ·数据集、泛化和过度拟合
处理数值数据
什么是数值数据
就是传统认知中的数字,可以加减乘除。
模型如何使用特征向量提取数据
需要将原始特征做处理,将处理后的数据给模型。
为什么要处理原始数据
1. 数据的可用性和质量提升
原始数据集可能包含缺失值、异常值或不一致的数据。这些问题会导致模型难以学习规律,甚至出现训练失败。
2. 数据分布的标准化
模型对特征的尺度或分布非常敏感。如果特征的取值范围差异过大(例如一个特征的值是0-1,另一个是0-1000),可能会导致模型偏置、权重问题。
3. 数据类型的处理
许多模型(例如线性回归或逻辑回归)只能处理数值型数据,而原始数据中可能包含非数值型特征(如分类变量或字符串)。这时需要进行转换。
4. 数据分布的优化
原始数据中的分布可能非常不均衡,例如在二分类任务中,正负样本的数量差距很大。这种 类别不平衡 会导致模型偏向于多数类,忽视少数类。
5. 降维与特征选择
原始数据集可能包含许多冗余或无用的特征,直接使用这些特征会增加计算复杂度,并且可能降低模型的性能。
6. 增强模型的学习能力
经过预处理的特征能够更加清晰地表示问题的本质,帮助模型更好地拟合数据。
您必须确定将原始数据集值表示为特征向量中的可训练值的最佳方法。此过程称为 特征工程,它是机器学习的重要组成部分。最常见的特征工程技术包括:
标准化:将数值转换为标准范围。 分箱(也称为 存储桶):将数值转换为范围桶。
第一步:处理数据
在创建特征向量之前,我们建议通过两种方式研究数值数据:
·以图表或图形的方式可视化您的数据。 ·获取有关您的数据的统计数据。
研究数据方法
可视化数据
图表可以帮助您发现隐藏在数据中的异常或模式。 因此,在进行深入分析之前,请以散点图或直方图的形式查看数据。不仅在数据管道开始时查看图表,而且在整个数据转换过程中也应查看图表。可视化可以帮助您不断检查您的假设
统计评估您的数据
除了视觉分析之外,我们还建议用数学方法评估潜在的特征和标签,收集基本统计数据,例如: ·平均值和中位数 ·标准差 ·四分位数的值:第 0、25、50、75 和 100 个百分位数。第 0 个百分位数是此列的最小值;第 100 个百分位数是此列的最大值。(第 50 个百分位数是中位数。)
查找异常值
离群值是 特征或标签中与大多数其他值相距甚远的值。离群值经常导致模型训练出现问题,因此查找离群值非常重要。 当第 0 和第 25 百分位数之间的差值与第 75 和第 100 百分位数之间的差值存在显著差异时,数据集可能包含异常值。
标准化(规范化)
为什么要规范化
·帮助模型在训练过程中更快地收敛。当不同的特征具有不同的范围时,梯度下降可能会“反弹”并减慢收敛速度。话虽如此, Adagrad 和Adam等更先进的优化器可以通过随时间改变有效学习率来防止出现此问题。 ·帮助模型做出更准确的预测。当不同的特征具有不同的范围时,生成的模型可能会做出不太有用的预测。 ·当特征值非常高时, 有助于避免“ NaN陷阱” 。NaN 是“不是数字”的缩写 。当模型中的值超出浮点精度限制时,系统会将该值设置为而不是数字。当模型中的一个数字变成 NaN 时,模型中的其他数字最终也会变成 NaN。 ·帮助模型学习每个特征的适当权重。如果没有特征缩放,模型会过于关注范围较宽的特征,而对范围较窄的特征关注不够。
gpt4o回复: 1. **加速收敛**:在使用梯度下降等优化算法时,不同特征的取值范围可能差异较大,这会导致优化过程中的梯度更新不均匀。规范化能够使所有特征在同一尺度上,从而加速模型的收敛。 2. **提高数值稳定性**:在深度学习中,尤其是使用反向传播算法时,数值的稳定性非常重要。大范围的特征值可能导致数值不稳定,例如梯度爆炸或梯度消失。通过规范化,可以减少这种风险。 3. **减少特征的偏倚**:如果某些特征的取值范围远超其他特征,那么模型可能会更加依赖于这些特征,从而影响模型的泛化能力。规范化有助于降低这种偏倚,让模型更公平地考虑所有特征。 4. **适应不同模型需求**:某些机器学习模型(如k-最近邻、支持向量机等)对特征的尺度非常敏感。通过规范化,能够确保这些模型在训练和预测时表现良好。 5. **提高可解释性**:在规范化之后,特征的比较变得更加直观,特别是在特征重要性分析和模型解释时,规范化的数据能够更好地反映出各特征对模型的贡献。 常见的规范化方法包括最小-最大缩放(Min-Max Scaling)和Z-Score标准化(均值为0,标准差为1)。选择恰当的规范化方法通常依赖于具体数据的特征和所使用的模型。
警告:如果您在训练期间对某个特征进行标准化,那么您也必须在进行预测时对该特征进行标准化。
常见的3种规范化数据的方法
线性缩放 Z 分数缩放 对数缩放
归一化
“归一化”是数据预处理中的一种常见方法,其主要目的是将不同特征的数值转换到一个统一的尺度上,以便于模型的训练和应用。虽然“归一化”和“规范化”这两个词有时可以互换使用,但在数据预处理的具体上下文中,它们往往指代不同的概念或方法。
线性缩放
线性缩放(通常缩写为缩放)意味着将浮点值从其自然范围转换为标准范围 - 通常为 0 到 1 或 -1 到 +1。
数学公式
使用条件
·随着时间的推移,数据的下限和上限不会发生太大变化。 ·该特征包含很少或不包含异常值,并且这些异常值并不极端。 ·该特征在其范围内大致均匀分布。也就是说,直方图会显示大多数值的大致均匀的条形。
Z分数缩放
Z 分数是某个值与平均值之间的标准差数。例如,如果某个值比平均值大2 个标准差,则 Z 分数为 +2.0。如果某个值比平均值小 1.5 个标准差,则 Z 分数为 -1.5 。
当数据遵循正态分布或类似正态分布的分布时,Z 分数是一个不错的选择。
对数缩放
对数缩放是将每个特征值 \(X\) 通过对数函数转换为 \(X' = \log(X)\),其中 \(\log\) 可以是任意对数底数(最常用的是以10为底或以自然数 \(e \approx 2.718\) 为底),但通常使用自然对数
数学公式
1. **log**: "log" 通常表示以 **10** 为底的对数,称为常用对数(common logarithm)。 - 数学表达式: \(\log_{10}(x)\) - 例如:\(\log(100) = 2\) 因为 \(10^2 = 100\)。 2. **ln**: "ln" 表示以 **e**(约等于2.71828)为底的自然对数(natural logarithm)。 - 数学表达式: \(\ln(x)\) - 例如:\(\ln(e^2) = 2\) 因为 \(e^2 = e^2\)。
裁剪
裁剪不是删除,而是将异常值统一设置为一个特定值。
规范化技术总结
最好的规范化技术是在实践中效果良好的技术,因此如果您认为新想法能够很好地作用于您的特征分布,请尝试它们。
分箱(存储桶)
分箱(也称为存储桶)是一种 特征工程 技术,可将不同的数值子范围分组到箱或 桶中。在许多情况下,分箱将数值数据转换为分类数据。例如,考虑一个 名为的特征X,其最低值为 15,最高值为 425。使用分箱,您可以X用以下五个箱来表示: 1 号桶:15 至 34 桶 2:35 至 117 桶 3:118 至 279 4 号桶:280 至 392 箱 5:393 至 425
比如数据有明显的分类,可以将一个特征划分为多个桶,每个桶相当于一个新的特征。
数据清洗
清除坏的数据,比如重复数据、错误数据
处理分类数据
什么是分类数据
分类数据(Categorical Data)是指数据的值属于某个特定类别或标签,而不是数值型的数据。分类数据通常用于表示离散的、有限的选项或类别。
词汇与独热编码
索引号
将特征下的明细(类别)列出来,每一个类别给定一个索引号。
独热编码
只有一个元素是1,其他元素都是0的向量为独热编码。
独热编码的目的是将数据转化成无数学意义的编码。
独热编码特点: ·每个类别由一个包含 N 个元素的向量(数组)表示,其中 N 是类别数。例如,如果car_color有八个可能的类别,则表示的独热向量将有八个元素。 ·独热向量中只有一个元素的值为 1.0;所有剩余元素的值为 0.0。
稀疏表示
因为独热编码中只有一个值是有价值的,或者说只有一个值是1其他数是0,那么可以统一表示0的位置。目的是降低消耗内存。
值主要为零(或为空)的特征称为 稀疏特征。许多分类特征(例如car_color)往往是稀疏特征。 稀疏表示意味着将 1.0 的位置 存储在稀疏向量中
示例
请注意,稀疏表示比全部元素独热向量消耗的内存少得多。重要的是,模型必须在独热向量上进行训练,而不是稀疏表示。
分类数据中的异常值
与数值数据一样,分类数据也包含异常值。假设 car_color不仅包含流行颜色,还包含一些很少使用的异常颜色,例如"Mauve"或。您不必将这些异常颜色分别归入单独的类别,而是可以将它们归入一个称为词汇外 (OOV) 的"Avocado"“包罗万象”类别。换句话说,所有异常颜色都被归入一个异常值桶中。系统会为该异常值桶学习一个权重。
编码高维分类特征
当类别数量较多时,独热编码通常不是一个好选择。 嵌入(在单独的 嵌入模块中详细介绍)通常是更好的选择。嵌入大大减少了维度数量,这对模型有两个重要好处: ·该模型通常训练速度更快。 ·构建的模型通常可以更快地推断出预测。也就是说,该模型的延迟更低。
当前的工具及方法
One-Hot Encoding
分类数据的常见问题
问题说明
数值数据通常由科学仪器或自动测量记录。另一方面,分类数据通常由人类或机器学习 (ML) 模型分类。谁来决定类别和标签以及他们如何做出这些决定,都会影响数据的可靠性和实用性。
人工评分
人工标记的数据通常被称为黄金标签,由于数据质量相对较好,被认为比机器标记的数据更适合用于训练模型。 这并不一定意味着任何一组人工标记的数据都是高质量的。在数据收集时或在数据清理和处理过程中可能会引入人为错误、偏见和恶意。在训练之前检查它们。 任何两个人都可能对同一个示例做出不同的标记。人类评分员决策之间的差异称为 评分员间一致性。您可以通过每个示例使用多个评分员并测量评分员间一致性来了解评分员意见的差异。
机器评分
机器标记数据(其中的类别由一个或多个分类模型自动确定)通常被称为银标签。机器标记数据的质量差异很大。不仅要检查其准确性和偏差,还要检查其是否违反常识、现实和意图。例如,如果计算机视觉模型将吉 娃娃的照片错误地标记为松饼,或将松饼的照片错误地标记为吉娃娃,则使用该标记数据训练的模型质量会较低。 类似地,当 0.0 为中性值时,情绪分析器将中性词的评分设为 -0.25,这可能会给所有词打出额外的负面偏见,而数据中实际上并不存在这种偏见。过于敏感的毒性检测器可能会错误地将许多中性陈述标记为有毒。在对数据进行训练之前,请尝试了解数据中机器标签和注释的质量和偏见。
高纬度
分类数据往往会产生高维特征向量,即具有大量元素的特征向量。高维数会增加训练成本并使训练更加困难。出于这些原因,机器学习专家通常会在训练之前寻找减少维数的方法。 对于自然语言数据,降低维数的主要方法是将特征向量转换为嵌入向量。
特征组合
特征交叉是通过交叉(取其笛卡尔积)数据集中的两个或多个分类或分桶特征来创建的。与多项式变换一样,特征交叉允许线性模型处理非线性。特征交叉还会对特征之间的交互进行编码。
因为分类数据是独热编码,如果通过笛卡尔积运算,就可以让特征体现出来。
何时使用特征组合
领域知识可以建议有用的特征组合。如果没有该领域知识,手动确定有效的特征组合或多项式变换会很困难。通常可以使用 神经网络在 训练期间自动查找和应用有用的特征组合,尽管计算成本很高。
为什么要特征组合
1、捕捉交互效应:某些情况下,单个特征不足以解释目标变量的变化,但两个或多个特征的组合却能更好地预测结果。通过笛卡尔积,我们可以探索所有可能的交互模式,即使这些模式不是显而易见的。 2、提高模型复杂度:引入更多的特征组合能够使模型更加灵活,适应更复杂的非线性关系。这有助于提升模型的准确性和泛化能力,尤其是在处理高维数据时。 3、增强表达能力:对于某些类型的机器学习模型来说,比如决策树和支持向量机,特征组合可以直接影响到模型内部结构的设计,使得模型能够学习到更为精细的数据分布规律。 4、发现隐含模式:有时候,原始特征本身并没有直接关联,但是它们的组合可能会揭示出隐藏在数据背后的模式或趋势。这对于挖掘深层次的知识非常有用。
数据集、泛化和过度拟合
数据特征
前提
数据集是示例的集合 。
许多数据集将数据存储在表格(网格)中,例如以逗号分隔值 (CSV) 的形式,或直接来自电子表格或数据库表。表格是机器学习模型的直观输入格式。您可以将表格的每一行想象成一个示例,将每一列想象成一个潜在特征或标签。也就是说,数据集也可以来自其他格式,包括日志文件和协议缓冲区。 无论采用何种格式,您的 ML 模型的好坏取决于其训练所用的数据。
数据类型
数据集可以包含多种数据类型,包括但不限于: ·数值数据,包含在单独的单元中 ·分类数据,包含在单独的单元中 ·人类语言,包括单个单词和句子,直至整个文本文档 ·多媒体(如图像、视频和音频文件) ·其他机器学习系统的输出 ·嵌入向量,将在后面的单元中介绍
数据量
粗略的经验法则是,您的模型应至少比可训练参数多一个数量级(或两个数量级)的示例进行训练。但是,好的模型通常会在远多于此数量的示例中进行训练。 在大型数据集上训练的具有少量 特征的模型 通常比在小型数据集上训练的具有大量特征的模型表现更好。谷歌在大型数据集上训练简单模型方面历来取得了巨大成功。 不同机器学习程序的不同数据集可能需要大量不同的示例来构建有用的模型。对于一些相对简单的问题,几十个示例可能就足够了。对于其他问题,一万亿个示例可能还不够。 如果您正在调整已经使用来自相同模式的大量数据进行训练的现有模型,那么有可能从小型数据集中获得良好的结果。
经验法则解释 一个数量级:这意味着如果模型有100个可训练参数,那么理想情况下,你应该至少有1,000个独立的训练示例。这提供了一个基本的安全边际,使得模型有足够的数据来估计每个参数的最佳值。 两个数量级:更严格的要求是,如果你有100个可训练参数,你应当拥有10,000个独立的训练示例。这种比例提供了更大的保障,有助于确保模型不会仅仅记忆训练数据,而是真正地学习到了泛化能力。
可训练参数就是模型中的变量。
数据质量和可靠性
高质量的数据集有助于您的模型实现其目标。低质量的数据集会阻碍您的模型实现其目标。
高质量的数据集通常也是可靠的。 可靠性是指您可以信任数据的程度。在可靠数据集上训练的模型比在不可靠数据上训练的模型更有可能产生有用的预测。
不可靠数据的原因
遗漏的值。例如,某人忘记输入房屋年龄的值。 重复示例。例如,服务器错误地两次上传了相同的日志条目。 错误的特征值。例如,有人输入了多余的数字,或者温度计被放在阳光下。 错误标签。例如,有人错误地将橡树的图片标记为枫树。 数据有缺陷。例如,某个功能非常可靠,但有一天网络一直崩溃。
注意:任何足够大或多样化的数据集几乎肯定包含 超出数据模式或单元测试范围的异常值。确定如何处理异常值是机器学习的重要组成部分。
数据的质量和可靠性是很重要的,但因为数据量的巨大导致不可能数据百分百准确,所以我们需要学会处理异常数据。
完整和不完整示例
完美数据中,每一个例子都应该是完整的,但现实并不是理想情况,所以会出现例子不完整的的情况。就如同单据信息,理想的单据信息和实际业务填写的绝对不会相符。
解决不完美数据的方式
1、删除数据
2、合理的估算缺失的值。
例如:利用平均值、中间数。或者利用其他算法来实现。
实际操作的时候,可以做两套数据,来评估这两个方式生成的两套数据,哪个质量更好。
标签
直接标签与代理标签
直接标签
即与您的模型尝试做出的预测相同的标签。
也就是预测某个人有没有车,而数据库里面就存着有无车的数据。
代理标签
即与模型试图做出的预测相似但不完全相同的标签。
叫相关标签会理解点,比如预测某个人有没有车,但数据库里面就没有车相关的数据,但是有此人车险的数据。
人类生成的数据
人提供的数据,比如图片标注,或者机器自动生成的。
不平行的数据集
何为不平行
分类标签中,正向的和负面的数据的比例应该是一样的各占一半,但是如果一类标签比另一类多,那么就代表这个数据集的数据是不平衡的。
下采样和上加权
术语定义
下采样(在这种情况下)意味着对多数类样本中不成比例的低子集进行训练。 上行权重意味着向下采样的类别添加一个等于下采样因子的示例权重。
重新平衡比率
上面说到了增加少数类的权重和再少数类上增加训练,但是需要如何处理呢?
批次大小; 不平衡率; 训练集中的示例数量。
划分原始数据集
训练、验证和测试集
验证模型的时候,不能使用训练时的数据集。要区分验证数据集和训练数据集。
如果只有训练集、测试集,那么在测试的时候就会导致模型无意中拟合测试集合。所以可以增加一个验证集。
使用验证集评估训练集的结果。反复使用验证集表明您的模型做出了正确的预测后,请使用测试集再次检查您的模型。
所示的工作流程是最佳的,但即使采用该工作流程,测试集和验证集仍会随着重复使用而“磨损”。也就是说,您使用相同数据来决定超参数设置或其他模型改进的次数越多,模型对新数据做出良好预测的信心就越低。因此,收集更多数据来“刷新”测试集和验证集是个好主意。重新开始是一个很好的重置。
测试集的其他问题
要验证数据集中是不是有重复数据,如果有重复数据,就会导致测试、验证的时候的结果不准确。
一个好的测试集、验证集的标准
·足够大以产生具有统计意义的测试结果。 ·代表整个数据集。换句话说,不要选择与训练集具有不同特征的测试集。 ·代表模型在其业务目的中将遇到的真实世界数据。 ·训练集中重复的示例为零。
转换数据
前提
机器学习模型只能对浮点值进行训练。然而,许多数据集特征并不是自然浮点值。因此,机器学习的一个重要部分是将非浮点特征转换为浮点表示。
当数据过多时进行采样
如果数据过多,可能会增加计算量、训练时长、训练效率。可以适当减少数据,让数据集尽量能够代表整个数据集的主要特征。
包含PII的过滤示例
训练时,需要忽略个人身份信息(PII)。虽然有助于隐私保护,但是可能会影响模型能力。
泛化
训练模型的目的就是为了让其在真实世界工作,去预测真实世界的内容。但是训练数据只代表了真实世界的一小部分。我们既要在数据集中能够得到很小的损失读,也应该考虑将模型泛化只新的数据、真实世界。
过度拟合
过度拟合意味着创建一个与训练集非常接近(记忆) 的模型,以至于该模型无法对新数据做出正确的预测。过度拟合模型类似于在实验室中表现良好但在现实世界中毫无价值的发明。
拟合、过度拟合和欠拟合
过拟合模型对训练集的预测非常出色,但对新数据的预测却很差。 欠拟合模型甚至无法对训练数据做出良好的预测。如果过拟合模型就像在实验室中表现良好但在现实世界中表现不佳的产品,那么欠拟合模型就像在实验室中表现不佳的产品。
检测过度拟合
检测过度拟合的曲线
1、损失曲线 2、泛化曲线
损失曲线绘制了模型损失与训练迭代次数的关系。显示两条或多条损失曲线的图表称为泛化曲线。以下泛化曲线显示了两条损失曲线:
当两条曲线的距离越远,说明模型过度拟合。 如果两个曲线随着训练时间并不会距离增加或距离增加不大,说明模型可以很好的泛化新的数据。
什么原因导致过度拟合
广义上讲,过度拟合是由以下一个或两个问题引起的: ·训练集不能充分代表现实生活中的数据(或验证集或测试集)。 ·模型太复杂了。
泛化条件
模型在训练集上进行训练,但真正考验模型价值的是它对新样本(尤其是真实数据)的预测能力。在开发模型时,测试集可充当真实数据的代理。
训练一个泛化能力良好的模型意味着以下数据集条件: ·示例必须 独立且同分布,也就是说,示例不能互相影响。 ·数据集是 静止的,这意味着数据集不会随时间发生显著变化。 ·数据集分区具有相同的分布。也就是说,训练集中的示例在统计上与验证集、测试集和真实世界数据中的示例相似。
模型复杂度
简单模型在新数据上的泛化效果比复杂模型更好。也就是说,简单模型在测试集上的预测比复杂模型更好。
复杂模型在训练集上的表现通常优于简单模型。但是,简单模型在测试集上的表现通常优于复杂模型(这更为重要)。
损失与复杂性
损失和复杂性通常是成反比的。随着复杂性的增加,损失会减少。随着复杂性的降低,损失会增加。你应该找到一个合理的中间地带,让模型对训练数据和真实数据都能做出良好的预测。也就是说,你的模型应该在损失和复杂性之间找到一个合理的折衷点。
模型复杂性提高、损失会减少、泛化能力降低。 模型复杂性降低、损失会增加、泛化能力提高。
正则化
机器学习模型必须同时满足两个相互冲突的目标: ·很好地拟合数据。 ·尽可能简单地拟合数据。
什么是正则化
保持模型简单的一种方法是惩罚复杂模型;也就是说,在训练过程中强制模型变得更简单。惩罚复杂模型是正则化的一种形式。
正则化(Regularization)是一种用来防止模型过拟合的技术。当一个模型过于复杂或者训练数据量相对不足时,模型可能会学到训练数据中的噪声或细节,这些在训练集上表现良好的特性未必能在新的、未见过的数据上得到同样的效果。这种现象称为过拟合(overfitting),它会导致模型的泛化能力下降,即模型不能很好地适应新数据。
正则化的核心思想是: 在损失函数中不仅关注训练误差,还关注模型的复杂度。通过对复杂度的惩罚,我们可以有效限制模型的学习能力,避免其捕捉到数据中的噪声和不重要的特征。
正则化技术
L2正则化
L2正则化是一种流行的正则化度量。
正则化技术的核心目的是通过对模型参数施加一定的约束或惩罚,以防止过拟合并提高模型的泛化能力。你提到的“平等降低每个参数的权重和偏置”在某些情况下并不完全反映正则化的实际机制,因为正则化可以通过不同的方式处理参数,尤其是 L1 和 L2 正则化,这两者的效果和实现方式有所不同。以下是对这一观点的详细说明:
损失曲线是用来检测模型预测数据与训练数据集和之间的差距。
高级ML模型
神经网络
简介
神经网络是一类模型架构,旨在发现 数据中的非线性 模式。在神经网络训练期间, 模型会自动学习对输入数据执行的最佳特征组合,以最大限度地减少损失。
节点和隐藏层
模型结构
形式为:
线性模型
模型可视化
向网络添加层
输入层、隐藏层、输出层。隐藏层中的节点被称为神经元。
X和Y不是参数,只有权重和偏差是参数。
注意,目前模型还是线性的,无法学习非线性。
激活函数
常见的激活函数
S型函数(逻辑函数、sigmoid函数)
产生0至1之间的输出值
tanh(“双曲正切”的缩写)函数
产生-1至1之间的输出值
整流线性单元激活函数(简称ReLU )
·如果输入值必小于 0,返回 0。 ·如果输入值必大于或等于0,返回输入值。
除了上面的,任何数学函数都可以作为激活函数。
神经网络的所有标准组件
·一组类似于神经元、按层组织的节点。 ·一组权重,表示每个神经网络层与其下一层之间的连接。下一层可能是另一个神经网络层,也可能是其他类型的层。 ·一组偏差,每个节点一个。 ·转换层中每个节点的输出的激活函数。不同的层可能具有不同的激活函数。
使用反向传播进行训练
反向传播
反向传播是神经网络最常见的训练算法。它使梯度下降法适用于多层神经网络。许多机器学习代码库(例如Keras)会自动处理反向传播,因此您无需亲自执行任何底层计算。
什么是反向传播
有了前向传播的结果,就可以计算损失函数(也叫成本函数),它衡量了模型预测与真实目标之间的差异。反向传播从输出层开始,根据损失函数的导数(即关于权重的梯度),逐步向前一层传递误差信息,并计算各层权重的梯度。这一步骤利用了链式法则(chain rule),可以有效地计算出每个权重对总损失的影响程度。
反向传播的过程
反向传播的过程 1、前向传播(Forward Pass): ·输入数据被送入网络,并根据当前的权重参数逐层传递,直到输出层。 ·输出层产生预测结果,这些结果与实际的目标值进行比较,计算出损失函数的值。 2、计算损失(Loss Calculation): ·选择一个合适的损失函数(例如均方误差、交叉熵等),它用来量化模型预测值与真实值之间的差异。 3、反向传播(Backward Pass): ·从输出层开始,利用链式法则计算损失函数相对于每一层权重的梯度。这涉及到计算损失函数相对于最后一层激活的导数,然后依次向前一层传递这个信息,直到输入层。 ·在这个过程中,每一层的误差(或者说责任)被量化为该层输出对于最终损失的影响。 4、权重更新(Weight Update): ·根据计算出的梯度,使用某种形式的梯度下降法(如SGD、Adam等)来调整权重。更新规则通常包括学习率,它决定了调整的步伐大小。
神经网络训练的最佳实践
消失的梯度
较低神经网络层(靠近输入层)的梯度可能变得非常小。在深度网络(具有多个隐藏层的网络)中,计算这些梯度可能涉及取许多小项的乘积。 当较低层的梯度值接近 0 时,梯度被称为“消失”。梯度消失的层训练非常缓慢,或者根本不训练。 ReLU 激活函数可以帮助防止梯度消失。
梯度爆炸
如果网络中的权重非常大,那么较低层的梯度将涉及许多大项的乘积。在这种情况下,您可能会遇到梯度爆炸:梯度变得太大而无法收敛。 批量标准化可以帮助防止梯度爆炸,也可以降低学习率。
死亡的 ReLU 单元
一旦 ReLU 单元的加权和低于 0,ReLU 单元就会陷入困境。它输出 0,对网络的输出没有任何贡献,而且在反向传播过程中梯度不再能流经它。如果梯度源被切断,ReLU 的输入可能永远不会发生足够的变化,无法使加权和回到 0 以上。 降低学习率有助于防止 ReLU 单元消亡。
Dropout 正则化
正则化的目的是为了防止模型过拟合。
课程中此处提到了正则化,但是我认为不合理。
多类别分类
一对多
一对多提供了一种使用二元分类对多个可能标签中的一系列是或否预测进行预测的方法。
假设一个分类问题有 N 个可能的解决方案,那么一对多解决方案由 N 个独立的二元分类器组成,每个可能的结果对应一个二元分类器。在训练过程中,模型会运行一系列二元分类器,对每个分类器进行训练以回答一个单独的分类问题。
问题
类别总数较少的时候方法合理,但是随着类别的增加,效率会线性降低。
通过神经网络实现的模型
一对一
对于一对多,我们将 S 型激活函数独立应用于每个输出节点,这会导致每个节点的输出值介于 0 和 1 之间,但不保证这些值的总和正好为 1。
对于一对一,我们可以应用一个名为softmax的函数,该函数为多类问题中的每个类分配十进制概率,使得所有概率之和为 1.0。此附加约束有助于训练比其他方式更快地收敛。
嵌入
简介
如果要训练一个模型,使用独热编码会有很多问题。
·权重数量。 对于神经网络来说,输入向量越大意味着 权重数量也越大。由于独热编码中有 M 个条目,输入后网络第一层中有 N 个节点,因此模型必须为该层训练 MxN 个权重。 ·数据点的数量。模型中的权重越多,有效训练所需的数据就越多。 ·计算量。权重越多,训练和使用模型所需的计算量就越大。很容易超出硬件的能力。 ·内存量。模型中的权重越多,训练和服务模型的加速器所需的内存就越大。有效扩展内存量非常困难。 ·支持设备上机器学习 (ODML)的难度 。 如果您希望在本地设备上运行 ML 模型(而不是为它们提供服务),您需要专注于缩小模型,并希望减少权重的数量。 在本模块中,您将学习如何创建嵌入(稀疏数据的低维表示)来解决这些问题。
嵌入空间和静态嵌入
嵌入是嵌入空间中数据的向量表示 。一般而言,模型通过将初始数据向量的高维空间投影到低维空间来找到潜在的嵌入。
低维空间的表示为:向量值
现实世界的嵌入空间
在现实世界中,嵌入空间是d维的,其中d远高于 3,但低于数据的维数,并且数据点之间的关系不一定像上面的插图那样直观。(对于词嵌入,d通常为 256、512 或1024。1)
在实践中,机器学习从业者通常会设定具体任务和嵌入维度的数量。然后,模型会尝试将训练示例排列在具有指定维度数量的嵌入空间中,或者根据维度数量进行调整(如果d不固定)。单个维度很少像“甜度”或“流动性”那样易于理解。有时可以推断出它们的“含义”,但情况并非总是如此。 嵌入通常特定于任务,当任务不同时,嵌入也会有所不同。例如,素食者与非素食者分类模型生成的嵌入将不同于根据一天中的时间或季节推荐菜肴的模型生成的嵌入。例如,“麦片”和“早餐香肠”在一天中的时间模型的嵌入空间中可能很接近,但在素食者与非素食者模型的嵌入空间中可能相距很远。
静态嵌入
静态嵌入(Static Embeddings)是指在训练过程中,嵌入向量保持固定不变的嵌入方法。这意味着一旦这些嵌入被创建或预训练完成,它们就不会随着下游任务的训练而更新或调整。
特点
特点 预训练:静态嵌入通常是通过一个独立的任务预训练得到的,例如使用大规模语料库来训练单词嵌入。 不更新:在应用于特定任务时,比如文本分类或情感分析,静态嵌入不会根据该任务的数据进行更新。 通用性:因为它们是预先训练好的,所以可以适用于多种不同的任务,而不必为每个新任务重新训练嵌入。
常见的静态嵌入
1、Word2Vec:由Google开发的一种流行词嵌入技术,它基于神经网络模型,可以通过连续词袋(CBOW)或skip-gram架构来学习单词的分布式表示。 2、GloVe (Global Vectors for Word Representation):斯坦福大学提出的一种词嵌入方法,它利用统计信息(共现矩阵)来构建词向量,强调全局语义信息的重要性。 3、FastText:Facebook AI Research推出的一个库,它不仅考虑了单词级别的信息,还考虑了字符n-gram,使得它能够更好地处理未登录词(OOV问题)和多义词。
优点与局限
优点:计算效率高,因为不需要额外的训练时间来调整嵌入;对于资源有限的情况特别有用。 局限:由于不能针对具体任务进行微调,静态嵌入可能无法捕捉到特定任务中的细微差别,或者适应新的上下文环境。此外,它们通常对词汇表之外的词(OOV, out-of-vocabulary words)处理效果不佳。
静态嵌入可视化网站
https://projector.tensorflow.org/
获取嵌入
本节说明
介绍获取嵌入的几种方法,以及如何将静态嵌入转换为上下文嵌入。
降维技术
有许多数学技巧可以在低维空间中捕捉高维空间的重要结构。理论上,这些技巧中的任何一种都可以用来为机器学习系统创建嵌入。
将嵌入作为神经网络的一部分进行训练
您可以在为目标任务训练神经网络的同时创建嵌入 。这种方法可让您获得针对特定系统进行良好定制的嵌入,但可能比单独训练嵌入花费的时间更长。
这种方法允许嵌入层的参数(即生成嵌入向量的权重矩阵)根据下游任务的目标进行优化。这意味着嵌入向量不仅能够捕捉数据的固有结构,还能更好地适应特定的任务需求。例如,在自然语言处理任务中,词嵌入可以被训练以优化文本分类、情感分析或命名实体识别等任务的性能。
上下文嵌入
静态嵌入时,每个单词都由向量空间中的一个点表示,即使它可能具有多种含义。在上一个练习中,您发现了静态嵌入对于单词orange的局限性 ,它可以表示颜色或水果类型。如果只有一个静态嵌入,那么在数据集上进行训练时,orange与其他颜色的距离总是比与juice的距离更近 word2vec。 上下文嵌入是为了解决这一限制而开发的。上下文嵌入允许用多个嵌入来表示一个单词,这些嵌入包含有关周围单词以及单词本身的信息。Orange会为数据集中包含该单词的每个唯一句子提供不同的嵌入。
实际就是一个在神经网络之前的一个向量矩阵,用来存储数据向量的,这个向量是动态变化的。
上下文嵌入是如何动态变化的
不是很理解上下文嵌入
谈论AI 时被经常提及的“嵌入(embedding)”和“向量(Vector)”到底是个啥?
大语言模型LLM
简介:什么是语言模型
语言模型估计一个标记或标记序列在较长的标记序列中出现 的概率 。标记可以是单词、子单词(单词的子集),甚至是单个字符。
语言模型能够根据已有的文本内容,预测接下来可能出现的标记(单词、子词或字符)及其出现的概率。这一特性让语言模型成为了理解和生成人类语言的强大工具。
什么是大型语言模型
本节介绍Transformer架构:最成功、应用最广泛的架构
什么是Transformer?
Transformer 是各种语言模型应用的最先进的架构
完整的 Transformer 由一个编码器和一个解码器组成: ·编码器将输入文本转换为中间表示。编码器是一个巨大的 神经网络。 ·解码器将中间表示转换为有用的文本。解码器也是一个巨大的神经网络。
翻译器示例
1、编码器将输入文本(例如,英文句子)处理成某种中间表示。 2、解码器将中间表示转换为输出文本(例如,等效的法语句子)。
什么是自我注意力?
为了增强上下文,Transformers 严重依赖一种称为 自注意力的概念。实际上,对于每个输入标记,自注意力都会提出以下问题: “每个其他输入的标记对这个标记的解释有多大影响?”
Transformer:一种用于语言理解的新型神经网络架构
什么是多头自注意力?
每个自注意力层通常由多个自注意力头组成。层的输出是不同头输出的数学运算(例如,加权平均值或点积)。
每个自注意力层都初始化为随机值,因此不同的头部可以学习每个被关注的单词与邻近单词之间的不同关系。
Transformer 为何这么大?
Transformer 包含数百亿甚至数万亿个 参数。
然而,研究表明,参数较多的 Transformer 的表现始终优于参数较少的 Transformer。
但是 LLM 如何生成文本?
子主题
LLM:微调、蒸馏和提示词工程
微调
研究表明,基础语言模型的模式识别能力非常强大,有时只需进行相对较少的额外训练,即可学习特定任务。这项额外的训练有助于模型针对特定任务做出更准确的预测。这项额外的训练称为微调,可发挥 LLM 的实用性。
微调是给定训练示例让LLM更新参数的权重和偏差,让模型更适应特定任务。
蒸馏
大多数经过微调的 LLM 包含大量参数。因此,基础 LLM 需要大量的计算资源和环境资源才能生成预测。请注意,其中大部分参数通常与特定应用无关。 蒸馏会创建较小的 LLM 版本。与完整 LLM 相比,提取的 LLM 生成预测的速度要快得多,并且需要的计算资源和环境资源也更少。不过,提炼模型的预测结果通常不如原始 LLM 的预测结果。回想一下,参数较多的 LLM 几乎总是比参数较少的 LLM 生成更好的预测结果。
提示词功能
略
离线推理
在某些应用场景中,使用大型语言模型(LLM)进行实时在线推理(即在用户发起请求时立即处理请求)可能会因为模型参数众多而导致处理速度较慢,影响用户体验。为了解决这个问题,工程团队通常会采用离线推理的方法。离线推理指的是在用户实际请求之前,预先使用模型进行预测,并将预测结果存储起来。当用户发起请求时,系统可以直接提供已经计算好的结果,而不需要再次通过模型进行计算。
模型已经记录了问题的答案,用户询问相同问题时,直接显示对应答案。
真实世界的ML
生成ML系统
简介
现实世界中的机器学习生产系统的核心是 ML 模型代码,但它通常只占系统总代码库的 5% 或更少。这不是印刷错误;它比您预期的要少得多。请注意,ML 生产系统将大量资源投入到输入数据中:收集数据、验证数据并从中提取特征。
静态与动态训练
·静态训练(也称为离线训练)意味着你只训练一次模型。然后,你将使用同一个训练好的模型一段时间。 ·动态训练(也称为在线训练)意味着您连续或至少频繁地训练模型。您通常会使用最近训练的模型。
优缺点
静态与动态推理
推理是将经过训练的模型应用于 未标记的示例并做出预测的过程。广义上讲,模型可以通过以下两种方式之一推断预测: ·静态推理(也称为离线推理或 批量推理)意味着模型对一堆常见的未标记示例进行预测 ,然后将这些预测缓存在某处。 ·动态推理(也称为在线推理或实时推理)意味着模型仅在需要时进行预测,例如当客户端请求预测时。
何时转换数据
原始数据必须进行特征工程(转换)。什么时候应该转换数据?广义上讲,您可以在以下两个时期之一执行特征工程: ·在训练模型之前。 ·在训练模型时。