查看全课大纲(第 13 / 82 节)
- 1.函数与数据泛化
- 2.向量:从几何直觉到高维空间
- 3.矩阵与张量
- 4.特征值与特征向量:矩阵变换的不动方向
- 5.凸函数:从向量求导的矩阵记号到好优化的函数形状
- 6.概率与统计:机器学习的数学基础
- 7.独立性与随机变量:贝叶斯公式与二项分布
- 8.期望、方差与协方差:随机变量的数字画像
- 9.联合概率:当一条轴不够用的时候
- 10.概率分布(一):从伯努利到伽马函数
- 11.概率分布(二):贝塔、泊松、正态与两个贝叶斯故事
- 12.机器学习的模型:找输入与输出的关系
- 13.机器学习的应用
- 14.过拟合
- 15.机器学习的分类
- 16.有监督学习:从房价预测说起
- 17.损失函数
- 18.梯度下降(上):更新规则与学习速率
- 19.梯度下降(2)
- 20.牛顿方法
- 21.KNN简介
- 22.距离测算
- 23.朴素贝叶斯
- 24.朴素贝叶斯的实际应用
- 25.信息熵:决策树构建的度量基础
- 26.信息增益与决策树的构建
- 27.ID3算法
- 28.决策树节点的划分
- 29.CART树
- 30.Bagging
- 31.Boosting:自适应提升算法
- 32.Gradient Boosting
- 33.线性模型:回归与分类的同一副骨架
- 34.最小二乘:把最优参数直接解出来
- 35.最小二乘法的几何与概率视角
- 36.极大似然:给最小二乘一个概率出身
- 37.逻辑回归(1):把线性模型接到分类上
- 38.逻辑回归(2):损失函数与多分类
- 39.---- 手造数据: 5 个样本, 2 个特征; x2 几乎 = 2*x1 (偏差手工指定, 无随机) ----
- 40.讲师例: 向量 "23014" -- 三把范数尺子量同一个向量
- 41.优化方法(1):坐标下降与前向选择
- 42.优化方法(2):前向策略与最小角回归
- 43.拉格朗日乘子法(1):从无约束到等式约束
- 44.拉格朗日乘子法(2):等式约束下的平行条件与拉格朗日函数
- 45.拉格朗日乘子法(3):不等式约束与 KKT 条件
- 46.最大间隔:把分类问题变成优化问题
- 47.拉格朗日对偶问题:把 w 和 b 全部换成 α
- 48.支持向量:边界上的少数派
- 49.SVM 计算过程:一笔到底算完,再走进核方法
- 50.贝叶斯公式:概率即信念
- 51.隐含变量和概率模型:给看不见的原因建模
- 52.EM 算法:期望与最大化的迭代
- 53.琴生不等式:EM 的数学钥匙
- 54.三个硬币问题:EM 的复盘与衔接
- 55.高斯混合模型:用隐变量解释双峰数据
- 56.隐马尔可夫模型
- 57.隐马尔可夫模型(2):前向算法与动态混合模型
- 58.隐马尔可夫模型在 NLP 中的运用
- 59.EM 算法:把「为什么收敛」推到底
- 60.HMM 在 NLP 中的运用:从分词到机器翻译
- 61.HMM 参数估计:Baum-Welch 的三块拉格朗日
- 62.高维下的高斯模型
- 63.主题模型:从词袋到隐含主题
- 64.Dirichlet 分布(1)
- 65.Dirichlet 分布(2)
- 66.统计学习内容回顾
- 67.K-means 算法
- 68.PCA 降维
- 69.SVD 降维
- 70.从聚类到流形
- 71.局部线性嵌入
- 72.随机邻域嵌入:SNE 与 t-SNE
- 73.无参模型:让数据自己说话
- 74.高斯过程:函数空间里的正态分布
- 75.高斯过程(2):噪声、正则化与核的线性组合
- 76.神经网络简介:从感知器到自编码器
- 77.反向传播:把误差一层层传回去
- 78.卷积神经网络(CNN):让特征自己学出来
- 79.循环神经网络(RNN):给网络装上记忆
- 80.深度学习回顾:静态一类,动态一类
- 81.增强学习(1):蒙特卡洛、树搜索与 Q-learning
- 82.强化学习(2):从乌鸦吃核桃到井字棋的 value 回传
机器学习的应用
约 21 分钟
小象实战讲义 · 机器学习算法精讲
本节我们将从宏观视角审视机器学习,理解它如何作为一门“从数据中发现规律的科学”,并渗透到我们生活和研究的各个角落。学完本节,你将能清晰地界定一个复杂问题是否属于机器学习范畴,并理解其核心思想——学习输入与输出之间复杂的映射关系。
💡 核心导读
- 机器学习的定位:了解机器学习与人工智能、模式识别、数据挖掘、统计学习、深度学习等邻近领域的关系与区别。
- 核心范式:掌握机器学习问题的本质是学习一个从输入到输出的复杂函数,而不仅仅是简单的物理定律。
- 应用全景:通过文字-图像检索、医学图像分析、语音识别、情感分析、股票预测、自动驾驶、游戏AI等丰富案例,直观感受机器学习能解决哪些问题。
- 问题界定:学会判断一个现实世界的问题是否能够(以及如何)被构建成一个机器学习问题。
机器学习的学科定位
机器学习并非孤立存在,它处于一个广阔的技术生态之中。理解它与相关领域的关系,有助于我们把握其核心任务和边界。
- 人工智能(Artificial Intelligence):这是一个更广泛的学科,其目标是制造智能系统或智能机器。传统AI更偏向工程方法。机器学习通常被认为是实现人工智能的一个重要分支和手段。
- 模式识别(Pattern Recognition):这门学科发展得更早,主要关注如何从信号(如图像、声音)中发现相似或相同的模式。它为机器学习提供了许多基础问题和早期方法。
- 数据挖掘(Data Mining) / 大数据(Big Data):起源于数据库领域的知识发现(KDD,Knowledge Discovery from Database——KDD 至今仍是机器学习领域的顶级会议之一),更强调在海量数据中高效、可扩展地找到有价值的信息。机器学习则更关注算法本身的有效性,即使只提升一个百分点,若算法复杂度可控,也是胜利。在实际应用中,往往需要平衡算法的精度与效率。
- 统计学习(Statistical Learning):可以看作是机器学习中与统计学(尤其是统计推断、贝叶斯推理)紧密结合的一部分。在深度学习兴起之前,它是机器学习的主流方法论,至今仍至关重要。
- 深度学习(Deep Learning):通过深度的神经网络来拟合极其复杂的输入输出关系。它在计算机视觉、自然语言处理、语音识别等领域取得了突破性进展,是当前机器学习领域最活跃的分支之一。
此外,机器学习的技术被广泛应用于诸多具体领域,如:
- 自然语言处理(NLP):让机器理解、生成人类语言。
- 计算机视觉(Computer Vision):让机器“看懂”图像和视频。
- 语音识别(Speech Recognition):将声音信号转化为文字。
- 生物识别(Biometrics):通过人脸、指纹、虹膜等生物特征进行身份认证。
- 生物信息学(Bioinformatics):解码基因序列(AGCT),理解生命密码与疾病的关系。
机器学习的核心:学习输入与输出的映射
抛开具体的技术细节,机器学习最根本的思想可以概括为一句话:从已知的输入-输出数据对中,学习一个能够描述它们之间复杂关系的函数(模型)。
这不同于我们熟知的物理学定律(如 ),后者是简洁、确定的解析式。机器学习要解决的是那些难以用简单公式刻画的关系,例如:
- 如何根据一个人的资料(输入)预测其收入(输出)?
- 如何根据一段影评(输入)判断其情感倾向(输出)?
- 如何根据历史股价(输入)预测明日价格(输出)?
这些问题中,输入和输出之间存在某种关联,但这种关联是隐晦、复杂且充满不确定性的。机器学习就是通过数据来“学习”这种关联的数学工具。
丰富的应用案例
让我们通过一系列实例,具体感受机器学习如何解决实际问题。请注意,这些例子的重点在于理解“输入是什么,输出是什么”,暂时不关心“具体怎么做”。
案例一:跨媒体检索
- 问题:给定一段文字描述,找到与之相关的图片。
- 输入:一段自然语言文本(如“在草地上奔跑的金毛犬”)。
- 输出:一张或多张相关的图片。
- 本质:学习文本特征与图像特征之间的“潜在关系”。模型学好之后,输入新文本,即可输出匹配的图像。
这样,“文字找图片”就成了一个机器学习问题。
反过来说,不是所有问题都是机器学习问题。讲师举的反例:想让一颗导弹精确击中目标——它没有可学习的输入-输出对应关系,不完全是一个机器学习问题;研究小球落地的力学特性、设计新材料,这些属于经典物理与材料学的领地。判断标准很朴素:能不能整理出”输入→输出”的数据对,让模型从中学到映射。
另一个例子是 显著性检测(saliency detection):找到图像里人们最关注、最重要的区域(比如照片里的人物、蒲公英),把这部分勾勒出来——输入是图像,输出是”重要区域”,同样是机器学习问题。
案例二:医学图像分析(癌症诊断)
- 问题:给定一张病理切片图像,判断是否为恶性肿瘤。
- 输入:一张高分辨率的病理图片(包含细胞形态等信息)。
- 输出:一个分类标签,例如
0(良性)或1(恶性)。 - 背景:癌细胞也是细胞,只是它疯狂地增生,不断挤压正常细胞的生存空间。讲师补了一个判别细节:如果某个外来”坏细胞”的生存与凋亡速度跟体细胞一样,那它只是良性肿瘤,还算不上癌症——所以病理图片里有丝分裂的密度和形态,正是判断恶性肿瘤的关键证据。机器学习可以学习医生标注过的图片,自动完成这一分类任务。
案例三:音乐分类与方言识别
- 问题1(音乐流派分类):给定一段音频,判断其音乐流派(如流行、R&B、蓝调、乡村)。
- 输入:一段声音信号(音符序列的数字化表示)。
- 输出:一个代表音乐种类的离散标签(如1,2,3,4)。
- 问题2(方言识别):给定一段普通话语音,判断说话者的地域背景(如川普、广普)。
- 输入:一段语音信号。
- 输出:方言类别标签。
- 本质:两者都是分类问题,模型需要从声音信号中提取出能够区分不同类别(流派或方言)的特征。
案例四:情感分析与评分预测
- 问题1(情感二分类):给定一段商品或电影评论,判断用户情感是正面(喜欢)还是负面(不喜欢)。
- 输入:一段自然语言评论。
- 输出:
positive或negative。 - 问题2(评分预测):给定一段评论,预测用户会给出的星级(1-5星)。
- 输入:一段自然语言评论。
- 输出:一个1到5之间的整数。
- 本质:情感分析是二分类,评分预测是回归或有序多分类问题。模型学习从文字到情感强度或具体分值的映射。
顺带一提,垃圾邮件过滤也是同一形态的问题:输入是一封邮件的全部文字,输出是它属于垃圾邮件(spam)还是正常邮件(non-spam)的二分类——你邮箱里天天在跑的,就是一个机器学习模型。
案例五:时间序列预测(股票价格)
- 问题:根据股票过去一段时间的历史价格,预测其明天的价格。
- 输入:过去N天(例如10天)的价格序列,构成一个N维向量。
- 输出:一个连续值(预测的明日价格)。
- 关键技巧——滑动窗口(Sliding Window):如何从一长串连续数据中构造“输入-输出”对?讲师在课上用一段股价亲自演示:比如已知连续几天的价格 5.6、5.8、5.9、5.8、5.7、6.0……想学“前两天 → 第三天”的关系,就让一个固定长度的窗口在序列上滑动。
- 窗口1: 输入
[5.6, 5.8]-> 输出5.9 - 窗口2: 输入
[5.8, 5.9]-> 输出5.8 - 窗口3: 输入
[5.9, 5.8]-> 输出5.7 - …
- 窗口1: 输入
- 通过这种方式,一段历史数据就被转化为了一个标准的监督学习数据集。最后已知的是某两天的值(比如 13.7、13.9),模型就能预测下一天——股票、黄金、一般时间序列都可以这么做。
用代码复现讲师这个滑窗构造:
# 讲师课上的股价序列:5.6, 5.8, 5.9, 5.8, 5.7, 6.0
price_history = [5.6, 5.8, 5.9, 5.8, 5.7, 6.0]
def create_sliding_window(data, window_size=2):
"""
使用滑动窗口从时间序列构建监督学习样本。
data: 列表,时间序列数据。
window_size: 用前 window_size 个点预测下一个点。
返回: 输入序列列表 X,输出值列表 y。
"""
X, y = [], []
for i in range(len(data) - window_size):
X.append(data[i:i+window_size]) # 输入窗口
y.append(data[i+window_size]) # 输出目标
return X, y
X_train, y_train = create_sliding_window(price_history, window_size=2)
print("滑动窗口构建的训练样本:")
for i, (input_seq, target) in enumerate(zip(X_train, y_train)):
print(f"样本{i+1}: 输入 {input_seq} -> 输出 {target}")滑动窗口构建的训练样本:
样本1: 输入 [5.6, 5.8] -> 输出 5.9
样本2: 输入 [5.8, 5.9] -> 输出 5.8
样本3: 输入 [5.9, 5.8] -> 输出 5.7
样本4: 输入 [5.8, 5.7] -> 输出 6.0案例六:图像到图像的转换
- 问题:给定一张素描线稿,自动为其上色;或将白天的照片转换为夜景风格。
- 输入:一张图像(素描或白天照片)。
- 输出:一张对应的图像(上色图或夜景图)。
- 本质:学习两种图像风格或域(domain)之间的转换关系。训练数据是成对的(线稿-彩色图,白天-夜晚图)。讲师的具体玩法:给小黄人取出轮廓与配对的颜色做训练数据,之后输入小黄人轮廓就能自动上黄色;换成哆啦A梦的轮廓,出来的应该是蓝色而不是黄色——换个训练集,就换一种上色风格(日本漫画的不同画风同理)。
案例七:自动驾驶
- 问题:根据车辆传感器(摄像头、雷达、激光雷达等)的实时数据,控制车辆行驶。
- 输入:多模态的传感器数据流(可视为高维向量或序列)。
- 输出:控制指令,如方向盘转角、油门深度、刹车深度等具体数值。
- 场景细节:比如前方出现一条小狗——模型要根据它的距离,决定以多大的力度踩刹车,保证在小狗之前稳稳停下。看到什么、距离多少、对应动作是什么,全都是从数据里学出来的。
- 本质:学习从复杂环境感知到连续控制动作的映射,需要强大的模型学习海量人类驾驶数据。
讲师在这里插了个经典比喻:找男女朋友这件事,也没法写成 那样的简单方程——你只能拿”别人找到了什么样的女朋友”当训练数据(比如工作好、长得帅的男孩找到了漂亮女友,天天打游戏的没找到),再据此调整自己的行为;真要建模,可能是概率模型、决策树或神经网络,而不会是一个简单公式。所以他幽默地总结:自动驾驶并不比找男女朋友这件事简单——都是要用机器学习去啃的复杂关系。
案例八:游戏AI(AlphaGo)
- 问题:给定当前围棋棋盘状态,决定下一步落子位置。
- 输入:当前棋盘状态(19x19的网格,每个点代表黑子、白子或空)。
- 输出:一个在空位上下子的动作,或所有空位落子的概率分布,选择概率最高的一点。
- 本质:AlphaGo 结合了深度学习(用于评估盘面优劣和预测落子概率)和传统搜索算法(如蒙特卡洛树搜索)。其核心的落子策略网络,正是一个标准的机器学习模型:输入是棋盘图像,输出是动作概率。
为什么需要机器学习?
通过以上案例,我们可以总结出机器学习至关重要的原因:
- 世界是复杂的:许多我们关心的输入输出关系(如疾病与症状、广告与点击、环境与决策)无法用 这样简洁的物理定律描述。
- 数据是丰富的:我们正身处大数据时代,能够轻易收集到海量记录着这些复杂关系“痕迹”的数据。
- 关系是隐性的:我们明确知道数据中蕴含规律,却不知道规律的具体数学形式。
机器学习提供了从数据中自动发现、归纳和逼近这些复杂关系的统一框架。它不仅是实现人工智能的关键技术,也已成为科学研究(如生物信息学、天体物理学)和现代工业(如推荐系统、金融风控)不可或缺的基础工具。
📝 动手练一练
- 概念辨析:数据挖掘(Data Mining)和机器学习(Machine Learning)都处理数据,它们的核心侧重点有何不同?请结合讲师讲解进行说明。
👉 点击查看参考答案
数据挖掘更侧重于从海量数据中高效、可扩展地发现有用的知识或模式,它非常关心算法在实际大规模数据库中的运行效率和实用性。一个百分点精度的提升如果带来巨大的计算开销,在数据挖掘场景下可能是不被接受的。机器学习则更侧重于算法本身的学习能力和泛化性能。在机器学习研究中,即使一个复杂的算法只将准确率提升了一个百分点,只要这证明了其理论或模型架构的优越性,就被视为一种胜利。它更关注从数据中学习映射关系这个核心过程的优化。
- 代码实践:在时间序列预测的滑动窗口示例中,我们将窗口大小设置为2。请独立编写一个完整的代码块,将窗口大小改为3,重新构建训练样本,并打印结果。请确保你的代码块完全自包含(包括import和函数定义)。
👉 点击查看参考答案
# 沿用讲师课上的股价序列,改用窗口大小 3
price_history = [5.6, 5.8, 5.9, 5.8, 5.7, 6.0]
def create_sliding_window(data, window_size=3):
"""
使用滑动窗口从时间序列构建监督学习样本。
data: 列表,时间序列数据。
window_size: 用前 window_size 个点预测下一个点。
返回: 输入序列列表 X,输出值列表 y。
"""
X, y = [], []
for i in range(len(data) - window_size):
X.append(data[i:i+window_size]) # 输入窗口
y.append(data[i+window_size]) # 输出目标
return X, y
X_train_new, y_train_new = create_sliding_window(price_history, window_size=3)
print("滑动窗口大小调整为3后的训练样本:")
for i, (input_seq, target) in enumerate(zip(X_train_new, y_train_new)):
print(f"样本{i+1}: 输入 {input_seq} -> 输出 {target}")滑动窗口大小调整为3后的训练样本:
样本1: 输入 [5.6, 5.8, 5.9] -> 输出 5.8
样本2: 输入 [5.8, 5.9, 5.8] -> 输出 5.7
样本3: 输入 [5.9, 5.8, 5.7] -> 输出 6.0本章小结
本节我们拉开了机器学习的宏大序幕。我们明确了机器学习在人工智能知识图谱中的位置,并深入其核心哲学:从数据中学习输入与输出之间复杂的、非显式的函数映射关系。通过跨越医疗、金融、艺术、游戏、自动驾驶等领域的生动案例,我们直观地看到了这种思想如何被应用于解决现实世界中的难题。
📋 行动清单
学完本节,你可以立即:
- 尝试界定:观察身边的一个问题(例如,根据天气预报决定是否带伞),思考它的输入、输出分别是什么,能否构成一个机器学习问题。
- 回顾关系:口头复述机器学习与人工智能、深度学习、数据挖掘这几个概念之间的区别与联系。
- 理解核心:向他人用一句话解释:“机器学习到底是做什么的?”
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。
- 下载第3章课件:机器学习的哲学