QLearing的算法目标是:达到reward最大的state(状态,以一个使用无监督学习环境的agent为例,自https://blog.csdn.net/qq_16234613/article/details/80268564
概念理解
1 2 3 4
| 预设值:首先将图中的每一条边预设reward,目标节点指向自己的邻接边的reward设100,其他设为0 Q、R矩阵: 包括状态action和行为state,作为行列 环境反馈: 对于每一次的episode (相当于迭代的东西),每一次尝试attemp,会根据反馈进行对网络更新 环境更新.
|
1 2 3 4 5 6 7
| R+r*max_Q(32)
基本规则如下: Q表内容为index--state(agent的位置),columns--action(行为集) Q表(记录行为值)的计算规则是每次对于行为集合中的每一个action,对其进行计算、并进行选择。 每一次episode,Q表更新一次 定义EPSILON的目的是控制贪婪程度,其中,它可以随着时间推移 逐渐增加,贪婪)
|
首先要对其评估和更新准则进行确定,代码中表示可以直接定义在一个结构中。
1 2 3 4 5 6 7 8 9 10 11 12 13
| def update_env(S, episode, step_counter): env_list = ['-']*(N_STATES-1) + ['T'] if S == 'terminal': interaction = 'Episode %s: total_steps = %s' % (episode+1, step_counter) print('\r{}'.format(interaction), end='') time.sleep(2) print('\r ', end='') else: env_list[S] = 'o' interaction = ''.join(env_list) print('\r{}'.format(interaction), end='') time.sleep(FRESH_TIME)
|
demo,参考莫烦python的一个例子
预先设置的参数,就是上述的预设值,其中gamma参数是作为奖励递减值,作用见后文代码,它是
1 2 3 4 5 6
| N_STATES = ACTIONS = EPSILON = ALPHA = GAMMA = MAX_EPISODES =
|
Q表的行和列存储action和state,它的Value 每一次更新就是更新它的行为准则
1 2 3 4 5 6
| def build_q_table(n_states, actions): table = pd.DataFrame( np.zeros((n_states, len(actions))), columns=actions, ) return table
|
Last updated: