Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
coolalex776
apachecn-dl-zh
提交
fc041ef6
A
apachecn-dl-zh
项目概览
coolalex776
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
1
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,发现更多精彩内容 >>
提交
fc041ef6
编写于
1月 23, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-23 16:39:48
上级
56587e5c
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
20 addition
and
16 deletion
+20
-16
new/rl-tf/01.md
new/rl-tf/01.md
+20
-16
未找到文件。
new/rl-tf/01.md
浏览文件 @
fc041ef6
...
...
@@ -441,15 +441,17 @@ Xavier 初始化是神经网络中权重的初始化,是遵循高斯分布的
![](
img/80e793d1-3d94-404f-9f37-49f8fef4fe63.png
)
因此,成本函数
!
[](
img/b3337baf-1416-4884-a76f-9c8cbf5c4ca0.png
)
因此,成本函数
为:
现在,我们的目标是针对!
[](
img/087561bc-125d-452c-bbcd-a558e4e40056.png
)
和!
[](
img/7b493df1-45d9-4846-8f66-51d85598933e.png
)
将成本函数!
[](
img/a0a60778-076d-4389-956d-76ce3e17d070.png
)
最小化。 为了训练我们给定的神经网络,首先随机初始化!
[](
img/bdb23788-4f0e-412b-a61e-5ef1174f5048.png
)
和!
[](
img/46a36473-a141-47eb-93a8-e7ebaab16f14.png
)
。 然后,我们将尝试通过梯度下降来优化!
[](
img/28928ff4-d6c3-444a-ad12-e50771f3b302.png
)
,在此我们将以以下方式以学习率!
[](
img/1b1182d3-cdf0-4cf3-a2a2-4a0e0d02135b.png
)
相应地更新!
[](
img/220cc9fc-7e5c-465c-8d5a-e1bcca2b9511.png
)
和!
[](
img/e42609d8-199b-49e6-9a70-026e5d2c2d82.png
)
:
![](
img/b3337baf-1416-4884-a76f-9c8cbf5c4ca0.png
)
现在,我们的目标是针对
`W`
和
`b`
将成本函数
`J`
最小化。 为了训练我们给定的神经网络,首先随机初始化
`W`
和
`b`
。 然后,我们将尝试通过梯度下降来优化
`J`
,在此我们将以以下方式以学习率
`α`
相应地更新
`W`
和
`b`
:
*
!
[](
img/3135cb59-4deb-442d-9eb4-aee81be280ad.png
)
*
!
[](
img/7c7a767b-ffe7-461d-a077-0137dbc1af53.png
)
设置好此结构后,我们必须重复执行这些优化步骤(更新
!
[](
img/1ac8a61d-f0cd-4875-bb19-8e24af95ab5b.png
)
和!
[](
img/1dae3d1b-e4bc-4a91-b6f7-c05238e0f6f5.png
)
),以进行多次迭代以训练我们的神经网络。
设置好此结构后,我们必须重复执行这些优化步骤(更新
`W`
和
`b`
),以进行多次迭代以训练我们的神经网络。
这将我们带到了神经网络基础的结尾,它构成了任何浅或深的神经网络的基本构建块。 我们的下一个前沿将是了解一些著名的深度神经网络架构,例如
**循环神经网络**
(
**RNN**
)和
**卷积神经网络**
(
**CNN**
)。 除此之外,我们还将介绍基准的深度神经网络架构,例如 AlexNet,VGG-net 和 Inception。
...
...
@@ -475,13 +477,13 @@ Xavier 初始化是神经网络中权重的初始化,是遵循高斯分布的
*
!
[](
img/574a41ce-1848-4111-ba71-d166d62d5cff.png
)
。
*
!
[](
img/2a804f1c-616a-4259-ad96-68538ad3f153.png
)
和!
[](
img/f08af16f-e2d6-4cc9-8fea-057be7ce996b.png
)
是随时间共享的权重和偏差。
*
`W[h]`
和
`b[h]`
是随时间共享的权重和偏差。
*
!
[](
img/69bdd200-19d8-4e66-9dbf-0b5c45dfa1bb.png
)
是激活函数!
[](
img/83763684-e7c3-408a-9d7c-c71e58f2b0f2.png
)
。
*
`tanh`
是激活函数
`f`
。
*
!
[](
img/fdae7818-ad9f-4625-a517-9866ab64c7ba.png
)
指这两个信息的串联。 假设您的输入!
[](
img/fabc1019-14de-464c-9815-31932fc61bd7.png
)
的形状为!
[](
img/34f9ecdb-a661-464e-827f-d4d3aa3bc4f1.png
)
,即
`n`
样本/行和
`d`
尺寸/列,!
[](
img/b826d8a7-d3e8-4bff-bff0-8ee306dfb0fe.png
)
为!
[](
img/ce5ea938-0957-4fb1-b749-eb5c1dabcd29.png
)
。 然后,您的串联将得到形状为!
[](
img/98b88230-cb0a-4e47-9196-c1f6a5c25a3b.png
)
的矩阵。
*
`[h[t-1]; x[t]]`
指这两个信息的串联。 假设您的输入
`x[t]`
的形状为
`nxd`
,即
`n`
样本/行和
`d`
尺寸/列,
`h[t-1]`
为
`n*l`
。 然后,您的串联将得到形状为
`n*(d+l)`
的矩阵。
由于任何隐藏状态
的形状!
[](
img/20e7cfcf-b30c-419a-ba4d-bb31f4b96b69.png
)
为!
[](
img/e7f61b8f-a80f-4d5f-8cfc-1c0049c53242.png
)
。 因此,!
[](
img/65a08623-041f-4397-a296-b078efbc3f3b.png
)
的形状为!
[](
img/ef7f053d-6159-4883-bbee-3f0e14aa6ba5.png
)
,!
[](
img/8e1789e6-fb9a-4271-b25a-94503434bd89.png
)
的形状为!
[](
img/fd5a1cce-23c4-4115-b507-ee0d26a248ca.png
)
。
由于任何隐藏状态
`h[i]`
的形状为
`n*l`
。 因此,
`W[h]`
的形状为
`(d+l)*l`
,
`b[h]`
的形状为
`l`
。
以来,
...
...
@@ -501,7 +503,7 @@ Xavier 初始化是神经网络中权重的初始化,是遵循高斯分布的
![](
img/db611e16-6507-40be-a626-26d9096b2a64.png
)
因此,包含
`m`
个示例的整个数据集的成本函数为(其中
`k`
表示
!
[](
img/ad927756-fb6d-46c2-a5de-e600a915427a.png
)
示例):
因此,包含
`m`
个示例的整个数据集的成本函数为(其中
`k`
表示
第
`k`
个
示例):
![](
img/bfc6e3b7-5070-40ed-8b99-c4e9eaa28e96.png
)
...
...
@@ -515,27 +517,27 @@ RNN 实际上无法处理**长期依赖项**。 随着输出序列中的输出
![](
img/3822e6c5-1056-44e1-ad43-c0b7c68a00e0.png
)
LSTM 的关键特征是单元状态
!
[](
img/03603cb5-2d59-48ad-8d9d-739cc0697bef.png
)
。 这有助于信息保持不变。 我们将从遗忘门层!
[](
img/82ce7d60-d0d1-4066-a9c7-18e6c5b351c1.png
)
开始,该层将最后一个隐藏状态,!
[](
img/704c9aeb-4394-44d8-b46e-0925d6cbc5fb.png
)
和!
[](
img/a058a147-2e03-4601-81e3-25816b758255.png
)
的串联作为输入,并训练一个神经网络,该神经网络对于其中的每个数字得出 0 到 1 之间的数字。 最后一个单元格状态!
[](
img/4168a812-e51e-4afe-9436-8b355131088f.png
)
,其中 1 表示保留该值,0 表示忘记该值。 因此,该层将识别过去要忘记的信息,并保留哪些信息。
LSTM 的关键特征是单元状态
`C[t]`
。 这有助于信息保持不变。 我们将从遗忘门层
`f[t]`
开始,该层将最后一个隐藏状态,
`h[t-1]`
和
`x[t]`
的串联作为输入,并训练一个神经网络,该神经网络对于其中的每个数字得出 0 到 1 之间的数字。 最后一个单元格状态
`C[t-1]`
,其中 1 表示保留该值,0 表示忘记该值。 因此,该层将识别过去要忘记的信息,并保留哪些信息。
![](
img/8e72b527-34c7-411d-ab7a-e134400a410a.png
)
接下来,我们进入输入门层
!
[](
img/7977d07d-1440-43ab-881f-7b517978da22.png
)
和 tanh 层!
[](
img/8302b240-51fa-4079-bb11-2e83d4d114dc.png
)
,它们的任务是确定要添加到过去接收到的信息中的新信息以更新信息,即单元状态。 tanh 层创建新值的向量,而输入门层则标识用于信息更新的那些值中的哪一个。 将此新信息与使用“遗忘门”层!
[](
img/cc10c0d9-5827-4e59-8433-aa8a03ef1e68.png
)
保留的信息结合起来以更新我们的信息,即单元状态!
[](
img/6565e4ff-1c73-4519-929c-be05b74443ea.png
)
:
接下来,我们进入输入门层
`i[t]`
和 tanh 层
`C_tilde[t]`
,它们的任务是确定要添加到过去接收到的信息中的新信息以更新信息,即单元状态。 tanh 层创建新值的向量,而输入门层则标识用于信息更新的那些值中的哪一个。 将此新信息与使用“遗忘门”层
`f[t]`
保留的信息结合起来以更新我们的信息,即单元状态
`C[t]`
:
![](
img/e014559b-eeb5-4a39-bdcc-87d91ea0c4dc.png
)
![](
img/6d389234-7948-426d-b353-12be63a4b478.png
)
= !
[](
img/780ac43a-e452-447c-a6b1-9afc609fb5b1.png
)
因此,新的单元状态
!
[](
img/71abebb0-5ada-40fe-8fe0-2c4550b0df5f.png
)
为:
因此,新的单元状态
`C[t]`
为:
![](
img/ed6a7bac-a7a6-4b3c-94c3-dbe47b666824.png
)
最后,在输出门控层
!
[](
img/efcab6f5-0025-49ca-b668-d175c925520c.png
)
训练一个神经网络,返回单元状态!
[](
img/987d0c52-4bd9-4f92-af31-4798a685d197.png
)
的哪些值作为隐藏状态!
[](
img/eb997ba8-9f55-4e1d-9ac8-9c28eb3ee0a3.png
)
输出:
最后,在输出门控层
`o[t]`
训练一个神经网络,返回单元状态
`C[t]`
的哪些值作为隐藏状态
`h[t]`
输出:
![](
img/d9b18419-c661-4500-82ec-baadcd374dbe.png
)
![](
img/f684fde6-9611-4959-983f-73c663249b40.png
)
因此,LSTM 单元合并了最后一个单元状态
!
[](
img/a3998cc6-4052-4652-8fb3-4b25af4c86e3.png
)
,最后一个隐藏状态!
[](
img/96b99bc5-597c-46f7-9158-0ad4c7ad7a11.png
)
和当前时间步输入!
[](
img/3301755b-42ae-41d4-939f-e8cba2f96b77.png
)
,并输出了更新后的单元状态!
[](
img/8fdf4174-15ac-4d64-afd0-79e603c0e226.png
)
和当前隐藏状态!
[](
img/3a12833f-b0c4-4ec1-b482-61e2c98d9091.png
)
。
因此,LSTM 单元合并了最后一个单元状态
`C[t-1]`
,最后一个隐藏状态
`h[t-1]`
和当前时间步输入
`x[t]`
,并输出了更新后的单元状态
`C[t]`
和当前隐藏状态
`h[t]`
。
LSTM 是一项突破,因为人们可以通过将 RNN 合并为单元单元来对 RNN 的显着结果进行基准测试。 这是朝着解决与长期依赖有关的问题迈出的重要一步。
...
...
@@ -718,7 +720,7 @@ V(s) = E[all future rewards discounted | S(t)=s]
# 最优策略模型
策略被定义为指导代理在不同状态下进行操作选择的模型。 策略被表示为
!
[](
img/c48aecd5-2a66-4a73-89aa-1de763a4c651.png
)
。 !
[](
img/5f314fc5-890d-43ff-8d6d-6fa185064b3c.png
)
本质上是在特定状态下某种动作的概率:
策略被定义为指导代理在不同状态下进行操作选择的模型。 策略被表示为
`π`
。
`π`
本质上是在特定状态下某种动作的概率:
![](
img/be42dad4-02e2-4f9e-8af8-bb8b677521d4.png
)
...
...
@@ -740,13 +742,15 @@ Q 学习涉及的步骤:
5.
使用以下 Bellman 公式更新表中
`(s, a)`
对的
`Q`
值:
![](
img/038ba71d-be57-48da-8e37-93730b0e0d76.png
)
,其中!
[](
img/7a96e6a0-5418-452b-81bf-a1e2a1dca770.png
)
是折扣因子
![](img/038ba71d-be57-48da-8e37-93730b0e0d76.png)
其中`γ`是折扣因子。
6.
然后,将当前状态的值设置为新状态,并重复该过程以完成一个情节,即达到终端状态
7.
运行多个剧集来训练智能体
为简化起见,我们可以说,给定状态
`s`
和动作
`a`
的 Q 值由当前奖励
`r`
以及新状态在其所有操作中的折扣(
!
[](
img/5a4faa30-228a-416e-90cf-69810aca8cbd.png
)
)最大
`Q`
最大值。 与当前奖励相比,折扣因子延迟了来自未来的奖励。 例如,今天的 100 奖励在将来的价值将超过 100。 同样,将来的 100 奖励必须今天价值不到 100。 因此,我们将折扣未来的奖励。 连续重复此更新过程会导致 Q 表值收敛到给定状态下给定操作的预期未来奖励的准确度量。
为简化起见,我们可以说,给定状态
`s`
和动作
`a`
的 Q 值由当前奖励
`r`
以及新状态在其所有操作中的折扣(
`γ`
)最大
`Q`
最大值。 与当前奖励相比,折扣因子延迟了来自未来的奖励。 例如,今天的 100 奖励在将来的价值将超过 100。 同样,将来的 100 奖励必须今天价值不到 100。 因此,我们将折扣未来的奖励。 连续重复此更新过程会导致 Q 表值收敛到给定状态下给定操作的预期未来奖励的准确度量。
当状态空间和动作空间的数量增加时,很难维护 Q 表。 在现实世界中,状态空间无限大。 因此,需要另一种无需 Q 表即可生成
`Q(s, a)`
方法。 一种解决方案是用功能替换 Q 表。 该函数将状态作为向量形式的输入,并输出给定状态下所有动作的 Q 值向量。 该函数逼近器可以由神经网络表示,以预测 Q 值。 因此,当状态和动作空间变大时,我们可以添加更多的层并适合于深度神经网络,以更好地预测 Q 值,这对于 Q 表来说似乎是不可能的。 这样就产生了 Q 网络,如果使用了更深层的神经网络(例如卷积神经网络),那么它会导致
**深度 Q 网络**
(
**DQN**
)。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录