设置开发和测试集
- 开发集和测试集的定义
- 开发集和测试集应该服从同一分布
- 开发集和测试集应该有多大?
- 使用单值评估指标进行优化
- 优化指标和满意度指标
- 通过开发集和度量指标加速迭代
- 何时修改开发集、测试集和指标
- 小结:建立开发集和测试集
基本误差分析
- 快速构建并迭代你的第一个系统
- 误差分析:根据开发集样本评估想法
- 在误差分析时并行评估多个想法
- 清洗误标注的开发集和测试集样本
- 将大型开发集拆分为两个子集,专注其一
- Eyeball 和 Blackbox 开发集该设置多大?
- 小结:基础误差分析
偏差和方差
学习曲线
与人类水平的表现相比
不同发行版的培训和测试
调试推理算法
端到端学习
按零件进行误差分析
总结
规模驱动机器学习发展
关于深度学习(神经网络)的一些想法在几十年前就有了,那为什么它们到现在才流行起来了呢?
推动其近期发展的主要因素有两个:
- 数据可用性(data availability):如今人们在数字设备(笔记本电脑、移动设备等)上花费的时间越来越多,对应的数字化行为与活动产生了海量的数据,而这些数据都可以提供给我们的学习算法用来训练。
- 计算规模(computational scale):在近几年前,我们才开始有能力训练出规模足够大的神经网络来使用现有的海量数据集。
具体来说,即使你积累了更多的数据,但应用在类似于对数几率回归(logistic regression)这样较传统的学习算法上,其性能表现(performance)也将趋于 “平稳” 。这意味着算法的学习曲线将 “变得平缓” ,就算提供更多的数据,算法的性能也将不再提升。
传统学习算法似乎并不知道要如何来处理现今这般规模量级的数据。
在同样的监督学习任务下,选择训练一个小型的神经网络(neutral network, NN),你可能会获得较好的性能表现:
该图显示了在小数据集上应用神经网络的效果会更好,但这种效果与将神经网络应用在大数据集时不太一致。在小数据集情况下,传统算法是否会表现得更好,取决于人们如何进行特征选择工程。例如,假设你只有 20 个训练样本,那么使用对数几率回归还是神经网络可能无关紧要;此时人为的特征选择工程比起选择哪种算法将产生更大的影响。但如果你有 100 万个样本数据,我会赞成你使用神经网络。
这里的 “小型神经网络” 指的是只含有少量的隐藏元/层/参数的神经网络。但如果你训练的神经网络规模越来越大,最终很有可能会获得更好的表现:
因此,为了获得最佳的性能表现,你可以这样做:
训练大型的神经网络,效果如同上图的绿色曲线;
拥有海量的数据。
在算法训练时,许多其它的细节也同等重要,例如神经网络的架构。但目前来说,提升算法性能的更加可靠的方法仍然是训练更大的网络以及获取更多的数据。完成 1 和 2 的过程异常复杂,本书将对其中的细节作进一步的讨论。我们将从传统学习算法与神经网络中都起作用的通用策略入手,循序渐进地讲解至最前沿的构建深度学习系统的策略。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论