使用softmax进行Keras强化培训

使用softmax进行Keras强化培训,keras,reinforcement-learning,softmax,Keras,Reinforcement Learning,Softmax,我正在做的一个项目有一个使用该算法的强化学习阶段。所使用的模型有一个最终的softmax激活层,因此使用负学习率代替负奖励。我对这个过程有些怀疑,也找不到太多关于使用负学习率的文献 重新学习是否在积极和消极之间转换学习率?如果不是的话,还有什么更好的方法,摆脱softmax或者让keras成为一个不错的选择 损失函数: def日志丢失(y_真,y_pred): ''' 加固算法的Keras“损失”函数, 其中y_true是所采取的操作和更新 负梯度会使这种行为更容易发生。 我们使用负梯度,因为k

我正在做的一个项目有一个使用该算法的强化学习阶段。所使用的模型有一个最终的softmax激活层,因此使用负学习率代替负奖励。我对这个过程有些怀疑,也找不到太多关于使用负学习率的文献

重新学习是否在积极和消极之间转换学习率?如果不是的话,还有什么更好的方法,摆脱softmax或者让keras成为一个不错的选择

损失函数:

def日志丢失(y_真,y_pred):
'''
加固算法的Keras“损失”函数,
其中y_true是所采取的操作和更新
负梯度会使这种行为更容易发生。
我们使用负梯度,因为keras需要训练数据
使损失函数最小化。
'''
return-y_true*K.log(K.clip(y_pred,K.epsilon(),1.0-K.epsilon())
转换学习率:

K.set_值(optimizer.lr,lr*(+1如果赢了,否则-1))
学习者网络批量训练(np连接(st张量,轴=0),
np.连接(mv_张量,轴=0))
更新,测试结果

我只使用正面强化样本进行了测试,忽略了所有负面的例子,从而忽略了负面的学习率。中奖率正在上升,正在提高,我可以放心地假设使用负学习率是不正确的
有人对我们应该如何实施它有什么想法吗

更新,型号说明

我们正在尝试重建缓慢的政策网络:

对于培训管道的第一阶段,我们以先前的工作为基础 围棋中专家动作的监督预测 学习13,21-24。SL策略网络pσ(a)| s) 卷积变换 具有权重σ和整流器非线性的层。最后一个softmax 层输出所有合法移动a的概率分布


不确定这是否是最好的方法,但至少我找到了一种有效的方法

对于所有负的训练样本,我重复使用网络预测,将我想要取消学习的操作设置为零,并将所有值调整为一

之后我尝试了几种方法来调整它们,但没有运行足够的测试来确定哪种方法最有效:

  • apply softmax(必须取消学习的操作将获得非零值..)
  • 将旧操作值重新分配给所有其他操作
  • 将所有非法操作值设置为零,并分配总移除值
  • 按比例分配值与其他值的值

可能还有其他几种方法可以做到这一点,这可能取决于什么用例最有效,可能有更好的方法可以做到这一点,但这一种至少有效

不确定这是否是最好的方法,但至少我找到了一种有效的方法

对于所有负的训练样本,我重复使用网络预测,将我想要取消学习的操作设置为零,并将所有值调整为一

之后我尝试了几种方法来调整它们,但没有运行足够的测试来确定哪种方法最有效:

  • apply softmax(必须取消学习的操作将获得非零值..)
  • 将旧操作值重新分配给所有其他操作
  • 将所有非法操作值设置为零,并分配总移除值
  • 按比例分配值与其他值的值

可能还有其他几种方法可以做到这一点,这可能取决于什么用例最有效,可能有更好的方法可以做到这一点,但这一种至少有效

我没有读你链接的报纸。您的网络试图模拟什么功能?状态值函数?状态动作值函数?还有别的吗?在任何情况下,如果函数可以接受负值,那么使用softmax作为输出是不合适的,我假设这是RocAlphaGo项目的一部分。你曾经有过负学习率的工作经验吗?我试图在其他棋盘游戏中使用AlphaGo方法,但却被困在了同一个地方。事实上,对于RocAlphaGo项目,我做了很多测试,但没有一个被证明是解决方案。我们得到的最好结果是只使用阳性强化样本进行训练。。但这有点浪费。还有其他一些事情更紧急,但当我把注意力转向这个问题并找到解决方案时,我会把它贴在这里。我没有读你链接的那篇文章。您的网络试图模拟什么功能?状态值函数?状态动作值函数?还有别的吗?在任何情况下,如果函数可以接受负值,那么使用softmax作为输出是不合适的,我假设这是RocAlphaGo项目的一部分。你曾经有过负学习率的工作经验吗?我试图在其他棋盘游戏中使用AlphaGo方法,但却被困在了同一个地方。事实上,对于RocAlphaGo项目,我做了很多测试,但没有一个被证明是解决方案。我们得到的最好结果是只使用阳性强化样本进行训练。。但这有点浪费。还有一些其他事情更为紧迫,但当我把注意力转向这一点,并找到一些解决办法时,我会把它张贴在这里