Machine Learning Chinese NLP :::: Data for Machine Learning - Chad Salinas ::: Data Scientist
Life and times of Chad Salinas
Chad Salinas, golf caddy, data scientist, chad rPubs, recovering chess addict, daddy caddy
1307
post-template-default,single,single-post,postid-1307,single-format-standard,qode-listing-1.0.1,qode-social-login-1.0,qode-news-1.0,qode-quick-links-1.0,qode-restaurant-1.0,ajax_fade,page_not_loaded,,qode-title-hidden,qode_grid_1300,qode-theme-ver-12.0.1,qode-theme-bridge,bridge,wpb-js-composer js-comp-ver-5.4.2,vc_responsive

Machine Learning Chinese NLP :::: Data for Machine Learning

Data for Machine Learning

在之前的视频中 我们讨论了评价指标

在本节课的视频中
我要稍微转换一下
讨论一下机器学习系统设计中
另一个重要的方面
这往往涉及到
用来训练的数据
有多少
在之前的一些视频中
我曾告诫大家不要盲目地开始
而是花大量的时间
来收集大量的数据
因为数据
有时是唯一能实际起到作用的

但事实证明
在一定条件下
我会在这个视频里讲到
这些条件是什么
得到大量的数据并在
某种类型的学习算法中进行训练
可以是一种
有效的方法来获得
一个具有良好性能的学习算法

而这种情况往往出现在
这些条件对于你的问题
都成立 并且
你能够得到大量数据的
情况下 这可以是
一个很好的方式来获得
非常高性能的学习算法

因此 在这段视频中
让我们一起讨论一下这个问题
我先讲一个故事

很多很多年前 我认识的两位研究人员
Michele Banko 和
Eric Brill 进行了一项有趣的研究

他们感兴趣的是研究
使用不同的学习算法的效果
与将这些效果
使用到不同训练数据集上 两者的比较
他们当时考虑这样一个问题
如何在易混淆的词之间进行分类
比如 在这样的句子中:
早餐我吃了__个鸡蛋 (to,two,too)
在这个例子中
早餐我吃了2个鸡蛋

这是一个
易混淆的单词的例子 而这是另外一组情况
于是他们把诸如这样的机器学习问题
当做一类监督学习问题
并尝试将其分类
什么样的词
在一个英文句子特定的位置
才是合适的

他们用了几种不同的学习算法
这些算法都是
在他们2001年进行研究的时候
都已经
被公认是比较领先的
因此他们使用了一个方差
用于逻辑回归上的一个方差
被称作”感知器” (perceptron)
他们也采取了一些
过去常用
但是现在比较少用的算法
比如 Winnow 算法
很类似于
回归问题
但在一些方面又有所不同
过去用得比较多
但现在用得不太多
还有一种基于内存的学习算法
现在也用得比较少了
但是我稍后会讨论一点
而且他们用了一个朴素算法
这个我们将在
这门课程中讨论到
这些具体算法的细节不那么重要
想象一下
就是选了四种分类算法 这些具体算法并不重要

他们所做的就是
改变了训练数据集的大小
并尝试将这些学习算法
用于不同大小的
训练数据集中 这就是他们得到的结果
这些趋势非常明显
首先大部分算法
都具有相似的性能
其次 随着训练
数据集的增大
在横轴上代表
以百万为单位的

训练集大小
从0.1个百万到1000百万
也就是到了
10亿规模的训练集的样本
这些算法的性能

也都对应地增强了
事实上 如果
你选择任意一个算法 可能是
选择了一个”劣等的”算法
如果你给这个
劣等算法更多的数据 那么
从这些列子中看起来的话 它看上去
很有可能会其他算法更好 甚至会比”优等算法”更好

由于这项原始的研究
非常具有影响力 因此已经有
一系列许多不同的
研究显示了类似的结果
这些结果表明 许多不同的
学习算法有时倾向于
表现出非常相似的表现
这还取决于一些细节
但是真正能提高性能的
是你能够给一个算法大量的训练数据

像这样的结果
引起了一种
在机器学习中
的普遍共识:
“取得成功的人不是拥有最好算法的人
而是拥有最多数据的人”

那么这种说法
在什么时候是真 什么时候是假呢?
因为如果我们有一个学习算法
并且如果这种说法是真的
那么得到大量
的数据通常是
保证我们
具有一个高性能算法
的最佳方式 而不是
去争辩应该用什么样的算法

假如有这样一些假设
在这些假设下有
大量我们认为有用的训练集

我们假设在我们的
机器学习问题中 特征值
x 包含了足够的信息
这些信息可以帮助我们用来准确地预测 y

例如 如果我们采用了
我们前一张幻灯片里的所有容易混淆的词
假如说它能够描述 x
捕捉到需要填写
的空白处周围的词语
那么特征捕捉到之后
我们就希望有 对于“早饭我吃了__鸡蛋”
那么这就有
大量的信息来告诉我
中间我需要填的
词是“两个” (two)
而不是单词 to 或 too

