什么是机器学习?
“机器学习算法通过搜索一组 可能的模型 来选择最能捕捉 数据集中描述性特征 和 目标特征 之间关系的模型(这只是故事的一部分,而现在已经有丰富的理论可以充分解释它)”
什么是学习?
“一个 被称为 从经验 E E E 中 学习关于 某类任务 T T T 和 性能度量 P P P,如果它在 T T T 中由 P P P 度量的任务的性能随着经验而提高 的计算机程序”
机器学习感兴趣的任务: “很难用 人类编写和设计的固定程序 解决的任务”
注: 学习的过程不是任务,学习只是获得执行任务能力的一种手段。
根据机器学习系统应如何处理 示例描述 的任务。
示例 (example) 是从机器学习系统将处理的某些对象或事件中 定量测量(quantitatively measure) 的特征集合 (collection of features)。
任务需要 指定某些输入 属于 k 个类别中的哪一个。
从数据中学习以下形式的函数:
f : R n → { 1 , . . . , k } f: \R^n \to \{1, ..., k\} f:Rn→{1,...,k}
y = f ( x ) y=f(x) y=f(x) 将分配一个类别 y y y 给 特征 x x x。
函数应也能输出一个类别的概率分布 (probability dirstribution)。
根据给定的输入 预测 数值输出。
从数据中学习以下形式的函数:
f : R n → R f: \R^n \to \R f:Rn→R
和分类任务不同,分类任务要求输出 是 分类数据类型。
需要观察某种数据的 相对非结构化的表示 (relatively unstructured representation) 并将其转录成离散的文本形式 (discrete textual form)
从数据中学习以下形式的函数:
f : R n → A k ( m ) f: \R^n \to \mathbb{A}^{k(m)} f:Rn→Ak(m)
其中 A \mathbb{A} A 是一些语言字母,如英文等, k ( m ) k(m) k(m) 是一些可变数字,表示 字母表的可变长度并取决于应用程序,其中语音识别就是一个例子。
需要将某种语言的符号(或字母)序列转换为另一种语言的符号(字母)序列。
从数据中学习以下形式的函数:
f : A x k ( n ) → A y k ( m ) f: \mathbb{A}^{k(n)}_x \to \mathbb{A}^{k(m)}_y f:Axk(n)→Ayk(m)
其中 A x \mathbb{A}_x Ax 是源语言字母表 (如英语或普通话), k ( m ) k(m) k(m)是一些可变数字,其代表了字母表的可变长度, A y \mathbb{A}_y Ay 是 目标语言字母表 (如德语,法语等)。
此类任务包括转录和翻译
需要将输入转换为 能建模成数据结构 的输出,该数据结构包含 元素之间具有重要关系 的多个值
示例包括 提供 给定图片 或 给定视频中 正在执行的活动的文本描述。
需要筛选一组事件或对象,并将其中一些标记为不寻常或非典型 (unusal or atypical)。
异常对象属于 与其他事件或对象 非常不同的概率分布。
如何估计分布以及如何测量分布之间的距离?
需要生成与 训练数据中的示例 相似的 新示例。
尽可能地让所需的输出具有指定的边界结构 (specific structure with bound)。
示例:从各种口音的书面文本中合成语音。
挑战: 给定一个嫌疑人的描述,是否能让机器生成此人的画像?
应用: 生成对抗网络 (Generative Adversarial Network - GAN)
此任务要求在给定的示例中,提供缺失项的预测,其中 x ∈ R n x \in \R^n x∈Rn
该任务要求从 损坏带噪 的版本 x ‾ \overline{x} x 预测 干净无噪声 的示例 x x x
这与预测条件概率分布 p ( x ∣ x ‾ ) p(x|\overline{x}) p(x∣x) 相同。
要求学习函数:
p m o d e l : R n → R p_{model}: \R^n \to \R pmodel:Rn→R
其中 p m o d e l p_{model} pmodel 是提取示例的空间中的 概率密度函数 或者 概率质量函数。
许多机器学习任务要求概率密度的估计。
我们需要使用性能的量化方式 (quantitative measures) 来评估机器学习算法的能力。
性能的衡量方式基于不同任务,如:
必须选择能够匹配系统的期望行为 的性能度量。
机器学习算法所接触的经验可以是 有监督的,也可以是无监督的。
我们可以设计矩阵,使得 X ∈ R N × P X \in \R^{N × P} X∈RN×P
其代表了 拥有 P P P 个特征的 N N N 个示例 (或观察或样本)。
其第 i i i 个特征向量的表示如下:
其中 x i x_i xi 是被测量的特征值。
在示例中的 特征数量不相等 的情况下,也可以使用集合:
{ x ( 1 ) , x ( 2 ) , . . . , x ( m ) } \{x^{(1)}, x^{(2)}, ..., x^{(m)} \} {x(1),x(2),...,x(m)}
以上代表了拥有 m m m 个元素的集合,且其中元素的特征并不是数量一致的。
线性回归: 构建一个能输入向量 x ∈ R P x \in \R^P x∈RP 并 预测标量 y ∈ R y \in \ R y∈ R 的值 的系统。
线性回归模型的输出是输入的线性函数。
其中 ω ∈ R P \omega \in \R^P ω∈RP 是参数的向量,他们决定了每个特征如何影响最终的预测,因此任务就变成了通过计算式子右侧来 预测 左边的值。
我们如何衡量性能 P P P ?
在回归问题中,我们将拥有以矩阵 X X X 代表的数据集。数据集被分成两部分,测试集 X ( t e s t ) X^{(test)} X(test) 和训练集 X t r a i n i n g X^{training} Xtraining。我们从 X t r a i n i n g X^{training} Xtraining中学习出模型,并在 X t e s t X^{test} Xtest 中测试性能。
在例子中,我们使用 均方误差 (mean squared error) 作为性能衡量。
训练的过程包含了寻找能够使 M S E t r a i n i n g MSE_{training} MSEtraining 最小 的 权重向量(weight vector) ω \omega ω
微分 (differentiating) 并等于0能得到:
泛化性 (Generalization) 是机器学习的关键。经过训练的算法 应该能在 新的 和 之前未见过的输入 表现良好。
我们进行优化以减少训练误差,但我们 也希望 泛化误差 generalization error(测试误差 test error)低。因为这也是 对于新输入 的预期错误。
重要提示:期望 是从 我们期望系统在实践中遇到的输入分布 中得出的 不同可能输入中 得出的。
因为 假设 “由数据生成过程 (data generating process) 生成的独立且同分布的随机变量 (i.i.d - independent and identically distributed random variates)” 的存在, 因此上述是可能的。
决定 机器学习算法能表现如何的 因素是其能够:
欠拟合 (Underfitting): 模型无法在训练集上获得足够小的训练误差。
过拟合 (Overfitting): 训练集和测试集误差之间的差距过大。
容量 (Capacity):模型拟合各种函数的能力。容量低的模型可能很难拟合数据集。例如我们用一个一次函数做线性回归,很显然,复杂分布下的数据就难以表示了。但容量高的模型则可能会导致过拟合。
通过 改变容量 或 增加训练样本的数量 来控制 欠拟合和过拟合
从示例数据中训练的学习算法的三种权衡:
三个模型适用于通过 随机采样 x x x 生成的 合成数据 (synthetic data) 示例,并从二次方程计算 y y y 的相应值。
首先进行一些定义:
学习问题:
学习者考虑一组 固定可能概念 H H H,被称为 假设集 (hypothesis set),其与 C C C 不一致。他接收到一组根据分布 D D D 通过 i.i.d 抽取的 样本 S = { x 1 , . . . , x m } S=\{x_1, ..., x_m\} S={x1,...,xm} 和 标签 ( c ( x 1 ) , . . . c ( x m ) ) (c(x_1), ... c(x_m)) (c(x1),...c(xm)),其是基于某个特定目标概念 c ∈ C c \in C c∈C 来学习的。学习者的任务是使用 带标签的样本 S S S 来选择一个 对于概念 c c c 拥有最小泛化误差的假设 h s ∈ H h_s \in H hs∈H。
泛化误差 (generalization error):
给定一个假设 h ∈ H h \in H h∈H,一个目标概念 c ∈ C c \in C c∈C,以及一个潜在的分布 D D D, h h h 的泛化误差或风险被定义为:
其中, 1 ω 1_\omega 1ω 是事件 ω \omega ω 的指示函数。而 E x ∼ D \mathop{E}\limits_{x \sim D} x∼DE 是从 分布 D D D 中得出的对 x x x 的期望。
但由于 分布 D D D 和 概念 c c c 对于学习者都不可知,因此我们可以不衡量泛化误差,转而衡量经验误差。
经验误差 (Empirical error)
给定一个假设 h ∈ H h \in H h∈H,一个目标概念 c ∈ C c \in C c∈C,以及样本 S = ( x 1 , . . . , x m ) S = (x_1, ..., x_m) S=(x1,...,xm),则 h h h 的经验误差或风险被定义为:
经验误差是在样本 S S S 中的平均误差。
对于一个固定假设 h ∈ H h \in H h∈H,基于 i.i.d 样本 S S S 的经验误差的期望等于泛化误差:
PAC 学习框架提供了对训练样本大小 m m m, 训练与真实错误之间的差距, 假设空间 H H H 的复杂性以及我们对这种关系的置信度(至少 1 − δ 1 - δ 1−δ)的理论限制。
PAC 即 Probably Approximately Correct,也就是 可能大概正确。
PAC学习框架:
若存在一个算法 A A A 以及一个多项式函数 p o l y ( , , , , ) poly(, , , ,) poly(,,,,) 使得任意 ϵ > 0 \epsilon \gt 0 ϵ>0 以及 δ > 0 \delta \gt 0 δ>0,且对于所有在 X X X 上的分布 D D D 以及对于任意 目标概念 c ∈ C c \in C c∈C,下式在任意 样本大小 m ≥ p o l y ( 1 / ϵ , 1 / δ , n , s i z e ( c ) ) m \ge poly(1/\epsilon, 1/\delta, n, size(c)) m≥poly(1/ϵ,1/δ,n,size(c)) 时满足,则一个 概念类 C C C 可以被称为 PAC可学习 (PAC-learnable)。:
若算法 A A A 之后在 p o l y ( 1 / ϵ , 1 / δ , n , s i z e ( c ) ) poly(1/\epsilon, 1/\delta, n, size(c)) poly(1/ϵ,1/δ,n,size(c)) 的复杂度中运行,则 C C C 被认为是高效PAC可学习的 (efficiently PAC-learnable)。算法 A A A (若存在) 则被称为一个 C C C 的 PAC学习算法。
在上面的定义中, n n n 与任何元素 x ∈ X x ∈ X x∈X 的计算表示的成本上限 ( O ( n ) O(n) O(n)) 相关联。 同样, s i z e ( c ) size(c) size(c) 是 c ∈ C c ∈ C c∈C 的计算表示的最大成本。