机器学习

有监督学习

  • 核心目标:建立一个模型(函数),来描述输入(X)和输出(Y)之间的映射关系
  • 价值:对于新的输入,通过模型给出预测的输出

有监督学习的要点

1.需要一定数量的训练样本

理解:机器学习模型不是凭空变出知识的,它需要从大量的“例题”中学习规律。这些“例题”就是训练样本。样本越多、质量越高,模型通常能学得越好。

比喻:你不能只给小孩看一张猫的图片,就指望他能认识所有猫。你需要给他看很多不同品种、不同颜色、不同姿态的猫的图片,他才能抽象出“猫”的共同特征(比如尖耳朵、胡须、喵喵叫)。同样,你也需要给他看狗、兔子等其他动物的图片,他才能学会区分。

要点

  • 数据是燃料:没有数据,再好的算法也无法工作。

  • 数量和质量并重:数据量太少,模型学到的规律不具普遍性,容易“以偏概全”(过拟合)。数据质量差(例如图片模糊、标签错误),模型就会“学坏”。

  • 关键问题:你手头有足够多、有代表性的“例子”吗?

2.输入和输出之间有关联关系

理解:我们期望模型能从输入(X)中找出预测输出(Y)的线索。如果两者之间根本没有内在的、哪怕是隐藏很深的逻辑或统计关联,那么机器学习就是在做“无米之炊”。

比喻:你想教小孩根据动物的叫声来判断是什么动物。这里,“叫声”和“动物种类”之间是有强关联的(猫叫对应猫,狗吠对应狗)。这个任务是有可能学会的。但如果你让他根据“当天的天气”来猜“动物园里什么动物最开心”,这两者之间几乎没有可靠的关联,小孩(或模型)就无法学习到有效的规律。

要点

  • 相关性不等于因果性:机器学习寻找的主要是统计关联,而不一定是严格的因果关系。例如,模型可能发现“冰淇淋销量高”和“溺水事件多”有关联,但其共同原因是“天气热”。

  • 关键问题:你认为你提供的输入信息(X)中,是否真的包含可以帮助推断出结果(Y)的信号?

3.输入和输出可以数值化表示

理解:计算机本质上只懂得处理数字。因此,我们现实世界中的一切信息(图片、文字、声音、类别等)都需要被转换成数值或数值向量(即一系列数字),模型才能进行处理。

比喻

  • 输入数值化:一张猫的图片,在电脑里被表示成一个由红、绿、蓝三色通道数值组成的巨大矩阵(比如224x224x3个数字)。一段“喵”的叫声,被表示成一系列声波的振幅数字。

  • 输出数值化

    • 如果是回归问题(预测价格):输出直接就是一个数字(如 100.5元)。

    • 如果是分类问题(识别猫狗):输出通常被数值化为一个概率向量,例如 [0.9, 0.1],表示“有90%的可能是猫,10%的可能是狗”。

要点

  • 特征工程:如何将原始数据有效地转化为有意义的数字,这个过程至关重要,直接影响到模型的性能。

  • 关键问题:你有办法把你手头的数据(无论是文本、图片还是表格)转换成数字吗?

4.任务需要有预测价值

理解:我们投入资源去构建一个模型,是为了让它能对新的、没见过的数据做出预测,从而辅助决策。如果一个问题没有未来应用场景,或者其规律瞬息万变,那么为其构建模型就失去了意义。

比喻:我们费尽心思教小孩认识了很多动物,目的是什么?是为了下次带他去动物园时,他能指着一只从未见过的豹子说:“那看起来像一只大猫,但身上有斑点,可能很危险。” 这就是泛化能力——将学到的知识应用到新场景的能力。

反之,如果你只是让他背诵你教过的那些特定图片,而无法识别新的动物,那么这个“学习”就失去了价值。或者,如果动物世界的分类规则每天都在变,昨天两条腿的是狗,今天三条腿的才是狗,那之前学的也立刻作废了。

要点

  • 泛化是目标:模型的核心价值不在于完美复述训练数据,而在于对新数据的准确预测。

  • 规律应稳定:数据背后的潜在规律应该在一段时间内是稳定的,否则模型会迅速失效。

  • 关键问题:训练这个模型来解决的问题,在未来有实际的应用场景吗?其背后的规律是稳定的吗?

有监督学习在人工智能中的应用

  • 文本分类任务
  • 输入:文本  输出: 类别
  • 关系:文本的内容决定了文本的类别

  • 机器翻译任务
  • 输入:A语种文本  输出:B语种文本
  • 关系:A语种表达的 意思, 在B语种有对应的方式

  • 图像识别任务
  • 输入:图像  输出:类别
  • 关系:图中的像素排列,决定了图像的内容

  • 语音识别任务
  • 输入:音频  输出:文本
  • 关系:声音信号在特定语言中对应特定的文本

一般流程

训练数据->数据处理<->算法选择<->建模&评估<->算法调优->模型

1. 训练数据 
  • 是什么:这是模型的“学习资料”,是带有“问题”和“标准答案”的数据集。通常分为特征(输入,比如菜的“原料”、“火候”)和标签(输出,比如菜的“最终口味”)。

  • 要点:数据量要足够,质量要高(不能全是发霉的面粉和错误的菜谱),否则“巧妇难为无米之炊”。

