Q-learning:Temporal Difference / Monte Carlo

  • Q-learning 是RL的核心
  • Q 代表 Quality 品质

系统维护一个Q值表:

state action_1 action_2
1 3.3 1.6
2 2.6 7.8
3 2.4 9.5
4 1.3 5.6

当前agent下一步要采取什么动作,完全根据当前状态的Q值来判断:
在状态1的时候,采取动作a_1价值更大( 3.3 > 1.6)。
在状态3的时候,采取动作a_2价值更大(9.5 > 2.4)。
里面每个数值叫V。比如 V_{state_1} = max(3.3, 1.6)=3.3

各种表达公式总结:

获取状态s的V:V(s)Q(s, A) 返回的是所有action的值
第4个状态 对应的V:V(S_4)Q(S_4, A) 返回的是所有action对应的值
第4个状态 动作1 对应的V: Q(S_4, A_1)
t 时刻的状态 / 动作 对应的V: Q(S_t, A_t)
状态s 对应动作a的V:Q(s,a), R(s,a)
状态s' 对应动作a'的V:Q(s',a')
状态s 对应动作a的概率:\pi(a|s)
状态s里,V最大的动作:\mathop{argmax}_{a \in A} Q(s, a)\mathop{argmax}_a Q(s, a)
状态s里,所有动作中,最大的V:\mathop{max}_{a \in A} Q(s, a)\mathop{max}_a Q(s, a)

如何计算Q值表,便是Q-Learning要做的事情。
然后agent通过一个策略\pi,结合Q表,做出动作选择。
比如这样的策略:90%的情况下选择V值大的动作,%10的情况随机选一个。

# select_action
def policy_pi(state):
    if random.random() > 0.9:
        return random_action
    else:
        return argmax(state)

蒙特卡洛MC法:

首先,V是通过每一个状态获取的奖励R算出来的。具体算法后面讲。先用v_\pi(s)来表示,\pi的意思是,这个函数,会在策略\pi里面使用。\pi会根据当前 state 来产生 action:
\pi:s\rightarrow a
\pi(s)\rightarrow a

def pi(s):
  #.....
  return a

如果策略不是一个固定的值,而是返回一个概率,状态a下执行动作s的概率:
\pi(s, a) = \mathbb{P}[a|s]
\pi(a|s) = \mathbb{P}[a|s]

# select_action
def policy_pi(state):
    return (p_act_0, p_act_1)

MC的基础思想就是:让agent不停的去尝试各种可能,获取奖励,算出单次VG,最后计算所有G的平均值作为总的V值。

完整的收集各种状态/动作/奖励,直到此经历结束,比如:

. ep1 ep2 ep3 ep4 ep5 ...
state a b c d a ...
action 0 1 1 0 0 ...
reward 1 1 1 0 1 ...

\downarrow

. ep1 ep2 ep3 ep4 ep5 ...
state/action a,0 b,1 c,1 d,0 a,0 ...
reward 1 1 1 0 1 ...

\downarrow

state/action reward = R(s,a)
a,0 1
b,1 1
c,1 1
d,0 0
a,0 1

单次迭代的得分G计算方法:因为状态/动作是一个连续的序列,后续R也会影响到前面的V,所以每个状态的V,都需要包含后续所有动作的R

state/action G
a,0 1 + R(b,1) + R(c,1) + R(d,0) + \cdots
b,1 1 + R(c,1) + R(d,0) +\cdots
c,1 1 + R(d,0) + R(a,0)+ \cdots
d,0 0 + R(a,0)+\cdots
a,0 1 +\cdots

后续步骤的奖励,可能并没有那么重要,所以需要做一个递减,加入一个 < 1 的\gamma递减:

state/action G
a,0 1 + \gamma^1 R(b,1) + \gamma^2 R(c,1) + \gamma^3 R(d,0) + \cdots

经过无数次迭代后,某个状态/动作收集了无数个G,取平均值,便是这个状态/动作的 V值。公式表示如下:

V(s_t) = G_t =R_{t} + \gamma R_{t+1} + \gamma^2R_{t+2}+... \gamma^{T-t}R_{T}
这就是 Reward Hypothesis 奖励假说中的“递减奖励累加
这个V(s_t)也会被写作:R(s, a), \;R(\tau) 反正都是一回事。

如何实现?要么:

  1. 维护一个G的list,算平均值,要么
  2. 用动态平均值函数:
    a = a+ (v - a)/n ( a是平均值,v是新加入的值 )
    求V的公式便出来了:v_{\pi}(s) \approx average(G_t)
    也就是这样不停的去迭代,直到结果足够好:
    Q(S_t, A_t) \leftarrow Q(S_t, A_t) +(G_t - Q(S_t, A_t) ) / N(S_t)

时间差分TD法:

初始Q值表,全是0

s a_1 a_2
1 0 0
2 0 0
3 0 0
... ... ...

状态s 经过动作a后,变为状态s',再经过动作a'后,变为其他状态。
s\mathop{\rightarrow}^a s' \mathop{\rightarrow}^{a'} \cdots

s' 的所有动作:a' = [a_1', a_2' , a_3',\cdots]
公式:
Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma \mathop{max}_{a'}Q(s',a')-Q(s,a)]
Q(s,a) \leftarrow (1-\alpha)Q(s,a) + \alpha [r + \gamma \mathop{max}_{a'}Q(s',a')]
\alpha \; \gamma都是常量
\alpha alpha 可以看作是遗忘率,越大,本次奖励越重要(之前同等状态下的奖励情况都忘了)
\gamma gamma 可以看作是后续奖励重要性,越大,基于本次行为的以后可获得奖励越重要(长远考虑)


可以看出,如果状态比较多,action也很多的情况下,Q table是无法适用的。cart pole环境state有4个变量:位置、速度、角度、角速度,两个动作:左、右。

S_{pos} S_{vel} S_{ang} S_{angv} Va_0 Va_1
1.2 -2.1 0.1 -2.1 3.1 4.5

如果 4个变量离散化,只保留0~10的范围,那么这个表的大小是:10\times10\times10\times10\times2 = 20000,这个精度很低了,对cart pole来说凑活够用,1维的小车,已经2万个Q值了,那如果是2维、3维连续坐标空间,要求又很精细,参数又很多的话,比如现实中的自动驾驶,动作有 左转n度/右转n度/刹车力度/加速力度,太离散化的取值,是无法完成任务,但是将采样粒度设置的特别小,又是无法完成任务。这种时候,就要直接对策略进行优化了,而不是通过Q值,这是 policy gradient


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260