本文为Thomas Simonini增强学习系列文章笔记或读后感,原文可以直接跳转到medium系列文章


文章先是给用户指出必须了解增强学习的概念


  • 增强学些是什么?为什么奖励是中心概念
  • 增强学习的任务和三种实现方式
  • 深度增强学习的深(deep)意味着什么?


增强学习过程概念介绍


首先,什么是增强学习? 我们需要用计算机进行模拟一个环境,例如玩马里奥游戏,来理解这个过程。由于不是我们自己玩,需要一个代练(Agent),那么就是用计算机了。代练进入游戏(environment)开始接收到一个状态(state)开始(game start, state 0), 基于游戏这个状态做出前进,后退,跳动等动作(action), 环境就从上一个状态到下一个新的状态,同时由于代练是没有感觉的,需要通过给他激励(rewards)告诉他采用这个动作是否是好的,然后我们不断得循环这个过程。这个循环不断输出状态动作奖励。这个过程的目标就是让代练为我们带来这个过程中持续获得的最大奖励。


马里奥增强学习人体示意图:


mario


所以奖励是中心概念,设计如何给代练奖励,是代练能否按照我们的意愿把游戏玩好的关键。给一个计算机能明白的奖励方式:


1_AFAuM1Y8zmso4yB5mOApZA

但是换另外一个游戏,如下图所示,老鼠想要获得更多起司奖励,但是更多的起司就更靠近猫。


mouse_cat


如果每一步奖励都按照一样的比例给,会不会导致代练就在附近的地方一直逛,所以对每一步设计一个折扣,如果你不走远一点,奖励也会变得原来越少。所以我们的奖励方式变成如下所示:


reward_func_v2

增加一个gamma,让奖励指数递减。


增强学习任务,学习方法,实现方式


任务分两种,插话型(episode)和连续型(continuous),前者有起点和终点状态(如玩游戏总有game over的时候),后者无终点状态(股市的话,就比较长久了,可能一直没有终点)


学习方式也有两种,一种是在episode结尾之后计算最大的奖励,另外一种在每一步进行最大化的奖励估计。前者采用Monte Carlo方法,后者采用Temporal Difference Learning方法


learning_method


增强学习面临上述老鼠和猫游戏的EE问题(Exploration/Exploitation), 探索意味发现新的,具有随机性;利用意味用现有知识进行判断期望获得最大奖励。这需要我们做一个平衡。


3种实现方式:


  • Value based. 设计函数让代练去在每一步最大化未来期望奖励。
  • Policy based. 直接设计每一个状态对应的动作的函数。有两种类型policy, 一种会给每一个状态一个动作;另外一种输出动作的概率分布从而确定用哪个动作。
  • Model based. 用模型去模拟环境,在这个系列教程当中不会进行讲解。



value based

value_base


determinstic policy

policy_base



stochastic policy

stochastic_policy


深度增强学习中的”Deep”


在增强学习当中引入深度神经网络就叫Deep RL了。明白了吧,这就是Deep的含义。


题外话,后续系列例子多采用openai的预定义环境,可以先了解一下python的gym库,里面预先定义了很多用于增强学习的游戏库,查看全部库名称:


import gym
import pandas as pd


game_envs = list(gym.envs.registry.all())
game_names = [e.id.split("-v") for e in game_envs]
game_names = pd.DataFrame.from_records(game_names, columns=['name', 'ver'])
game_names['ver'] = 'v' + game_names['ver']
df = game_names.groupby('name')['ver'].apply(lambda x: ",".join(x))
print(df.shape)         # 436+
game_names.head()
内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!