本文介绍强化学习的基本概念及建模方法
什么是强化学习
强化学习主要解决贯续决策问题,强调一个智能体在不断的跟环境交互的过程中通过优化策略从而在整个交互过程中获得最多的回报。
图中的大脑代表智能体agent,智能体根据当前环境(s_t)
选择一个动作(a_t)执行,这个(a_t)作用于当前环境后,环境产生变化转换到(s_{t+1}),同时环境给出一个针对当前动作的即时奖励(r_t),然后智能体再根据最新的状态选出一个新的动作去执行,循环往复,最终的目的是在整个决策流程中获得最大数目的奖励。
强化学习是怎么建模的
咱们通过一个井字棋的小游戏来说说强化学习的几个基本概念,从而弄清楚RL的基本建模方法
如图,游戏规则很简单,在一个3x3的九宫格里,两人轮流下子,谁的子最先形成三个一横或者一竖或者一斜,就谁赢。以下引出RL的几个建模要素:
- 环境的状态(S_t)。这个游戏总共九个格子,每个格子有3种状态,那么在一开始的状态空间大小约为(3^9=19683),其后随着游戏的进行状态空间不断变小。
- 动作空间(A_t)。共9个格子,每次落一子,故状态空间为大小为9,且随着游戏进行不断变小。
- 环境的奖励(R_t)。这个一般我们自己根据不同的的场景去设置,在这个游戏场景当中,我们设定如果当前这一步棋导致赢棋,那么给出针对这一步的奖励为1,反之输棋为0。若不输不赢,则先手棋者得0.05,后手棋者得0.1。
- 执行策略π,也就是智能体执行动作依据的策略。通常用π(a|s)=(P(A_t=a|S_t=s))来表示,即在当前状态s的情况下,采取动作a的概率。
- 在当前状态和策略下,采取某动作后的价值(v_{pi}(s))。当采取动作a后虽然给了一个瞬时奖励r,但这个r病不能代表这个动作所带来的真正价值。比如下象棋,当前这一步吃对方一个马,瞬时奖励很高,但因为这一步的行动导致后面策略丢帅输棋了,那么这个动作的价值其实不是很高。那么一个动作的价值该怎么表示呢?答案就是瞬时奖励+延时奖励。一般用下面公式来表示:
(v_{pi}(s) = E_{pi}(R_{t+1} + {gamma}R_{t+1} + {gamma}^2R_{t+1} + ... |S_t=s)) - ({gamma})。没错,就是上面那公式里的那个gamma,表示奖励的折扣率,从公式上可以看出,离当前时间越远的动作所导致的奖励权重会越小。当取值为0时,说明价值仅由当前动作决定,当取值为1时,当前动作与后续动作带来的奖励同等重要。大多数时候,其取值在0到1之间,即瞬时奖励的比重要大过后续的奖励比重。
- 环境的状态转移模型(P_{ss'}^a = P(S_{t+1}=s'| S_t=s, A_t=a))。用人话讲就是在当前状态下采取某动作后,环境的状态转向另一个状态的概率分布。对于离散状态空间来说就是一个状态转移概率矩阵,对于连续转台空间来说,就是一个转台转移概率分布。
- 探索率({epsilon}),这个字母的读音是:艾普西隆。这个比率指在训练中我们多大比例去执行策略给出的可以使价值最大化的动作,有多大的比率去随机选择一个动作探索未发现的空间。主要防止模型陷入过拟合。