The*_*ama 4 artificial-intelligence reinforcement-learning neural-network
就我的理解而言,可以通过神经网络替换Q值(状态 - 动作 - 对 - 评估)的查找表来估计这些状态 - 动作对.我编写了一个小型库,它能够通过一个自建的神经网络进行传播和反向传播,以便为某个输出内容学习所需的目标值.
所以我在google搜索时也发现了这个网站,并在网上搜索(就像我觉得的那样):http://www.cs.indiana.edu/~gasser/Salsa/nn.html Q-learning结合的地方很快解释了一个神经网络.
对于每个动作,都有一个额外的输出神经元,这些输出 - "单位"之一的激活值告诉我,估计的Q值.(一个问题:激活值是否与神经元的"输出"相同或不同?)
我使用标准sigmoid函数作为激活函数,因此函数值x的范围是
0<x<1
Run Code Online (Sandbox Code Playgroud)
所以我想,我的目标值应该始终从0.0到1.0 - >问题:我的理解是否正确?或者我错过了解一些事情?
如果是,则存在以下问题:计算目标奖励/新Q值的等式是:q(s,a)= q(s,a)+学习率*(奖励+折扣因子*q'(s,a ) - q(s,a))
那么如果目标应该从0.0到1.0,我如何执行这个等式来获得神经网络的正确目标?我如何计算良好的奖励价值?走向目标更值得,而不是远离它?(接近目标时更多+奖励而不是更远距离目标的奖励?)
我想我的一些误解.我希望,你可以帮助我回答这些问题.非常感谢你!
使用神经网络存储q值是表查找的一个很好的扩展.这使得在状态空间连续时可以使用q学习.
input layer ......
|/ \ | \|
output layer a1 a2 a3
0.1 0.2 0.9
Run Code Online (Sandbox Code Playgroud)
假设您有3个可用的操作.上图显示了使用当前状态和学习权重的神经网络的输出.所以你知道这a3是最好的行动.
现在你有问题:
一个问题:激活值是否与神经元的"输出"相同或不同?
是的,我想是这样.在提到的链接中,作者说:
有些单位也可以指定输出单位; 他们的激活代表了网络的反应.
所以我想,我的目标值应该始终从0.0到1.0 - >问题:我的理解是否正确?或者我错过了解一些事情?
如果选择sigmoid激活功能,输出肯定是0.0到1.0.激活功能有不同的选择,例如,这里.Sigmoid是最受欢迎的选择之一.我认为输出值从0.0到1.0不是问题.如果在当前时间,您只有两个可用的操作,则Q(s,a1) = 0.1, Q(s,a2) = 0.9您知道该操作a2比a1相应的q值更好.
那么如果目标应该从0.0到1.0,我如何执行这个等式来获得神经网络的正确目标?我如何计算良好的奖励价值?
我不确定这一点,但你可以尝试将新的目标q值钳制在0.0和1.0之间,即,
q(s,a) = min(max(0.0, q(s,a) + learningrate * (reward + discountfactor * q'(s,a) - q(s,a))), 1.0)
Run Code Online (Sandbox Code Playgroud)
尝试做一些实验来找到合适的奖励价值.
走向目标更值得,而不是远离它?(接近目标时更多+奖励而不是更远距离目标的奖励?)
通常情况下,如果使用经典更新方程,则应该在接近目标时给予更多奖励,以便新q值得到增加.