深度学习笔记(五)第五章 深度学习基础

深度学习是一种特殊的机器学习。要了解深度学习需要对机器学习有扎实的理解。本章是对整本书需要使用的最重要的通用原理的简单课程。
什么是学习算法?比如:线性回归。大多数学习算法需要预先设置好超级参数(hyperparameters)。我们要讨论怎么去设置它。
机器学习本质上是应用统计学,强调使用计算机来统计函数估计和置信区间。因此我们提出两种统计学上重要的方法:频率估计和贝叶斯推理。大部分机器学习算法可以分为监督学习和非监督学习。大部分的机器学习算法依赖于随机梯度下降算法来优化。

5.1学习算法

任务 T
1.分类器
2. 分类器(有数据缺失)
3. 回归
4. 图像、语音识别
5. 机器翻译
6. 结构化输出(比如识别图像中的句子)
7. 异常检测
8. 合成和取样
9. 预测缺失数据
10. 去噪
11. 概率密度估计或者概率质量估计
表现衡量 P
准确性
错误率
期望 E
机器学习可以广义的分成监督学习和非监督学习。
非监督学习从数据集的特质中学习到有用的属性。非监督学习从水机数组x,来获得概率分布P(x),或者更进一步的P(y|x)。
监督学习的每个数据实例都有label或者叫taraget。监督学习算法用它对数据实例进行分类。
增强学习
例子:线性回归
线性回归的数学表示是从输入数组x∈预测输出标量y∈R。我们假定是机器学习模型对y的预测。定义如下:
其中是一个参数数组。
我们可以把w看做权重集合,它的每个权重值如何来影响对应的特性来决定预测的结果。
我们用下面的公式来定义任务T:
由x来预测y,定义为
我们定义度量机器学习算法的方法叫P,我们先找出一个集合m,它不参与算法的训练,并且找出对应的y值。我们把这样的集合称为测试集。把集合m表示为 度量机器学习算法效果P可以在测试集上用均方误差(MSE)。
公式5.4
其中 是对测试集合的预测。
是真实结果。
马上可以看出来MSE就是两个预测间的欧几里得范数。
那么要提高P,就是要减小MSE(训练集合)。在数学上就是找到梯度为0的点。如下图
图示5.1
为了拟合10个点,找到了线性函数y=wx,通过改变参数w(右图)来找使得MSE最小的w。
正规方程
偏离量b(bias)

容量 过拟合 欠拟合

机器学习的核心挑战是我们需要在新的数据上运行,而不是我们模型训练的数据。这个过程叫泛化(generalization)。
对训练集做的误差评估叫训练误差。到目前为止我们讨论的问题是优化问题,区别于优化问题和机器学习是泛化误差,也叫测试误差。
我们通常通过单独从训练集以外的数据中拿到的测试数据,来衡量它额测试误差,以达到评估机器学习的泛化误差的目的。
统计学习理论提到了如何选择训练集和测试集。
训练集和测试集都是通过数据生成过程(data generating process)得到的。然后我们假定这个过程得到的训练集和测试集是相互独立且具有相同的概率分布。我们把这个概率分布叫数据生成分布(data generating distribution)记为Pdata。
我们衡量一种机器学习算法的优劣需要考虑两点:
1. 使得训练误差小
2. 使得训练误差和测试误差小
这两个点分别对应了机器学习中的两大挑战:过拟合和欠拟合。
欠拟合是机器学习算法无法有效学习到特征,使得训练误差足够小。
过拟合是训练误差和测试误差之间的差距太大,泛化能力弱。
我们可以通过调整容量(capacity)来控制机器学习模型是过拟合还是欠拟合。
一种控制容量的方法是选择假设空间(hypothesis space),假设空间是机器学习可选的函数集合。例如线性回归算法的假设空间是一系列的线性函数。我们可以让线性回归算法的假设空间中包含多项式,来增加模型的容量。
一阶多项式:
公式5.15
二阶多项式:
公式5.16
9阶多项式:
公式5.17
机器学习算法在容量和真实任务T复杂度适当的时候表现最好。如果容量不够则会欠拟合,无法解决复杂问题。反之则会过拟合。
图示5.2
上图表示线性函数,二阶函数,9阶函数对一个实际为二阶函数的拟合。
事实上还有其他方法可以改变算法容量,也就是说容量不是只由选择的模型来决定的。模型选择假设空间中的可选函数,并调整参数减少训练误差。被称为代表容量。在多数情况下,在假设空间中选出合适的函数是优化的难点。实际情况是,机器学习算法不可能去选最好的函数,而仅仅选择可以明显减少训练误差的函数。因为有这些限制,优化算法不尽完美,有效容量不如代表容量好。
一个现代的改进机器学习模型泛化效果想法可以追溯到哲学家托勒密。被人们广泛成为:奥卡姆剃刀。“如无必要,勿增实体”
统计学习理论提供了多种评估容量的手段。最广为人知的是VC维(Vapnik-Chervonenkis dimension)。但是这些手段在深度学习中都很少使用,原因是我们对于一般非凸函数的优化理论上所知甚少。
我们必须牢记虽然简单的函数容易泛化(测试误差和训练误差差距较小),我们还是要选择足够大的假设空间来获得更低的训练误差。下图描述了容量和训练误差、测试误差之间的关系。
图示5.3
当容量很小的时候,训练误差和测试误差都很高,这里是欠拟合的区域。当容量增加的时候,训练误差和测试误差都下降,但是他们之间的差距在增加。当超过红色线(最佳容量)后,训练误差和测试误差继续增大,我们进入了过拟合区域。
非参数机器学习
非参数模型只是理论存在,不现实。但是我们可以设计现实的非参数模型–让它的复杂度和训练函数相同。比如算法:最近邻回归(nearest neighbor regression)。和线性回归比起来,线性回归有固定大小的权重矩阵,最近邻回归没有这样的权重矩阵,它只是把训练集的X和y存储起来。当需要计算一个Xi对应的值的时候,它只是去存储集合中找到离Xi最近的点,对这个点做线性回归。用公式表达就是这样:最近邻回归
这个算法也可以用距离矩阵来泛化而不用欧几里得范数。
我们也可以通过把一个参数化的学习算法包含在另一算法(随需要增加参数)内来达到创建非参数化学习算法的目的。当然这个方法也有问题(……)被称为贝叶斯误差(Bayes error)。因为在监督学习中x到y的函数可能有天然的随机性,或者y和除了x之外的其他变量有函数关系。
对于非参数学习越多的训练数据可以使得算法接近最佳误差。而对于参数学习算法,会比最佳容量要差,它的误差会接近贝叶斯误差的上界。另外,请注意算法有可能获得最佳容量但同时训练误差和泛化误差的差距却很大。在这种情况下只要增加训练集大小就可以减少这个差距。
如下图所示:
图示5.4

