## Reinforcement Learning(RL)
使用PPO算法,self-play,收集trajectory进行梯度更新,进一步优化模型
运行`RL/ppo_discrete_main.py`
#### 策略梯度
RL部分的目标为最大化所有状态(手牌+场况)的平均价值:
$$
\underset{\theta}{maximize}\quad J(\theta)=\underset{s\sim \eta}{E}\left[v_{\pi_\theta}(s)\right]
$$
其梯度:
$$
\nabla_\theta J(\theta)
=\underset{s\sim \eta,\ a\sim\pi_\theta}{E}\left[
\nabla_\theta \log\pi_\theta(a|s)
q_\pi(s,a)\right]
$$
定义优势函数:
$$
A_\pi(s_t,a_t)=\underset{s_{t+1}\sim \Pr(s_{t+1}|s_t,a_t)}{E}\left[
r(s_t)+\gamma v_\pi(s_{t+1})-v_\pi(s_{t})
\right]
$$
使用PPO算法,最大化代理目标(surrogate objective, 记为$\mathcal{L}(\theta)$):(取$\epsilon=0.2$)
$$
\begin{aligned}
\underset{\theta}{maximize}&\quad \mathcal{L}(\theta)=\underset{(s, a)\sim \tau_{old}}{E}
\left[\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)}A_{\pi_{\theta_{old}}}(s,a)\right]\\
s.t.&\underset{(s, a)\sim \tau_{old}}{E}
\left[\left\lvert\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} - 1\right\rvert\right] \le \epsilon
\end{aligned}
$$
上式可写为:
$$
\mathcal{L}^{\text{CLIP}}(\theta)=
\underset{(s, a)\sim \tau_{old}}{E}
\left[\min\left(\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)}A, \ \text{clip}(\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)}, 1-\epsilon, 1+\epsilon)A\right)\right]
$$
求梯度并加上熵正则项(实际使用时需加上clip操作):
$$
\nabla_\theta \mathcal{L}(\theta)
=\underset{(s, a)\sim \tau_{old}}{E}\left[\frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)}
\nabla_\theta \log\pi_\theta(a|s)
A_{\pi_{\theta_{old}}}(s,a)\right]
+\alpha\nabla_\theta H(\pi_\theta)
$$
其中优势函数使用GAE估计
一条trajectory定义为一整个round的`agent_pos`做出的所有discard决策,reward仅在round结束后得到,即最后一个action的reward是round的收支点数/100(如放铳-5200点,此round的reward就是-52),其余的所有action的reward都是0,即$r_T=-52, r_t=0,t<T$
#### 更新算法
1. 与环境交互获得一条trajectory:$(s_t, a_t, r_{t+1}, s_{t+1})|_{t=0}^{T-1}$
2. 将此时的策略记为$\pi_{\theta_{old}}$,重复步骤3若干次
3. 最新的策略记为$\pi_\theta$,根据$\pi_\theta$计算熵、梯度,用平均梯度使用梯度上升法更新$\pi_\theta$
> 经过400局self-play后,与《何切三百问》前165题上能取得60%的一致率
没有合适的资源?快使用搜索试试~ 我知道了~
基于Transformer模型+强化学习训练的立直麻将agent
共49个文件
py:19个
cc:9个
hh:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 119 浏览量
2024-03-15
10:51:03
上传
评论
收藏 771KB ZIP 举报
温馨提示
基于Transformer模型+强化学习训练的立直麻将agent
资源推荐
资源详情
资源评论
收起资源包目录
satori-master.zip (49个子文件)
satori-master
weights
plot.py 821B
log.txt 6KB
LICENSE 9KB
SL
SL.py 5KB
__init__.py 0B
view_dist.py 627B
SL_ddp.py 8KB
dataset
unzip_ds.py 560B
view.py 739B
zip.sh 46B
game_loader.py 14KB
spider.py 3KB
README.md 1KB
tests
牌效.txt 139B
何切300问.txt 5KB
run_test.py 8KB
Misc
__init__.py 19B
libc
loop.hh 70B
rawdata.cc 4KB
Makefile 144B
utils.cc 5KB
thread.hh 2KB
io.cc 1KB
loop.cc 2KB
evaluate.cc 22KB
types.hh 7KB
rawdata.hh 2KB
make_lib.sh 37B
thread.cc 4KB
evaluate.hh 8KB
utils.hh 3KB
search.cc 6KB
main.cc 133B
types.cc 275B
model.py 12KB
misc.py 12KB
engine.py 3KB
requirements.txt 30B
.gitignore 2KB
images
example.png 253KB
val_loss.png 224KB
val_acc.png 215KB
label_dist.png 48KB
RL
__init__.py 0B
ppo_discrete_main.py 6KB
replaybuffer.py 2KB
ppo_discrete.py 6KB
selfplay_worker.py 16KB
README.md 2KB
共 49 条
- 1
资源评论
- Beyond_19432024-04-10资源内容详实,描述详尽,解决了我的问题,受益匪浅,学到了。
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6735
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- IMG_0694.GIF
- 基于图像的三维模型重建C++源代码+文档说明(高分课程设计)
- 基于聚焦法的工件立体测量方案,根据数据进行三维重建 使用HALCON处理图像,MATLAB拟合数据+源代码+数据集+效果图
- 锄战三国村 修改:货币使用不减 v1.10(2) 原创 (中文).apk
- 基于python实现的单目双目视觉三维重建+源代码+图像图片(高分课程设计)
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功