机器学习基本概述
机器学习本质与定义
本质:通过大量数据训练,让计算机自动发现数据中的规律,学习到一个函数(模型)。
示例:
-
语音识别:识别一段音频信号对应的文本内容。
-
图像识别:输入一张数字图片(如手写的数字"7"的像素矩阵),输出图片中物体的类别(“7”)。
机器学习的分类
分类(classification)
定义:给定一些预定义的类别(class)和待分类的样本,输出样本所属的类别(离散的类别标签,而非连续的数值)。
示例:
-
垃圾邮件分类(二分类):根据一封邮件的内容,判断邮件类别(是否为垃圾邮件)。
-
手写数字识别(多分类):根据一张手写数字的图片,判断数字类别(0, 1, 2, …, 9)。
回归(regression)
定义:函数输出一个连续的数值(标量或向量)。
示例:
-
空气质量预测:根据今天中午的PM2.5浓度(50 μg/m³)、气温(25°C)、O₃浓度(80 μg/m³),预测明天中午的PM2.5浓度预测值(如45 μg/m³)
-
房价预测:根据房屋特征(面积、位置、楼层),预测房屋价格预测值
结构化学习(structured learning)
定义:产生一个结构化的物体,比如画一张图片、写一篇文档。
示例:根据文本描述生成图像,输入一段文字描述,输出对应的图片。
机器学习流程 – 以 youtube 视频的观看量为例
下面以 youtube 视频的观看量预测为研究场景,探究机器学习中的函数(模型)、损失函数的定义,以及问题求解的一般过程。
问题描述:在 youtube 平台中,根据视频的各种特征(标题长度、发布时间、视频时长、前一天的观看量等),预测发布后某一天的观看量预测值。
模型定义与设计
建立数学模型
假设观察到视频观看量的某种规律,比如:前一天观看量高的视频,第二天观看量也可能较高,也就是前一天视频观看量与第二天的视频观看量有一定相关性。
基于此,设计一个简单线性模型:y=b+wx1y = b + wx_1y=b+wx1
上式中,yyy 表示要预测的第二天的视频观看量;x1x_1x1 表示前一天的视频观看量;www 为权重,表示前一天观看量对第二天观看量的影响程度;bbb 为偏置,表示基础观看量。其中,权重(weight)www 控制特征对预测结果的影响程度,为正数表示为正相关,反之为负相关,绝对值越大影响越强。
需要注意的是,模型(函数)的设计需要结合领域知识(domain knowledge)。比如:视频观看量通常不会为负数,所以模型应该保证输出为正;观看量可能存在周期性(工作日vs周末)。
损失函数设计
损失函数(loss):关于未知量 www、bbb 的函数 L(w,b)L(w, b)L(w,b),由一组 www、bbb 估测的 y^\hat{y}y^ 和真实值 yyy 的差距 eee 累计计算得到损失值。
计算预估值 y^\hat{y}y^ 和真实值 yyy 的差距有如下几种方式:
- 平均绝对误差(Mean Absolute Error, MAE):e1=∣y−y^∣e_1 = |y-\hat{y}|e1=∣y−y^∣,适用于回归问题
- 均方误差(Mean Squared Error, MSE):e2=(y−y^)2e_2 = (y-\hat{y})^2e2=(y−y^)2,适用于回归问题,对大误差更敏感
- 交叉熵损失(Cross Entropy):e3=−∑i=1Cyilog(y^i)e_3 = -\sum_{i=1}^{C} y_i \log(\hat{y}_i)e3=−∑i=1Cyilog(y^i),其中 CCC 是类别数,适用于多分类问题。在多分类中,yiy_iyi 是真实标签(只有一个位置为1,其余为0),y^i\hat{y}_iy^i 是模型预测的第i个类别的概率。求和操作计算所有类别的交叉熵并求和,得到最终的损失值。
累计方式:L=1N∑nenL = \frac{1}{N} \sum_{n} e_nL=N1∑nen。其中,NNN 表示训练数据的个数,ene_nen 表示第 n 个样本的损失值。
以不同的参数计算损失值,画出的等损失线图称为误差表面(error surface),可以直观看出参数取值与损失值的关系。