因此特征捕捉
哪怕是周围词语中的一个词
就能够给我足够的
信息来确定出
标签 y 是什么
换句话说
从这三组易混淆的词中
我应该选什么
词来填空

这就是一个例子
特征值 x 有充足的信息
来确定 y
举一个反例

设想一个
房子价格的问题
房子只有大小信息
没有其他特征

那么
如果我告诉你
这个房子有
500平方英尺 但是我没有告诉你其他的特征信息
我也不告诉你这个
房子位于这个城市房价比较昂贵的区域
如果我也不告诉你
这所房子的
房间数量 或者
它里面陈设了多漂亮的家具
或这个房子是新的还是旧的
我不告诉你其他任何信息
除了这个房子
有500平方英尺以外
然而除此之外还有许多其他因素
会影响房子的价格
不仅仅是房子的大小
如果所有
你所知道的只有房子的尺寸 那么事实上
是很难准确预测它的价格的

这是对于这个假设
的一个反例
假设是特征能够提供足够的信息
来在需要的水平上预测出价格
我经常思考 如果我想测试这样一个
假设的方式是什么
我经常这样问自己:

给定一个输入特征向量 x
给定这些特征值
也给定了相同的可用的信息和学习算法

如果我们去请教这个领域的人类专家
一个人类专家能够
准确或自信地预测出
y 的值吗?
第一个例子 如果我们去
找你认识的一个英语专家
比如你找到了一个
英语说得很好的人 那么
一个英语方面的专家
大部分像
你和我这样的人
我们可能不难
预测出在这种情况下
该使用什么样的语言
一个英语说得好的人 应该可以预测得很好
因此这就给了我信心
x能够让我们
准确地预测y 但是与此相反
如果我们去找一个价格上的专家
比如 可能是一个房地产经纪人
或者职业售楼小姐
如果我只是告诉他们
一个房子的大小
然后问他们房子的价格
那么即使是擅长房价评估
或者售房方面的专家
也不能告诉我
房子的价格是多少
所以在房价的例子中
只知道房子的大小并不能
给我足够的信息来预测
房子的价格
如果这个假设是成立的

那么让我们来看一看
大量的数据是有帮助的情况
假设特征值有
足够的信息
来预测 y 值
假设我们使用一种
需要大量参数的
学习算法
比如有很多特征的
逻辑回归或线性回归
或者我有时做的一件事
我经常做的一件事
就是用带有许多隐藏单元的神经网络
那又是另外一种
带有很多参数的学习算法了

这些都是非常强大的学习算法
它们有很多参数
这些参数可以拟合非常复杂的函数

因此我要调用这些

我将把这些算法想象成
低偏差算法 因为
我们能够拟合非常复杂的函数

而且因为我们有
非常强大的学习算法
这些学习算法能够拟合非常复杂的函数

很有可能 如果我们
用这些数据运行
这些算法 这种算法能
很好地拟合训练集
因此
训练误差就会很低

现在假设我们使用了
非常非常大的训练集
在这种情况下 如果我们
有一个庞大的训练集 那么
尽管我们希望有很多参数
但是如果训练集比
比参数的数量还大
甚至是更多 那么这些
算法就不太可能会过度拟合

因为我们有如此
庞大的训练集
并且不太可能过度拟合
也就是说训练
误差有希望
接近测试误差
最后把这两个
放在一起 训练集
误差很小 而
测试集误差又接近
训练误差
这两个就意味着
测试集的误差

也会很小

另一种考虑
这个问题的角度是
为了有一个高
性能的学习算法 我们希望
它不要有高的偏差和方差

因此偏差问题 我么将
通过确保
有一个具有很多
参数的学习算法来解决 以便
我们能够得到一个较低偏差的算法

并且通过用
非常大的训练集来保证
我们在此没有方差问题
我们的算法将
没有方差 并且
通过将这两个值放在一起
我们最终可以得到一个低
误差和低方差

的学习算法 这
使得我们能够
很好地测试测试数据集
从根本上来说 这是一个关键
的假设:特征值
有足够的信息量 且我们
有一类很好的函数
这是为什么能保证低误差的关键所在

它有大量的
训练数据集 这能保证得到更多的方差值

因此这给我们提出了
一些可能的条件
一些对于
问题的认识 如果
你有大量的数据
而且你训练了一种
带有很多参数的学习算法 那么这将
会是一个很好的方式来提供
一个高性能的学习算法
我觉得关键的测试
我常常问自己
首先 一个人类专家
看到了特征值 x
能很有信心的预测出
y值吗? 因为这可以
证明 y
可以根据特征值 x
被准确地预测出来 其次
我们实际上能得到一组
庞大的训练集并且在这个
训练集中训练一个有
很多参数的学习算法吗?
如果你不能做到这两者
那么更多时候
你会得到一个性能很好的学习算法

No Comments

Sorry, the comment form is closed at this time.