11.6 例子:模拟数据
11.6 例子:模拟数据¶
note “更新笔记” @2017-12-28 挺惭愧的!直到今天才认真地从零开始写了个简单的神经网络代码,具体代码详见Notebook for Simple Neural Network。对于本节的例子,我也写了份代码试图重现书中的结果,代码详见Notebook for this Section
我们从两个可加误差模型
这里
对于sigmoid模型,
我们取大小为100的训练集和大小为10000的测试集。我们采用权重系数衰减和不同的隐藏单元来拟合神经网络,然后记录10个随机初始权重系数值情形下的平均测试误差
图11.6 模拟数据例子的测试误差相对于贝叶斯误差(水平虚线)的箱线图。左图的真实函数是两个sigmoid函数之和,右图是径向函数。对于具有所指示单元数目的单个隐藏层神经网络,显示10个不同起始权重的测量误差。
在某种程度上径向函数对于神经网络是最困难的,因为它是球对称且没有偏好的方向。我们可以从图11.6的右图中看出在这种情形下缺失效果很差,测试误差远远超出贝叶斯误差(注意与左图不同的垂直刻度)。事实上,因为常值拟合(比如样本均值)的相对误差率达到5(当SNR为4),我们看到神经网络比均值表现得越来越差。
这个例子中我们采用一个固定的系数衰减参数0.0005,表现一个温和的正则化。图11.6的左图的结果表明在更多隐藏单元的情形下需要更多的正则化。
图11.7. 模拟数据例子的测试误差相对于贝叶斯误差的箱线图。真实函数是两个sigmoid函数之和。对于具有所指示单元数目的单个隐藏层神经网络,显示10个不同起始权重的测量误差。两个图分别表示无系数衰减(左边)和强误差衰减
(右图)
图11.7中,我们对两sigmoids和的模型重复实验,左边图没有系数衰减,右边图为更强的系数衰减(
图11.8. 对于模拟数据例子的测试误差的箱线图。真实函数为两个sigmoid函数之和。对于具有所指示单元数目的单个隐藏层神经网络,显示10个不同起始权重的测量误差。
总的来说,有两个自由参数需要选择:权重衰减参数