机器学习的战略(2)--错误率
与人类相比较
机器学习的很多任务, 比如识别图像, 听语音, 都是人类非常擅长的. 所以这些任务来说人类的错误率都相当低. 当然人类也分人, 看眼底图的还是得后节大夫, 找普通人看也还是错误率很高的, 最高的准确率应该是一组后节专家讨论会诊后得到的.
理论上识别的错误率会有一个极限低值, 叫Bayes optimal error. 按照极限低值的定义, 那么肯定是比人类要低的, 但也不一定能够达到0, 在有些人类擅长的项目上, 不妨可以近似将人类的错误率当作bayes optimal error.
错误率分析
训练好的模型, 可以测定某一模型在dataset中的错误率, 重要的是3个数: bayes optimal error, 这是极限值, 不可测, 但在图像识别上可以近似用人类错误率替代. train error, 模型用在train set上的错误率 * dev error, 模型用在dev set上的错误率
有这三个数就好办了. 之前含混不清, 我连中文译名都不想给的bias 和 variance 终于可以定义了: bias=train error - bayes optimal error variance=dev error - train error
比如某个任务, 人类可以达到1%的错误率,
模型A, train error=7%, dev error=8% 那么:
- bias=7%-1%=6%
- variance=8%-7%=1%
显然这样的bias太高了, 模型还没练好, 欠拟合了.
模型B, train error=1.5%, dev error=7.5%
那么:
- bias=1.5%-1%=0.5%
- variance=7.5%-1.5%=6%
显然是variance太高了, 过拟合了. 模型"记住"了train set的内容.
降低错误率的策略
先算错误率 bias=train error - bayes optimal error(~人类错误率) variance=dev error - train error
bias又被成为avoidable error, 可改善的错误率.
降低bias
- 试试更大的模型, 比如神经网络层数更多, 每层的神经元更多之类.
- 延长训练时间
- 调整优化算法, 比如试试更华丽的momentum, RMS prop, ADOM.
- 换更华丽的模型, 卷积神经网络CNN. RNN
降低variance
- 更多的数据, 更多的数据, 更多的数据
- Regularization, 就是加一些约束条件, 使得拟合出来的函数平滑一些, 不要那么扭曲妖娆.
- 换更华丽的模型, CNN, RNN. 从2012年到现在, 甚至未来几年, 各种神经网络就像选秀一样, 差不多每个月都能有新的选手出现.
此处推荐一下机器之心的网站和公众号. 一些重要论文会有概述.