机器学习简介
文章目录
机器学习辨析
机器学习 :
利用现有经验E 不断改善其完成 既定任务T 的性能
基于经验数据的函数估计问题
x->y 寻找映射f。即机器学习力图构建一个映射函数
机器学习在构建数学模型时利用了统计学理论,因为其核心任务就是由样本推理。计算机科学的角色是双重的:第一,在训练时,我们需要求解优化问题以及存储和处理通常所面对的海量数据的高效算法。第二,一旦学习得到了一个模型,它的表示和用于推理的算法解也必须是高效的。在特定的应用中,学习或推理算法的效率,即它的空间复杂度和时间复杂度,可能与其预测的准确率同样重要。
深度学习与机器学习
人工智能》机器学习》深度学习
机器学习 :input ->feature extraction (人来负责特征工程)->classification ->output
深度学习: input ->feature extraction +classification ->output
机器学习与数据挖掘
机器学习与统计学习
机器学习:data drive , 优化问题,预测未来,侧重模型预测(prediction)
统计学习: theory drive,回归何假设检验,解释因果,侧重参数推断(inference)
机器学习与传统编程
机器学习让计算机模拟人的决策
设计模型为y=ax+b,输入数据集,机器学习后建立模型y=0.8x-100 (推断出参数)
机器学习概念
适用条件
- 事物本身含潜在规律
- 难以用普通编程解决的,如:图像识别、语音识别
- 有大量数据样本可以使用
挑战
模型的稳定性
对抗样本:在数据集中通过故意添加细微的干扰所形成的输入样本,导致模型以高置信度给出一个错误的输出。
在正则化背景下,通过对抗训练减少原有独立同分布的测试集的错误率——在对抗扰动的训练集样本上训练网络。
模型的可解释性
算法歧视?
历史
符号主义
认为所有的智能行为都可以被简化成在一个逻辑系统中的符号操作过程
自动定理证明、专家系统、知识图谱
贝叶斯学派
用概率解释
连接主义
神经网络
其他概念
弱监督
因果学习:现在的机器学习算法大多只能推断相关性(correlation),而不能得到因果(casuality)。因果学习得到的模型有很好的可解释性。
基本概念
输入 X ∈ x X\in x X∈x
输出 Y ∈ y Y\in y Y∈y
输入实例 x = ( x 1 , x 2 , . . . , x d ) ∈ X x=(x_{1},x_{2},...,x_{d})\in X x=(x1,x2,...,xd)∈X
输出实例
数据集 $D=\left { (x_{1},y_{1}),…,(x_{N},y_N) \right } $
目标函数 Y = f ( X ) Y=f(X) Y=f(X)
目标分布 P ( Y ∣ X ) P(Y|X) P(Y∣X)
对具体输入时 y = f ( X ) y=f(X) y=f(X)或 P ( y ∣ X ) P(y|X) P(y∣X)
使学习得到的映射 接近真相f
三要素
模型
模型:决策函数或者条件概率分布
假设空间:决策函数、条件概率分布的集合
决策函数集合:$H=\left { f|Y=f(X;\theta ),\theta \in R^{n} \right } $
条件概率的集合:$H=\left { P|P(Y|X;\theta ),\theta \in R^{n} \right } $
策略
策略:从及假设空间中选取最优模型
损失函数-度量误差的函数
- 0-1损失函数:预测一样,损失是0;预测错误,损失是1
- 平方损失函数 $L(Y,f(X))=(Y-f(X))^{2} $
- 绝对损失函数 $L(Y,f(X))=\left | (Y-f(X)) \right | $
- 对数损失函数 L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) L(Y,P(Y|X))=-logP(Y|X) L(Y,P(Y∣X))=−logP(Y∣X)
在分类数为M的分类问题中,设 p i ( x ) p_i(x) pi(x)为分类器,将 x x x预测为类别$$的概率,则其对数损失函数为
L ( y , P ( y ∣ x ) ) = − log P ( y ∣ x ) = − ∑ i = 1 M [ y = i ] log p i ( x ) L(y, P(y \mid \mathbf{x}))=-\log P(y \mid \mathbf{x})=-\sum_{i=1}^{M} \left [ y=i \right ] \log p_{i}(\mathbf{x}) L(y,P(y∣x))=−logP(y∣x)=−∑i=1M[y=i]logpi(x)
若数据集容量为N,则该数据集的平均损失函数(代价函数)为
L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) = − 1 N ∑ j = 1 n ∑ i = 1 m [ Y = i ] log p i x j L(Y,P(Y|X))=-logP(Y|X)= -\frac{1}{N} \sum_{j=1}^{n} \sum_{i=1}^{m} \left [ Y=i \right ]\log_{p_{i}}{x_{j}} L(Y,P(Y∣X))=−logP(Y∣X)=−N1∑j=1n∑i=1m[Y=i]logpixj
(成本)风险函数
期望风险(泛化误差)$R_{exp}(f)=\int _{x\times y}^{}L(y,f(x))P(x,y)dxdy $
- 给定训练集 $T=\left { (x_{1},y_{1}),…,(x_{N},y_N) \right } $
P(x,y)是不可知的,所以监督学习是一个病态问题
理论上,实现不知道哪个模型更好
经验风险 $R_{emp}(f)= \frac{1}{N} \sum_{i=1}^{N}L(y_{i},f(x_{i}) ) $
结构风险 $R_{xrm}=\frac{1}{N} \sum_{i=1}^{N}L(y_i,f(x_i)) + \lambda J(f) $
结构风险带有事先的领域知识
J ( f ) J(f) J(f)指模型复杂度
λ \lambda λ为平衡因子,可取0,也可取 ∞ \infty ∞
策略(找到模型中的一个元素f,使得经验风险 或者结构风险越小越好) $\min_{f \in H} R_{emp}(f) $ 或$\min_{f \in H} R_{srm}(f) $
结构风险可用于解决 正则化问题
使得经验风险、结构风险越小越好
算法
算法:学习模型的具体算法, 选取最优模型
最优化问题:$\min_{w,b}J(w,b) $
- 极值问题
- 梯度下降
- 牛顿法和拟牛顿法
- 约束优化问题——拉格朗日乘数法
归纳偏好
假设偏好可看做学习算法自身在一个可能很庞大的假设空间中对假设进行选择的启发式或价值观.
奥卡姆剃刀(Occam’s razor): 若有多个假设与观察一致,则选最简单的那个。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O1uOo2Tm-1646018638390)(img/1.2.1.jpg)]
如果都符合目标,三个参数的模型,优先级高于七个参数的模型
定理 1 (没有免费的午餐定理 (no free lunch theorem))
对任意两个学习算法A和B, 若在某些问题上 比 好, 则必然存在另外一些问题 A比B好
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VqKmd8Rb-1646018638397)(img\1.2.2.jpg)]
没有一种机器学习算法是适用于所有情况的。但事实上, 并不是均匀分布,学习算法自身的归纳偏好与问题是否匹配, 往往会起到决定性的作用. 脱离具体问题, 空泛地谈论 “什么学习算法更好” 毫无意义。
证明
为简单起见, 假设样本空间 X X X和假设空间 H H H都是离散的
对某个特定的学习算法, 令 为基于训练数据 D D D产生假设 h h h的概率
当作非确定性模型,根据训练集和算法找出h
再令 f f f代表我们希望学习的真实目标函数
假设真实的f是均匀分布的
则该算法在训练集之外的所有样本上的期望误差为
f是给定的,h是选的,然后把这个期望展开
p(x)是分布的离散的积分求法【连续的求法是这样的 E ( f ) = ∫ f ∗ p i ( x ) d x E(f)=\int f*p_i(x)dx E(f)=∫f∗pi(x)dx】
考虑二分类问题,且真实目标函数可以是任何函数
f
:
X
→
{
0
,
1
}
f:X \to \left\{0,1 \right\}
f:X→{0,1}
相等就是0,不等就是1
对所有可能的函数按照均匀分布对误差求和,有
x个点,每个点可能取0,1,所以总共的可能性是$2^{x} $
该例子源自西瓜书,可以再看而推导
机器学习的目标
机器学习的目的就是为了使得学习得到的映射 逼近真相
- 不仅仅是训练误差小,更重要的是让泛化误差小, 也就是提高学得模型 适用于未见示例的能力(即数据集外的内容)
机器学习分为训练(Training)和测试(Testing)两个阶段:
训练:给定一个包含 个样本的训练集D = {(x1 , y1 ), (x2 , y2 ), … , (xN , yN )}
调整模型 的参数 ,使得预测结果 和 标注尽可能接近。
测试:将函数 应用在一个独立的测试集T = {(x , ), ( , ), … , ( , )},~1 y~1 x~2 y~2 x~N ′ y~N ′
验证所学到的函数能否在该数据集上做出准确预测,即 是否与 接近
欠拟合和过拟合
欠拟合(underfitting)). 学习器对训练样本的一般性质尚未学好, 训练误差高,导致泛化能力低
过拟合(overfitting). 学习器把训练样本学得“太好了”, 把训练样本自身的一些特点当作了所有潜在样本都会有的一般性质, 导致泛化能力下降
- 参数过拟合:数据量过小,训练次数过多
- 结构过拟合
- 模型学习能力过于强大, 参数较多
- 数据中噪声过大
结构过拟合:
模型能力过于强大:本来只需要二次曲线,结果用了过高次的
噪声大、数据质量不高
随着迭代次数增加,欠拟合的误差在减小(y方向差距)
学习次数过多也不好
绿色是模型预测值
a 0次曲线
b 1次曲线
……
泛化误差(重点)
定理: 偏差-方差-噪声分解(bias-variance decomposition)
偏差、方差+(噪声)
设测试数据 x x x的真实目标值为 h ( x ) h(x) h(x) , 观察到的目标值为 t t t , 模型的预测值 y ( x ) y(x) y(x), 并记 x x x和 t t t的联合分布 p ( x , t ) p(x,t) p(x,t)为 , 则目标值 t t t与预测值 y ( x ) y(x) y(x)之间的误差为
(期望计算)
这里区分真实值、观测值t,为的是引出噪声的概念
观测值t相当于在真实值附近采样,但是t在这点的期望必须等于真实值,即 E ( t ) = h ( x ) E(t)=h(x) E(t)=h(x)
第2行按照完全平方式展开,先积分t,在积分x,因为 E ( t ) = h ( x ) E(t)=h(x) E(t)=h(x),消去,得第三行
1 给不同的D,会产生不同的y。所以对D找平均值,以找y期望值
方差【Variance】:学习一次和多次学习后的平均值的差距
偏差【Bias】:学出的模型和真实模型的差距
学习算法的泛化性能是由
- 学习算法的能力
- 数据的充分性
- 学习任务本身的难度
共同决定的.
偏差-方差窘境(bias-variance dilemma).
- 给定学习任务, 在训练不足时, 学习器的拟合能力不够强, 训练数据的扰动不足以使学习器产生显著变化,此时偏差主导了泛化错误率。
- 随着训练程度的加深, 学习器的拟合能力逐渐增强, 训练数据发生的扰动渐渐能被学习器学到, 方差逐渐主导了泛化错误率。
- 在训练程度充足后, 学习器的拟合能力已非常强, 训练数据发生的轻微扰动都会导致学习器发生显著变化, 若训练数据自身的、非全局的特征被学习器学到了, 则将发生过拟合。
泛化误差先下降,后上升
对比图
缓解过拟合
- 从简单模型开始(奥卡姆剃刀原则)
- 正则化(可以降低模型有效的复杂度、减小测试误差)
- 数据清洗和预处理(效果不一定)
- 去除噪声
- 数据扩充
- 增大数据集
- 使用验证集(用于对泛化误差进行估计, 通常用于模型选择).
深入理解泛化误差
多项式曲线拟合问题
模型复杂度增加后,干扰导致数据乱飞
λ = − ∞ \lambda=-\infty λ=−∞惩罚项几乎失效
λ \lambda λ越大,说明越考虑模型的复杂度
λ \lambda λ为了控制模型复杂度,大 λ \lambda λ要求小模型复杂度。模型过于简单,可能导致欠拟合,从而误差增加(图1、2对比)
平时(训练) | 测试 | 意义 |
---|---|---|
+ | + | good-fit |
+ | - | 过拟合 |
- | + | — |
- | - | 欠拟合 |
基本概念
测试集(testing set)
- 以测试集上的测试误差作为泛化误差的近似
- 用来测试学习器对新样本的判别能力,用于评估最终的模型
- 测试集需要和训练集互斥,假设测试样本也是从样本真实分布中独立同分布采样而得.
验证集(validation set)
- 把训练数据划分为训练集和验证集
- 基于验证集上的性能来进行模型选择和对超参数进行调参
比方说,在训练集上用 λ 1 \lambda1 λ1和 λ 2 \lambda2 λ2跑出f1,f2,可以用验证集再跑,从而在f1和f2中做出选择
方法
留出法(hold-out):
- 直接将训练数据划分为两个互斥的集合:训练集和验证集
- 训练/验证集的划分要尽可能保持数据分布的一致性
- 采用若干次随机划分, 每次产生一对训练/验证集用于实验评估, 最后报告所有结果的平均值和标准差
常规操作:多次划分取平均值
- 一般将大约2/3~4/5作为训练数据
K折交叉验证
- 随机将训练数据划分为K个互不相交、大小相同的子集
- 利用K-1个子集的数据训练模型,余下的子集作为验证集;
- 将这一过程对可能的K种选择重复进行
- 最后选个K次评测中平均测试误差最小的模型
注意事项:
K最常用取值是10, 其他常用取值是5和20
每个子集都尽可能保持数据分布的一致性.
为减小因样本划分不同而引入的差别, 一般采用若干次交叉验证, 如10
次10折交叉验证.
1 | 2 | 3 | … | k |
---|
k次k折交叉验证,需要 k k k^{k} kk次,开销过大。
其中特例——留一法(leave-one-out)
- K折交叉验证在 时的特例
- 由于每个子集只有一个样本, 留一法不受随机样本划分方式的影响.
- 留一法的评估结果往往被认为比较准确. 但是, 在数据集比较大时,训练 个模型的计算开销是难以忍受的
总结
机器学习一般流程
-
得到一个有限的训练数据集合
-
确定包含所有可能的模型的假设空间,即学习模型的集合
-
确定模型选择的准则,即学习的策略
- 确定是经验损失还是结构损失
-
实现求解最优模型的算法,即学习的算法
-
通过学习方法选择最优模型
-
利用学习的最优模型对新数据进行预测和分析
机器学习分类
按有无标签分类
-
监督学习:垃圾邮件分类、房价预测
- 有范例
-
非监督学习:异常检测
- 事先不知道哪个是异常的
-
半监督学习:标注语音
- 对数据做标注的成本非常高,所以部分标注,部分不标注。即先用监督学习,在用监督学习的模型对没有标记的数据标注后再学习
-
强化学习:Alpha GO
- 数据一开始没有准备好,在交互的过程中不断产生数据。
按输出空间分类
- 二分类:垃圾邮件分类
- 多分类:图像分类
- 回归:房价预测
- 结构化学习:机器翻译、语音识别、聊天机器人
按模型分类
我们都想要 P ( y ∣ x ) P(y|x) P(y∣x)
判别式模型: 决策树、支持向量机
- 直接确定 P ( y ∣ x ) P(y|x) P(y∣x)或 f ( x ) f(x) f(x)
生成式模型:GAN
- 先确定 P ( x , y ) P(x,y) P(x,y)
- 然后利用贝叶斯定理$P(y|x)=\frac{P(x,y)}{P(x)} $
按算法分类
-
批量学习:一次性批量输入给学习算法,可以被形象 的称为填鸭式学习
-
在线学习:按照顺序,循序的学习,不断的去修正模 型,进行优化
-
主动学习:通过某种策略找到未进行类别标注的样本 数据中最有价值的数据,交由专家进行人工标注后, 将标注数据及其类别标签纳入到训练集中迭代优化分 类模型,改进模型的处理效果
- 学习中,对感兴趣的东西问:这个东西的标签是什么