Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
models
提交
0a033761
M
models
项目概览
PaddlePaddle
/
models
1 年多 前同步成功
通知
222
Star
6828
Fork
2962
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
602
列表
看板
标记
里程碑
合并请求
255
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
models
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
602
Issue
602
列表
看板
标记
里程碑
合并请求
255
合并请求
255
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0a033761
编写于
1月 19, 2018
作者:
W
wanghaoshuang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move policy_gradient to fluid/
上级
3f83c18d
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
16 addition
and
9 deletion
+16
-9
fluid/policy_gradient/README.md
fluid/policy_gradient/README.md
+13
-7
fluid/policy_gradient/brain.py
fluid/policy_gradient/brain.py
+3
-2
fluid/policy_gradient/env.py
fluid/policy_gradient/env.py
+0
-0
fluid/policy_gradient/images/PG_1.svg
fluid/policy_gradient/images/PG_1.svg
+0
-0
fluid/policy_gradient/images/PG_2.svg
fluid/policy_gradient/images/PG_2.svg
+0
-0
fluid/policy_gradient/images/PG_3.svg
fluid/policy_gradient/images/PG_3.svg
+0
-0
fluid/policy_gradient/run.py
fluid/policy_gradient/run.py
+0
-0
未找到文件。
policy_gradient/README.md
→
fluid/
policy_gradient/README.md
浏览文件 @
0a033761
...
...
@@ -96,14 +96,19 @@ $$ -\bigtriangledown \overline {R}_\theta
根据等式(14), 我们的player的模型可以设计为:
![
图片
](
http://bos.nj.bpc.baidu.com/v1/agroup/5f762f001d4a421bc06964d39cc78859e1a1e331
)
<p
align=
"center"
>
<img
src=
"images/PG_1.svg"
width=
"620"
hspace=
'10'
/>
<br/>
图 1
</p>
用户的在一局游戏中的一次操作可以用元组$(s_t, a_t)$, 就是在状态$s_t$状态下做了动作$a_t$, 我们通过图(1)中的前向网络计算出来cross entropy cost为$−
\l
og P(a_t|s_t,
\t
heta)$, 恰好是等式(15)中我们需要微分的一项。
图1是我们需要的player模型,我用这个网络的前向计算可以预测任何状态下该做什么动作。但是怎么去训练学习这个网络呢?在等式(15)中还有一项$R(
\t
au^n)$, 我做反向梯度传播的时候要加上这一项,所以我们需要在图1基础上再加上$R(
\t
au^n)$, 如 图2 所示:
![
图片
](
http://bos.nj.bpc.baidu.com/v1/agroup/b639162977cc9c1f612be8fdf31ec99d73630f97
)
图2
<p
align=
"center"
>
<img
src=
"images/PG_2.svg"
width=
"620"
hspace=
'10'
/>
<br/>
图 2
</p>
图2就是我们最终的网络结构。
#### 2.3.3 直观理解
...
...
@@ -124,10 +129,11 @@ $$ -\bigtriangledown \overline {R}_\theta
我们在第一章描述的游戏场景,需要用第二种 ,player每次到达终点都会收到1分的奖励,我们可以按完成任务所用的步数来定义奖励R.
更进一步,我们认为一局游戏中每步动作对结局的贡献是不同的,有聪明的动作,也有愚蠢的操作。直观的理解,一般是靠前的动作是愚蠢的,靠后的动作是聪明的。既然有了这个价值观,那么我们拿到1分的奖励,就不能平均分给每个动作了。
如图3所示,让所有动作按先后排队,从后往前衰减地给每个动作奖励,然后再每个动作的奖励再减去所有动作奖励的平均值:
![
图片
](
http://bos.nj.bpc.baidu.com/v1/agroup/bf802ee7f900c776d02bcad834acb9b0aaa4479a
)
<p
align=
"center"
>
<img
src=
"images/PG_3.svg"
width=
"620"
hspace=
'10'
/>
<br/>
图 3
</p>
## 3. 训练效果
...
...
policy_gradient/brain.py
→
fluid/
policy_gradient/brain.py
浏览文件 @
0a033761
...
...
@@ -36,8 +36,9 @@ class PolicyGradient:
act
=
"tanh"
# tanh activation
)
# fc2
self
.
all_act_prob
=
fluid
.
layers
.
fc
(
input
=
fc1
,
size
=
self
.
n_actions
,
act
=
"softmax"
)
self
.
all_act_prob
=
fluid
.
layers
.
fc
(
input
=
fc1
,
size
=
self
.
n_actions
,
act
=
"softmax"
)
# to maximize total reward (log_p * R) is to minimize -(log_p * R)
neg_log_prob
=
fluid
.
layers
.
cross_entropy
(
input
=
self
.
all_act_prob
,
...
...
policy_gradient/env.py
→
fluid/
policy_gradient/env.py
浏览文件 @
0a033761
文件已移动
policy_gradient/images/PG_1.svg
→
fluid/
policy_gradient/images/PG_1.svg
浏览文件 @
0a033761
文件已移动
policy_gradient/images/PG_2.svg
→
fluid/
policy_gradient/images/PG_2.svg
浏览文件 @
0a033761
文件已移动
policy_gradient/images/PG_3.svg
→
fluid/
policy_gradient/images/PG_3.svg
浏览文件 @
0a033761
文件已移动
policy_gradient/run.py
→
fluid/
policy_gradient/run.py
浏览文件 @
0a033761
文件已移动
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录