【花书】chapter5:机器学习基础

5.1 学习算法

  • 机器学习算法是一种能够从数据中学习的算法。
  • “学习”的一个定义:对于某类任务T和性能度量P,一个计算机程序被认为可以从经验E中学习是指,通过经验E改进后,它在任务T上由性能度量P衡量的性能有所提升。
5.1.1 任务T
  • 机器学习的任务通常定义为机器学习系统应该如何处理样本。样本是指从某些机器学习系统处理的对象或事件中收集到的已量化的特征的集合。通常会将样本表示成一个向量 x ∈ R n x\in \mathbb R^n xRn,其中向量的每一个元素 x i x_i xi是一个特征。例如一张图片的特征是像素值。
  • 机器学习的任务有:
    • 分类
    • 输入缺失分类。当一些输入可能缺失时,学习算法必须学习一组函数,而不是单个分类函数。每个函数对应着分类具有不同缺失输入子集的x。
    • 回归。给定输入预测数值。
    • 转录。观测一些相对非结构化表示的数据,并转录信息为离散的文本形式。
    • 机器翻译。从一种语言的符号序列转化为另一种语言的符号序列。
    • 结构化输出。结构化输出的输出是向量或者其他多个值的数据结构,并且构成输出的这些不同元素间具有重要关系。
    • 异常检测。筛选或标记不正常或非典型的个体。
    • 合成和采样。生成一些和训练数据相似的新样本。语言合成。
    • 缺失值填补。机器学习算法给定一个新样本 x ∈ R n , x x\in\mathbb R^n,x xRnx中某些元素 x i x_i xi缺失。算法补全这些缺失值。
    • 去噪。根据损坏后的样本预测干净的样本。
    • 密度估计或概率质量函数估计。
5.1.2 性能度量P
  • 准确率。指该模型输出正确结果的样本比率。
5.1.3 经验E
  • 根据学习过程的不同经验,机器学习算法可分为无监督算法和监督算法(有没有标签)。
  • 无监督学习算法训练含有很多特征的数据集,然后学习出这个数据集上有用的结构特征。显式或隐式地学习出概率分布 p ( x ) p(x) p(x)
  • 监督学习算法训练含有很多特征的数据集,不过数据集中的每一个样本都有一个标签或目标。估计 p ( y ∣ x ) p(y|x) p(yx)
  • 表示数据集的常用方法是设计矩阵。设计矩阵的每一行包含一个不同的样本,每一列对应不同的特征。
5.1.4 示例:线性回归
  • 目标:建立一个系统,将向量 x ∈ R n x\in \mathbb R^n xRn作为输入,预测标量 y ∈ R y\in\mathbb R yR作为输出。线性回归的输出是其输入的线性函数,令 y ^ \hat y y^表示模型预测y应取得的值。定义输入为:
    y ^ = w T x , w ∈ R n 是 参 数 变 量 。 w i 是 系 数 , 回 合 特 征 x i 相 乘 之 后 全 部 相 加 起 来 。 \hat y = w^Tx,w\in\mathbb R^n是参数变量。\\w_i是系数,回合特征x_i相乘之后全部相加起来。 y^=wTx,wRnwixi

  • 任务T:通过输出 y ^ = w T x \hat y = w^Tx y^=wTx从x预测y。

  • 性能度量P。一种方法是计算模型在测试集上的均方误差。
    M S E t e s t = 1 m ∑ i ( y ^ ( t e s t ) − y ( t e s t ) ) i 2 y ^ ( t e s t ) 表 示 模 型 在 测 试 集 上 的 预 测 值 。 MSE_{test} = \frac{1}{m}\sum_i(\hat y^{(test)}- y^{(test)})_i^2\\\hat y^{(test)}表示模型在测试集上的预测值。 MSEtest=m1i(y^(test)y(test))i2y^(test)
    最小化MSEtrain,可以简单地求解其导数为0的情况。
    ∇ w M S E t r a i n = 0 ⇒ ∇ w 1 m ∣ ∣ y ^ ( t r a i n ) − y ( t r a i n ) ∣ ∣ 2 2 = 0 ⇒ ∇ w 1 m ∣ ∣ X ( t r a i n ) w − y ( t r a i n ) ∣ ∣ 2 2 ⇒ ∇ w 1 m ( X ( t r a i n ) w − y ( t r a i n ) ) T ( X ( t r a i n ) w − y ( t r a i n ) ) = 0 ⇒ ∇ w ( w T X ( t r a i n ) T X ( t r a i n ) w − 2 w T X ( t r a i n ) T y ( t r a i n ) + y ( t r a i n ) T y ( t r a i n ) ) = 0 ⇒ 2 X ( t r a i n ) T X ( t r a i n ) w − X ( t r a i n ) T y ( t r a i n ) = 0 ⇒ w = ( X ( t r a i n ) T X ( t r a i n ) ) − 1 X ( t r a i n ) T y ( t r a i n ) \nabla _wMSE_{train} = 0\\\Rightarrow \nabla _w \frac{1}{m}||\hat y^{(train)}- y^{(train)}||_2^2=0\\\Rightarrow\nabla _w \frac{1}{m}||X^{(train)}w- y^{(train)}||_2^2\\\Rightarrow\nabla _w \frac{1}{m}(X^{(train)}w- y^{(train)})^T(X^{(train)}w- y^{(train)})=0\\\Rightarrow \nabla_w(w^TX^{(train)T}X^{(train)}w-2w^TX^{(train)T}y^{(train)}+y^{(train)T}y^{(train)})=0\\\Rightarrow 2X^{(train)T}X^{(train)}w-X^{(train)T}y^{(train)}=0\\\Rightarrow w = (X^{(train)T}X^{(train)})^{-1}X^{(train)T}y^{(train)} wMSEtrain=0wm1y^(train)y(train)22=0wm1X(train)wy(train)22wm1(X(train)wy(train))T(X(train)wy(train))=0w(wTX(train)TX(train)w2wTX(train)Ty(train)+y(train)Ty(train))=02X(train)TX(train)wX(train)Ty(train)=0w=(X(train)TX(train))1X(train)Ty(train)

