open AI: 马斯克
AGI:通用人工智能
The best way to predict the future is to invent it.
Gym :强化学习的基本对象:
环境:ENV,问题,状态空间,行动空间,奖励,状态转移模型。
智能体:AI 算法
步骤:
初始化环境:
循环:
按照策略行动
环境变化,获取反馈
学习(更新策略)
https://gym.openai.com/docs/#getting-started-with-gym
GYM 学习伪代码:
强化学习伪代码:
游戏的结束:是以失败为指示。
Env.reset()
while not don
action = Agent.policy(Env.state)
reward, newState,done= Env.step(action)
Agent.learn(state,action,reward)
env.render() # 画图
Save(s,ar,news) to memory
if train:
Batch =Memory.sample()//随机取
QNet.
state = newState
Q学习:
原始问题:在状态S,采取哪个行动?
采取期望最高的行动
从一张表Q(s,a)中获取
怎么计算Q表?
随机初始化,然后不停尝试,根据会报更新Q表。
所以状态的更新和学习是同步进行的。
怎么尝试?
随机行动, 贪婪行动----->e贪婪行动(折中)
Q学习怎么更新Q表?
Q(st,at)=Q(st,at)+@[r+ymaxQ(st+1,a)-Q(st,at)]
@:学习率
学习目标:r+ymaxQ(st+1,a):当前会报+下一状态最大回报。
不停迭代,直到Q表收敛。
之后的每次就可以严格依据Q表。
Q学习的局限性:Q(s,a) 10^170(围棋的状态空间), dota的状态空间(10^1000+)
s->(s,a)映射, 深度神经网络(监督学习)
解决:使用神经网络拟合出Q表。
DQN:
从深度学习的角度看:
强化学习是收集数据,训练神经网络。
1.怎么喂数据? 经验回放策略<s,a,r,news> -> memory,
Memory.sample()随机获取经验。
keras, tensorflow 计算框架。
2. r+ymaxQ(st+1,a),目标频繁更新,异步目标更新策略。
更新Q,maxQ(不跟额更新) ,每隔一定步长执行maxQ=Q