DEEP LEARNING第五章
来源:互联网 发布:百度seo一本通pdf下载 编辑:程序博客网 时间:2024/05/16 00:31
Chapter 5 Machine Learning Basics
初学者要去Murphy的Machine Learning或者是Bishop的Pattern Recognition and Machine Learning. 有基础的可以直接跳到5.12节.
5.1 Learning Algorithms
机器学习的学习指的是什么?有一种popular的定义是:
A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.
就是说某个任务T,通过经验E改进以后, 性能P得到提升.
5.1.1 任务T
常见的任务有:
1. 分类:任务是寻找一个映射
2. 输入缺失分类: 有信息缺失时, 我们原本要寻找的是一个映射, 现在要找的是一族映射针对不同的丢失信息, 一种办法是学习每个变量的概率分布, 然后我们通过边缘化丢失的变量来得到分类结果. 我的理解大概就是说比如说第一个变量丢失了,那我们就只能靠第二(比方说取值0)和第三个变量(比方说取值0)来猜测分类结果, 比如说第一个变量在不丢失的时候取1的概率是80%, 取0的概率是20%, 那么就当他是1,0,0来预测出来是80%的概率的分类结果, 0,0,0是20%的分类结果.
3. 回归: 分类是离散的, 回归可以想成是无穷多个类.
4. 转录Transcription:转录就是把一些非结构化的表达转录成离散的文本形式, 这样说比较抽象, 比如说图片转录成文字, 把声波转录成文字.
5. 翻译: NLP 中把一种语言翻译成另一种语言.
6. 结构化输出 Strucutured output : 就是指需要输出一个向量,且输出值之间有紧密的关系. 转录和翻译都包含在结构化输出中, 又或者是语义分析, 把句子中的单词输出成一颗结构树.
7. 异常检测 Anomaly detection: 在一族事件或对象中筛选出异常的个体,比如说信用卡欺诈.
8. 合成和采样 Synthesis and sampling: 需要生成和训练数据相似的样本, 比如说生成动画片的背景, 是一种结构化输出. GAN的生成的部分就应该是这个任务.
9. 缺失值填补Imputation of missing values: 任务就是填补example
10. 去噪Denoising: 输入损坏的样本(corrupted example)
11. 密度估计或概率函数估计: 就是估计概率分布, 估计出来概率分布也有利于我们解决其他问题比如说缺失值填补.
5.1.2 性能度量P
性能P一定是对应某个特定的任务T而言的, 不同的任务有不同的度量方式.
比如说有缺失值的分类和转录, 我们会用准确率来作为衡量的依据, 也可以用错误率来衡量, 错误率还被称为expected 0-1 loss(0-1损失的期望), 用起来就是结果对了loss为0, 结果错了loss为1,平时loss function里面也是这样用的.
我们通常用训练集训练, 在测试集上的性能P来衡量效果. 对于一个任务, 给出P其实是不容易的, 具体怎么样衡量是一个好的衡量指标是不好定义的, 比如说是宁愿不放过一个坏人所以可以容忍杀一些好人,还是说一个好人都不能错杀,宁愿放掉一些坏人. 有的时候我们知道应该度量谁是最好的, 但这个值很难得到,只能寻求一些近似的方法来度量.
5.1.3 经验E
机器学习大致分为监督算法和无监督算法, 还有半监督算法和强化学习.
学习算法就是通过dataset里的一个个example学习出来的, 学习example的feature来得到分类或者是回归等等的结果.
1. 无监督学习算法:通常是要生成数据集的概率分布, 具体的算法比如说聚类.
2. 有监督学习算法:每个样本有label或是target的. 比如说有一个有名的数据集叫Iris鸢尾花, 用它提供的一些特征比如说花瓣长度等等,把鸢尾花分类成不同品种.
无监督可以说是从给定的输入样本
有监督和无监督的分界不是非常明确, 无监督的算法也可以分解成几个有监督的算法:
有监督的算法也可以用贝叶斯公式转化为无监督的学习:
3. 半监督算法:就是一部分有label一部分没有label的样本.
4. 强化学习: 现在整个学习不是集中在某个dataset上, 而是要和环境交互, 比如说走迷宫.
dataset 我们用一个矩阵来给出, 矩阵的一行是一个样本, 样本的每个特征放在不同的列. 比如说鸢尾花的数据是150个样本, 每个样本有4个特征,这样构成的是一个
5.2 线性回归
输入:
我们通过线性回归得到的
在test set上衡量回归的效果,用均方误差来给出error:
均方误差也可以看成是欧氏距离的平方,
我们设计
写成分量的方式比较容易计算, 首先省去所有的train的上标, 设
就是说
写成矩阵形式就是
线性回归也可以加一个截距项,
5.3 泛化, 容量, 过拟合与欠拟合
在没有训练过的数据集上的效果好不好叫模型的泛化能力, 我们在train set上训练时希望尽可能降低训练误差, 到测试集上我们也期望泛化误差(或测试误差)小. 但我们只能观测到训练集上的情况, 如何影响测试集上的结果,有可能会出现训练集上效果很好, 但测试集上效果不好的情况.
首先我们要假设样本都是独立同分布的, 无论是训练集还是测试集的样本都符合分布
学习算法的结果取决于:
1. 训练误差尽可能小
2. 缩小训练误差和测试误差的差距
这样对应两个机器学习的主要问题:欠拟合和过拟合. 欠拟合指训练误差不够小, 过拟合指训练误差和测试误差的差距很大. 我们需要调整模型的容量, 来避免欠拟合和过拟合. 模型的容量是指其拟合各种函数的能力,容量太低会欠拟合, 容量太高会过拟合.
我们可以选择合适的假设空间(hypothesis space), 就是说我们允许模型落在怎样的空间里, 从哪些函数族里选择函数叫这个模型的表示容量, 而其实我们并不一定能够选到最优的函数, 而是尽可能地选择较优的函数, 也就是说有效容量会比表示容量小.
奥卡姆剃刀(Occam’s razor)原理:在同样能够解释已知观测现象的假设中,我们应该挑选“最简单”的那一个.
VC维(Vapnic-Chervonenkis): 按照我自己理解的意思来解释: 如果平面上给定三个点然后给定他们的label(二分类),那我们一定可以找到一条直线分开两类, 但如果给定四点, 就会产生XOR的情况, 一条直线是无法分开两类的. 这样线性模型在二分类的VC维是3. VC为是用来衡量分类器能分类的训练样本的最大数目. 但我最近看的一些图像的paper都说VC维这个说法已经不太正确了, 现在很多的paper都是不符合VC维的某个定理, 但效果却越来越好.
统计学的定理告诉我们: 模型的容量越大, 训练误差和测试误差的gap的上界越大, 但随着训练样本增大而下降. 但这个定理只存在在理论中,深度学习中计算这些东西都很困难, 而且gap的上界给的估计很松, 无法有效地估出gap.
下图给出了欠拟合和过拟合的图示, 所以存在一个比较理想的参数选择可以同时减小两者的发生.
除此以外, 有一种可以容许任意高的容量的模型是非参数模型(non-parametric models). 非参数模型是在观测到新数据前, 不规定模型的参数个数. 我们会设计一些非参数模型, 比如说最近邻回归, 或者是一个算法嵌套一个算法, 外层算法是增加参数数目, 内层是规定参数数目下的参数模型.
理想的模型是假设我们知道生成数据的真实分布, 然而分布可能有噪声, 所以由
5.3.1 没有免费午餐定理
这个定理说明的是:一个普适的且效果好的算法是不存在的, 我们要寻找的算法是对应某个特定问题的或者说数据符合某个特定分布的数据的算法.
5.3.2 正则化
我们可以对学习算法加一些偏好, 比方说在loss function里加入weight decay,把原来的loss function 改为:
其中参数
5.4 超参数和验证集
超参数是一个参数, 但不是算法可以学习得来的, 比方说前文中正则项前面的
一般一个参数被定为超参数, 是因为它不适合在训练集中学习, 比方说要拟合的多项式的次数, 训练集上为了得到更好的效果, 一定会趋向于取一个很大的次数, 这样往往会降低训练集误差, 但也会导致过拟合.
为此,我们引入验证集, 验证集是要从训练集里分出来的, 不是从测试集里分出来. 因为测试集不能参与到任何选择参数或者超参数的进程中来. 通常训练集:测试集=8:2
5.4.1 交叉验证
- DEEP LEARNING第五章
- Deep Learning 第五章 机器学习基础
- Deep Learning for Nature Language Processing --- 第五讲
- Deep Learning for Nature Language Processing --- 第五讲
- 《deep learning》读书笔记------第六章
- Deep learning
- deep learning
- 【deep learning】
- Deep Learning
- Deep Learning
- deep learning
- Deep learning
- deep learning
- Deep Learning
- Deep Learning
- 【deep learning】
- deep learning
- deep learning
- andriod入门学习(一)--新建项目及简单控件拖拽生成
- 占楼
- 使用swiper做的小案例
- 转义序列和反转义(&#x)
- 快速排序
- DEEP LEARNING第五章
- Servlet(cookie的生存时间与请求路径)
- Codeforces Round #284 (Div. 2) D. Name That Tune 概率dp
- 努力做一个灵魂画师、Affinity Designer使用(一)
- 请求servlet的web.xml配置说明
- 并发基础_15_并发_线程池(ThreadPoolExecutor)
- Javascript学习之H5自动重连技术实现方法详解
- Debian/Ubuntu应用程序开机自启动
- Matlab 使用技巧