5.2 容量、过拟合和欠拟合

  • 在先前未观测到的输入上表现良好的能力被称为泛化。
  • 决定机器学习算法效果是否好的因素:1.降低训练误差。2.缩小训练误差和测试误差的差距。
  • 欠拟合:模型不能在训练集上获得足够低的误差。
  • 过拟合:训练误差和测试误差之间的差距太大。
  • 模型的容量:其拟合各种函数的能力。
  • 通过改变输入特征的数目和加入这些特征对应的参数来改变容量。
  • 参数模型例如线性回归学习的函数在观测到新数据前,参数向量的分量个数是有限且固定的。非参数模型没有这些限制。
  • 从预先知道的真实分布 p ( x , y ) p(x,y) p(x,y)预测而出现的误差被称为贝叶斯误差。
5.2.1 没有免费午餐定理
  • 机器学习保证找到一个在所关注的大多数样本上可能正确的规则。
  • 没有免费午餐定理表明,在所有可能的数据生成分布上平均之后,每一个分类算法在未事先观测的点上都有相同的错误率。也就是说没有一个算法总是比其他的要好。
  • 当训练集增大时,训练误差可能随之增大,是由于越大的数据集越难以拟合。测试误差随之减小,因为关于训练数据的不正确的假设越来越少。
5.2.2 正则化
  • 可以通过两种方式控制算法的性能:一是允许使用的函数种类,二是这些函数的数量。(就是选择不同的函数以提高算法性能呗)

  • 权重衰减:
    J ( w ) = M S E t r a i n + λ w T w J ( w ) 偏 好 于 平 方 L 2 范 数 较 小 的 权 重 。 λ 是 选 好 的 值 , 控 制 我 们 偏 好 小 范 数 权 重 的 程 度 。 当 λ = 0 , 没 有 任 何 偏 好 。 越 大 的 λ 偏 好 范 数 越 小 的 权 重 ( 这 样 J ( w ) 才 会 越 小 ) 。 J(w) = MSE_{train}+\lambda w^Tw\\ J(w)偏好于平方L^2范数较小的权重。\\\lambda是选好的值,控制我们偏好小范数权重的程度。\\当\lambda = 0,没有任何偏好。越大的\lambda偏好范数越小的权重(这样J(w)才会越小)。 J(w)=MSEtrain+λwTwJ(w)L2λλ=0λJ(w)
    最小化 J ( w ) J(w) J(w)可以看作是拟合训练数据和偏好小权重范数之间的权衡。这会使得解决方案的斜率偏小(可以把w看作是斜率),或是将权重放在较少的特征上。

  • 一般的,正则化一个学习函数 f ( x ; θ ) f(x;\theta) f(x;θ)的模型,我们可以给代价函数添加被称为正则化项的乘法。在权重衰减的例子中,正则化项是 Ω ( w ) = w T w \Omega(w)=w^Tw Ω(w)=wTw

  • 正则化指修改学习算法,使其降低泛化误差而非训练误差。

