(流程来自王树森《深度强化学习:AlphaGo》)
(资料图片仅供参考)
1. BC预训练策略网络
2. 通过策略梯度训练策略网络
3. 使用策略网络训练价值网络
4. 使用:(价值网络 - 策略网络)知道MCTS(蒙特卡洛树搜索)
----------------------------------------------------------------------------------------
策略函数(来自王树森《深度强化学习:策略学习》)
策略网络(来自王树森《深度强化学习:策略学习》)
softmax激活函数:让输出都是正数,且所有输出之和为1
(来自王树森《深度强化学习:AlphaGo》)
强化学习:需要奖励
模仿学习:不需要奖励
行为克隆是分类或回归
观测到当前状态
预测当前状态下下一步为各个动作的概率,得到361维向量p
假设真实动作为at* = 281
one-hot encode (门外汉 一脸懵)为361维向量y,其中281处为1,其余都为0
损失函数 交叉熵(y, p)
梯度下降更新网络
为什么要先使用BC预训练策略网络
在面对复杂且深广的新知识前,完全自学形成策略想法是需要花很长时间去探索、失败、总结。
使用BC思想,给定一个老师讲解那些难懂的概念,就可以快速学习到。
“师傅领进门,修行靠个人”。有了老师教学,自己不去动手学,那就是“眼睛学会了,手却学不会”。
数据准备
环境:
还是之前的简单数据,
# 为了简单,设置pos为index
pos=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
fv = [10, 30, 80, 180, 330, 430, 480, 500, 450, 350, 200, 100, 50, 25]
先把这组数据测成功了,再使用create.c产生的数据,即之前torch.nn.Linear曲线拟合中的曲线
“专家轨迹”:传统算法“爬山法”,大步粗调,小步细调,震荡走,类似PID算法
(爬山算法) 初始 -(+4)-> -(+4)-> -(+4)-> -(-2)-> -(-2)-> -(-2)-> -(-2)-> -(+1)-> -(+1)-> -(+1)-> [7, 500]
expert_s = [[0, 10], [4, 330], [8, 450], [12, 50], [10, 200], [8, 450], [6, 480], [4, 330], [5, 430], [6, 480]]
需要多写几组,或者全部14条轨迹
动作
第一组数据少,+4, +2, +1, 0, -1, -2, -4
第二组pos 0 - 1000,有501组,先用+4, +2, +1, 0, -1, -2, -4,再用+20,+10, +5, +2, +1, 0, -1, -2, -5, -10, -20
模型
这里,不是图像,是离散的点数据,所以直接使用torch.nn.Linear,全连接、BP网络