我开始学习有关使用神经网络进行Q学习以预测q值的知识,为了更好地理解它的工作原理,我尝试从头开始创建它。
(抱歉,表示法不正确,我无法确定如何正确执行此操作)
如果我从任何状态s都有2个可能的动作,则当前状态sᵗ通过网络前馈时的输出为Q(sᵗ),在此示例中,我们假设Q(sᵗ)= [1.2,3.5] >
现在我们采取行动aᵗ= 1,这是Q值最大的行动,使我们陈述sᵗ⁺¹。
接下来,我们使用sᵗ⁺¹进行正向传递,假设给定Q(sᵗ⁺¹)= [2.3,0.4]
我们还假设它给出了奖励r = 3,折现率? = 0.9。
因此,网络为状态动作对Q(sᵗ,aᵗ)预测Q(sᵗ,aᵗ)= 3.5
目标为Q(sᵗ,aᵗ)= r + ? maxQ(sᵗ⁺¹,a *)
在此示例中,Q(sᵗ,aᵗ)= 3 + 0.9 * max [2.3,0.4] = 3 + 0.9 * 2.3 = 5.07
然后我们可以计算出平方损失为(5.07-3.5)²= 2.4649
但是,在过去使用神经网络时,我仅使用误差(目标-输出)而不是平方误差,并且还知道了网络所有输出神经元的目标,这意味着我可以创建向量损失,例如[1.2,3.5,-0.2]
如果我有输入层->隐藏层-> RELU->输出层(对于输出层具有线性激活功能),如何使用此损失来更新权重。
我是否为所有其他输出神经元的损失为0的损失创建一个矢量,除了平方损失为2.4649的神经元,例如[0,2.4649]?然后使用反向传播根据此更改权重?
还是按照上面的方法做,但我不仅要求损失平方的平方,还需要通过除以输出数(2)来求出平均损失平方的平方,以获得损失[0,1.23245]的向量? / p>
还是我在一起搞错了主意?