zoukankan      html  css  js  c++  java
  • 【23】不匹配数据划分的偏差和方差;判断问题所在的几个重要参数

    不匹配数据划分的偏差和方差

    存在的问题

    估算学习算法的偏差和方差,真的可以帮你确定接下来应该优先做的方向。
    但是当你的训练集来自和开发/测试集不同分布的时候,分析偏差和方差的方式可能不一样。

    训练集的误差:在得到最终的神经网络之后,将其应用到训练集的每个样本,只进行正向传播,然后得到的错误率。

    如果开发集和训练集同分布,你可能会说,这里存在很大的方差问题。你的算法不能从训练集很好地泛化,它处理训练集很好,但处理开发集就突然间效果很差了。

    但如果你的训练数据和开发数据来自不同的分布,那么我们就不能简单地下这个结论。特别是,也许算法在开发集上做的不错,可能因为训练集都是高分辨率图片,很容易识别,但开发集要难以识别得多。
    所以也许神经网络本身没有方差问题,这只不过反应了开发集包含更难准确分类的问题。

    所以这个分析的问题在于,当你看训练误差,再看开发误差,有两个事情改变了:

    算法只见过训练集数据,没见过开发集数据。
    开发集数据来自不同的分布。
    因为我们同时改变了两件事,所以很难确认这增加的9%的误差,有多少是因为算法本身的方差问题,有多少是因为训练、测试集的数据不同分布。

    训练-开发集的引入
    为了分辨这两个因素的影响,定义一组新的数据是有意义的,我们称之为训练-开发集(training-dev set)

    得到训练-开发集的方法为:随机打散训练集(randomly shuffle the training set),然后分出一部分作为训练-开发集。

    这样,我们有了训练集、和训练集不同分布的开发集和测试集(但二者同分布)、和训练集同分布的训练-开发集。

    神经网络的训练方式+区分方差偏差和数据不匹配
    我们只在训练集来训练神经网络(不让神经网络在训练-开发集上跑后向传播),之后我们看神经网络在训练集、训练-开发集、开发集上的误差。

    在上方左边例子中,我们可以得出模型方差过大的问题(high variance),即神经网络在训练集表现良好,但无法泛化到同分布的训练-开发集上(也就是同分布但没见过的数据)。

    在上方右边的例子中,我们可以看到训练-开发集的误差与训练集的误差差不多,说明方差的问题已经很小了,现在的问题是数据不匹配(data mismatch)的问题(很好理解)。

    对于下方左边的例子,训练集的误差就很大,说明模型存在偏差过大的问题(high bias),或者叫可避免偏差问题。

    当然,以上三个问题也可能同时存在多个。比如下方右边的例子,同时存在高偏差和数据不匹配的问题。

    判断问题所在的几个重要参数


    左边从上到下依次为

    • human level  人类的表现
    • training set error     训练集错误率
    • training-dev set error    训练-开发集错误率
    • dev error     开发集错误率
    • test error   测试集错误率

     availible bias 可避免误差=训练集错误率 - 人类的表现

     训练-开发集错误率  -  训练集错误率  表现了方差 (variane) 的大小

    开发集错误率 -  训练-开发集错误率  表现了数据不匹配(数据不同分布)的程度

    测试集错误率 - 开发集错误率  表现了开发集过拟合的程度  如果这俩差距过大,说明开发集过拟合了,所以需要一个更大的开发集。  要注意  开发集和测试集需要同一分布

    下面以一个例子介绍一下怎么分析误差

      还是那个调动后视镜的语音识别的例子。

    这个表格的左上方的是一般的语音识别,右上边的是调动后视镜的语音识别。 一般的语音识别下方是依次是人类错误率、训练集错误率、训练-开发集错误率。后视镜语音识别下边的依次是人类错误率、训练集错误率、开发/测试集错误率。

    Human level反映了人类识别这些的难度,对于一般的语音人类错误率为4,后视镜语音为6,说明对人类来说后视镜语音更难识别。    其他的数据之间的分析方法与之前说的一样。

  • 相关阅读:
    手机版页面跳转
    设计模式转载(史上最全设计模式导学目录|完整版)
    linux 常用命令
    数据结构与算法JavaScript描述.
    常用算法js版(冒泡排序 ,选择排序 ,插入排序 ,希尔排序 ,归并排序 ,快速排序 ,堆排序 ,计数排序 ,桶排序 ,基数排序)
    伪元素和伪类
    双向数据绑定
    2016年黑马程序员已出品各学科最新学习路线图:
    jQuery插件开发全解析
    蛋白质、碳水化合物和脂肪
  • 原文地址:https://www.cnblogs.com/lau1997/p/12361370.html
Copyright © 2011-2022 走看看