5.3 超参数和验证集

  • 超参数的值不是学习算法本身学习出来的。
  • 一个选项被设置为不用学习的超参数,因为它太难优化了。更多的情况是该选项必须是超参数,因为他不适合在训练集上学习。
  • 测试集用来估计学习过程完成之后的学习器的泛化误差。重点在于测试样本不能以任何形式参与到模型的选择之中,包括设定超参数。因此我们从训练集中抽取测试集。将训练数据分为训练集和验证集两部分。一个用于学习参数,另一个作为验证集,用于估计训练中或训练后的泛化误差,更新超参数。
5.3.1 交叉验证
  • 当测试集样本太少时,可以在原始数据上随机采样或分离出的不同数据集上进行重复训练和测试。
  • 比较常见的一种方法是:K-折交叉验证过程。将数据集分成k个不重合的子集。测试误差可以估计为k次计算后的平均测试误差。在第i次测试时,数据的第i个子集用于测试集,其他的数据用于训练集。
5.4 估计、偏差和方差
5.4.1 点估计
  • 点估计试图为一些感兴趣的量提供单个最优预测
  • 为了区分参数估计和真实值,习惯将参数 θ \theta θ的点估计表示为 θ ^ \hat \theta θ^
  • 点估计也可以指输入和目标变量之间的关系的估计。我们将这种类型的点估计称为函数估计。
5.4.2 偏差
  • 估计的偏差定义为 b i a s ( θ ^ m ) = E ( θ ^ m ) − θ bias(\hat\theta_m) = \mathbb E(\hat \theta _m)-\theta bias(θ^m)=E(θ^m)θ

5.7 监督学习算法

5.7.2 支持向量机
  • 与逻辑回归不同的是,支持向量机不输出概率,只输出分类。当 w T x + b > 0 w^Tx+b>0 wTx+b>0时,支持向量机预测分类为正类,为负时预测属于负类。
  • 支持向量机使用的是核技巧。核技巧观察到许多机器学习算法都可以写成样本间点积的形式。例如,支持向量机中的线性函数可以重写为 w T x b = b + ∑ i = 1 m α i x T x ( i ) 其 中 x ( i ) 是 训 练 样 本 , α 是 系 数 向 量 。 w^Tx_b = b+\sum_{i=1}^m\alpha_ix^Tx^{(i)}\\其中x^{(i)}是训练样本,\alpha是系数向量。 wTxb=b+i=1mαixTx(i)x(i)α
  • 学习算法重写为上述形式允许我们将x替换为特征函数 ϕ ( x ) \phi(x) ϕ(x)的输出,点积替换为被称为核函数的函数 k ( x , x ( i ) ) = ϕ ( x ) ⋅ ϕ ( x ( i ) ) . k(x,x^{(i)}) = \phi(x)·\phi(x^{(i)}). k(x,x(i))=ϕ(x)ϕ(x(i)).
  • 使用核估计替换点积之后,可以使用如下函数进行预测:
    f ( x ) = b + ∑ i α i k ( x , x ( i ) ) f(x) = b+\sum_i\alpha_ik(x,x^{(i)}) f(x)=b+iαik(x,x(i))
    这个函数关于x是非线性的,关于 ϕ ( x ) \phi(x) ϕ(x)是线性的。 α \alpha α和f(x)之间的关系也是线性的。核函数完全等价于用 ϕ ( x ) \phi(x) ϕ(x)预处理所有的输入,然后在新的转换空间学习线性模式。

5.8 无监督学习算法

  • 一个经典的无监督学习算法是寻找数据的最佳表示。有许多的方式定义较简单的表示。最常见的包括低维表示、稀疏表示和独立表示。
  • 低维表示尝试将x中的信息尽可能压缩到一个较小的表示中,会去掉冗余信息。
  • 稀疏表示将数据嵌入到输入项大多数为0的表示中。
  • 独立表示试图分开数据分布中变化的来源,使得表示的维度是统计独立的。
