机器学习策略篇:详解可避免偏差(Avoidable bias)
可避免偏差
如果希望学习算法能在训练集上表现良好,但有时实际上并不想做得太好。得知道人类水平的表现是怎样的,可以确切告诉算法在训练集上的表现到底应该有多好,或者有多不好,让我说明是什么意思吧。

经常使用猫分类器来做例子,比如人类具有近乎完美的准确度,所以人类水平的错误是1%。在这种情况下,如果您的学习算法达到8%的训练错误率和10%的开发错误率,那么也许想在训练集上得到更好的结果。所以事实上,算法在训练集上的表现和人类水平的表现有很大差距的话,说明的算法对训练集的拟合并不好。所以从减少偏差和方差的工具这个角度看,在这种情况下,会把重点放在减少偏差上。需要做的是,比如说训练更大的神经网络,或者跑久一点梯度下降,就试试能不能在训练集上做得更好。

但现在看看同样的训练错误率和开发错误率,假设人类的表现不是1%,就把它抄写过来。但知道,在不同的应用或者说用在不同的数据集上,假设人类水平错误实际上是7.5%,也许的数据集中的图像非常模糊,即使人类都无法判断这张照片中有没有猫。这个例子可能稍微更复杂一些,因为人类其实很擅长看照片,分辨出照片里有没有猫。但就为了举这个例子,比如说的数据集中的图像非常模糊,分辨率很低,即使人类错误率也达到7.5%。在这种情况下,即使的训练错误率和开发错误率和其他例子里一样,就知道,也许的系统在训练集上的表现还好,它只是比人类的表现差一点点。在第二个例子中,可能希望专注减少这个分量,减少学习算法的方差,也许可以试试正则化,让的开发错误率更接近的训练错误率。
所以在之前的博客关于偏差和方差的讨论中,主要假设有一些任务的贝叶斯错误率几乎为0。所以要解释这里发生的事情,看看这个猫分类器,用人类水平的错误率估计或代替贝叶斯错误率或贝叶斯最优错误率,对于计算机视觉任务而言,这样替代相当合理,因为人类实际上是非常擅长计算机视觉任务的,所以人类能做到的水平和贝叶斯错误率相差不远。根据定义,人类水平错误率比贝叶斯错误率高一点,因为贝叶斯错误率是理论上限,但人类水平错误率离贝叶斯错误率不会太远。所以这里比较意外的是取决于人类水平错误率有多少,或者这真的就很接近贝叶斯错误率,所以假设它就是,但取决于认为什么样的水平是可以实现的。

在这两种情况下,具有同样的训练错误率和开发错误率,决定专注于减少偏差的策略或者减少方差的策略。那么左边的例子发生了什么?
8%的训练错误率真的很高,认为可以把它降到1%,那么减少偏差的手段可能有效。而在右边的例子中,如果认为贝叶斯错误率是7.5%,这里使用人类水平错误率来替代贝叶斯错误率,但是认为贝叶斯错误率接近7.5%,就知道没有太多改善的空间了,不能继续减少的训练错误率了,也不会希望它比7.5%好得多,因为这种目标只能通过可能需要提供更进一步的训练。而这边,就还(训练误差和开发误差之间)有更多的改进空间,可以将这个2%的差距缩小一点,使用减少方差的手段应该可行,比如正则化,或者收集更多的训练数据。
所以要给这些概念命名一下,这不是广泛使用的术语,但觉得这么说思考起来比较流畅。就是把这个差值,贝叶斯错误率或者对贝叶斯错误率的估计和训练错误率之间的差值称为可避免偏差,可能希望一直提高训练集表现,直到接近贝叶斯错误率,但实际上也不希望做到比贝叶斯错误率更好,这理论上是不可能超过贝叶斯错误率的,除非过拟合。而这个训练错误率和开发错误率之前的差值,就大概说明的算法在方差问题上还有多少改善空间。

