Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
大唐爆破僧
apachecn-dl-zh
提交
04c7b3ce
A
apachecn-dl-zh
项目概览
大唐爆破僧
/
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,体验更适合开发者的 AI 搜索 >>
提交
04c7b3ce
编写于
1月 24, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-24 18:48:14
上级
f33c7079
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
41 addition
and
41 deletion
+41
-41
new/rl-tf/01.md
new/rl-tf/01.md
+13
-13
new/rl-tf/02.md
new/rl-tf/02.md
+1
-1
new/rl-tf/03.md
new/rl-tf/03.md
+1
-1
new/rl-tf/04.md
new/rl-tf/04.md
+2
-2
new/rl-tf/05.md
new/rl-tf/05.md
+16
-16
new/rl-tf/08.md
new/rl-tf/08.md
+1
-1
new/rl-tf/09.md
new/rl-tf/09.md
+1
-1
new/rl-tf/11.md
new/rl-tf/11.md
+2
-2
new/rl-tf/12.md
new/rl-tf/12.md
+1
-1
new/rl-tf/14.md
new/rl-tf/14.md
+3
-3
未找到文件。
new/rl-tf/01.md
浏览文件 @
04c7b3ce
...
...
@@ -50,7 +50,7 @@
1.
我们看到传统的机器学习算法的表现在一定时间后收敛,因为它们无法吸收超过阈值的数据量的不同表示形式。
2.
检查图的左下角,靠近原点。 这是算法的相对顺序没有很好定义的区域。 由于数据量小,内部表示形式并没有那么明显。 结果,所有算法的表现指标都一致。 在此级别上,表现与更好的要素工程成正比。 但是这些手工设计的
功能
随着数据大小的增加而失败。 这就是深度神经网络的来历,因为它们能够从大量数据中捕获更好的表示。
2.
检查图的左下角,靠近原点。 这是算法的相对顺序没有很好定义的区域。 由于数据量小,内部表示形式并没有那么明显。 结果,所有算法的表现指标都一致。 在此级别上,表现与更好的要素工程成正比。 但是这些手工设计的
特征
随着数据大小的增加而失败。 这就是深度神经网络的来历,因为它们能够从大量数据中捕获更好的表示。
因此,我们可以得出结论,不应该将深度学习架构应用于任何遇到的数据。 所获得数据的数量和种类表明要应用哪种算法。 有时,小数据通过传统的机器学习算法比深度神经网络更有效。
...
...
@@ -72,7 +72,7 @@
数据规模,算法类型和表现指标是一组方法,可以帮助我们针对不同的机器学习算法确定改进水平。 因此,决定是否投资深度学习或采用传统机器学习方法的关键决策。
具有一些输入
功能
(下图中的三个)的基本感知器如下所示:
具有一些输入
特征
(下图中的三个)的基本感知器如下所示:
![](
img/4d39b442-6c4c-4960-ab6a-944651a3f70b.png
)
...
...
@@ -82,7 +82,7 @@
*
`W1`
,
`W2`
和
`W3`
是与特征变量关联的相应权重。 当我们谈论神经网络的训练时,我们的意思是说权重的训练。 因此,这些构成了我们小型神经网络的参数。
*
输出层中的
功能
是应用于从前一层接收的信息的聚合上的激活函数。 此函数创建一个与实际输出相对应的表示状态。 从输入层到输出层的一系列过程导致预测输出,称为正向传播。
*
输出层中的
函数
是应用于从前一层接收的信息的聚合上的激活函数。 此函数创建一个与实际输出相对应的表示状态。 从输入层到输出层的一系列过程导致预测输出,称为正向传播。
*
通过多次迭代,可以最小化激活函数的输出和实际输出之间的误差值。
...
...
@@ -98,11 +98,11 @@
# Sigmoid 函数
Sigmoid是一种平滑且连续可微的
功能
。 这导致非线性输出。 Sigmoid 函数在这里表示:
Sigmoid是一种平滑且连续可微的
函数
。 这导致非线性输出。 Sigmoid 函数在这里表示:
![](
img/9241aa68-606b-4192-b3cc-ccb29f4ef110.png
)
请查看下图的 Sigmoid 函数观察结果。 该函数的范围是 0 到 1。观察函数的曲线,我们看到
`x`
值介于 -3 和 3 之间时,梯度非常高,但超出此范围则变得平坦。 因此,可以说这些点附近的
`x`
的微小变化将使 Sigmoid 函数的值产生较大的变化。 因此,
功能目标是将 Sigmoid 功能
的值推向极限。
请查看下图的 Sigmoid 函数观察结果。 该函数的范围是 0 到 1。观察函数的曲线,我们看到
`x`
值介于 -3 和 3 之间时,梯度非常高,但超出此范围则变得平坦。 因此,可以说这些点附近的
`x`
的微小变化将使 Sigmoid 函数的值产生较大的变化。 因此,
函数目标是将 Sigmoid 函数
的值推向极限。
因此,它被用于分类问题:
...
...
@@ -180,7 +180,7 @@ ReLU 的导数图,对于`x <= 0`,`f'(x) = 1`,对于`x > 0`,`f'(x) = 0`
*
Sigmoid 函数在浅层网络和二分类器的情况下效果很好。 较深的网络可能会导致梯度消失。
*
ReLU 函数是使用最广泛的
功能
,请尝试使用 Leaky ReLU 以避免神经元死亡的情况。 因此,从 ReLU 开始,如果 ReLU 无法提供良好的结果,则移至另一个激活函数。
*
ReLU 函数是使用最广泛的
函数
,请尝试使用 Leaky ReLU 以避免神经元死亡的情况。 因此,从 ReLU 开始,如果 ReLU 无法提供良好的结果,则移至另一个激活函数。
*
在外层使用 softmax 进行多类分类。
...
...
@@ -296,7 +296,7 @@ ReLU 的导数图,对于`x <= 0`,`f'(x) = 1`,对于`x > 0`,`f'(x) = 0`
# 使用梯度下降法解决逻辑回归的步骤
将我们刚刚介绍的所有构建模块放在一起,让我们尝试解决具有两个输入
功能
的二进制逻辑回归。
将我们刚刚介绍的所有构建模块放在一起,让我们尝试解决具有两个输入
特征
的二进制逻辑回归。
计算的基本步骤是:
...
...
@@ -387,7 +387,7 @@ Xavier 初始化是神经网络中权重的初始化,是遵循高斯分布的
*
对聚合信号进行激活以创建更深层的内部表示,这些表示又是相应隐藏节点的值
参考上图,我们有三个输入
功能
`x[1], x[2], x[3]`
。 显示值为 1 的节点被视为偏置单元。 除输出外,每一层通常都有一个偏置单元。 偏差单位可以看作是一个拦截项,在左右激活函数中起着重要作用。 请记住,隐藏层和其中的节点的数量是我们一开始定义的超参数。 在这里,我们将隐藏层数定义为 1,将隐藏节点的数数定义为 3,
`a[1], a[2], a[3]`
。 因此,可以说我们有三个输入单元,三个隐藏单元和三个输出单元(
`h[1], h[2], h[3]`
,因为我们要预测的类别是三类)。 这将为我们提供与层关联的权重和偏差的形状。 例如,第 0 层具有 3 个单位,第 1 层具有 3 个单位。与第
`i`
层相关联的权重矩阵和偏差向量的形状如下:
参考上图,我们有三个输入
特征
`x[1], x[2], x[3]`
。 显示值为 1 的节点被视为偏置单元。 除输出外,每一层通常都有一个偏置单元。 偏差单位可以看作是一个拦截项,在左右激活函数中起着重要作用。 请记住,隐藏层和其中的节点的数量是我们一开始定义的超参数。 在这里,我们将隐藏层数定义为 1,将隐藏节点的数数定义为 3,
`a[1], a[2], a[3]`
。 因此,可以说我们有三个输入单元,三个隐藏单元和三个输出单元(
`h[1], h[2], h[3]`
,因为我们要预测的类别是三类)。 这将为我们提供与层关联的权重和偏差的形状。 例如,第 0 层具有 3 个单位,第 1 层具有 3 个单位。与第
`i`
层相关联的权重矩阵和偏差向量的形状如下:
![](
img/491169f7-46c4-469b-93cd-1cb8f4f01162.png
)
...
...
@@ -571,7 +571,7 @@ CNN 在计算机视觉和自然语言处理领域具有广泛的应用。 就行
CNN 架构由一系列这些卷积层组成。 如果这些卷积层中的跨步值大于 1,则会导致空间缩小。 因此,步幅,斑块大小和激活函数成为超参数。 除卷积层外,有时还会添加一个重要的层,称为
**池化层**
。 这将附近的所有卷积合并起来。 池化的一种形式称为
**最大池化**
。
在最大池中,
功能
图会查看补丁中的所有值,并返回其中的最大值。 因此,池大小(即池补丁/窗口大小)和池跨度是超参数。 下图描述了最大池化的概念:
在最大池中,
特征
图会查看补丁中的所有值,并返回其中的最大值。 因此,池大小(即池补丁/窗口大小)和池跨度是超参数。 下图描述了最大池化的概念:
![](
img/c026d9c2-b027-4ff9-8b53-1b4cb26dfe9b.png
)
...
...
@@ -616,7 +616,7 @@ Inception 由 Google 团队于 2014 年创建。其主要思想是创建更广
[
Szegedy 等人的《从卷积开始深入研究》
](
https://arxiv.org/pdf/1409.4842.pdf
)
它为单个输入应用多个卷积层,并输出每个卷积的堆叠输出。 使用的卷积大小主要为
`1x1`
、
`3x3`
和
`5x5`
。 这种架构允许您从相同大小的输入中提取多级
功能
。 早期版本也称为 GoogLeNet,该版本在 2014 年赢得了 ImageNet 挑战。
它为单个输入应用多个卷积层,并输出每个卷积的堆叠输出。 使用的卷积大小主要为
`1x1`
、
`3x3`
和
`5x5`
。 这种架构允许您从相同大小的输入中提取多级
特征
。 早期版本也称为 GoogLeNet,该版本在 2014 年赢得了 ImageNet 挑战。
# 深度学习的局限性
...
...
@@ -752,7 +752,7 @@ Q 学习涉及的步骤:
为简化起见,我们可以说,给定状态
`s`
和动作
`a`
的 Q 值由当前奖励
`r`
以及新状态在其所有操作中的折扣(
`γ`
)最大
`Q`
最大值。 与当前奖励相比,折扣因子延迟了来自未来的奖励。 例如,今天的 100 奖励在将来值将超过 100。 同样,将来的 100 奖励的当前值必须不到 100。 因此,我们将折扣未来的奖励。 连续重复此更新过程会导致 Q 表值收敛到给定状态下给定操作的预期未来奖励的准确度量。
当状态空间和动作空间的数量增加时,很难维护 Q 表。 在现实世界中,状态空间无限大。 因此,需要另一种无需 Q 表即可生成
`Q(s, a)`
方法。 一种解决方案是用
功能
替换 Q 表。 该函数将状态作为向量形式的输入,并输出给定状态下所有动作的 Q 值向量。 该函数逼近器可以由神经网络表示,以预测 Q 值。 因此,当状态和动作空间变大时,我们可以添加更多的层并适合于深度神经网络,以更好地预测 Q 值,这对于 Q 表来说似乎是不可能的。 这样就产生了 Q 网络,如果使用了更深层的神经网络(例如卷积神经网络),那么它会导致
**深度 Q 网络**
(
**DQN**
)。
当状态空间和动作空间的数量增加时,很难维护 Q 表。 在现实世界中,状态空间无限大。 因此,需要另一种无需 Q 表即可生成
`Q(s, a)`
方法。 一种解决方案是用
函数
替换 Q 表。 该函数将状态作为向量形式的输入,并输出给定状态下所有动作的 Q 值向量。 该函数逼近器可以由神经网络表示,以预测 Q 值。 因此,当状态和动作空间变大时,我们可以添加更多的层并适合于深度神经网络,以更好地预测 Q 值,这对于 Q 表来说似乎是不可能的。 这样就产生了 Q 网络,如果使用了更深层的神经网络(例如卷积神经网络),那么它会导致
**深度 Q 网络**
(
**DQN**
)。
有关 Q 学习和深度 Q 网络的更多详细信息,将在第 5 章, “Q 学习和深度 Q 网络”中进行介绍。
...
...
@@ -784,7 +784,7 @@ TensorFlow 的基础是我们在本章前面讨论过的**计算图**和**张量
import
tensorflow
as
tf
```
`tf.zeros()`
和
`tf.ones()`
是实例化基本张量的一些
功能
。
`tf.zeros()`
采用张量形状(即元组),并返回该形状的张量,所有值均为零。 同样,
`tf.ones()`
采用张量形状,但返回仅包含一个形状的该张量。 在 python shell 中尝试以下命令来创建张量:
`tf.zeros()`
和
`tf.ones()`
是实例化基本张量的一些
函数
。
`tf.zeros()`
采用张量形状(即元组),并返回该形状的张量,所有值均为零。 同样,
`tf.ones()`
采用张量形状,但返回仅包含一个形状的该张量。 在 python shell 中尝试以下命令来创建张量:
```
py
>>>
tf
.
zeros
(
3
)
...
...
@@ -917,7 +917,7 @@ array([[ 1., 1.],
[
1.
,
1.
]],
dtype
=
float32
)
```
下一个矩阵运算是矩阵乘法函数,如下所示。 这是通过
功能
`tf.matmul()`
完成的:
下一个矩阵运算是矩阵乘法函数,如下所示。 这是通过
函数
`tf.matmul()`
完成的:
```
py
>>>
a
=
tf
.
ones
((
3
,
2
))
...
...
new/rl-tf/02.md
浏览文件 @
04c7b3ce
...
...
@@ -106,7 +106,7 @@ HFFG
*
`H`
:块有孔
*
`G`
:目标块
在较新版本的“体育馆”中,不能直接修改环境
功能
。 这可以通过以下方式解开环境参数来完成:
在较新版本的“体育馆”中,不能直接修改环境
特征
。 这可以通过以下方式解开环境参数来完成:
```
py
env
=
env
.
unwrapped
...
...
new/rl-tf/03.md
浏览文件 @
04c7b3ce
...
...
@@ -96,7 +96,7 @@ MDP 试图通过将网格划分为状态,动作,模型/转换模型和奖励
![](
img/ec5c8b7c-4b92-426c-97e0-673286364a05.png
)
策略是将状态作为输入并输出要采取的措施的
功能
。 因此,该策略是智能体必须遵守的命令。
策略是将状态作为输入并输出要采取的措施的
函数
。 因此,该策略是智能体必须遵守的命令。
![](
img/8b92a7d2-aa9e-465a-88d3-7880d412516e.png
)
被称为最佳策略,它使预期收益最大化。 在采取的所有策略中,最优策略是一种优化的策略,用于最大化一生中已收到或预期收到的奖励金额。 对于 MDP,生命周期没有尽头,您必须确定结束时间。
...
...
new/rl-tf/04.md
浏览文件 @
04c7b3ce
...
...
@@ -76,7 +76,7 @@
假设任何状态的特征都为
`φ(s, a)`
,动作为北,东,西和南。
考虑到这些
功能
,让我们比较基于值的方法和基于策略的方法:
考虑到这些
函数
,让我们比较基于值的方法和基于策略的方法:
*
基于值的强化学习将使用近似值函数
`Q(s, a) = f(φ(s, a), w)`
。
*
基于策略的强化学习将使用参数化策略
`π[θ](s, a) = g(φ(s, a), θ)`
。
...
...
@@ -500,7 +500,7 @@ def policy_backward(arr_hidden_state,gradient_logp,observation_values):
return
{
'W1'
:
dW1
,
'W2'
:
dW2
}
```
创建环境并结合先前的
功能
以使智能体逐步学习多个情节的最终任务如下:
创建环境并结合先前的
函数
以使智能体逐步学习多个情节的最终任务如下:
```
py
#implementation details
...
...
new/rl-tf/05.md
浏览文件 @
04c7b3ce
# Q 学习和深度 Q 网络
在第 3 章,“马尔可夫决策过程”中,我们讨论了遵循马尔可夫性质的环境转移模型以及延迟的奖励和值
的概念(或工具)功能
。 好,在本章中,我们将研究马尔可夫决策过程,了解 Q 学习,以及一种称为深度 Q 网络的改进方法,用于在不同环境中进行泛化。
在第 3 章,“马尔可夫决策过程”中,我们讨论了遵循马尔可夫性质的环境转移模型以及延迟的奖励和值
函数的概念(或工具)
。 好,在本章中,我们将研究马尔可夫决策过程,了解 Q 学习,以及一种称为深度 Q 网络的改进方法,用于在不同环境中进行泛化。
我们将在本章介绍以下主题:
...
...
@@ -23,7 +23,7 @@ DeepMind 在研究期刊 **Nature** 上发表了他们的论文[《通过深度
那么,如何解决这个问题呢?
假设我们拍摄了特定视频游戏中所有最佳玩家的视频,并以图像帧和目标标签的形式输入数据,作为可能采取的不同动作的集合。 由于我们具有输入
功能
和目标标签,因此形成了监督学习分类问题。 假设数据量巨大,并且我们可以使用具有最新 GPU 的高端机器,那么为该任务创建一个深度神经网络完全有意义。
假设我们拍摄了特定视频游戏中所有最佳玩家的视频,并以图像帧和目标标签的形式输入数据,作为可能采取的不同动作的集合。 由于我们具有输入
特征
和目标标签,因此形成了监督学习分类问题。 假设数据量巨大,并且我们可以使用具有最新 GPU 的高端机器,那么为该任务创建一个深度神经网络完全有意义。
但是这里有什么收获呢?
...
...
@@ -450,7 +450,7 @@ import gym
*
`fit(self)`
:训练我们的深度 Q 网络
*
`epsilon_greedy(self,obs)`
:对于给定的观察状态,要采取的操作,即根据现有策略利用操作或随机探索新操作
可以使用以下代码定义具有
主要功能
的 DQN 类的架构:
可以使用以下代码定义具有
`main`
函数
的 DQN 类的架构:
```
py
class
DQN
:
...
...
@@ -503,7 +503,7 @@ def __init__(self,learning_rate,gamma,n_features,n_actions,epsilon,parameter_cha
self
.
sess
.
run
(
tf
.
global_variables_initializer
())
```
现在让我们初始化
`build_networks(self)`
。 它是构建主要网络和目标网络的
功能
:
现在让我们初始化
`build_networks(self)`
。 它是构建主要网络和目标网络的
函数
:
*
在
`variable_scope`
:
`primary_network`
下创建主要网络参数,并在
`primary_network_parameters`
集合中创建
*
在
`variable_scope`
:
`target_network`
下创建目标网络参数,并在
`target_network_parameters`
集合中创建目标网络参数
...
...
@@ -564,7 +564,7 @@ def build_networks(self):
```
现在,我们将使用以下代码定义
`target_params_replaced(self)`
。 运行将主网络参数分配给目标网络参数的张量操作的
功能
:
现在,我们将使用以下代码定义
`target_params_replaced(self)`
。 运行将主网络参数分配给目标网络参数的张量操作的
函数
:
```
py
def
target_params_replaced
(
self
):
...
...
@@ -580,7 +580,7 @@ def store_experience(self,obs,a,r,obs_):
self
.
experience_counter
+=
1
```
在这里,我们将定义
`fit(self)`
,该
功能是通过从经验缓冲区中选择一批来训练网络,计算
`q_target`
的张量值,然后最小化
`qeval`
之间的损失(即输出)的功能
。 来自主网络的数据)和
`q_target`
(即使用目标网络计算的 Q 值)。 我们将使用以下代码定义函数:
在这里,我们将定义
`fit(self)`
,该
函数是通过从经验缓冲区中选择一批来训练网络,计算
`q_target`
的张量值,然后最小化
`qeval`
之间的损失(即输出)的函数
。 来自主网络的数据)和
`q_target`
(即使用目标网络计算的 Q 值)。 我们将使用以下代码定义函数:
```
py
def
fit
(
self
):
...
...
@@ -624,7 +624,7 @@ def epsilon_greedy(self,obs):
return
np
.
random
.
choice
(
self
.
n_actions
)
```
以下是
主要功能,该功能
创建上一个 DQN 类的对象,使用 Gym 来获取
`MountainCar-v0`
环境,并训练智能体程序来解决问题。 像在 Q 学习中一样,在这里我们还更新了奖励值,将其作为当前位置与最低点位置(即起点)之间的绝对差值,从而使其偏离中心而最大化了奖励:
以下是
`main`
函数,该函数
创建上一个 DQN 类的对象,使用 Gym 来获取
`MountainCar-v0`
环境,并训练智能体程序来解决问题。 像在 Q 学习中一样,在这里我们还更新了奖励值,将其作为当前位置与最低点位置(即起点)之间的绝对差值,从而使其偏离中心而最大化了奖励:
```
py
if
__name__
==
"__main__"
:
...
...
@@ -907,7 +907,7 @@ import gym
from
scipy.misc
import
imresize
```
具有以下
主要功能
的
`class DQN`
的架构可以使用以下代码定义:
具有以下
`main`
函数
的
`class DQN`
的架构可以使用以下代码定义:
```
py
class
DQN
:
...
...
@@ -946,11 +946,11 @@ if __name__ == "__main__":
*
`epsilon`
:利用或探索行为的ε贪婪条件的阈值
*
`parameter_changing_pointer`
:一个整数值(例如
`n`
),指定在每
`n`
次迭代之后,将主网络的参数复制到目标网络
*
`memory_size`
:体验回复的最大长度
*
`add_layer(self,inputs,w_shape=None,b_shape=None,layer=None,activation_fn=None,c=None,isconv=False)`
:在神经网络中创建层的
功能
*
`weight_variable(self,w_shape,layer,c)`
:创建重量参数的
功能
*
`bias_variable(self,b_shape,layer,c)`
:创建偏置参数的
功能
*
`conv(self,inputs,w)`
:对图像帧执行卷积运算的
功能
*
`build_networks()`
:此
功能
用于使用 TensorFlow 创建主要网络和目标网络
*
`add_layer(self,inputs,w_shape=None,b_shape=None,layer=None,activation_fn=None,c=None,isconv=False)`
:在神经网络中创建层的
函数
*
`weight_variable(self,w_shape,layer,c)`
:创建重量参数的
函数
*
`bias_variable(self,b_shape,layer,c)`
:创建偏置参数的
函数
*
`conv(self,inputs,w)`
:对图像帧执行卷积运算的
函数
*
`build_networks()`
:此
函数
用于使用 TensorFlow 创建主要网络和目标网络
*
`target_params_replaced(self)`
:用于将目标网络参数替换为主网络参数
*
`store_experience(self,obs,a,r,obs_)`
:帮助存储经验,即(状态,动作,奖励,新状态)的元组
*
`fit(self)`
:用于训练我们的深度 Q 网络
...
...
@@ -1039,7 +1039,7 @@ def conv(self,inputs,w):
return
tf
.
nn
.
conv2d
(
inputs
,
w
,
strides
=
[
1
,
1
,
1
,
1
],
padding
=
'SAME'
)
```
现在,让我们定义
`build_networks(self)`
。 它是在以下情况下建立主要和目标网络的
功能
:
现在,让我们定义
`build_networks(self)`
。 它是在以下情况下建立主要和目标网络的
函数
:
*
在
`variable_scope`
下创建主要网络参数,即:
`primary_network`
和集合
`primary_network_parameters`
*
在
`variable_scope`
下创建目标网络参数,即:
`target_network`
和集合
`target_network_parameters`
...
...
@@ -1050,7 +1050,7 @@ def conv(self,inputs,w):
*
全连接层 2
*
使用的激活函数:ReLU
该
功能
还有助于:
该
函数
还有助于:
*
计算主网络输出的 Q 值与目标网络输出的 Q 值之间的损失
...
...
@@ -1166,7 +1166,7 @@ def fit(self):
self
.
learning_counter
+=
1
```
现在,我们将定义
`epsilon_greedy(self,obs)`
,该
功能类似于我们在 DQN 中为山地车和 Cartpole 实现的功能
:
现在,我们将定义
`epsilon_greedy(self,obs)`
,该
函数类似于我们在 DQN 中为山地车和 Cartpole 实现的函数
:
```
py
def
epsilon_greedy
(
self
,
obs
):
...
...
new/rl-tf/08.md
浏览文件 @
04c7b3ce
...
...
@@ -124,7 +124,7 @@ AlphaGo 之前的围棋 AI 程序完全依赖于蒙特卡洛树搜索。 这些
策略网络并入当前游戏状态,并输出给定状态下每个可能动作的概率。 具有较高概率的动作有较高的获胜机会。 首先,使用专家玩家玩游戏的数据集,通过监督学习来训练策略网络。 输入数据包含游戏板的图像,输出将采取的措施。 来自 160000 个专家游戏的大约 3000 万个棋盘位置的训练数据集最初用于训练 AlphaGo 的策略网络。 在专家数据集上进行训练后,通过自我扮演改进了预测可能学习到的动作的模型,在自我扮演的过程中,它与自身无数次比赛,以使用策略梯度从过去的错误中学习。 因此,策略网络通过提供可能采取行动的可能性来帮助减少候选行动。
值网络提供当前状态的估计值,该值是黑人玩家在当前状态下赢得比赛的概率。 策略和值网络的输入与当前游戏状态(具有当前石头位置的棋盘游戏的图像)相同。 策略网络的输出是获胜的概率。 因此,值网络的作用类似于评估函数,该
功能
是通过 3000 万个棋盘位置的监督学习集获得的。
值网络提供当前状态的估计值,该值是黑人玩家在当前状态下赢得比赛的概率。 策略和值网络的输入与当前游戏状态(具有当前石头位置的棋盘游戏的图像)相同。 策略网络的输出是获胜的概率。 因此,值网络的作用类似于评估函数,该
函数
是通过 3000 万个棋盘位置的监督学习集获得的。
因此,值网络输出直觉(赢和输的机会),而策略网络输出反思(训练游戏知识)。 因此,AlphaGo 中直觉和反射的混合使其比任何基于搜索的方法都强大。 但是在 AlphaGo 中,这些网络可根据所开发的直觉和学习的反射来帮助更快,优化树搜索。
...
...
new/rl-tf/09.md
浏览文件 @
04c7b3ce
...
...
@@ -126,7 +126,7 @@
# 传感器融合
此步骤包括融合来自不同传感器和过程的输入,并准备将其输入到深度神经网络。 每个传感器信息以原始向量的形式捕获环境状态。 完成所有这些原始向量的分组,并将其馈入深度神经网络。 每个感官输入将形成一个单独的特征向量。 因此,作为学习的结果,即成本最小化,发生了与那些传感器特征中的每一个相关联的权重的优化。 这些学习的权重量化了相应传感器
功能
的相关性。 就深度神经网络而言,CNN 是完成任务的最佳选择。
此步骤包括融合来自不同传感器和过程的输入,并准备将其输入到深度神经网络。 每个传感器信息以原始向量的形式捕获环境状态。 完成所有这些原始向量的分组,并将其馈入深度神经网络。 每个感官输入将形成一个单独的特征向量。 因此,作为学习的结果,即成本最小化,发生了与那些传感器特征中的每一个相关联的权重的优化。 这些学习的权重量化了相应传感器
特征
的相关性。 就深度神经网络而言,CNN 是完成任务的最佳选择。
# 空间特征
...
...
new/rl-tf/11.md
浏览文件 @
04c7b3ce
...
...
@@ -4,7 +4,7 @@
与认知科学的紧密比较将是动态机器人系统和自动驾驶中强化学习的许多成功实现。 他们证明了将强化学习算法用于物理系统实时控制的理论。
在深度 Q 网络和策略梯度中使用神经网络可消除对人工设计的策略和状态表示的使用。 在深度强化学习中直接使用 CNN 并使用图像像素代替手工设计的
功能
作为状态已成为广泛接受的实践。 小型批量训练以及单独的主要网络和目标网络的概念为深度强化学习算法带来了成功。 在以像素为输入的 50 场 Atari 2600 游戏中,DeepMind 和深度强化学习的成功实现了超人的表现水平,这是强化学习研究的转折点。
在深度 Q 网络和策略梯度中使用神经网络可消除对人工设计的策略和状态表示的使用。 在深度强化学习中直接使用 CNN 并使用图像像素代替手工设计的
特征
作为状态已成为广泛接受的实践。 小型批量训练以及单独的主要网络和目标网络的概念为深度强化学习算法带来了成功。 在以像素为输入的 50 场 Atari 2600 游戏中,DeepMind 和深度强化学习的成功实现了超人的表现水平,这是强化学习研究的转折点。
研究人员试图在机器人技术中实现深层 Q 网络,但并未取得重大成功。 其背后的主要原因是机器人领域中的高维连续动作空间。 为了在连续的动作空间中实现 DQN,必须离散化它们,但是这种离散化会导致信息丢失,这对于诸如机器人之类的领域可能是非常危险的。
...
...
@@ -100,7 +100,7 @@ Perkins 和 Barto(2002)提出了一种基于 Lyapunov 函数构造强化学
为了避免与实际交互相关的成本,使用了模拟器。 问题在于,仿真模型应接近实际情况。 对于理想的设置,方法是在模拟中执行学习任务,并将知识模型转移到机器人。 为机器人创建良好的精确学习模型以及现实场景的模拟环境模型非常具有挑战性,因为它需要大量的现实世界数据样本。
从少量数据中学到的小模型会导致建模不足,从而使机器人很容易与实际系统脱节。 模拟器的问题在于它们无法复制与物理交互(如摩擦和触摸)相关联的真实世界的复杂性,因此它们被忽略了。 结果,在现实世界中,由于与物理交互有关的挑战,机器人的能量和对它的控制也丢失了。 因此,忽略这些
功能
使机器人强化学习模型难以根据实际情况进行准确训练。 因此,在现实世界中学习有助于捕获环境的这些固有特征。
从少量数据中学到的小模型会导致建模不足,从而使机器人很容易与实际系统脱节。 模拟器的问题在于它们无法复制与物理交互(如摩擦和触摸)相关联的真实世界的复杂性,因此它们被忽略了。 结果,在现实世界中,由于与物理交互有关的挑战,机器人的能量和对它的控制也丢失了。 因此,忽略这些
特征
使机器人强化学习模型难以根据实际情况进行准确训练。 因此,在现实世界中学习有助于捕获环境的这些固有特征。
因此,由于现实世界的不完整状态表示而导致的模型不确定性是机器人强化学习要克服的巨大挑战。
...
...
new/rl-tf/12.md
浏览文件 @
04c7b3ce
...
...
@@ -73,7 +73,7 @@
在蔡等人的这项研究中。 此外,我们考虑了在展示广告的情况下进行机器竞标,因为实时竞标是一项极富挑战性的任务,因为在在线展示广告的情况下,只要它由用户访问生成,广告印象的竞标就会立即开始。 在考虑了剩余预算,未来相关广告展示的可用性,出价结果和收到的反馈之后,为每次广告出价计算最佳出价,这些都可以帮助广告客户优化出价策略,从而更好地进行分配。
在这里,研究人员试图获得最佳出价
功能,该功能
可以最大化广告活动的关键表现指标,这些指标主要是总点击次数或总收入。 但是,这种方法主要在静态出价的情况下起作用,在这种情况下,出价发生在广告商为每个展示支付固定的平均费率的情况下。 在实时出价的情况下,它在展示级别是动态的,这意味着在一个平台中,根据生成的展示的需求,出价值会有所不同。
在这里,研究人员试图获得最佳出价
函数,该函数
可以最大化广告活动的关键表现指标,这些指标主要是总点击次数或总收入。 但是,这种方法主要在静态出价的情况下起作用,在这种情况下,出价发生在广告商为每个展示支付固定的平均费率的情况下。 在实时出价的情况下,它在展示级别是动态的,这意味着在一个平台中,根据生成的展示的需求,出价值会有所不同。
本研究试图通过使用强化学习框架来解决实时竞标挑战,并将其作为顺序决策来解决,其中:
...
...
new/rl-tf/14.md
浏览文件 @
04c7b3ce
...
...
@@ -2,7 +2,7 @@
大约一年前,在
**自然语言处理**
(
**NLP**
)中进行强化学习成为人工智能界研究的热点。 2017 年下半年发布了大多数适合在 NLP 中使用强化学习的研究出版物。
在任何领域中使用强化学习框架的最大原因在于,以状态的形式表示环境,详尽列出了环境中所有可能的动作,以及特定领域的奖励函数,通过该
功能
来实现目标。 最优化的行动路径。 因此,如果系统具有许多可能的动作,但是未给出正确的动作集,并且目标高度依赖于系统的不同选项(动作),则强化学习框架可以比现有的监督或非监督模型更好地对系统进行建模。
在任何领域中使用强化学习框架的最大原因在于,以状态的形式表示环境,详尽列出了环境中所有可能的动作,以及特定领域的奖励函数,通过该
函数
来实现目标。 最优化的行动路径。 因此,如果系统具有许多可能的动作,但是未给出正确的动作集,并且目标高度依赖于系统的不同选项(动作),则强化学习框架可以比现有的监督或非监督模型更好地对系统进行建模。
为什么在 NLP 中使用强化学习?
...
...
@@ -77,7 +77,7 @@
# 解码器内部注意
即使是时间内部注意
功能
,也可以确保在每个解码步骤中,都参与了编码输入的不同部分,但解码器仍可以在长序列中生成重复的短语。 为了防止这种情况,来自先前解码的序列的信息也可以被馈送到解码器中。 来自先前解码步骤的信息将帮助模型避免重复相同的信息并导致结构化的预测。
即使是时间内部注意
函数
,也可以确保在每个解码步骤中,都参与了编码输入的不同部分,但解码器仍可以在长序列中生成重复的短语。 为了防止这种情况,来自先前解码的序列的信息也可以被馈送到解码器中。 来自先前解码步骤的信息将帮助模型避免重复相同的信息并导致结构化的预测。
为了实现这种方法以合并来自先前解码步骤的信息,应用了解码器内部注意。 当前的编码器-解码器模型中未使用此方法进行抽象总结。 对于解码时的每个时间步
`t`
,都会计算新的解码器上下文向量
`c[t]^d`
。 由于在解码时为第一时间步生成的序列为空,因此,将用于时间步 1 的初始解码器上下文向量(即
`c[1]^d`
)设置为零向量。
...
...
@@ -97,7 +97,7 @@ Paulus 等人(2017)在[《用于抽象摘要的深度强化模型》](https:
# 标记生成和指针
在确定输出序列标记时,解码器决定使用 softmax 层生成标记,或者使用指针机制指向输入中的稀有重要标记,并将其复制为输出序列标记。 在每个解码步骤,使用切换
功能来决定是使用标记生成还是使用点来复制输入标记。 !
[](
img/5a1ecca2-91be-4832-bcb8-f77758f11890.png
)
定义为二进制值,如果使用指针机制,则等于 1,否则等于 0。因此,
`y[t]`
作为输出标记的概率由以下公式给出:
在确定输出序列标记时,解码器决定使用 softmax 层生成标记,或者使用指针机制指向输入中的稀有重要标记,并将其复制为输出序列标记。 在每个解码步骤,使用切换
函数来决定是使用标记生成还是使用点来复制输入标记。
`u[t]`
定义为二进制值,如果使用指针机制,则等于 1,否则等于 0。因此,
`y[t]`
作为输出标记的概率由以下公式给出:
![](
img/ef9ea2f7-76ec-4ce4-a48d-fd822975020e.png
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录