上一篇文章中提到了一个有趣的实验,简单来说就是1-100中有若干个数字是“正确的”,只告诉其中一部分“正确的”数字,去猜全部“正确的”数字。
为了严谨的去研究这个问题,我们需要将一些概念进行抽象。首先,把提前告知的其中一部分“正确的”数字定义为样本
这里需要说明一点,由以上定义容易发现
有了前面这些准备,我们就可以给出likelihood的定义:
所以,极大似然估计(MLE)就是在
但是,这种结果在机器学习中却不是令人满意的。譬如说如果
因此,我们需要定义prior。仍然令
所以,prior的定义就是假设在假设空间的概率
有了likelihood和prior,我们可以去定义后验概率(posteriori probability)
我们可以发现,如果
但是真实情况往往不是这样,
由于
最后想谈一谈误差分类
我们不可能会产生一个精确的模型,我们产生的模型往往是含有噪音的,这些噪音可能来自:
- 模型并不是真实数据产生的模型
- 采样本身也是有噪音的
- 等等
我们也会非常关心:
- 这些噪音随着采样是以什么尺度下降的
- 随着神经元数目增加,我的模型可以把误差下降到多小
- 训练误差和测试误差
- 应该选择什么优化方式
- 等等
有很多很多的误差,我们需要对误差分类(error decomposition)
- 逼近误差(Approximation error)
它衡量了我的模型能最好逼近真实模型到什么程度(譬如说用分片线性函数去拟合非线性函数)。但是要注意,这种逼近是不计成本的,也就是说,在不计一切代价的情况下,如果目标是
在八十年代末九十年代初,最杰出的结论就是universal approximation theorem(万有逼近原理)。这个结论是说,即使只有一个隐藏层(只要够宽),都可以把神经网络拟合的很好。当然,激活函数不可以是仿射函数,要不然连最普通的XOR问题都解决不了。
2. 泛化误差(Generalization error)
它衡量了我可以通过数据集得到的最好的模型
泛化即推广能力。举个例子,给出一系列数据点,我们可以找到一条函数将数据点拟合。那么这条函数在我没有见过的数据点的预测能力和表现性能就叫做泛化能力。
泛化误差是我们很关心的误差,因为理论上已经证明了,
3. 优化误差(Optimization error)
它衡量了我可以通过数据集和某一种优化算法得到的最好的模型
所以最终我们可以得到一个等式
参考:
- Machine Learning_A Probabilistic Perspective[Murphy 2012-08-24]
- bilibili:数学学院本科课程:统计计算与机器学习1