(1)Q_learning:reward表,左边一列是状态,右边是动作对应的奖励。Q表格,一个状态转向另一个状态获得的价值,初始化是为零。计算Q表时,一个状态到另一个状态的价值等于这个动作的及时奖励加上下一个状态他能转移到另外一个状态所获得的最大价值(这个也是查上一次所计算得到的Q表所得到的。)
(2)flapybrid一张图片中一个像素点就对应256种状态,28*28*3这么多像素点所组成的状态太多的,计算不出来它的Q表,所以就用卷积神经网络代替,已连续的4帧转换的二值图作为一个状态,把他输入神经网络来预测出它的两个Q值,动作只有两个上升或者下降,一个动作对应一个Q值,预测的结果(2维的Q值)和动作(二维的0或1的值)点乘,就相当于通过这个动作选择了下一个状态对应的Q值。这是神经网络配合一个动作得到的Q值,
而这个动作下实际的Q值可以通过下一个状态来计算,由于是在训练数据中取数,这个下一个已经取好了,它的实际最大Q值可以依据上面Q表格的方法计算出来,动作奖励+下一个状态通过神经网络得到两个输出的中间最大的一个,这就是它能得到的最大的Q值。它和神经网络预测出来的Q值的误差作为损失函数,最后来优化它。
优化好后,网络每次能准确预测出两个Q值,取最大的那个的序号,这个序号对应的action的值为1,另外一个为0。这就相当于给他指出了下一步走的方向。按这样走得到的价值最大,就不会死了。