一、基本概念
- 智能体(agent)
- 状态(state)
- 行为(action)
- 奖励(reward)
- 策略(policy)
每一个动作都影响代理将来的状态,通过一个标量的奖励(reward)信号来衡量成功
目标:选择一系列行动来最大化未来的奖励
二、马尔科夫决策
强化学习本身是基于马尔科夫决策过程(MDP),确定性的动态规划相结合的产物,确定性相结合的产物,也称为马尔科夫型随机动态规划。其本质就是在某种状态下获取某种动作来获得最优策略的一种模型。MDP假设,每一个动作都是都是由完全的环境决定,只要有一个初始状态,后继状态就是全部确定的。
1.马尔科夫决策要求:
- 能够检测到理想的状态
- 可以多是尝试
- 系统的下个状态只与当前状态信息有关,而与更早之前的状态无关,在决策过程中还和当前采取的动作有关
2.马尔科夫决策过程由5个元素构成:
S:表示状态集(states)
A:表示一组动作(actions)
P:表示状态转移概率 ???表示在当前s ∈S状态下,经过a ∈A作用后,会转移到的其他状态的概率分布情况 在状态s下执行动作a,转移到s’的概率可以表示为p(s’|s,a)
R: 奖励函数(reward function)表示 agent 采取某个动作后的即时奖励
y:折扣系数意味着当下的 reward 比未来反馈的 reward 更重要
三、Bellman方程(Bellman Equation):当前状态的价值和下一步的价值及当前的奖励(Reward)有关
价值函数分解为当前的奖励和下一步的价值两部分
四、Q-Learning(Q学习)
Q学习,一种基于贝尔曼方程的动态规划的算法,同时也是现在非常流行的一种强化学习方法
- Q-Learning的核心是Q-table,Q-table的行列分别state和action的值
其中s,a表示当前的状态和行为,表示s的下一个状态和行为,学习参数r(gamma)为满足0=<r<=1的常数,如果r(gamma)接近0,表示agent倾向于只考虑立即获得回报值,如果r(gamma)接近1,agent将以更大的权重去考虑未来
回报值,愿意将回报延后
- 公式Q(s,a)表示为当前s下采取a后获取的即时r(奖励)加上折价r(gamma)后的下一个状态最大的reward
- 调Q矩阵算法
- 设置当前状态=起始状态
- 从当前状态开始,找到最高Q值动作
- 设置当前状态=下一个状态(在步骤2中找到)
- 重复2和3步骤直到当前状态=目标状态
其中R矩阵为我们一开始可以把状态和行动映射到奖励表或者回报表reward table,“matrix R”,矩阵Q被初始化为0,每一个场景episode
下面例子手工计算Q-table
- 外循环模拟次数num_episodes
- 内循环每次模拟的最大步数num_steps
- 根据当前的state和q-table选择action(可加入随机性)
- 根据当前的state和action获得下一步的state和reward
- 更新Q表:Q(state,action)=Q(state,action)+alpha*(R(state,action)+Gamma*Max[Q(nextstate,all action)]-Q(state,action))
以上第5步的公式,为了手工推导,我们把alpha学习率这个超参数设置为1,公式变为
Q(state,action)=R(state,action)+Gamma*Max[Q(nextstate,all action)]
此外如果:R(state,action)=0则公式变为如下:(例如玩游戏在游戏没有取得胜利之前全部设置为0)
Q(state,action)=Q(state,action)+alpha*(Gamma*Max[Q(nextstate,all action)]-Q(state,action))
我们也可以完成一个场景后前向更新Q值
upd_pre_state_Q如下:
Qtable(prestate,preaction)=Q(prestate,preaction)+alpha*(Gamma*Max[Q(state_current,all action)]-Q(prestate,preaction))