LOG: mingzailao.live
随着ChatGPT 这样的大语言模型的大火, 笔者想在这里在继续谈一谈机器学习的必要性, 对于初学者而言,了解机器学习对于底层上去理解以及入门深度学习会有一定的帮助.
什么是机器学习
机器学习是人工智能的一个分支。人工智能的研究历史有着一条从以“推理”为重点,到以“知识”为重点,再到以“学习”为重点的自然、清晰的脉络。显然,机器学习是实现人工智能的一个途径之一,即以机器学习为手段,解决人工智能中的部分问题。机器学习在近30多年已发展为一门多领域科际集成,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。
机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法(要防止错误累积)。很多推论问题属于非程序化決策,所以部分的机器学习研究是开发容易处理的近似算法。
机器学习已广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、检测信用卡欺诈、证券市场分析、DNA序列测序、语音和手写识别、游戏和机器人等领域。
(Wiki)
机器学习的目的是给定一些经验($D\sim\mathcal{D}$),能够根据这些经验归纳出其中的规律($f$), 可以分为:机器学习的目的是给定一些经验($\mathcal{D}$),能够根据这些经验归纳出其中的规律($f$), 可以分为:
- 监督学习: $\boldsymbol{supp}(\mathcal{D}) = \{\mathcal{X},\mathcal{Y}\}$
- $\mathcal{Y}$ 离散的(支撑集可数) : 统计分类
- $\mathcal{Y}$ 连续的(支撑集不可数) : 回归分析
- 无监督学习 : $\boldsymbol{supp}(\mathcal{D}) = \{\mathcal{X}\}$
- 半监督学习 : $\boldsymbol{supp}(\mathcal{D}) = \{\mathcal{X},\mathcal{Y}\}\cup\mathcal{D} = \{\mathcal{X}\}$
- 增强学习 : 机器为了达成目标,随着环境的变动,而逐步调整其行为,并评估每一个行动之后所到的回馈是正向的或负向的.
作为机器学习中最重要的一个类别, 监督学习在应该就是整个机器学习的最底下的基石了.我们用监督学习为例给出一些记号:
- 输入空间(input space): $\mathcal{X}\subset \mathbb{R}^m$
- 输出空间(output space) : $\mathcal{Y}\subset \mathbb{R}^n$ 1
- 输入的随机变量 $X$ 和输出的随机变量 $Y$ 服从联合概率分布 $P(X,Y)$, 这个联合概率分布就是我们之前提到的$\mathcal{D}$,它的支撑集$supp(P) =\mathcal{X}\times \mathcal{Y}$ 是 $\mathbb{R}^m\times \mathbb{R}^n$ 上面的一个流形.
- 训练数据集 $T = \{(x_{i},y_i)\}_{i=1}^{N}$
作为监督学习,首先我们需要思考这样一个问题:
如果 $$P(X=x,Y=y) = P(X=x)\cdot P(Y=y)$$, 也就是X 和 Y 这两个随机变量是独立的, 也就是说Y 和X 没有概率关联, 那么这个问题的研究本身就是没有意义的.比如你要投掷两枚骰子,希望通过其中一枚的状态去预测另外一枚骰子的状态,这本身就是一件荒谬的事情.
那也就是说, 对于我们要学习的问题来说,输入的随机变量和输出的随机变量必须是由概率关联的.
机器学习的三要素: 模型,策略,算法
模型的两种描述
因为我们需要学习的是输入空间到输出空间的一个关系,这个关系用模型去描述
- 条件概率分布: $P(Y|X)$ (概率模型) : 对应的Hypothesis space 是 $\mathcal{F} = \{P|P(Y|X)\}$, 参数化条件分布族 $\mathcal{F} = \{P|P_{\theta}(Y|X,\theta\in \mathbb{R}^d)\}$
- 决策函数 : $y=f(x)$ (非概率模型) : 对应的Hypothesis space 是 $\mathcal{F} = \{f|Y = f(X)\}$,参数化函数族 $\mathcal{F} = \{f|Y = f_{\theta}(X),\theta\in \mathbb{R}^d\}$
策略
如何选择最优的模型,或者按照什么策略去选择呢,这就涉及到我们的损失函数了.
- Loss
- $0-1$ Loss $$L(Y, f(X))= \begin{cases}1, & Y \neq f(X) \\ 0, & Y=f(X)\end{cases}$$
- Quadratic Loss $$L(Y, f(X))=(Y-f(X))^2$$
- Absolute Loss $$L(Y, f(X))=|Y-f(X)|$$
- Logarithmic Loss $$L(Y, P(Y \mid X))=-\log P(Y \mid X)$$
- 损失函数的期望(expected loss)
$$R_{\text {exp }}(f)=E_P[L(Y, f(X))]=\int_{x \times y} L(y, f(x)) P(x, y) \mathrm{d} x \mathrm{~d} y$$
但是expected loss 不能直接计算,智能计算经验风险 empirical loss
$$R_{\text {emp }}(f)=\frac{1}{N} \sum_{i=1}^N L\left(y_i, f\left(x_i\right)\right)$$
根据大数定理我们可以知道当样本数量足够多的时候, empirical loss趋于expected loss.
- ERM (empirical risk minimization) 和 SRM(structural risk minimization)是最终的优化目标
- ERM $$R_{\text {emp }}(f)=\frac{1}{N} \sum_{i=1}^N L\left(y_i, f\left(x_i\right)\right)$$
- SRM $$R_{\text {emp }}(f)=\frac{1}{N} \sum_{i=1}^N L\left(y_i, f\left(x_i\right)\right)+\lambda J(f)$$
算法
对于不同的模型应该选择不同的合适的计算方法, 对于有的模型我们可以直接求的解析解,对于有的模型我们可以通过数值的方法求到数值解.
泛化
在这里, 笔者认为现在的深度学习最需要思考的一个问题就是方法的泛化能力, 一个学习方法的泛化能力(generalization ability) 指的是改方法学习到的模型对未知数据的预测能力, 而泛化能力通常用泛化误差去刻画
If the best model we learn is $\hat{f}$, 那么这个模型对于未知数据预测的误差就是泛化误差
$$R_{\exp }(\hat{f})=E_P[L(Y, \hat{f}(X))]=\int_{x \times y} L(y, \hat{f}(x)) P(x, y) \mathrm{d} x \mathrm{~d} y$$
泛化误差上界
我们可以用二分类问题为例给出泛化误差上界
对于二分类问题, 当假设空间是有限个函数的集合$\mathcal{F}=\left\{f_1, f_2, \cdots, f_d\right\}$,对于 $\forall f\in \mathcal{F}$, 至少以概率$1-\delta$ $$R(f) \leqslant R_{\text{emp}}(f)+\varepsilon(d, N, \delta)$$ 其中 $$\varepsilon(d, N, \delta)=\sqrt{\frac{1}{2 N}\left(\log d+\log \frac{1}{\delta}\right)}$$
Footnotes:
一般来说, m>n