对于我的计算机科学学士学位论文,我使用神经网络实现了强化学习算法。
该算法必须学习Pong和类似的游戏,在其中必须简单地用球拍接球。
现在进行反向传播时,我有三种可能性:
通常的梯度下降,使用整个批次,
其中,梯度是平均输出误差乘以输出的导数:
SGD,仅使用当前学习到的输入产生的错误:
Mini-Batch,我进行通常的梯度下降,但仅在小批量时进行:
如果我的想法有误,请告诉我。
现在,何时训练网络有两种可能性:
这是我到目前为止所做的: 我用SGD训练10轮之后的网。 为此,我使用了整个数据集。 这意味着我基本上可以进行正常的梯度下降,但是可以为每个输入单独更新权重。
我还尝试了在线和离线的小批量和批处理。但是离线变量中的SGD产生最快和最稳定的结果,而其他选项则收敛非常慢,不规则或根本不收敛。
但是大多数文档说,在进行在线培训时,小批量或SGD方法应该会产生更好的结果。
那我为什么会得到如此奇怪的结果?