Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
li工
apachecn-dl-zh
提交
73330217
A
apachecn-dl-zh
项目概览
li工
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
73330217
编写于
1月 22, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-22 16:45:26
上级
c88b3449
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
21 addition
and
19 deletion
+21
-19
new/rl-tf/14.md
new/rl-tf/14.md
+16
-16
new/rl-tf/15.md
new/rl-tf/15.md
+5
-3
未找到文件。
new/rl-tf/14.md
浏览文件 @
73330217
...
@@ -55,21 +55,21 @@
...
@@ -55,21 +55,21 @@
# 神经内部注意模型
# 神经内部注意模型
本节说明了编码器-解码器网络上的神经内部注意模型。 此处,
!
[](
img/854a7ddc-0625-4736-b366-910857f25226.png
)
代表输入(文章)标记的序列,!
[](
img/e02447f3-d66c-484b-adb0-e1dc426b51e5.png
)
代表输出(摘要)标记的序列。 网络的编码器部分由双向 LSTM 组成(请参见
[
附录 A
](
../Text/15.html
)
,“强化学习”中的其他主题)。 因此,使用双向 LSTM 读取输入序列
`x`
,该 LSTM 从!
[](
img/f25db2d7-ce50-4b2e-951a-809217f5d3f4.png
)
的嵌入向量计算隐藏状态!
[](
img/a30dc36d-fe5e-4660-ad70-f9dc529e6650.png
)
,其中||。
表示向量的串联。
本节说明了编码器-解码器网络上的神经内部注意模型。 此处,
`x = [x[1], x[2], ..., x[n]]`
代表输入(文章)标记的序列,
`y = [y[1], y[2], ..., y[m]]`
代表输出(摘要)标记的序列。 网络的编码器部分由双向 LSTM 组成(请参见附录 A,“强化学习”中的其他主题)。 因此,使用双向 LSTM 读取输入序列
`x`
,该 LSTM 从
`x[i]`
的嵌入向量计算隐藏状态
`h[i]^e = [h[i]^e_fwd || h[i]^e_bwd]`
,其中
`||`
表示向量的串联。
在框架的解码器部分,使用单个 LSTM,该 LSTM 从
!
[](
img/5ba77ef5-982e-4a34-83e0-9b3458143c64.png
)
的嵌入向量计算隐藏状态!
[](
img/8a85c52e-c80d-4e61-9e7a-7ea72560da10.png
)
。 在时间步零处的初始隐藏状态(即!
[](
img/3acb7be9-9441-42fd-9bd0-e5ecbfb0a922.png
)
)使用编码器的最后一个隐藏状态(即!
[](
img/046773a8-466d-4c5e-b7a3-4a6e90ab83de.png
)
)进行初始化。 因此,!
[](
img/e260025c-5c07-4766-992e-1f8e2fd73844.png
)
。
在框架的解码器部分,使用单个 LSTM,该 LSTM 从
`y[t]`
的嵌入向量计算隐藏状态
`h[t]^d`
。 在时间步零处的初始隐藏状态(即
`h[0]^d`
)使用编码器的最后一个隐藏状态(即
`h[n]^e`
)进行初始化。 因此,
`h[0]^d = h[n]^e`
。
# 解码时的输入序列上的时间内部注意
# 解码时的输入序列上的时间内部注意
解码时,在每个时间步
`t`
时,时空内部注意力函数用于伴随编码器输入序列的重要部分以及解码器的隐藏状态和先前生成的单词(在早期的解码过程中)
`t`
之前的时间步长)。 这种注意方法用于防止在不同时间步长的解码过程中出现输入序列的相同部分。
解码时,在每个时间步
`t`
时,时空内部注意力函数用于伴随编码器输入序列的重要部分以及解码器的隐藏状态和先前生成的单词(在早期的解码过程中)
`t`
之前的时间步长)。 这种注意方法用于防止在不同时间步长的解码过程中出现输入序列的相同部分。
由
!
[](
img/bfca054b-7871-4546-a86e-6c41a485dd65.png
)
给出在解码时间步长
`t`
处的隐藏输入状态!
[](
img/160ef7cf-4119-43f9-84f5-5e22f14e7eae.png
)
的关注分数。 因此,!
[](
img/22e90111-bb9b-439b-9af2-95d1ce99f6e5.png
)
,其中
`f`
是返回!
[](
img/03a73dce-566c-41ae-82e7-a478d4110882.png
)
标量值的任何函数。
由
`e[ti]`
给出在解码时间步长
`t`
处的隐藏输入状态
`h[i]^e`
的关注分数。 因此,
`e[ti] = f(h[t]^d, h[i]^e)`
,其中
`f`
是返回
`e[ti]`
标量值的任何函数。
注意权重进一步标准化(如下所示),以惩罚在先前的解码步骤中已收到较高注意值的那些输入标记。 这为我们提供了新的时间注意力得分
!
[](
img/0d47c944-7ff3-4880-995c-c77b7ca36fb6.png
)
:
注意权重进一步标准化(如下所示),以惩罚在先前的解码步骤中已收到较高注意值的那些输入标记。 这为我们提供了新的时间注意力得分
`e'[ti]`
:
![](
img/d57898fc-cc80-4ac7-8363-e854bf9e20d1.png
)
![](
img/d57898fc-cc80-4ac7-8363-e854bf9e20d1.png
)
最后,在输入中计算归一化注意力分数
!
[](
img/2570561a-d059-4a10-844b-93a80152b15f.png
)
,然后将其用于计算输入上下文向量!
[](
img/33ad4abc-7daf-40cc-8a98-718dadf0efaf.png
)
:
最后,在输入中计算归一化注意力分数
`α[ti]^e`
,然后将其用于计算输入上下文向量
`c[t]^e`
:
![](
img/ee0ab9db-8573-4ed1-b049-d55d701be70a.png
)
![](
img/ee0ab9db-8573-4ed1-b049-d55d701be70a.png
)
...
@@ -79,9 +79,9 @@
...
@@ -79,9 +79,9 @@
即使是时间内部注意功能,也可以确保在每个解码步骤中,都参与了编码输入的不同部分,但解码器仍可以在长序列中生成重复的短语。 为了防止这种情况,来自先前解码的序列的信息也可以被馈送到解码器中。 来自先前解码步骤的信息将帮助模型避免重复相同的信息并导致结构化的预测。
即使是时间内部注意功能,也可以确保在每个解码步骤中,都参与了编码输入的不同部分,但解码器仍可以在长序列中生成重复的短语。 为了防止这种情况,来自先前解码的序列的信息也可以被馈送到解码器中。 来自先前解码步骤的信息将帮助模型避免重复相同的信息并导致结构化的预测。
为了实现这种方法以合并来自先前解码步骤的信息,应用了解码器内部注意。 当前的编码器-解码器模型中未使用此方法进行抽象总结。 对于解码时的每个时间步
`t`
,都会计算新的解码器上下文向量
!
[](
img/06c52fcd-4d03-4da3-b94a-b1d134a51d2a.png
)
。 由于在解码时为第一时间步生成的序列为空,因此,将用于时间步 1 的初始解码器上下文向量(即!
[](
img/9c9eca09-e449-433e-bb58-9f760cd5cc1f.png
)
)设置为零向量。
为了实现这种方法以合并来自先前解码步骤的信息,应用了解码器内部注意。 当前的编码器-解码器模型中未使用此方法进行抽象总结。 对于解码时的每个时间步
`t`
,都会计算新的解码器上下文向量
`c[t]^d`
。 由于在解码时为第一时间步生成的序列为空,因此,将用于时间步 1 的初始解码器上下文向量(即
`c[1]^d`
)设置为零向量。
对于
`t > 1`
,按以下方式计算时间关注分数
!
[](
img/55ba6afa-9f09-40ae-8952-003b2288e5fd.png
)
,归一化关注分数!
[](
img/5a3a634a-9309-4ada-89bc-79325ea451d4.png
)
和解码器上下文向量!
[](
img/06c52fcd-4d03-4da3-b94a-b1d134a51d2a.png
)
:
对于
`t > 1`
,按以下方式计算时间关注分数
`e[tt']^d`
,归一化关注分数
`α[tt']^d`
和解码器上下文向量
`c[t]^d`
:
![](
img/960f289d-1bee-416d-89e4-1d335b0c0db3.png
)
![](
img/960f289d-1bee-416d-89e4-1d335b0c0db3.png
)
...
@@ -97,7 +97,7 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
...
@@ -97,7 +97,7 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
# 标记生成和指针
# 标记生成和指针
在确定输出序列标记时,解码器决定使用 softmax 层生成标记,或者使用指针机制指向输入中的稀有重要标记,并将其复制为输出序列标记。 在每个解码步骤,使用切换功能来决定是使用标记生成还是使用点来复制输入标记。 !
[](
img/5a1ecca2-91be-4832-bcb8-f77758f11890.png
)
定义为二进制值,如果使用指针机制,则等于 1,否则等于 0。因此,
!
[](
img/b9613b77-27a7-4e05-a4ca-d1200b6b6276.png
)
作为输出标记的概率由以下公式给出:
在确定输出序列标记时,解码器决定使用 softmax 层生成标记,或者使用指针机制指向输入中的稀有重要标记,并将其复制为输出序列标记。 在每个解码步骤,使用切换功能来决定是使用标记生成还是使用点来复制输入标记。 !
[](
img/5a1ecca2-91be-4832-bcb8-f77758f11890.png
)
定义为二进制值,如果使用指针机制,则等于 1,否则等于 0。因此,
`y[t]`
作为输出标记的概率由以下公式给出:
![](
img/ef9ea2f7-76ec-4ce4-a48d-fd822975020e.png
)
![](
img/ef9ea2f7-76ec-4ce4-a48d-fd822975020e.png
)
...
@@ -105,15 +105,15 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
...
@@ -105,15 +105,15 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
![](
img/3174ba55-4632-4832-aac4-1a27eec17681.png
)
,
![](
img/3174ba55-4632-4832-aac4-1a27eec17681.png
)
,
这里,
!
[](
img/ef046c9c-f449-4f12-bcfc-f0b8825857b0.png
)
和!
[](
img/81d912e1-ee61-48ba-9694-d2792c646a4a.png
)
是连接到输出节点的解码器网络的权重和偏差参数,并且指针机制生成以下概率分布来复制输入标记!
[](
img/f883b6a5-f2a7-496a-8f29-d38a24a5ff93.png
)
:
这里,
`W_out`
和
`b_out`
是连接到输出节点的解码器网络的权重和偏差参数,并且指针机制生成以下概率分布来复制输入标记
`x[i]`
:
![](
img/e48ae8a5-9f5f-443c-bc57-a71c260e48b9.png
)
![](
img/e48ae8a5-9f5f-443c-bc57-a71c260e48b9.png
)
使用指针机制(即
!
[](
img/5d41786e-44aa-4bc0-9fb2-6c1aa49e7f2b.png
)
)的概率由以下公式给出:
使用指针机制(即
`p(u[t] = 1)`
)的概率由以下公式给出:
![](
img/dad29271-c02b-4fb9-9cd5-e418dff4385a.png
)
![](
img/dad29271-c02b-4fb9-9cd5-e418dff4385a.png
)
在此,
!
[](
img/a1ddc448-c450-4632-ada7-26e0d98ebdcf.png
)
是 Sigmoid 激活函数。
在此,
`σ`
是 Sigmoid 激活函数。
# 混合学习目标
# 混合学习目标
...
@@ -125,7 +125,7 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
...
@@ -125,7 +125,7 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
![](
img/6b41f89e-eec6-4e31-8565-861e1df1bfc8.png
)
![](
img/6b41f89e-eec6-4e31-8565-861e1df1bfc8.png
)
但是,将
!
[](
img/cc3ba3fd-34bd-41ce-84a1-4142a2b0c6a5.png
)
最小化的目标并不总是产生最佳结果。 此问题背后的两个主要原因如下:
但是,将
`L_ml`
最小化的目标并不总是产生最佳结果。 此问题背后的两个主要原因如下:
*
**暴露偏差**
:在训练过程中,神经网络知道直到下一个标记的地面真相序列,但在测试时并非如此。
*
**暴露偏差**
:在训练过程中,神经网络知道直到下一个标记的地面真相序列,但在测试时并非如此。
*
**多个输出候选**
(即
**多个可能有效的摘要**
):有更多方式可以安排标记以生成多个摘要。 最大可能性目标没有考虑这种可能性。
*
**多个输出候选**
(即
**多个可能有效的摘要**
):有更多方式可以安排标记以生成多个摘要。 最大可能性目标没有考虑这种可能性。
...
@@ -134,14 +134,14 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
...
@@ -134,14 +134,14 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
这里的思想是学习一种最大化度量标准而不是最小化从最大似然目标获得的损失的策略。 为此,使用了强化学习方法,其中将自关键策略梯度算法用于训练。 对于此训练,每次训练迭代都会生成两个单独的输出序列:
这里的思想是学习一种最大化度量标准而不是最小化从最大似然目标获得的损失的策略。 为此,使用了强化学习方法,其中将自关键策略梯度算法用于训练。 对于此训练,每次训练迭代都会生成两个单独的输出序列:
*
通过在每个解码时间步长处从
!
[](
img/28d5d0f5-205d-410d-92de-d6697b672ebc.png
)
的概率分布中采样来获取!
[](
img/5c763806-748a-4d93-80a4-25e458aaeab9.png
)
*
通过在每个解码时间步长处从
`p(y[t]^s | y[1]^s, ..., y[t - 1]^s, x)`
的概率分布中采样来获取
`y^s`
*
!
[](
img/43c52665-4ac5-4dc8-8a2e-e3a27b74c90b.png
)
是通过最大化每个时间步的输出概率分布而获得的基线输出
*
`y_hat`
是通过最大化每个时间步的输出概率分布而获得的基线输出
因此,奖励函数
`r`
可以是我们选择的任何评估指标,目的是最大程度地减少以下损失:
因此,奖励函数
`r`
可以是我们选择的任何评估指标,目的是最大程度地减少以下损失:
![](
img/9c8bfb33-6741-411c-b7f0-a47d38dcb6e9.png
)
![](
img/9c8bfb33-6741-411c-b7f0-a47d38dcb6e9.png
)
最小化
!
[](
img/03de9b41-c280-4254-a32d-6110bb15f1e3.png
)
等同于最小化采样序列!
[](
img/46b365e7-2d29-4de2-962a-9de494e97f22.png
)
的!
[](
img/f9dd6678-98b2-4854-a7c4-26af1a97819f.png
)
。 因此,为了使!
[](
img/0d40a6f1-f064-4a35-9d01-70f4e1accb75.png
)
和!
[](
img/9485dc4a-14d6-4b6d-9643-b4efd31b04fc.png
)
最小化,需要增加输出序列的奖励,使其变得高于基线!
[](
img/0f865613-5920-4f36-a26e-731b3230b5d3.png
)
的奖励,从而增加了预期的奖励。
最小化
`L_rl`
等同于最小化采样序列
`y^s`
的
`L_ml`
。 因此,为了使
`L_rl`
和
`r(y^s)`
最小化,需要增加输出序列的奖励,使其变得高于基线
`y^s`
的奖励,从而增加了预期的奖励。
因此,强化学习框架用于学习最大化特定离散量度的策略。 强化学习框架总结如下:
因此,强化学习框架用于学习最大化特定离散量度的策略。 强化学习框架总结如下:
...
@@ -155,7 +155,7 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
...
@@ -155,7 +155,7 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
![](
img/1f5593f6-9ff7-44e2-b877-79ff4e7cfb40.png
)
![](
img/1f5593f6-9ff7-44e2-b877-79ff4e7cfb40.png
)
此处,
!
[](
img/041f8769-bdbd-4cce-9e98-1322b3c66044.png
)
是缩放系数,用于平衡!
[](
img/467103a4-2935-4c38-bcb8-8dd9414f23a4.png
)
和!
[](
img/c426211a-cbfc-4073-a13a-f719b984519d.png
)
的大小差异。
此处,
`γ`
是缩放系数,用于平衡
`L_rl`
和
`L_ml`
的大小差异。
# 文字问答
# 文字问答
...
...
new/rl-tf/15.md
浏览文件 @
73330217
...
@@ -13,7 +13,7 @@
...
@@ -13,7 +13,7 @@
# 信任区域策略优化
# 信任区域策略优化
**信任区域策略优化**
(
**TRPO**
)是一种用于优化策略的迭代方法。 TRPO 优化了大型非线性策略。 TRPO 通过对输出策略分布施加约束来限制策略搜索空间。 为此,对策略网络参数使用 KL 散度损失函数(
!
[](
img/f32e59af-ab87-4141-bb2b-830cc1d8451b.png
)
)来惩罚这些参数。 新策略和旧策略之间的 KL 差异约束称为信任区域约束。 由于此约束,策略分布中不会发生大规模更改,从而导致策略网络尽早收敛。
**信任区域策略优化**
(
**TRPO**
)是一种用于优化策略的迭代方法。 TRPO 优化了大型非线性策略。 TRPO 通过对输出策略分布施加约束来限制策略搜索空间。 为此,对策略网络参数使用 KL 散度损失函数(
`D_max[KL](θ_old, θ)`
)来惩罚这些参数。 新策略和旧策略之间的 KL 差异约束称为信任区域约束。 由于此约束,策略分布中不会发生大规模更改,从而导致策略网络尽早收敛。
TRPO 由 Schulman 等(2017)发布在名为
[
《信任区域策略优化》
](
https://arxiv.org/pdf/1502.05477.pdf
)
的研究出版物中。 在这里,他们提到了一些实验,这些实验证明了 TRPO 在不同任务上的强大性能,例如学习模拟机器人游泳,玩 Atari 游戏等等。
[
为了详细研究 TRPO,请访问出版物的 arXiv 链接
](
https://arxiv.org/pdf/1502.05477.pdf
)
。
TRPO 由 Schulman 等(2017)发布在名为
[
《信任区域策略优化》
](
https://arxiv.org/pdf/1502.05477.pdf
)
的研究出版物中。 在这里,他们提到了一些实验,这些实验证明了 TRPO 在不同任务上的强大性能,例如学习模拟机器人游泳,玩 Atari 游戏等等。
[
为了详细研究 TRPO,请访问出版物的 arXiv 链接
](
https://arxiv.org/pdf/1502.05477.pdf
)
。
...
@@ -23,7 +23,7 @@ TRPO 由 Schulman 等(2017)发布在名为[《信任区域策略优化》](h
...
@@ -23,7 +23,7 @@ TRPO 由 Schulman 等(2017)发布在名为[《信任区域策略优化》](h
![](
img/b2b45023-7595-4b6f-8f0f-9fba913f1774.png
)
![](
img/b2b45023-7595-4b6f-8f0f-9fba913f1774.png
)
其中,
!
[](
img/fea8baa7-8aca-4854-9f09-eef6aabaeff6.png
)
是确定性策略,
`α`
是学习率,
`θ`
表示策略网络参数。 通过应用链式规则,策略改进可以显示如下:
其中,
`μ[θ](s)`
是确定性策略,
`α`
是学习率,
`θ`
表示策略网络参数。 通过应用链式规则,策略改进可以显示如下:
![](
img/c5f5537b-51ac-414c-9dd1-d8461a257262.png
)
![](
img/c5f5537b-51ac-414c-9dd1-d8461a257262.png
)
...
@@ -171,7 +171,9 @@ ROUGE 还可以通过将机器生成的输出(自动摘要或翻译)与一
...
@@ -171,7 +171,9 @@ ROUGE 还可以通过将机器生成的输出(自动摘要或翻译)与一
现在,如果机器生成的输出为
`the big black dog was found under the big round bed`
,那么,
现在,如果机器生成的输出为
`the big black dog was found under the big round bed`
,那么,
![](
img/48fb6f83-56a2-4bb7-9dcc-9ad36a7186b9.png
)
,!
[](
img/7ccef560-5555-4275-b9d6-e108936fb67a.png
)
![](
img/48fb6f83-56a2-4bb7-9dcc-9ad36a7186b9.png
)
![](
img/7ccef560-5555-4275-b9d6-e108936fb67a.png
)
这表明机器生成的输出不合适,因为它包含大量不必要的单词。 因此,我们可以很容易地发现仅召回是不够的,因此召回率和精度应同时用于评估。 因此,在以下情况下,作为召回率和精度的谐波均值计算的 F1 分数是一种很好的评估指标:
这表明机器生成的输出不合适,因为它包含大量不必要的单词。 因此,我们可以很容易地发现仅召回是不够的,因此召回率和精度应同时用于评估。 因此,在以下情况下,作为召回率和精度的谐波均值计算的 F1 分数是一种很好的评估指标:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录