没有免费午餐理论

理论上是不可能通过有限的训练集去泛化到全集。在有限集合上不论是做归纳或者推理逻辑上都是不成立的。
机器学习通过提供概率上的规则,而不是全部确定规则集来避免逻辑归纳理论提到的这个问题。也就是说机器学习许诺会找到使得集合中大多数相关数据可能正确的规则。
即使这样表述,仍然不够清楚。另一种说法是,没有任何机器学习算法在任何的问题上都比另一个算法优秀。幸运的是,我们不需要考虑在任何问题上应用某个最优的机器学习算法,我们假定只需要在具体概率分布问题上设计针对性的机器学习算法。

规则化(regularization)

到目前为止我们只是增加或者减少假设空间中的可选函数来增加或者减少代表容量。我们还举例说明了通过增加或者减少多项式的阶数来解决回归问题。但这些方法还远远不够。
不仅仅要看假设空间中可选的函数数量,还需要考虑这些函数的特征。比如:线性回归函数去学习sin(x)就绝不可能有好的成果。

我们还可以偏向性选择机器学习算法。比如我们可以给线性函数加权值衰减(weight decay)
公式5.18
λ是为了偏向更小的权重事先选定的参数。当λ为零表示没有偏向。大的λ让权重更小。最小化J(w)使得拟合和让权重更小达到最佳平衡。这使得解决方案会有更小的斜率。如图:
图示5.5
权值衰减倾向使用更加简单的拟合函数。

超级参数和验证集

大部分的机器学习算法都有一些参数可用用来控制算法的行为,我们称之为超级参数(hyperparameters)。这些参数不是机器学习算法自己产生的。
一般用80%的训练数据来训练算法,20%的数据用来作为验证集。验证集是用来“训练”超级参数的。
交叉验证
估计、偏离、方差
点估计
偏离
泊松分布的偏离为0.
平均值的高斯分布的偏离为0.
高斯分布的方差的的估计:
样本方差(经过推导,样本方差是高斯分布方差的偏离估计)
非偏离高斯分布的样本方差的估计
这里有两种估计,一种是偏离估计,一种是非偏离估计。通常偏离估计会更有用。
方差Var(Θ)和标准误差
方差的平方根被称为标准误差,SE(Θ)
平衡偏离和方差以减少均方误差(MSE)
公式5.54
随着容量增加,偏离会减小,而方差会增加。如下图:
F5.6
这个图中显示的关系类似容量、欠拟合、过拟合之间的关系。因此在机器学习中经常用MSE来度量泛化误差。
一致性
最大似然估计
条件对数似然与均方误差
最大似然的性质
贝叶斯统计
贝叶斯线性回归
最大后验估计(MAP)
监督学习
概率监督学习
支持向量机
其他简单监督学习算法
非监督学习
PCA(主要成分分析)
K-means聚类
随机梯度下降
创建一个机器学习算法
传统机器学习算法在高维空间面临挑战(计算成本),因此需要深度学习来跨越这些障碍。
维度灾难:随着维度的上升,学习难度会指数增加。如下图
图示5.9
当只有一维的时候,训练算法填充10个区间就可以了。当变成2维的时候需要训练算法填充10X10=100个区间了。维度变高后需要训练的区间呈指数增加。

局部稳定和平滑规则化
平滑先验
局部稳定先验
KNN算法
理论上要预测棋盘中每个格子的颜色,必须要在这个棋盘中的格子中有一个训练样例。(高维函数需要大量的训练数据)那么有没有办法简单有效的表述一个复杂的函数呢?答案是:yes
深度学习的核心思想是我们假设数据是由隐含在多个层级中的多个特征组成的。这些假设可以让我们在训练集数量以及目标可以区分的区域上获得增益。

流行学习

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值