Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
D_ACMER
apachecn-dl-zh
提交
0faafc13
A
apachecn-dl-zh
项目概览
D_ACMER
/
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,发现更多精彩内容 >>
提交
0faafc13
编写于
1月 19, 2021
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2021-01-19 11:35:07
上级
86ec4895
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
5 addition
and
5 deletion
+5
-5
new/pt-tut-17/21.md
new/pt-tut-17/21.md
+2
-2
new/pt-tut-17/34.md
new/pt-tut-17/34.md
+3
-3
未找到文件。
new/pt-tut-17/21.md
浏览文件 @
0faafc13
...
...
@@ -22,7 +22,7 @@
![
fgsm_panda_image
](
img/d74012096c3134b776b5e9f70e8178f3.png
)
从图中,
`x`
是正确分类为“熊猫”的原始输入图像,
`y`
是
`x`
的输出,
`θ`
表示模型参数,而
\(
J(
\
mathbf {
\
theta},
\
mathbf {x},y)
\)
是用于训练网络的损耗。 攻击会将梯度反向传播回输入数据,以计算
\(\
nabla_ {x} J(
\
mathbf {
\
theta},
\
mathbf {x},y)
\)
。 然后,它会沿方向(即
\(
sign(
\
nabla_ {x} J(
\
mathbf {
\
theta}})沿一小步(图片中的
\(\
epsilon
\)
或
\(
0.007
\)
)调整输入数据 ,
\
mathbf {x},y))
\)
))
,这将使损失最大化。 然后,当目标图像仍明显是“熊猫”时,目标网络将它们误分类为“长臂猿”。
从图中,
`x`
是正确分类为“熊猫”的原始输入图像,
`y`
是
`x`
的输出,
`θ`
表示模型参数,而
`J(θ, x, y)`
是用于训练网络的损耗。 攻击会将梯度反向传播回输入数据,以计算
\(\
nabla_ {x} J(
\
mathbf {
\
theta},
\
mathbf {x},y)
\)
。 然后,它会沿方向(即
\(
sign(
\
nabla_ {x} J(
\
mathbf {
\
theta}})沿一小步(图片中的
`ε`
或
`0.007`
)调整输入数据,
`(x, y)`
,这将使损失最大化。 然后,当目标图像仍明显是“熊猫”时,目标网络将它们误分类为“长臂猿”。
希望本教程的动机已经明确,所以让我们跳入实施过程。
...
...
@@ -126,7 +126,7 @@ CUDA Available: True
\[
perturbed
\_
image = image + epsilon
*sign(data\_grad) = x + \epsilon *
sign(
\n
abla_{x} J(
\m
athbf{
\t
heta},
\m
athbf{x}, y))
\]
最后,为了维持数据的原始范围,将被扰动的图像裁剪到范围
\(
[0,1]
\)
。
最后,为了维持数据的原始范围,将被扰动的图像裁剪到范围
`[0,1]`
。
```
py
# FGSM attack code
...
...
new/pt-tut-17/34.md
浏览文件 @
0faafc13
...
...
@@ -103,7 +103,7 @@ class ReplayMemory(object):
我们的目标是制定一种策略,尝试最大化折现的累积奖励
\(
R_ {t_0} =
\
sum_ {t = t_0} ^ {
\
infty}
\
gamma ^ {t-t_0} r_t
\)
,其中
\
(R_ {t_0}
\)
也称为
*返回*
。 折扣
\(\
gamma
\)
应该是
`0`
和
`1`
之间的常数,以确保总和收敛。 这使得来自不确定的遥远未来的回报对我们的代理商而言不如可以对其充满信心的近期回报重要。
Q 学习的主要思想是,如果我们有一个函数
\(
Q ^
*
:State
\
times Action
\
rightarrow
\
mathbb {R}
\)
,这可以告诉我们,如果我们取一个 在给定状态下采取行动,那么我们就可以轻松地制定出使我们的回报最大化的策略:
Q 学习的主要思想是,如果我们有一个函数
`Q*:State x Action => R`
,这可以告诉我们,如果我们取一个 在给定状态下采取行动,那么我们就可以轻松地制定出使我们的回报最大化的策略:
\[\p
i^
*(s) = \arg\!\max_a \ Q^*
(s, a)
\]
...
...
@@ -123,7 +123,7 @@ Q 学习的主要思想是,如果我们有一个函数\(Q ^ *:State \ time
### Q-network
我们的模型将是一个卷积神经网络,该卷积神经网络将吸收当前屏幕补丁和先前屏幕补丁之间的差异。 它有两个输出,分别代表
\(
Q(s,
\
mathrm {left})
\)
和
\(
Q(s,
\
mathrm {right})
\)
(其中
`s`
是网络的输入)。 实际上,网络正在尝试预测在给定当前输入的情况下执行每个操作的
*预期收益*
。
我们的模型将是一个卷积神经网络,该卷积神经网络将吸收当前屏幕补丁和先前屏幕补丁之间的差异。 它有两个输出,分别代表
`Q(s, left)`
和
`Q(s, right)`
(其中
`s`
是网络的输入)。 实际上,网络正在尝试预测在给定当前输入的情况下执行每个操作的
*预期收益*
。
```
py
class
DQN
(
nn
.
Module
):
...
...
@@ -282,7 +282,7 @@ def plot_durations():
最后,是训练模型的代码。
在这里,您可以找到执行优化步骤的
`optimize_model`
函数。 它首先对一批进行采样,将所有张量连接为一个张量,计算
\(
Q(s_t,a_t)
\)
和
\(
V(s_ {t + 1})=
\
max_a Q(s_ {t + 1}, a)
\)
,并将其合并为我们的损失。 根据定义,如果
`s`
为终端状态,则设置
\(
V(s)= 0
\)
。 我们还使用目标网络来计算
\(
V(s_ {t + 1})
\)
,以提高稳定性。 目标网络的权重大部分时间保持冻结状态,但经常更新以策略网络的权重。 通常这是一组固定的步骤,但是为了简单起见,我们将使用情节。
在这里,您可以找到执行优化步骤的
`optimize_model`
函数。 它首先对一批进行采样,将所有张量连接为一个张量,计算
`Q(s[t], a[t])`
和
`V(s[t+1])= max[a] Q(s[t+1], a)`
,并将其合并为我们的损失。 根据定义,如果
`s`
为终端状态,则设置
`V(s) = 0`
。 我们还使用目标网络来计算
`V(s[t+1])`
,以提高稳定性。 目标网络的权重大部分时间保持冻结状态,但经常更新以策略网络的权重。 通常这是一组固定的步骤,但是为了简单起见,我们将使用情节。
```
py
def
optimize_model
():
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录