100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > HTML_网页设计参考手册 中文WORD版

HTML_网页设计参考手册 中文WORD版

时间:2020-03-07 10:14:57

相关推荐

HTML_网页设计参考手册 中文WORD版

HTML 的英文全称是Hyper Text Markup Language,直译为超文本标记语言。它是全球广域网上描述网页内容和外观的标准。HTML 包含了一对打开和关闭的标记,在当中包含有属性和值。标记描述了每个在网页上的组件,例如文本段落、表格或图像等。

事实上,HTML 是一种因特网上较常见的网页制作标注性语言,而并不能算做一种程序设计语言,因为它缺少程序设计语言所应有的特征。HTML 通过IE 等浏览器的翻译,将网页中所要呈现的内容、排版展现在用户眼前。

文件:/f/25127180-502616755-9fca9a(访问密码:551685)

以下内容无关:

-------------------------------------------分割线---------------------------------------------

引言

在深度学习领域内的对抗样本综述(二)中,我们知道了几种著名的对抗攻击和对抗防御的方法。下面具体来看下几种对抗攻击是如何工作的。这篇文章介绍FGSM(Fast Gradient Sign Method)。

预备知识

符号函数sign

泰勒展开

当函数f(x)在点x0处可导时,在点x0的邻域U(x0)内恒有:

f(x)=f(x0)+f′(x0)∗(x−x0)+o(x−x0)

因为o(x−x0)是一个无穷小量,故有:

f(x)≈f(x0)+f′(x0)∗(x−x0)

这是在对函数进行局部线性化处理时常用的公式之一。从几何上看,它是用切线近似代替曲线。这样的近似是比较粗糙的,而且只在点的附近才有近似意义。

梯度

梯度是偏导数组成的向量。若有函数f(x(1),x(2),x(3)),则f在点θ0=[x(1)0,x(2)0,x(3)0]T处的梯度为:

∇fθ0=[∂fθ0∂x(1),∂fθ0∂x(2),∂fθ0∂x(3)]T

一元函数的导数表示函数增加最快的方向,那么梯度表示多元函数值增加最快的方向。

FGSM公式

xadv=x+ϵ∗sign(∇xJ(x,y,θ))

ϵ为hyperparameter,控制原图像和对抗样本之间的差异程度。(字母加粗表示向量)

在梯度下降法中,我们求损失函数关于权重w、偏移b(统称参数θ)的梯度,然后更新参数,即参数θ=θ−η∗∇θJ(x,y,θ),η为learning rate。

而在FGSM中,我们用加梯度方向的ϵ倍的方式更新输入。

注意两者的不同:梯度代表函数值增加最快的方向,更新参数时,我们要做的是使损失函数J减小(在输入确定的情况下),因此减去梯度;而获取对抗样本时,我们要做的是使损失函数J增大(在θ确定的情况下),因此增加梯度,但又要控制扰动的大小,因此只取梯度的方向,其大小统一控制为ϵ。

为什么FGSM中要让损失函数增加?因为J 越大,表明预测class概率向量和真实one-hot class向量的距离越大,更有可能使预测器输出错误的label。用数学来解释下,损失函数在输入x附近xadv处的泰勒展开:

J(xadv,y,θ)≈J(x,y,θ)+∇xJ(x,y,θ)T∗ϵ∗sign(∇xJ(x,y,θ))

ϵ∗sign(∇xJ(x,y,θ))即泰勒展开中的(x−x0)项。

在上式中,∇xJ(x,y,θ)T∗ϵ∗sign(∇xJ(x,y,θ))为非负数,则J(xadv,y,θ)>=J(x,y,θ),说明我们达到了让损失函数增大的目的。

∇xJ(x,y,θ)T∗ϵ∗sign(∇xJ(x,y,θ))是非负数,因为:

∇xJ(x,y,θ)T∗ϵ∗sign(∇xJ(x,y,θ))=∇xJ(x,y,θ)T∗ϵ∗(∇xJ(x,y,θ)/∥∇xJ(x,y,θ)∥)

=ϵ∗∇xJ(x,y,θ)T∗∇xJ(x,y,θ)/∥∇xJ(x,y,θ)∥

=ϵ∗∥∇xJ(x,y,θ)∥2/∥∇xJ(x,y,θ)∥

=ϵ∗∥∇xJ(x,y,θ)∥

=0

FGSM代码

def fgsm(model, loss, eps, softmax=False):

“”"

单次FGSM

model为目标模型

loss为传入的损失函数计算函数

eps为限定扰动大小

“”"

def attack(img, label):

output = model(img)

if softmax:

error = loss(output, label)

else:

error = loss(output, label.unsqueeze(1).float())

error.backward() # 计算损失函数对输入x的梯度

# clamp()使perturbed_img的各分量在[0,1]区间

perturbed_img = torch.clamp(img + eps * img.grad.data.sign(), 0, 1).detach()

img.grad.zero_()

return perturbed_img

return attack

def ifgsm(model, loss, eps, iters=4, softmax=False):

# 多次FGSM

def attack(img, label):

perturbed_img = img

perturbed_img.requires_grad = True

for _ in range(iters):

output = model(perturbed_img)

if softmax:

error = loss(output, label)

else:

error = loss(output, label.unsqueeze(1).float())

error.backward()

temp = torch.clamp(perturbed_img + eps * perturbed_img.grad.data.sign(), 0, 1).detach()

perturbed_img = temp.data

perturbed_img.requires_grad = True

return perturbed_img.detach()

return attack

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。