1. Q-Learning
- 使用一个π与环境互动,生成labelled data
- 根据labelled data学到Qπ(s,a)
- 根据Qπ(s,a)找到更好的π′
- 用π′代替π,goto step 1
1.1. 怎么评价哪个π\piπ更好?
答: Vπ′(s)≥Vπ(s) for all state s,则认为π′比π好。
1.2. 怎么根据Qπ(s,a)Q^\pi(s, a)Qπ(s,a)找到π′\pi'π′?
答:
π′(s)=argamaxQπ(s,a)
continuous a不适用。
1.3. 怎么根据labelled data学到Q?
答: Target Network
注意:
因为左边的Qπ和右边的Qπ是同一个模型,当左边的Qπ因为迭代而更新时,右边的Qπ也会改变。
左边Qπ更新 --> 右边Qπ改变 --> 右边的输出改变 --> 左边的目标改变。
如果一个NN的目标一直在改变,这个NN就会很难train。
解决方法:右边的Qπ先fix住,训练左边的Qπ。左边的Qπ更新一定次数后把它参数同步到右边的Qπ。
1.4. Exploration
π′(s)=argamaxQπ(s,a)
这个公式存在的问题是:
如果Qπ(s,a1)=1,而Qπ(s,a2)、Qπ(s,a3)没有被sample过,其值为默认值0。
那么以后每次遇到s永远会采取a1。
解决方案:探索机制
1.4.1. Epsilon Greedy
a={argamaxQ(sa)random,1−ϵ的机率,otherwise
1.4.2. Boltzmann探索
P(a∣s)=∑aexp(Q(s,a))exp(Q(s,a))
1.5. Replay Buffer
这是一个用于存互动经验的buffer,每一项的格式为st,at,rt,st+1
每一轮迭代都可以产生N个data,但buffer可以开很大,里面可以存很多轮data。
因此step 2用于生成Q的labelled data不止是都个π的互动data。
优点:
- 充分利用data,减少与环境互动的时间
- batch里面的data越diverse越好。这些方法便data更diverse。
1.6. Q-Learning的过程
- 初始化两个NN,分别是Q和Q^,且Q^=Q
- given st,take at based on Q(epsilon greedy)
- 得到rt和st+1,把(st,at,rt,st+1)存入buffer
- 从buffer sample一个batch的data
计算target:
y=ri+amaxQ^(si+1,a)
更新Q的参数,使Q(si,ai)接近y(回归问题),goto step 4
- 令Q^=Q
1.7. Q-Learning存在的问题:Q value的估测值高于实际值。
为什么Q value的估测值会特别高?
Q(st,at)=rt+maxQ(st+1,at)
Q是一个NN,可能会对某个action高估,某些action低估。
而max倾向于选择被高估的action。
解决方法:Double DQN