《神经网络与深度学习》邱希鹏 学习笔记(2)
- 完成进度
- 第二章 机器学习概述
- 基本概念
- 特征 标签 数据集
- 学习/训练的过程
- 一个完整机器学习的过程
- 模型
- 线性模型
- 非线性模型
- 损失函数
- 风险最小化准则
- 梯度下降法
- 提前停止
- 随机梯度下降法
- 小批量梯度下降法
- 一些概念的理解
完成进度
- 第一章
- 第二章 (1)
- 第二章 (2)
- …
第二章 机器学习概述
第二章首先介绍机器学习的基本概念和基本要素,并较为详细地描述一个机器学习的例子——线性回归
机器学习 (Machine Learning , ML) 通俗地讲,就是让计算机从数据中进行自动学习,得到某种知识/规律。
事实上,作为一门学科,机器学习通常指一类问题以及解决这类问题的方法,即如何从观测数据/样本中寻找规律,并利用学习到的规律/模型对未知或无法观测的数据进行预测。
机器学习在早期的工程领域被称作模式识别 (Pattern Recognition) ,但模式识别更偏向于具体的应用任务光学字符识别 语音识别 人脸识别 。这些任务的特色是,人类自身很容易完成,但背后的原因未知,因此也很难人工设计出一个计算机程序来完成这些任务。
机器学习可以直接从有标注的样本上学习其中的规律,并完成各种识别任务,并最终取代模式识别,成为这一类问题及解决方法的总称。
基本概念
特征 标签 数据集
以在市场上购买芒果的流程为例:
我们事先从未有过挑选芒果的经验,那么如何挑选合适的芒果进行购买?
- 在市场上随机选取一些芒果,列出每个芒果的特征 (Feature) 颜色 大小 形状 产地 品牌,以及需要预测的标签 (Label)。
此刻,我们可以将一个标记好特征以及标签的芒果看作是一个样本 (Sample),也被叫做示例 (Instance)。
-
数据集 (Data Set)
一组样本构成的集合
一般将数据集分为两部分:
训练集 (Training Set)
训练集中的样本是用来训练模型的,也叫训练样本 (Training Sample)
-
测试集 (Test Set)
测试集中的样本是用来检验模型好坏的,也叫测试样本 (Test Sample)
特征向量 (Feature Vector)
我们通常用一个 DDD 维向量 x=[x1,x2,…,xD]T\\pmb{x} = [x_{1},x_{2},…,x_{D}]^{T}xxx=[x1,x2,…,xD]T 表示一个样本的所有特征构成的向量,其中每一维表示一个特征。
样本的标签通常用标量 yyy 来表示
学习/训练的过程
假设训练集 D\\mathcal{D}D 由 NNN 个样本组成,其中每个样本都是独立同分布 (Identically and Independently Distributed, IID) ,即独立地从相同的数据分布中抽取的,记为
D={(x(1),y(1)),(x(2),y(2)),…,(x(N),y(N))}.\\mathcal{D} =\\{(\\pmb{x}^{(1)}, y^{(1)}),(\\pmb{x}^{(2)}, y^{(2)}),…,(\\pmb{x}^{(N)}, y^{(N)})\\}.D={(xxx(1),y(1)),(xxx(2),y(2)),…,(xxx(N),y(N))}.
给定训练集 D\\mathcal{D}D,使得计算机在一个函数集合F=\\mathcal{F} =F= {f1(x),f1(x),…f_{1}(\\pmb{x}),f_{1}(\\pmb{x}),…f1(xxx),f1(xxx),…} 中自动寻找一个“最优”的函数 f∗(x)f^{*}(\\pmb{x})f∗(xxx)来近似每个样本的特征向量 x\\pmb{x}xxx 和标签 yyy 之间的真实映射关系。
对于一个样本 x\\pmb{x}xxx,可以通过函数 f∗(x)f^{*}(\\pmb{x})f∗(xxx) 来预测其标签的值
y^=f∗(x).\\hat{y} = f^{*}(\\pmb{x}).y^=f∗(xxx).
或标签的条件概率
p^(y∣x)=fy∗(x).\\hat{p} (y|\\pmb{x}) = f^{*}_{y}(\\pmb{x}).p^(y∣xxx)=fy∗(xxx).
寻找“最优”函数 f∗(x)f^{*}(\\pmb{x})f∗(xxx) 是机器学习的关键,一般需要通过学习算法 (Learning Alogrithm) A\\mathcal{A}A 来完成。
这个寻找的过程通常称为学习 (Learning) / 训练 (Training) 的过程。
一个完整机器学习的过程
这样,下次在市场购买芒果(测试样本)时,可以根据芒果的特征,使用学习到的函数 f∗(x)f^{*}(\\pmb{x})f∗(xxx) 来预测芒果的好坏。
为了评价的公正性,还是独立同分布地抽取一组芒果作为测试集 D′\\mathcal{D}^{\’}D′,并在测试集中所有芒果上进行测试,计算预测结果的准确率
Acc(f∗(x))=1D′∑x,y∈D′I(f∗(x=y)Acc(f^{*}(\\pmb{x})) =\\frac{1}{\\mathcal{D}^{\’}} \\sum_{x,y \\in \\mathcal{D}^{\’}}{I(f^{*}(\\mathcal{x} = y)}Acc(f∗(xxx))=D′1x,y∈D′∑I(f∗(x=y)
其中,I(∙)I(\\bullet)I(∙)为指示函数,∣D′∣|\\mathcal{D}^{\’}|∣D′∣为测试集大小。
下图给出了机器学习的基本流程。对于一个预测任务,输入特征向量为 x\\pmb{x}xxx,输出标签为 yyy,选择一个函数集合 F\\mathcal{F}F,通过学习算法 A\\mathcal{A}A 和一组训练样本 D\\mathcal{D}D,从 F\\mathcal{F}F 中学习到函数 f∗(x)f^{*}(\\pmb{x})f∗(xxx) ,这样对新的输入 x\\pmb{x}xxx 就可以用函数 f∗(x)f^{*}(\\pmb{x})f∗(xxx) 进行预测。
机器学习的三个要素
机器学习是从有限的观测数据中学习/“猜测”出具有一般性的规律,并可以将总结出来的规律推广应用到未观测样本上。
机器学习方法可以粗略的分为三个基本要素:模型、学习准则、优化算法。
对于一个机器学习任务,首先要确定其输入空间 X\\mathcal{X}X 和输出空间 yyy。
- 不同机器学习任务的主要区别在于输出空间不同
-
二分类问题
y={+1,−1}y = \\{+1, -1\\}y={+1,−1}
-
CCC 分类问题
y={1,2,…,C}y = \\{1, 2,\\dots,C\\}y={1,2,…,C}
-
回归问题
y=Ry = \\mathbb{R}y=R
输入空间 X\\mathcal{X}X 和输出空间 yyy 构成了一个样本空间。
对于样本空间中的样本 (x,y)∈X×y(\\pmb{x},y) \\in \\mathcal{X} \\times \\mathcal{y}(xxx,y)∈X×y,假定 x\\pmb{x}xxx 和 yyy 之间的关系可以通过一个未知的真实映射函数 y=g(x)y = g(\\pmb{x})y=g(xxx) 或真实条件概率分布 pr(y∣x)p_r (y|\\pmb{x})pr(y∣xxx) 来描述。
机器学习的目的是找到一个模型来近似真实映射函数 g(x)g(\\pmb{x})g(xxx) 或真实条件概率分布 pr(y∣x)p_r (y|\\pmb{x})pr(y∣xxx) 。
由于真实映射函数 g(x)g(\\pmb{x})g(xxx) 或真实条件概率分布 pr(y∣x)p_r (y|\\pmb{x})pr(y∣xxx) 的具体形式未知,因此只能根据经验来假设一个函数集合 F\\mathcal{F}F,称为假设空间 (Hypothesis Space),然后通过观测其在训练集 D\\mathcal{D}D 上的特性,从中选择一个理想的假设 (Hypothesis) f∗∈Ff^* \\in \\mathcal{F}f∗∈F。
假设空间 F\\mathcal{F}F 通常为一个参数化的函数族
F={f(x;θ)∣θ∈RD}\\mathcal{F} = \\{ f(\\pmb{x} ;\\theta)|\\theta \\in \\mathbb{R}^D\\}F={f(xxx;θ)∣θ∈RD}
其中f(x;θ)\\ f(\\pmb{x} ;\\theta)f(xxx;θ) 是参数为 θ\\thetaθ 的函数,也称为模型 (Model), DDD 为参数的数量。
模型
常见的假设空间可以分为 线性 和 非线性 两种,对应的模型 fff 也分别称为 线性模型 和非线性模型。
线性模型
线性模型的假设空间为一个参数化的线性函数族,即
f(x;θ)=wTx+b, f(\\pmb{x} ;\\theta) = \\pmb{w}^T\\pmb{x} + b,f(xxx;θ)=wwwTxxx+b,
其中参数 θ\\thetaθ 包含了权重向量 w\\pmb{w}www 和偏置 bbb。
非线性模型
广义的非线性模型可以写为多个非线性基函数 ϕ(x)\\phi(\\pmb{x})ϕ(xxx) 的线性组合
f(x;θ)=wTϕ(x)+b, f(\\pmb{x} ;\\theta) = \\pmb{w}^T\\phi(\\pmb{x}) + b,f(xxx;θ)=wwwTϕ(xxx)+b,
其中参数 ϕ(x)=[ϕ1(x),ϕ2(x),…,ϕK(x)]T\\phi(\\pmb{x}) = [\\phi_1(\\pmb{x}),\\phi_2(\\pmb{x}),\\dots,\\phi_K(\\pmb{x})]^Tϕ(xxx)=[ϕ1(xxx),ϕ2(xxx),…,ϕK(xxx)]T 为 KKK 个非线性基函数组成的向量,参数 θ\\thetaθ 包含了权重向量 w\\pmb{w}www 和偏置 bbb。
如果 ϕ(x)\\phi(\\pmb{x})ϕ(xxx) 本身为可学习的基函数,则f(x;θ)\\ f(\\pmb{x} ;\\theta)f(xxx;θ) 就等价于神经网络模型。
学习准则
令训练集 D={(x(n),y(n))}n=1N\\mathcal{D} = \\{(\\pmb{x}^{(n)},y^{(n)})\\}^N_{n=1}D={(xxx(n),y(n))}n=1N 是由 NNN 个独立同分布样本组成,即每个样本 (x,y)∈X×Y(\\pmb{x},y) \\in \\mathcal{X} \\times \\mathcal{Y}(xxx,y)∈X×Y 是从 X\\mathcal{X}X 和 Y\\mathcal{Y}Y 的联合空间中按照某个未知分布 pr(x,y)p_r (\\pmb{x},y)pr(xxx,y) 独立地随机产生的。这里要求样本分布 pr(x,y)p_r (\\pmb{x},y)pr(xxx,y) 必须是固定的,不会随时间变化。
一个好的模型 f(x,θ∗)f(\\pmb{x},\\theta^*)f(xxx,θ∗) 应该在所有 (x,y)(\\pmb{x},y)(xxx,y) 的可能取值上都能与真实映射函数 y=g(x)y = g(\\pmb{x})y=g(xxx) 一致,即
∣f(x,θ∗)−y∣<ϵ,∀(x,y)∈X×Y,|f(\\pmb{x},\\theta^*) – y| \\lt \\epsilon, \\forall(\\pmb{x},y) \\in \\mathcal{X} \\times \\mathcal{Y},∣f(xxx,θ∗)−y∣<ϵ,∀(xxx,y)∈X×Y,
或与真实条件概率分布 pr(y∣x)p_r (y|\\pmb{x})pr(y∣xxx) 一致,即
∣f(x,θ∗)−pr(y∣x)∣<ϵ,∀(x,y)∈X×Y,|f(\\pmb{x},\\theta^*) – p_r (y|\\pmb{x})| \\lt \\epsilon, \\forall(\\pmb{x},y) \\in \\mathcal{X} \\times \\mathcal{Y},∣f(xxx,θ∗)−pr(y∣xxx)∣<ϵ,∀(xxx,y)∈X×Y,
其中 ϵ\\epsilonϵ 是一个很小的正数,fy(x,θ∗)f_y(\\pmb{x},\\theta^*)fy(xxx,θ∗) 为模型预测的条件概率分布中 yyy 对应的概率。
模型 f(x;θ)f(\\pmb{x};\\theta)f(xxx;θ) 的好坏可以通过期望风险 (Excepted Risk) R(θ)\\mathcal{R}(\\theta)R(θ)来衡量,其定义为
R(θ)=E(x,y)∼pr(x,y)[L(y,f(x;θ))],\\mathcal{R}(\\theta) = \\mathbb{E}_{({x},y)\\sim p_r ({x},y)}[\\mathcal{L}(y,f(\\pmb{x};\\theta))],R(θ)=E(x,y)∼pr(x,y)[L(y,f(xxx;θ))],
其中, pr(x,y)p_r (\\pmb{x},y)pr(xxx,y) 为真实的数据分布,L(y,f(x;θ))\\mathcal{L}(y,f(\\pmb{x};\\theta))L(y,f(xxx;θ)) 为损失函数,用来量化两个变量之间的差异。
损失函数
损失函数是一个非负实数函数 ,用来量化模型预测和真实标签之间的差异,以下为几种常用的损失函数。
- 0-1损失函数
-
最直观的损失函数是模型在训练集上的错误率。
-
L(y,f(x;θ))={0ify=f(x;θ)1ify≠f(x;θ)=I(y≠f(x;θ)),\\begin{aligned}\\mathcal{L}(y,f(\\pmb{x};\\theta)) = \\begin{cases}0 \\qquad & if y = f(\\pmb{x};\\theta) \\\\1 \\qquad & if y \\ne f(\\pmb{x};\\theta)\\end{cases}\\end{aligned}\\\\ = I(y \\ne f(\\pmb{x};\\theta) ),L(y,f(xxx;θ))={01ify=f(xxx;θ)ify=f(xxx;θ)=I(y=f(xxx;θ)),
其中,I(∙)I(\\bullet)I(∙) 是指示函数。 -
优点:能够客观地评价模型的好坏
-
缺点:数学性质不好,不连续且导数为0,难以优化。
- 平方损失函数 (Quadrstic Loss Function)
-
平方损失函数经常用在预测标签 yyy 为实数值的任务(回归问题)中,不适用于分类问题,定义为:
L(y,f(x;θ))=12(y−f(x;θ))2.\\mathcal{L}(y,f(\\pmb{x};\\theta)) = \\frac{1}{2}(y-f(\\pmb{x};\\theta))^2.L(y,f(xxx;θ))=21(y−f(xxx;θ))2. - 交叉熵损失函数 (Cross-Entropy Loss Function)
-
交叉熵损失函数一般适用于分类问题。
-
假设样本的标签 y∈{1,…,C}y \\in \\{1,\\dots,C\\}y∈{1,…,C} 为离散的类别,模型 f(x;θ)∈[0,1]Cf(\\pmb{x};\\theta) \\in [0,1]^Cf(xxx;θ)∈[0,1]C 的输出为类别标签的条件概率分布,即
p(y=c∣x;θ),p(y = c|\\pmb{x};\\theta),p(y=c∣xxx;θ),
并满足
fc(x;θ)∈[0,1],∑c=1Cfc(x;θ)=1.f_c(\\pmb{x};\\theta) \\in [0,1], \\sum^{C}_{c=1} f_c(\\pmb{x};\\theta)=1.fc(xxx;θ)∈[0,1],c=1∑Cfc(xxx;θ)=1.
在此时用一个 CCC 维的 one-hot 向量 y\\pmb{y}yyy 来表示样本标签,即若样本的标签为 kkk,那么标签向量 y\\pmb{y}yyy 只有第 kkk 维的值为1,其余元素的值都为0。若标签向量 y\\pmb{y}yyy是样本标签的真实概率分布 pr(y∣x)p_r(\\pmb{y}|\\pmb{x})pr(yyy∣xxx),即第 ccc 维(记为 yc,1≤c≤Cy_c,1\\le c \\le Cyc,1≤c≤C )是类别为 ccc 的真实条件概率,那么它属于第 kkk 类的概率为1,属于其它类的概率为0。 -
对于两个概率分布,一般可以用交叉熵来衡量它们之间的的差异。标签的真实分布 y\\pmb{y}yyy 和模型的预测分布 f(x;θ)f(\\pmb{x};\\theta4000)f(xxx;θ) 之间的交叉熵为
L(y,f(x;θ))=−yTlogf(x;θ)=−∑c=1Cyclogfc(x;θ),\\begin{aligned}\\mathcal{L}(\\pmb{y},f(\\pmb{x};\\theta)) &=-\\pmb{y}^Tlogf(\\pmb{x};\\theta) \\\\ &=-\\sum^{C}_{c=1}y_clogf_c(\\pmb{x};\\theta),\\end{aligned}L(yyy,f(xxx;θ))=−yyyTlogf(xxx;θ)=−c=1∑Cyclogfc(xxx;θ),
因为 y\\pmb{y}yyy 为 one-hot 向量,也可写为
L(y,f(x;θ))=−logfy(x;θ).\\mathcal{L}(\\pmb{y},f(\\pmb{x};\\theta)) = -log f_y(\\pmb{x};\\theta).L(yyy,f(xxx;θ))=−logfy(xxx;θ). - Hinge 损失函数 (Hinge Loss Function)
-
对于二分类问题,假设 yyy 的取值为 {−1,+1},f(x;θ)∈R.\\{-1,+1\\}, f(\\pmb{x};\\theta) \\in \\mathbb{R}.{−1,+1},f(xxx;θ)∈R.
L(y,f(x;θ))=max(0,1−yf(x;θ))≜[1−yf(x;θ)]+,\\begin{aligned}\\mathcal{L}(y,f(\\pmb{x};\\theta)) &=max(0,1-yf(\\pmb{x};\\theta))\\\\ &\\triangleq [1-yf(\\pmb{x};\\theta)]_+,\\end{aligned}L(y,f(xxx;θ))=max(0,1−yf(xxx;θ))≜[1−yf(xxx;θ)]+, -
其中 [x]+=max(0,x)[x]_+=max(0,x)[x]+=max(0,x)。
风险最小化准则
一个好的模型 f(x;θ)f(\\pmb{x};\\theta)f(xxx;θ) 应当有一个比较小的期望错误(期望风险),但由于不知道真实的数据分布和映射函数,实际上无法计算期望风险 R(θ)\\mathcal{R}(\\theta)R(θ)。
给定一个训练集 D={x(n),y(n)}n=1N\\mathcal{D}=\\{\\pmb{x}^{(n)},y^{(n)}\\}_{n=1}^ND={xxx(n),y(n)}n=1N,可以计算的是经验风险 (Empirical Risk),即在训练集上的平均损失:
RDemp(θ)=1N∑n=1NL(y(n),f(x(n);θ)).\\mathcal{R}^{emp}_{\\mathcal{D}}(\\theta)=\\frac{1}{N}\\sum^N_{n=1}\\mathcal{L}(y^{(n)},f(\\pmb{x}^{(n)};\\theta)).RDemp(θ)=N1n=1∑NL(y(n),f(xxx(n);θ)).
因此,一个切实可行的学习准则是找到一组参数 θ∗\\theta^*θ∗ 使得经验风险最小,即
θ∗=argminθRDemp(θ),\\theta^*=\\mathop{argmin}\\limits_{\\theta}\\mathcal{R}^{emp}_{\\mathcal{D}}(\\theta),θ∗=θargminRDemp(θ),
这就是经验风险最小化 (Empirical Risk Minimization,ERM) 准则。
- 过拟合
- 根据大数定理可知,当训练集大小 ∣D∣|\\mathcal{D}|∣D∣ 趋向于无穷大时,经验风险就趋向于期望风险。
- 然而通常情况下,训练样本往往是真实数据的一个很小的子集或者包含一定的噪声数据,不能很好地反映全部数据的真实分布。
- 经验风险最小化原则很容易导致模型在训练集上错误率很低,但是在未知数据上错误率很高,即过拟合 (Overfitting)。
- 给定一个假设空间 F\\mathcal{F}F,一个假设 fff 属于 F\\mathcal{F}F ,如果存在其他的假设 f′f\’f′ 也属于 F\\mathcal{F}F,使得在训练集上 fff 的损失比 f′f\’f′ 的损失小,但在整个样本空间上 f′f\’f′ 的损失比 fff 的损失小,那么就说假设 fff 过度拟合训练数据。
- 过拟合问题一般是由训练数据少和噪声以及模型能力强等原因造成的。
- 正则化 (Regularization)
- 为了解决过拟合问题,一般在经验风险最小化的基础上再引入参数的正则化来限制模型能力,使其不要过度地最小化经验风险。这种准则就是结构风险最小化 (Structure Risk Minimization,SRM) 准则:
θ∗=argminθRDstruct(θ)=argminθRDstruct(θ)+12λ∣∣θ∣∣2=argminθ1N∑n=1NL(y(n),f(x(n);θ))+12λ∣∣θ∣∣2,\\begin{aligned}\\theta^* &= \\mathop{argmin}\\limits_{\\theta} \\mathcal{R}^{struct}_{\\mathcal{D}}(\\theta)\\\\ &=\\mathop{argmin}\\limits_{\\theta} \\mathcal{R}^{struct}_{\\mathcal{D}}(\\theta) + \\frac{1}{2} \\lambda||\\theta||^2\\\\ &=\\mathop{argmin}\\limits_{\\theta} \\frac{1}{N} \\sum^N_{n=1} \\mathcal{L}(y^{(n)},f(x^{(n)};\\theta)) +\\frac{1}{2} \\lambda||\\theta||^2,\\end{aligned}θ∗=θargminRDstruct(θ)=θargminRDstruct(θ)+21λ∣∣θ∣∣2=θargminN1n=1∑NL(y(n),f(x(n);θ))+21λ∣∣θ∣∣2,
其中 ∣∣θ∣∣||\\theta||∣∣θ∣∣ 是 ℓ2\\ell_2ℓ2 范数的正则化项,用来减少参数空间,避免过拟合; λ\\lambdaλ 用来控制正则化的强度。
正则化项也可以使用其他函数,比如 ℓ1\\ell_1ℓ1 范数。
- 范数
- 范数是机器学习常用的正则化方法。范数的一般化定义:
∣∣X∣∣p=(∑i=1n∣xi∣p)1p||X||_p=(\\sum^n_{i=1}|x_i|^p)^{\\frac{1}{p}}∣∣X∣∣p=(i=1∑n∣xi∣p)p1 - 对于 ℓ1\\ell_1ℓ1 范数,它可以产生稀疏权值矩阵(稀疏模型),用于特征选择,一定程度上防止过拟合.
∣∣X∣∣1=∑i=1n∣xi∣||X||_1=\\sum^n_{i=1}|x_i|∣∣X∣∣1=i=1∑n∣xi∣ - 对于 ℓ2\\ell_2ℓ2 范数,它可以防止模型过拟合。
∣∣X∣∣2=∑i=1nxi2||X||_2=\\sqrt{\\sum^n_{i=1}x_i^2}∣∣X∣∣2=i=1∑nxi2
从贝叶斯学习角度来讲,正则化是引入了参数的先验分布,使其不完全依赖训练数据。
- 欠拟合 (Underfitting)
- 模型不能很好地拟合训练数据,在训练集上的错误率比较高。
- 欠拟合一般是由于模型能力不足造成的。
下图为过拟合和欠拟合的示例。
机器学习可以看做一个从高维、有限、有噪声的数据上得到更一般的规律的泛化问题。机器学习中的学习准则并不仅仅是拟合训练集上的数据,同时也要使得泛华错误最低。
给定一个训练集,机器学习的目标是从假设空间中找到一个泛化错误较低的“理想”模型,以便更好地对未知的样本进行预测,特别是不在训练集中出现的样本。
优化算法
在确定了训练集 D\\mathcal{D}D、假设空间 F\\mathcal{F}F 以及学习准则后,如何找到最优的模型 f(x;θ∗)f(\\pmb{x};\\theta^*)f(xxx;θ∗) 就成了一个最优化 (Optimization) 问题。
机器学习的训练过程就是最优化问题的求解过程。
- 参数与超参数
- 在机器学习中,优化又可分为参数优化和超参数优化。
- 模型 f(x;θ)f(\\pmb{x};\\theta)f(xxx;θ) 中的 θ\\thetaθ 称为模型的参数,可以通过优化算法进行学习。
- 除了可学习的参数 θ\\thetaθ 之外,还有一类参数用来定义模型结构或优化策略的,这一类参数称为超参数 (Hyper-Parameter)。
- 常见的超参数包括:聚类算法中的类别个数、梯度下降法中的步长、正则化项的系数、神经网络的层数、支持向量机中的核函数等。
- 超参数优化是机器学习的一个经验性很强的技术,通常是按照人的经验设定,或者通过搜索的方法对一组超参数组合进行不断试错调整。
梯度下降法
在机器学习中,最简单、最常用的优化算法就是**梯度下降法*8,即首先初始化参数 θ0\\theta_0θ0,然后按下面的迭代公式来计算训练集 D\\mathcal{D}D 上风险函数的最小值:
θt+1=θt−α∂RD(θ)∂θ=θt−α1N∑n=1N∂L(y(n),f(x(n);θ))∂θ,\\begin{aligned}\\theta_{t+1} &=\\theta_t-\\alpha\\frac{\\partial\\mathcal{R}_{\\mathcal{D}}(\\theta)}{\\partial\\theta}\\\\ &=\\theta_t-\\alpha\\frac{1}{N}\\sum^N_{n=1}\\frac{\\partial\\mathcal{L}(y^{(n)},f(\\pmb{x}^{(n)};\\theta))}{\\partial\\theta},\\end{aligned}θt+1=θt−α∂θ∂RD(θ)=θt−αN1n=1∑N∂θ∂L(y(n),f(xxx(n);θ)),
其中 θt\\theta_tθt 为第 ttt 次迭代时的参数值,α\\alphaα 为搜索步(学习率 (Learning Rate))。
提前停止
针对梯度下降的优化算法,除了加正则化项以外,还可以通过提前停止来防止过拟合。
在梯度下降训练的过程中,由于过拟合的原因,在训练样本上收敛的参数,并不一定在测试集上最优。因此,除了训练集和测试集之外,有时也会使用一个验证集 (Validation Set) 来进行模型选择,测试模型在验证集上是否最优。
在每次迭代时,把新得到的模型 f(x;θ)f(\\pmb{x};\\theta)f(xxx;θ) 在验证集上进行测试,并计算错误率。如果在验证集上的错误率不再下降,就停止迭代,即提前停止 (Early Stop)。
下图为提前停止示例。
随机梯度下降法
上文梯度下降法中,目标函数是整个训练集上的风险函数,这种方式称为批量梯度下降法 (Batch Gradient Descent,BGD)。
批量梯度下降法在每次迭代需要计算每个样本上损失函数的梯度并求和。当训练集中的样本数量 NNN 很大时,空间复杂度较高,每次迭代的计算开销也很大。
假设每个样本都是独立同分布地从真实数据分布中随机抽取来的,真正的优化目标是期望风险最小。
- 对比
- 批量梯度下降法是从真实数据分布中采集 NNN 个样本,并由它们计算出来的经验风险的梯度来近似期望风险的梯度。
- 为了减少每次迭代的计算复杂度,可以在每次迭代时只采集一个样本,计算这个样本损失函数的梯度并更新参数,即随机梯度下降法 (Stochastic Gradient Descent,SGD)。
随机梯度下降法在经过足够多次数的迭代时,它也可以收敛到局部最优解。
下图为随机梯度下降法的训练过程。
随机梯度下降法实现简单,收敛速度很快,但由于训练集中存在噪声,会造成训练过程中结果的上下浮动。
小批量梯度下降法
小批量梯度下降法 *(Mini-Batch Gradient Descent)*是批量梯度下降法和随机梯度下降法的折中。
每次迭代时,随机选取一小部分训练样本来计算梯度并更新参数,这样既能兼顾随机梯度下降法的优点,又能提高训练效率。
第 ttt 次迭代时,随机选取一个包含 KKK 个样本的子集 St\\mathcal{S}_tSt,计算这个子集上每个样本损失函数的梯度并进行平均,然后再进行参数更新:
θt+1←θt−α1K∑(x,y)∈St∂L(y,f(x;θ))∂θ\\theta_{t+1} \\leftarrow \\theta_t – \\alpha\\frac{1}{K}\\sum_{(x,y)\\in \\mathcal{S}_t} \\frac{\\partial\\mathcal{L}(y,f(\\pmb{x};\\theta))}{\\partial\\theta}θt+1←θt−αK1(x,y)∈St∑∂θ∂L(y,f(xxx;θ))
小批量随机梯度下降法有收敛快、计算开销小的优点,逐渐成为大规模机器学习中的主要优化算法。
自我理解
一些概念的理解
- 机器学习
- 从具体的有限个数据中学习出一般的规律,再利用一般的规律对具体的未知的数据进行预测。
- 学习准则与损失函数
- 在第一次接触这两个概念时有些混淆。
- 损失函数是指对每一个训练样本的模型预测结果与真实标签值的差异评价
- 学习准则是在单个样本损失函数的基础上,对整个训练集损失评价的整合
- 期望风险与经验风险
- 期望风险是指在理想情况下训练集无限能够得到数据真实的数据分布和映射函数时,此时模型的预测和它的差异。
- 经验风险是指在具体的有限个训练集时无法得到真实的数据分布和映射函数,计算此时训练集的平均损失来替代期望风险。
- 泛化错误
- 由于利用经验风险来替代期望风险,必然会存在误差。
- 由于机器学习的过程就是从具体到一般的泛化过程,就称作泛化错误
- 过拟合与欠拟合
- 过拟合是指模型训练后在训练集上错误率很低,但是在未知数据上错误率很高
- 欠拟是指合模型不能很好地拟合训练数据,在训练集上的错误率比较高。
- 提前停止
- 为了避免模型过拟合,就有了训练过程提前停止。
- 它的机制利用了验证集。在每一次训练结束后,在验证集上进行测试,当损失不在下降但训练次数还有剩余时,停止训练模型。