上图中,横轴为参数 www 的取值,纵轴为参数 bbb 的取值,横纵轴交叉点为损失值,将相同损失值对应的 (w,b)(w, b)(w,b) 用线连接就得到等损失线。
优化求解
找出一组使得损失最小的 www 和 bbb。具体优化的步骤如下:
随机初始化
初始化参数分别为:w0w^0w0、b0b^0b0
参数更新
w1=w0−η∂L∂w∣w=w0w^1 = w^0 - \eta \frac{\partial L}{\partial w} |_{w=w^0}w1=w0−η∂w∂L∣w=w0
b1=b0−η∂L∂b∣b=b0b^1 = b^0 - \eta \frac{\partial L}{\partial b} |_{b=b^0}b1=b0−η∂b∂L∣b=b0
上式中,η\etaη 为学习率(learning rate),取正值。如果 η\etaη 越大,那么参数更新量会更大,学习更快,反之则变化小。这一参数需要自己设定,不由机器学习,称为超参数(hyperparameter)。
LLL 关于参数 www 的梯度(∂L∂w\frac{\partial L}{\partial w}∂w∂L)指向函数值(损失)增加最快的方向,为了使损失变小,所以增加负号,选择最小化损失的方向
终止条件:
- 设定最大迭代次数(如1000次)
- 梯度接近0(如 ∣∂L∂w∣<0.001|\frac{\partial L}{\partial w}| < 0.001∣∂w∂L∣<0.001)
- 损失值不再明显下降
优化过程可视化 – 以单参数模型为例
下面以一个参数 www 来讨论优化过程。
首先,初始化参数 w=w0w=w^0w=w0,然后更新 w1=w0−η∂L∂w∣w=w0w^1 = w^0-\eta \frac{\partial L}{\partial w} |_{w=w^0}w1=w0−η∂w∂L∣w=w0,其中 ∂L∂w∣w=w0\frac{\partial L}{\partial w} |_{w=w^0}∂w∂L∣w=w0 在几何上可以理解为损失 LLL 在 w0w^0w0 处的斜率,如果这一数值为负,那么增大 www 就可以实现减小损失,如果这一数值为正,那么减小 www 就能减小损失。

上图损失函数有一段为负值。一般来说,损失是估计值和真实值的绝对值差距,不可能为负数,如果人工定义时为绝对值减去某个数值,那么就可能为负数。
基于梯度下降的优化方法,可能会遇到局部最小值(local minima)问题,也就是陷入一个局部最优中,无法找到全局最小值(global minima),但是在做梯度下降时,真正面对的问题不是局部最小值(待完善)。
优化过程可视化 – 在二维坐标系中的理解
想象一个二维坐标系,横轴是参数 w,纵轴是参数 b。对于每一对 (w, b),都可以计算出一个损失值 L。我们可以把损失值 L 想象成这个二维平面上的“海拔高度”。这样就形成了一个三维的“山谷”地形,也就是上文中提到的误差表面(error surface)。我们的目标是走到“山谷”的最低点。
梯度下降的过程如下:
- 随机选点:我们随机选择一个出发点 (w0,b0)(w^0, b^0)(w0,b0)。
- 计算梯度:在 (w0,b0)(w^0, b^0)(w0,b0) 这个点,我们计算出梯度 (∂L∂w,∂L∂b)(\frac{∂L}{∂w}, \frac{∂L}{∂b})(∂w∂L,∂b∂L)。这个梯度向量指向该点最陡峭的上坡方向。
- 反向移动:我们将当前位置 (w0,b0)(w^0, b^0)(w0,b0) 沿着梯度的相反方向移动一小步(步长由
η控制),到达新的点 (w1,b1)(w^1, b^1)(w1,b1)。- w1=w0−η∗(∂L∂w)w^1 = w^0 - η * (\frac{∂L}{∂w})w1=w0−η∗(∂w∂L)
- b1=b0−η∗(∂L∂b)b^1 = b^0 - η * (\frac{∂L}{∂b})b1=b0−η∗(∂b∂L)
- 重复:在新的点 (w1,b1)(w^1, b^1)(w1,b1) 重复第 2 和第 3 步,一步步地走向“山谷”的更深处,直到我们到达一个局部或全局的最低点(此时梯度接近于零,参数不再更新)。
参考资料:
- 深度学习 李宏毅
- 《深度学习详解》
机器学习核心概念与流程解析
1841

被折叠的 条评论
为什么被折叠?



