一、强化学习基础算法:Q Learning
强化学习中最核心的概念有以下几个:
- 智能体(agent)
- 环境(environment)
- 动作(action)
- 奖励(reward)
- 状态(state)
智能体存在于环境中,它在环境中做出一个动作,会到达一个相应的状态,得到一个相应的奖励。在实际的强化学习中,每个状态的reward是已知的(即人为定义的),当智能体go right,其会得到正向奖励,反之,则会得到负向奖励。
那么,智能体如何决定要做出什么样的动作呢?智能体将根据“奖励函数Q[state,action]”来决定自己在某一状态state下,要采取何种action。Q[state,action]也即“强化学习的学习目标”,其具体学习步骤如下:
step1:人为定义智能体到达各个state下,会得到多少reward(已知量);
step2:初始化Q[state,action] = 0,即在各个state下,执行各个action的Q均等于0;
step3:根据epsilon-greedy(Q,state)策略,告知智能体在state下应该采取何种action;
step4:根据智能体所采取的action将到达哪个state1,来决定智能体将得到多少reward1;
step5:利用“固有公式(参见code)”,更新智能体在未采取action时的状态state下,Q[state,action]的值,Q[state,action] = f(Q[state,action], reward1, Q[state1,:].max())。
将上述的训练过程进行多次Iteration,Q[state,action] 将被逐渐优化,从而使智能体在各个state下的action趋于“最优策略”。
二、Q Learning 在Tensorflow中的实现
下面给出了“走迷宫”的 Q Learning实现,我们的目标是要学习一个奖励函数Q[state,action],使得智能体A根据Q的指示,能够最快的获得宝藏O。
1、问题描述:
2、code实现:
env.py 定义迷宫环境;
q_learning.py 定义了一个完整的Q Learning算法;