5.8.1 主成分分析
  • PCA提供了一种压缩数据的方式,也可以视为学习数据表示的无监督学习算法。他学习一种比原始输入维度更低的表示,也学习了一种元素之间彼此没有线性相关的表示。这是学习表示中元素统计独立标准的第一步。要实现完全独立性,表示学习算法也必须去掉变量间的非线性关系。(线性关系和非线性关系都得去掉)
5.8.2 k-均值聚类
  • k-均值聚类初始化k个不同的中心点 { μ ( 1 ) , . . . μ ( k ) } \{\mu^{(1)},...\mu^{(k)}\} {μ(1),...μ(k)},然后迭代交换两个不同的步骤直到收敛。步骤一:每个训练样本分配到最近的中心点 μ ( i ) \mu^{(i)} μ(i)所代表的聚类i。步骤二:每一个中心点 μ ( i ) {\mu^{(i)}} μ(i)更新为聚类i中所有训练样本 x ( j ) x^{(j)} x(j)的均值。

5.9 随机梯度下降

  • 机器学习算法中的代价函数通常可以分解成每个样本的代价函数的总和。例如,训练样本的负条件对数似然可以写成
    J ( θ ) = E X , y ∼ p ^ d a t a L ( x , y , θ ) = 1 m ∑ i = 1 m L ( x ( i ) , y ( i ) , θ ) L 是 每 个 样 本 的 损 失 函 数 L ( x , y , θ ) = − l o g p ( y ∣ x ; θ ) J(\theta) = \mathbb E_{X,y\sim\hat p_{data}} L(x,y,\theta_) = \frac{1}{m}\sum_{i=1}^mL(x^{(i)},y^{(i)},\theta)\\L是每个样本的损失函数 L(x,y,\theta_) = -logp(y|x;\theta) J(θ)=EX,yp^dataL(x,y,θ)=m1i=1mL(x(i),y(i),θ)LL(x,y,θ)=logp(yx;θ)
    对于这些相加的梯度函数,梯度下降需要计算:
    ∇ θ J ( θ ) = 1 m ∑ i = 1 m ∇ θ L ( x ( i ) , y ( i ) , θ ) \nabla_\theta J(\theta) = \frac{1}{m}\sum_{i=1}^m \nabla _\theta L(x^{(i)},y^{(i)},\theta) θJ(θ)=m1i=1mθL(x(i),y(i),θ)
    样本越多,运算代价越大,计算一步梯度下降需要巨大的时间量。

  • 随机梯度下降的核心是梯度是期望。期望可使用小规模的样本近似估计。因此在算法的每一步,我们从训练集中均匀抽出一小批量样本 B = { x ( 1 ) , . . . , x ( m ′ ) } \mathbb B=\{x^{(1)},...,x^{(m')}\} B={x(1),...,x(m)}.数目m’通常是一个相对较小的数。梯度的估计可以表示为:
    g = 1 m ′ ∇ θ ∑ i = 1 m ′ L ( x ( i ) , y ( i ) , θ ) 然 后 使 用 如 下 的 梯 度 下 降 估 计 : θ ← θ − ϵ g , ϵ 是 学 习 率 g = \frac{1}{m'} \nabla _\theta \sum_{i=1}^{m'}L(x^{(i)},y^{(i)},\theta)\\然后使用如下的梯度下降估计:\\\theta \leftarrow\theta-\epsilon g,\epsilon是学习率 g=m1θi=1mL(x(i),y(i),θ)使θθϵg,ϵ

5.11 促使深度学习发展的挑战

维度灾难

高维空间中参数配置数目远大于样本数目。当我们对一个样本对应的结果进行输出时,会根据和这个样本所在单元格相同的样本的输出进行综合并输出,那么如果待测试的样本所在的单元格没有已知的样本,此时如何输出呢。
在这里插入图片描述

局部不变性和平滑性

我们会认为在一个样本的邻域中的所有点和这个样本近似相同,这个先验表明我们学习的函数在小区间内不应发生较大的变化。如果表示区间数目比训练样本数目更多,怎么实现呢。如果依靠假设函数的平滑性是不可以做到这一点的。
如果我们可以通过额外假设生成数据的分布来建立区域间的依赖关系,就可以有效地表示复杂的函数以及使用该函数进行良好的泛化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值