第一章 机器学习简介
文章目录
机器学习的概念
- 对人类而言:学习是通过教授或体验而获得知识、技术、态度或价值的过程,从而导致可量度的稳定的行为变化。
- 对计算机系统而言,以性能度量P进行衡量,如果一个计算机程序在某类任务T 上的性能,随着经验E 而提升,那么我们称这个计算机程序从经验E 中学习。
- 例如:玩跳棋 E =下棋的经验 T =下跳棋的任务。P =程序赢得下一场比赛的概率。
机器学习的分类
-
监督学习Supervised Learning
监督学习是指通过让机器学习大量带有标签的样本数据,训练出一个模型,并使该模型可以根据输入预测相应输出的过程。
独立同分布 p(x,y)
- 预测目标分为两类:
-
分类:输出为离散值
二分类:行人、非行人
多分类:行人、车辆、树木…
-
回归:输出为连续值
行人的坐标
-
常见的监督学习算法:
- Linear Regression
- Logistic Regression
- Neural networks
- Support Vector Machines (SVMs)
- 预测目标分为两类:
-
无监督学习Unsupervised learning
Dataset contains no labels 无标签:
x ( 1 ) , . . . , x ( n ) x^{(1)},...,x^{(n)} x(1),...,x(n)
直接对输入数据进行建模,提取数据有效信息探索数据的整体结构。
常见的无监督算法:
-
Clustering聚类
— k-Means
-
Visualization and dimensionality reduction可视化和降维
— Principal Component Analysis (PCA) 主成分分析(PCA)
举例:
-
基因聚类:
通过聚类分析把基因按某些特性(表达规律)分成若干类别,聚合成同一类的基因在表达上有相似规律,它们很可能具有某些类似的功能
-
主成分分析(PCA):
PCA的思想是将n维特征映射到k维空间上k<n,这k维特征是全新的正交特征,是重新构造出来的k维特征,而不是简单地从n维特征中去除其余n−k维特征。
-
-
强化学习Reinforcement Learning
通过一个智能体在与复杂而不确定的环境交互中最大化总回报来学习的一种计算方法。
智能体以“试错”的方式进行学习,通过与环境交互获得的奖赏和惩罚指导行为,目标是使智能体获得最大的奖赏。
举例:
-
AlphaGo背后的技术
–深度学习(联结主义)+ 强化学习(行为主义)
–利用残差神经网络(ResNet)训练深度模型
–利用MCTS树搜索技术解决围棋的搜索空间爆炸问题
–采用**“自我对弈**”策略进行无人工标注的自我训练
-
机器学习三要素
-
模型
–线性方法: f ( x , θ ) = w T x + b f(\mathbf{x},\theta)=\mathbf{w}^\mathrm{T}\mathbf{x}+b f(x,θ)=wTx+b
–广义线性方法: f ( x , θ ) = w T ϕ ( x ) + b f(\mathbf{x},\theta)=\mathbf{w}^\mathrm{T}\phi(\mathbf{x})+b f(x,θ)=wTϕ(x)+b
- 如果"ϕ(x)"为可学习的非线性基函数,"f(x,θ)"就等价于神经网络。
-
学习准则
期望风险 R ( f ) = E ( x , y ) ∼ p ( x , y ) [ L ( f ( x ) , y ) ] \mathcal{R}(f)=\mathbb{E}_{(\mathbf{x},y)\sim p(\mathbf{x},y)}[\mathcal{L}(f(\mathbf{x}),y)] R(f)=E(x,y)∼p(x,y)[L(f(x),y)]
-
优化方法
梯度下降
学习准则-期望风险
模型 f ( x , θ ) f(\mathbf{x},\theta) f(x,θ)的好坏可以通过期望风险 R ( θ ) \mathcal{R}(\theta) R(θ)来衡量,定义为:
R ( θ ) = E ( x , y ) ∼ p r ( x , y ) [ L ( y , f ( x ; θ ) ) ] \mathcal{R}(\theta)=\mathbb{E}_{(x,y)\sim p_{r}(x,y)}[\mathcal{L}\big(y,f(x;\theta)\big)] R(θ)=E(x,y)∼pr(x,y)[L(y,f(x;θ))]
其中 p r ( x , y ) p_{r}(x,y) pr(x,y)为真实的数据分布, L ( y , f ( x ; θ ) ) \mathcal{L}\big(y,f(x;\theta)\big) L(y,f(x;θ))为损失函数,用来量化两个变量之间的差异
损失函数
- 损失函数是一个非负实数函数,用来量化模型预测和真实标签之间的差异。
几种常用损失函数:
- 0-1 损失函数
- 平方损失函数
- 感知器损失函数
- Hinge 损失函数
- 交叉熵损失函数(负对数似然函数)
学习准则-经验风险
真实的数据分布——未知 映射函数——未知
-
期望风险未知,通过经验风险近似
训练数据: D = { x ( i ) , y ( i ) } , i ∈ [ 1 , N ] \mathcal{D}=\big\{\mathrm{x}^{(i)},y^{(i)}\big\},i\in[1,N] D={x(i),y(i)},i∈[1,N]
R D e m p ( θ ) = 1 N ∑ n = 1 N L ( y ( n ) , f ( x ( n ) , θ ) ) \mathcal{R}_{\mathcal{D}}^{emp}(\theta)=\frac1N\sum_{n=1}^N\mathcal{L}(y^{(n)},f(x^{(n)},\theta)) RDemp(θ)=N1n=1∑NL(y(n),f(x(n),θ))
-
经验风险最小化
在选择合适的风险函数后,我们寻找一个参数 θ ∗ \theta^* θ∗,使得经验函数最小化
θ ∗ = arg min θ R D e m p ( θ ) \theta^*=\arg\min_\theta\mathcal{R}_{\mathcal{D}}^{emp}(\theta) θ∗=argθminRDemp(θ)
机器学习问题转化成为一个最优化问题
优化:梯度下降法
设计机器学习算法的基本步骤
三步骤:
- 选择模型 e . g . f ( x ) = a x + b e.g.\ f(x)=ax+b e.g. f(x)=ax+b
- 选择目标函数 e . g . 1 n ∑ i = 1 n ( y i − f ( x i ) ) 2 e.g.\ \frac1n\sum_{i=1}^n\left(y_i-f(x_i)\right)^2 e.g. n1∑i=1n(yi−f(xi))2
- 优化
机器学习=优化?
①训练数据没有想象的多
②噪声
③模型能力有强有弱
机器学习算法评价
训练集:用于训练模型,找出模型参数。
验证集:用以确定模型超参数,选出最优模型。
测试集:用于评估最终模型的泛化能力。
泛化能力
机器学习算法对新鲜样本的适应能力。
学习到的模型对未知数据的预测能力,这个未见过的测试数据必须是和训练数据处于同一分布,不在同一分布的数据是不符合独立同分布假设的(对同一规律不同的数据集的预测能力)。
通常通过测试误差来评价学习方法的泛化能力。
训练误差:
E r r o r ( D , f ) = 1 n ∑ i = 1 n ( y i − f ( x i ) ) 2 Error(D,f)=\frac{1}{n}\sum_{i=1}^{n}\left(y_{i}-f(x_{i})\right)^{2} Error(D,f)=n1i=1∑n(yi−f(xi))2
泛化误差:
E ( x , y ) [ ( y − f ( x ) ) 2 ] E_{(x,y)}[(y-f(x))^{2}] E(x,y)[(y−f(x))2]
两种方式评价泛化误差:
①理论:大数定律
②实践:使用包含 m 个数据样本的独立数据集来测试模型
1 m ∑ j = 1 , . . . m ( y j − f ( x j ) ) 2 \frac{1}{m}\sum_{j=1,...m}(y_{j}-f(x_{j}))^{2} m1∑j=1,...m(yj−f(xj))2
多项式曲线拟合
y ( x , w ) = w 0 + w 1 x + w 2 x 2 + … + w M x M = ∑ j = 0 M w j x j y(x,\boldsymbol{w})=w_0+w_1x+w_2x^2+\ldots+w_Mx^M=\sum_{j=0}^Mw_jx^j y(x,w)=w0+w1x+w2x2+…+wMxM=j=0∑Mwjxj
- M是多项式的阶数(order)
- x j x^j xj表示x的j次幂
- 多项式系数 w 0 , . . . , w M w_0,...,w_M w0,...,wM整体记作向量w
注意,多项式函数y(x; w)是系数w的⼀个线性函数
误差函数
平方和误差函数:
E ( w ) = 1 2 ∑ n = 1 N { y ( x n , w ) − t n } 2 E(\boldsymbol{w})=\frac{1}{2}\sum_{n=1}^{N}\{y(x_n,\boldsymbol{w})-t_n\}^2 E(w)=21n=1∑N{y(xn,w)−tn}2
- 系数的值可以通过调整多项式函数拟合训练数据的方式确定。
- 最小化误差函数(error function)。
- 有⼀个唯⼀解,记作 ∗ w ∗ ∗ *w^** ∗w∗∗,可以用解析的方式求出。
- 最终的多项式函数由函数 y ( x ; w ∗ ) y(x;w^*) y(x;w∗) 给出。
选择阶数M:
欠拟合
模型在训练集上误差很大,在测试集上误差也大
原因:由于模型能力不足(不灵活)
跟均方(RMS)误差
E R M S = 2 E ( w ∗ ) / N E_{RMS}=\sqrt{2E(\boldsymbol{w}^*)/N} ERMS=2E(w∗)/N
过拟合(正则化)
模型在训练集上误差很低,但是在测试数据上误差很高。
原因:由于训练数据少、噪声以及模型能力强等原因造成
解决方法:
①扩大训练集
②正则化Regularization (Occam’s Razor)
③通过验证集来评估选择模型
扩大训练集:
使⽤M = 9的多项式对N = 15个数据点(左图)和N = 100个数据点(右图),通过最最小化平方和误差函数的方法得到的解。
正则化:
通过修改目标函数来惩罚模型的复杂度
随着λ的增大,系数的大小逐渐变小 lnλ=-18 时 拟合较好
均⽅根误差 E R M S E_{RMS} ERMS与ln λ的关系
加入正则化项:降低了经验损失;降低模型复杂度;对抗过拟合
通过验证集来评估选择模型:
把给定的数据中的⼀部分从测试集中分离出,来确定系数w。这个分离出来的验证集(validation set),也被称为拿出集(hold-out set**)**
经验法则:60-20-20 or 50-25-25(如果数据足够多)
K折交叉验证
解决数据不够多的问题:
将数据集分层采样划分为k个大小相似的互斥子集,每次用k-1个子集的并集作为训练集,余下的子集作为验证集,最终返回k个测试结果的均值,k最常用的取值是10。
能够让可得到数据的(k-1)/k用于训练,同时使用所有的数据来评估表现
留一法
解决数据相当稀疏的问题:
考虑K = N的情况很合适,其中N是数据点的总数。这种技术叫做“留⼀法”(leave-one-out)。
- 不受随机样本划分方式的影响
- 结果往往比较准确
- 当数据集比较大时,计算开销难以忍受
将数据集分层采样划分为3个大小相似的互斥子集,每次用3-1=2个子集的并集作为训练集,余下的子1集作为验证集。