机器学习基石笔记1
lecture 1: The Learning Problem
1. 机器学习是什么
通过对数据的经验计算(experience computed),提升性能度量
3个关键性质
a) 存在一种可以学习的潜在的模式(underlying pattern)
b) 没有明确的可编程的定义
c) 存在和模式相关的数据
2. 机器学习的应用
- 教育
- 推荐系统
- etc.
3. 机器学习的元素
4. 机器学习和其他领域的关系
领域 | 描述 |
---|---|
机器学习 | 使用数据计算假设g,以此估计目标函数f |
数据挖掘 | 使用大数据,发现有趣的特性 |
人工智能 | 计算得到一个具有智能行为的结果 |
统计学 | 使用数据从一个未知的分布得出推论 |
lecture 2: Learning to Answer Yes/No
1. 感知机假设集(hypothesis set)
定义
对于特征 $\textbf{x}=(x_1, x_2, ..., x_d)$,计算每一个特征的权重值,当
$\sum_{i=1}^dw_ix_i > threshold$,$y=1$
$\sum_{i=1}^dw_ix_i < threshold$,$y=-1$
可以将感知机理解为线性(二元)分类器
线性形式公式
$h(\textbf{x}) = sign\Big(\big(\sum_{i=1}^d w_i x_i\big) - threshold\Big) $
向量形式公式
2. 感知机学习 (PLA)
目标:需要一个g,用来估计目标函数f ($g \approx f$)
必要条件:$g \approx f on D$,理想情况是$g(x_n) = f(x_n) = y_n$
难点:$H$无穷大
思路:从某个 $g_0$ 开始,然后通过数据集 $D$ 纠正它的错误
tips: 之后会用权重向量 $\textbf{W}_0$ 代替 $g_o$
感知机算法
For t = 0, 1...
1) 找到下一个(Next) $\textbf{w}t$的错误,标记为$(\textbf{x}{n(t)}, y_{n(t)})$
$$sign\big( \textbf{w}t^T \textbf{x}{n(t)} \big) \neq y_{n(t)}$$
2) 尝试通过更新$\textbf{w}t$的值来更正分类错误:
$$ \textbf{w}{t+1} \leftarrow \textbf{w}t + y{n(t)} \textbf{x}{n(t)} $$
直到不再有错误出现,返回最后的$\textbf{w}$ (称之为 $\textbf{w}{PLA} $ )作为函数g
PLA的实现
1) 找到一个$\textbf{w}t$的错误,标记为$(\textbf{x}{n(t)}, y_{n(t)})$
$$sign\big( \textbf{w}t^T \textbf{x}{n(t)} \big) \neq y_{n(t)}$$
2) 通过更新$\textbf{w}t$的值来更正分类错误:
$$ \textbf{w}{t+1} \leftarrow \textbf{w}t + y{n(t)} \textbf{x}{n(t)} $$
直到遍历数据集时不再有分类错误,则返回最后的$\textbf{w}$ (称之为 $\textbf{w}{PLA} $ )作为函数g
tips: 取下一个样本的操作可以用常规遍历(naive cycle(1, 2, ..., N)),或者预先计算好的随机排序
3. Guarantee of PLA
线性可分
如果PLA终止了且不再有分类错误,那么存在w能够线性划分数据集D而没有分类错误,那么这样的数据集D是线性可分的
PLA Fact
- **$\textbf{w}_t$在更新后与$\textbf{w}_f$更加接近(aligned with)**
- $\textbf{w}_t$不会增长得过快
从$\textbf{w}_o = 0$开始,经过了T次的更新以后:
$$ \frac{\textbf{w}_f^T}{\lVert \textbf{w}_f \lVert} \frac{\textbf{w}_t}{\lVert \textbf{w}_t \lVert} \ge \sqrt{T} · constant$$
$constant = \displaystyle\frac{\rho}{R}$,其中$\rho = min y_n\frac{\textbf{w}_f^T}{\lVert \textbf{w}_f \lVert} \textbf{x}_n$,$R = max \lVert \textbf{x}_n \lVert^2$
向量标准化后,其乘积会小于等于1,且在更新了T次后,有下界存在。
4. 更多关于PLA的知识
PLA
只要数据集线性可分,并且通过分类错误更新w,那么
- $\textbf{w}_f$和$\textbf{w}_t$的内积会增长很快,而$\textbf{w}_t$的长度则增长缓慢
- PLA的分类边界(PLA "lines")越来越接近$\textbf{w}_f$,并最终停止更新(halt)
优点
易于实现,速度快,能在任意的维度下工作
缺点
- 预设数据集是线性可分的,但该特性是事先不知道的(如果知道了,就不需要 PLA了=。=)
- 不能完全确定迭代步数($\rho$取决于$\textbf{w}_f$)
- 尽管实际上会很快
非线性可分
调整PLA方法,以得到一个足够好的g
Pocket算法
初始化pocket 权重为$\hat{\textbf{w}}$
1) 找到一个(随机的)$\textbf{w}t$的错误,标记为$(\textbf{x}{n(t)}, y_{n(t)})$
$$sign\big( \textbf{w}t^T \textbf{x}{n(t)} \big) \neq y_{n(t)}$$
2) 尝试通过更新$\textbf{w}t$的值来更正分类错误:
$$ \textbf{w}{t+1} \leftarrow \textbf{w}t + y{n(t)} \textbf{x}{n(t)} $$
3) 如果$\textbf{w}{t+1}$的分类错误比$\hat{\textbf{w}}$少,则将$\hat{\textbf{w}}$更新为$\textbf{w}{t+1}$,直到足够的迭代次数,返回最后的$\hat{\textbf{w}}$ (称之为 $\textbf{w}{pocket} $ )作为函数g
lecture 3: Types of Learning
1. 不同输出空间Y下的学习
多元分类
- 硬币识别问题(识别不同面额的硬币)
- 图像分类 $\Rightarrow$ 苹果,橙子,草莓……
- 邮件分类 $\Rightarrow$ 垃圾,重要邮件,社交,推销,更新……
回归
- 病症恢复时间预测
- 公司数据 --> 股价
- 气象数据 --> 温度
结构学习
- 词性标注
- 大量的目标分类,而没有明确定义的分类信息
- 蛋白质数据 --> 蛋白质折叠
- 语音数据 --> 语音解析树
Mini Summary
2. 不同数据标记的学习
监督学习
- 硬币分类
监督学习:每个$\textbf{x}_n$都有对应的$\textbf{y}_n$
非监督学习
- 聚类:${\textbf{x}_n} \Rightarrow cluster(\textbf{x})$
($\approx$ "非监督 多分类 分类任务")
- i.e. 文本主题分类
- 密度评估:${\textbf{x}_n} \Rightarrow density(\textbf{x})$
($\approx$ "非监督 有界的(bounded) 回归任务")
- i.e. 基于位置的交通情况报告 --> 危险区域
- 离群点检测:${\textbf{x}_n} \Rightarrow unusual(\textbf{x})$
- i.e. 网络日志 --> 入侵警告
非监督学习:多样的,可能有各种不同的目标$
半监督学习 (semi-supervised)
- 只有一部分标记的面部识别问题 --> face identifier (Facebook)
- 只有一部分标记的医学问题 --> 医疗效果预测
半监督学习:当获取全部label的代价高昂时,利用未标记数据学习的方法
强化学习
利用 $(\textbf{x}, \tilde{y}, goodness)$ 信息学习的方法
- (customer, ad choice, ad click earning) ? ad system
- (cards, strategy, winning amount) ? black jack agent
强化学习:利用部分的/ 不明确的信息(通常是顺序的(sequentially))学习 $
Mini Summary
3. 不同学习思路下的学习 $f \Rightarrow (\textbf{x}_n, y_n)$
tips: 课件中用的是protocol (Protocol $\leftrightarrow$ Learning Philosophy)
Mini Summary
4. 不同输入X下的学习
具体特征 (concrete feature)
X每一个维度都有复杂的物理意义,但对于机器学习而言,这类特征更易学习
- 硬币分类中的硬币大小
- 信用卡申请任务中的客户信息
- 癌症诊断中病患信息
- 通常在学习任务中包含了“人类智慧”(human intelligence)
原始特征 (raw feature)
通常需要手动或自动的转换为具体的特征
- 手写体识别中的图像像素信息
- 语音信号数据
抽象特征 (abstract feature)
通常需要特征提取、特征转换
- 在线教育系统中的学生ID
- 广告系统中的广告ID
Mini Summary
lecture 4: Feasibility of Learning
1. 学习是不可能的吗?
从A learning Puzzle 和 No Free lunch 开始
因为对target function 一无所知,所以有可能假设得到的结果完全不对,即训练误差很小,但泛化误差特别大的情况,这种情况相当于无法学习
2. Probability to Rescue
以从弹珠罐子中(罐子中只有橙色和绿色弹珠)抽样为例,$\mu$表示罐子中橙色占总体的比例,$\nu$表示样本中橙色的比例。
那么能通过$\nu$来推断$\mu$吗
No: 抽样的结果(弹珠比例)可能和总体完全不同!
Yes: 已知$\nu$有可能很接近未知的$\mu$
霍夫丁不等式 (Hoeffding‘s Inequality)
在一个大的样本中(样本容量为N),$\nu$近似于$\mu$(差异用$\epsilon$表示),且
$$ \mathbb{P}[|\nu - \mu| > \epsilon] \le 2 exp\big(-2\epsilon^2N\big)
$$
称之为霍夫丁不等式,
$\nu = \mu$的假设是概率近似正确(PAC:probably approximately correct)的。
霍夫丁不等式的说明
- 对于所有的N和$\epsilon$都是有效的
- 不依赖于$\mu$,即不需要知道$\mu$具体是多少
- 更大的样本容量N或者更宽松的gap $\epsilon$ 能得到更高的概率使得 $\nu \approx \mu$
霍夫丁不等式告诉我们,当N足够大时,就能通过$\nu$来推断 $\mu$
3. 推广到学习问题
问题描述: 大的训练样本,有一定概率能够通过已知的$\mathbb{P}[h(\textbf{x}_n) \ne y_n]$推断未知的$\mathbb{P}[h(\textbf{x} \ne y_n)]$
对于一个特定的(fixed)h,在样本很大的时候,样本内误差 $E_{in}(h)$ 有可能很接近 $泛化误差E_{out}(h)$ (差别不大于$\epsilon$),即:
$$ \mathbb{p}[| E_{in}(h) - E_{out}(h) | > \epsilon ] \le 2 exp\big(-2 \epsilon^2 N \big) $$
类似于从罐子里抽取弹珠的例子:
- 对所有的 N 和 $\epsilon$
- 不依赖于 $E_{out}(h)$,且不需要知道 $E_{out}(h)$
— f 和 P(目标函数产生的数据分布)可以是未知的
- $E_{in}(h) = E_{out}(h)$ 是PAC,概率近似正确的
结论:如果 $E_{in}(h) \approx E_{out}(h)$ 并且 $E_{in}(h)$足够小 $\Longrightarrow$ $E_(out)(h)$足够小 $\Longrightarrow$ 在数据分布为P的时候,$h \approx f$
那么现在可以学习了吗
Yes: 如果特定的h对应的$E_{in}(h)$很小并且学习算法能够选到那个h $\Longrightarrow$ $g = f$是PAC的
No: 如果算法只能选到某一个特定的h,那么$E_{in}(h)$几乎总是不会很小 $\Longrightarrow$ $g \ne f$ 是PAC的
real learning
算法A能够在假设空间H(例如PLA)中做选择,而不是只能选择某个特定的h
Verification
4. 推广到真正的学习问题
对于一个特定的假设来说,霍夫丁不等式告诉我们:对从输入空间中采样得到的数据集的$E_{in}(h_m)$不会太高。但对于所有假设空间中的h来说,得到一个Bad Data的概率会骤然升高,类似于一群人抛硬币,出现连续5个正面的概率问题。
Bad Data: $E_{out}(h)$和$E_{in}(h)$差别很大,一般情况是$E_{in}(h)$很小而$E_{out}(h)$很大
大量假设h对应的Bad Data问题
$\mathbb{P}_D[BAD D]$的上界
- 有限样本版本的Hoeffding,对所有的M, N, $\epsilon$都有效
- 不依赖于任何的$E_{out}(h_m)$,即不需要知道$E_{out}(h_m)$
— f 和 P(目标函数产生的数据分布)可以是未知的
- $E_{in}(h) = E_{out}(h)$ 是PAC——概率近似正确的,而不用考虑具体的算法是怎样的
有效的算法A:
选择$E_{in}(h_m)$最小的假设$h_m$,将其作为最终的假设g