可避免偏差这个词说明了有一些别的偏差,或者错误率有个无法超越的最低水平,那就是说如果贝叶斯错误率是7.5%。实际上并不想得到低于该级别的错误率,所以不会说的训练错误率是8%,然后8%就衡量了例子中的偏差大小。应该说,可避免偏差可能在0.5%左右,或者0.5%是可避免偏差的指标。而这个2%是方差的指标,所以要减少这个2%比减少这个0.5%空间要大得多。而在左边的例子中,这7%衡量了可避免偏差大小,而2%衡量了方差大小。所以在左边这个例子里,专注减少可避免偏差可能潜力更大。
所以在这个例子中,当理解人类水平错误率,理解对贝叶斯错误率的估计,就可以在不同的场景中专注于不同的策略,使用避免偏差策略还是避免方差策略。在训练时如何考虑人类水平表现来决定工作着力点,具体怎么做还有更多微妙的细节,接下来会越来越深入了解人类水平表现的真正意义。
机器学习策略篇:详解可避免偏差(Avoidable bias)的更多相关文章
- PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载 中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...
- 走向DBA[MSSQL篇] 详解游标
原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...
- Scala进阶之路-Scala函数篇详解
Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...
- CentOS 7 下编译安装lnmp之PHP篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.PHP下载 官网 http ...
- CentOS 7 下编译安装lnmp之MySQL篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:centos-release-7-5.1804.el7.centos.x86_64 二.MySQL下载 MySQL ...
- CentOS 7 下编译安装lnmp之nginx篇详解
一.安装环境 宿主机=> win7,虚拟机 centos => 系统版本:CentOS Linux release 7.5.1804 (Core),ip地址 192.168.1.168 ...
- Canal:同步mysql增量数据工具,一篇详解核心知识点
老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...
- java提高篇-----详解java的四舍五入与保留位
转载:http://blog.csdn.net/chenssy/article/details/12719811 四舍五入是我们小学的数学问题,这个问题对于我们程序猿来说就类似于1到10的加减乘除那么 ...
- 如何正确删除VMare虚拟机上的系统机器(图文详解)
不多说,直接上干货! 打开虚拟机进入操作系统列表 在操作系统列表,点击要删除的操作系统,如win7, 点击要删除的操作系统后,在主菜单中找到虚拟机. 如图所示,从磁盘中彻底删除. 是 即,成功从虚拟机 ...
- 组件--Fragment(碎片)第二篇详解
感觉之前看的还是不清楚,重新再研究了一次 Fragment常用的三个类: android.app.Fragment 主要用于定义Fragment android.app.FragmentManager ...
随机推荐
- win7自带屏幕录像工具
win7自带屏幕录像工具 2012-03-28 09:23:05 我来说两句 收藏 我要投稿 相信win7自带的屏幕录像工具很多朋友都没用过甚至没有听说过, 但是这款实 ...
- Pytorch DistributedDataParallel(DDP)教程一:快速入门理论篇
一. 写在前面 随着深度学习技术的不断发展,模型的训练成本也越来越高.训练一个高效的通用模型,需要大量的训练数据和算力.在很多非大模型相关的常规任务上,往往也需要使用多卡来进行并行训练.在多卡训练中, ...
- 密码学系列——数字签名(c# 代码实操)
前言 结合消息摘要.非对称加密.数字签名三篇,进行代码实操. 代码完整,可复制运行. 正文 代码如下: public class SignatureHelper { /// <summary&g ...
- 鸿蒙HarmonyOS实战-ArkUI组件(Tabs)
一.Tabs Tabs组件是一种常见的用户界面(UI)组件,它是一个可以容纳多个选项卡的容器组件.每个选项卡通常包含一个面板和一个标签,用户可以通过点击标签来切换面板.Tabs组件通常用于展示多个相关 ...
- Detectron2环境配置+Ubantu+CUDA10.1+pytorch1.7.0
Detectron2环境配置 1.创建detectron2 conda环境 conda create -n detectron2 python=3.7 2.激活detectron2 conda环境 c ...
- llm构建数据标注助手
为什么要用LLM构建数据标注工具 在LLM出现之前,传统的深度学习模型(包括CV和NLP)就已经需要大量的数据进行训练和微调.没有足够的数据,或者数据需要进行二次加工(比如标签标注),这些问题都成为限 ...
- 如何构建企业出海的"免疫力"?深入解读阿里云CDN安全能力
简介: 随着信息技术快速发展与应用,产业数字化和智能化趋势正日益加深,企业信息安全与防护被提升到前所有未有的高度.阿里云CDN经过10多年的技术发展时间,已逐步构筑一个边缘+云的安全网络立体防护体系, ...
- [Go] 浅谈 Golang Chan 通信与死锁:all goroutines are asleep - deadlock
Channel创建方式: var c1 chan [value type] c1 = make([channel type] [value type], [capacity]) [value type ...
- 🎉 Socket.D v2.4.12 发布(新增 python 实现)
Socket.D 协议? Socket.D 是一个网络应用协议.在微服务.移动应用.物联网等场景,可替代 http.websocket 等.协议详情参考<官网介绍>. 支持: tcp, u ...
- 一分钟部署 Llama3 中文大模型,没别的,就是快
前段时间百度创始人李彦宏信誓旦旦地说开源大模型会越来越落后,闭源模型会持续领先.随后小扎同学就给了他当头一棒,向他展示了什么叫做顶级开源大模型. 美国当地时间4月18日,Meta 在官网上发布了两款开 ...