我正在编写一个自定义框架,并在其中尝试训练一个简单的网络来预测加法功能。
网络:
- 3 个神经元的 1 个隐藏层
- 1个输出层
- 使用的成本函数是平方误差,(不是 MSE 以避免精度问题)
- 身份转移功能,一开始就让事情变得简单
- 没有特殊的更新程序,只有步长
- 没有学习率衰减
- 没有正则化
训练集:
- 约 500 个样本
- 输入:
[n1][n2]; 标签:[n1 + n2] - 每个元素都介于 0 和 1 之间。例如:
[0.5][0.3] => [0.8]
我用来优化的算法:
- 一个 epoch 采样 64 个元素
- 对于每个样本:它评估错误
- 然后将错误传播回去
- 然后根据误差值计算梯度
- 每个元素的梯度被加到一个向量中,然后通过除以评估的样本数进行归一化
- 在计算梯度之后,使用 1e-2 的步长来修改权重。
- 当 500 个数据元素的错误总和低于 1e-2 时,训练停止
我还没有测试数据集,因为首先我想过度拟合训练集,看看它是否能做到这一点。在没有偏差的情况下,训练会在大约 4k epoch 内收敛到最佳状态。
当我将偏差调整纳入训练时,它的性能似乎要差得多,网络没有收敛到最佳状态,而是偏差和权重彼此相邻振荡。
这是引入偏见的正常影响吗?