2. 数据处理 
  • 是什么:原始数据通常是脏乱、不完整的,不能直接使用。这个步骤包括:

    • 数据清洗:处理缺失值、异常值、错误值。

    • 特征工程:从原始数据中提取或构造对预测更有用的特征。这是非常关键的一步。

    • 数据标准化/归一化:将数据scale到统一范围,让模型更好学习。

3. 算法选择 
  • 是什么:根据你要解决的问题(是预测价格?还是分类猫狗?)和数据特点,选择一个合适的机器学习算法。

    • 分类问题:比如逻辑回归、决策树、SVM。

    • 回归问题:比如线性回归、决策树回归。

    • 复杂问题:比如神经网络、随机森林、梯度提升树。

注意流程图中的 <->:数据处理和算法选择是相互影响的。比如,你选择了神经网络,通常需要对数据进行归一化;你发现数据是图像,可能直接选择CNN(一种神经网络)。

4. 建模与评估 
  • 建模:将处理好的数据“喂”给选定的算法,让计算机进行训练,生成一个初步的模型。

  • 评估:用模型从未见过的测试集数据来检验它的真实水平。使用评估指标(如准确率、精确率、均方误差等)来量化性能。

  • 关键必须使用新数据(测试集)评估,否则就像让大厨自己尝自己做的菜,缺乏客观性,无法知道他是否只记住了菜谱而不会灵活变通(过拟合)。

5. 算法调优 
  • 是什么:如果模型在测试集上表现不佳,我们需要返回去进行调整。

    • 调什么

      1. 超参数调优:调整算法的“旋钮”,如学习率、树的深度、正则化强度等。

      2. 进一步的特征工程:构造更有效的特征,或剔除无效特征。

      3. 甚至重新选择算法

注意流程图中的 <->:这正体现了机器学习项目是一个反复迭代、循环优化的过程。建模评估后,大概率会回到调优阶段,甚至可能重新选择算法或处理数据。

6. 模型 -
  • 是什么:当模型在测试集上的表现达到我们的预期标准后,这个训练好的、最终版的“程序”就是我们的模型

  • 交付:这个模型可以被集成到应用程序、网站或系统中,对新的、从未见过的数据进行预测,创造价值。

总结

这个流程不是一个线性的、一次就能成功的过程,而是一个以评估为导向的、螺旋上升的迭代循环。核心思想就是:准备数据 -> 尝试学习 -> 客观评估 -> 发现问题 -> 回头优化 -> 再次尝试,直到得到一个令人满意的解决方案。

常用概念

1.训练集

用于模型训练的训练数据集合

2.验证集

对于每种任务一般都有多种算法可以选择,一般会使用验证集验证用于对比不同算法的效果差异

3.测试集

最终用于评判算法模型效果的数据集合

4.K折交叉验证

初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型数据的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果。

举例:我们假设K=5

  1. 第1轮:用 Fold 1 作为 验证集(考试卷),用 Fold 2,3,4,5 作为 训练集(复习资料),训练模型并得到一个分数 S1。

  2. 第2轮:用 Fold 2 作为 验证集,用 Fold 1,3,4,5 作为 训练集,训练模型并得到一个分数 S2。

  3. 重复... 直到每一份数据都恰好当过一次验证集。

  4. 计算:最终模型的性能得分 = (S1 + S2 + ... + S5) / 5

注意事项

  • K值的选择:最常用的是5或10。K太小(比如2),评估结果可能不稳定;K太大(比如和样本数一样,这叫“留一法”),计算成本会非常高。

  • 数据需要随机打乱:在分折之前,必须将数据随机打乱,以确保每个折里的数据分布都是相似的。

  • 不适用于时间序列数据:对于时间序列数据(比如股票价格),不能随机打乱,需要按时间顺序来划分,否则会“数据泄露”(用未来的数据预测过去)。

过拟合

模型失去了泛化能力。如果模型在训练和验证集上都是很好的表现,但是测试集上表现和差,一般认为发生了过拟合

欠拟合

模型没能建立起合理的输入输出之间的映射。当输入训练集中的样本时,预测结果与标注结果依然相差很大。

导数与梯度

导数

导数表示函数在曲线上的切线斜率,除了切线斜率,导数还表示在该点的变化率。

基本概念:
  • 自变量数量: 只研究一元函数,即函数只有一个输入变量(例如 y=f(x)y=f(x))。

  • 几何意义: 导数 f′(x0)f′(x0​) 在几何上表示函数图像在点 (x0,f(x0))(x0​,f(x0​)) 处的切线斜率

梯度

梯度告诉我们函数向哪个方向增长最快,那么他的反方向,就是下降最快的方向
梯度下降的目的是找到函数的极小值
为什么要找到函数的极小值?

   因为我们最终的目标是损失函数值最小.

他的核心思想是:导数在多元函数中的推广,它是一个向量,指向函数值增长最快的方向。

导数和梯度的对比

特征 导数 梯度
函数类型 一元函数 y=f(x)y=f(x) 多元函数 y=f(x1,...,xn)y=f(x1​,...,xn​)
是什么 一个标量(一个数值) 一个向量(一组数值)
几何意义 切线的斜率 指向增长最快的方向
数学构成 就是它本身 由所有偏导数构成
核心思想 瞬时变化率 方向性的瞬时变化率
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