logo
  • 世界杯预选赛瑞典
【AI之路】RNN—序列处理的强者

文章目录

前言序列模型RNN注意力机制attention-scoreself-attention

参考资料

前言

接着上一篇的CNN,本篇继续学习深度学习中另一个非常重要的模型RNN。如果说卷积神经网络可以有效地处理空间信息, 那么本篇的循环神经网络(recurrent neural network,RNN)则可以更好地处理序列信息。

循环神经网络通过引入状态变量存储过去的信息和当前的输入,从而可以确定当前的输出。(过去信息+当前输入=当前输出)

序列模型

序列数据:有时序结构的数据

之前学的CNN是给定一系列图片,去预测它的类别。而在本章中,给定的是

t

−

1

t-1

t−1的数据,让我们去预测第

t

t

t个数据。 对见过的数据进行建模,来预测未来,也被称为自回归模型

马尔可夫假设:假设当前的数据只跟过去的

τ

\tau

τ个数据相关。区别上图中的与之前的每个数据相关

潜变量模型:专门引入一个变量

h

t

=

f

(

x

1

,

.

.

.

,

x

t

−

1

)

h_t=f(x_1,...,x_{t-1})

ht​=f(x1​,...,xt−1​)来表示过去的信息。这样

x

t

=

p

(

x

t

∣

h

t

)

x_t=p(x_t|h_t)

xt​=p(xt​∣ht​)

k

k

k步预测:对于直到时间步 𝑡 的观测序列,其在时间步 𝑡+𝑘 的预测输出。随着我们对预测时间 𝑘 值的增加,会导致误差累计和模型预测质量的快速下降

RNN

对隐状态使用循环计算的神经网络称为循环神经网络

RNN与之前的多层感知机不一样的地方在于,它保存了前一个时间步的隐藏变量

H

t

−

1

\mathbf{H}_{t-1}

Ht−1​,并为这个变量引入了权重参数

W

h

h

\mathbf{W}_{hh}

Whh​,来描述前一个时间步的变量对当前情况情况的影响。

具体地说,当前时间步隐藏变量

H

t

\mathbf{H}_{t}

Ht​由当前时间步的输入,与前一个时间步的隐藏变量一起计算得出:

H

t

=

ϕ

(

X

t

W

x

h

+

H

t

−

1

W

h

h

+

b

h

)

.

\mathbf{H}_t = \phi(\mathbf{X}_t \mathbf{W}_{xh} + \mathbf{H}_{t-1} \mathbf{W}_{hh} + \mathbf{b}_h).

Ht​=ϕ(Xt​Wxh​+Ht−1​Whh​+bh​).

输出层是根据

H

t

H_t

Ht​求出,

O

t

=

H

t

W

h

q

+

b

q

.

\mathbf{O}_t = \mathbf{H}_t \mathbf{W}_{hq} + \mathbf{b}_q.

Ot​=Ht​Whq​+bq​.

这个变量捕获并保留了序列直到其当前时间步的历史信息,因此该隐藏变量也被称为隐状态由于隐状态的定义与前一个时间步的相同,计算是循环的,因此基于循环计算的隐状态神经网络被命名为 循环神经网络虽然有多个时间步,但在不同的时间步当中,循环体的参数是共享的。因此,循环神经网络的参数开销不会随着时间步的增加而增加。

梯度裁剪

g

←

m

i

n

(

1

,

θ

∣

∣

g

∣

∣

)

g

g \leftarrow min(1, \frac{\theta}{||g||})g

g←min(1,∣∣g∣∣θ​)g

θ

\theta

θ通常为5或者10,当g在这个范围内时,不会去改变g的值。 若过大,则会还原为

θ

\theta

θ 从而避免数值不稳定而出现的梯度爆炸的问题

注意力机制

卷积、全连接、池化层都只考虑不随意线索,即非自主性提示。换句话,它们会把注意力自动集中在最大、最明显的一类数据。

而注意力机制考虑的是随意线索,自主性提示

随意线索——查询(query)每个输入是一个值(value)和不随意线索(key)

注意力机制中,通过query和key来有偏向性的选择输入,即把query和key作一个注意力权重

我们可以从注意力机制框架的角度,得到一个更加通用的注意力汇聚(attention pooling)公式:

f

(

x

)

=

∑

i

=

1

n

α

(

x

,

x

i

)

y

i

,

f(x) = \sum_{i=1}^n \alpha(x, x_i) y_i,

f(x)=i=1∑n​α(x,xi​)yi​,

其中

x

x

x是查询,

(

x

i

,

y

i

)

(x_i, y_i)

(xi​,yi​)是键值对。注意力汇聚是

y

i

y_i

yi​的加权平均。将查询

x

x

x和键

x

i

x_i

xi​之间的关系建模为注意力权重(attention weight)

α

(

x

,

x

i

)

\alpha(x, x_i)

α(x,xi​),这个权重将被分配给每一个对应值

y

i

y_i

yi​。

attention-score

注意力分数即计算query和key的相似度,注意力权重是分数softmax的结果

f

(

q

,

(

k

1

,

v

1

)

,

…

,

(

k

m

,

v

m

)

)

=

∑

i

=

1

m

α

(

q

,

k

i

)

v

i

∈

R

v

,

f(\mathbf{q}, (\mathbf{k}_1, \mathbf{v}_1), \ldots, (\mathbf{k}_m, \mathbf{v}_m)) = \sum_{i=1}^m \alpha(\mathbf{q}, \mathbf{k}_i) \mathbf{v}_i \in \mathbb{R}^v,

f(q,(k1​,v1​),…,(km​,vm​))=i=1∑m​α(q,ki​)vi​∈Rv, 其中查询 𝐪 和键 𝐤𝑖 的注意力权重

α

\alpha

α(标量) 是通过注意力评分函数 𝑎 将两个向量映射成标量, 再经过softmax运算得到的:

α

(

q

,

k

i

)

=

s

o

f

t

m

a

x

(

a

(

q

,

k

i

)

)

=

exp

⁡

(

a

(

q

,

k

i

)

)

∑

j

=

1

m

exp

⁡

(

a

(

q

,

k

j

)

)

∈

R

.

\alpha(\mathbf{q}, \mathbf{k}_i) = \mathrm{softmax}(a(\mathbf{q}, \mathbf{k}_i)) = \frac{\exp(a(\mathbf{q}, \mathbf{k}_i))}{\sum_{j=1}^m \exp(a(\mathbf{q}, \mathbf{k}_j))} \in \mathbb{R}.

α(q,ki​)=softmax(a(q,ki​))=∑j=1m​exp(a(q,kj​))exp(a(q,ki​))​∈R.

根据注意力评分函数a的不同,会得到不同的注意力汇聚方式

常见的注意力评分函数有加性注意力、缩放点积注意力

加性注意力

当查询和键是不同长度的矢量时,可采用如下加性注意力作为评分函数

a

(

q

,

k

)

=

w

v

⊤

tanh

(

W

q

q

+

W

k

k

)

∈

R

,

a(q, k) = \mathbf w_v^\top \text{tanh}(W_qq + W_k k) \in \mathbb{R},

a(q,k)=wv⊤​tanh(Wq​q+Wk​k)∈R,

将查询和键连结起来后输入到一个多层感知机(MLP)中,感知机包含一个隐藏层,其隐藏单元数是一个超参数

h

h

h。通过使用

tanh

⁡

\tanh

tanh作为激活函数,并且禁用偏置项。

缩放点积注意力

点积操作要求查询和键具有相同的长度

d

d

d

假设查询和键的所有元素都是独立的随机变量, 并且都满足零均值和单位方差, 那么两个向量的点积的均值为

0

0

0 ,方差为

d

d

d 。

为确保无论向量长度如何, 点积的方差在不考虑向量长度的情况下仍然是 1 , 我们将点积除以

d

\sqrt{d}

d

​, 则缩放点积注意力(scaled dot-product attention)评分函数为:

a

(

q

,

k

)

=

q

⊤

k

/

d

.

a( q, k) = \mathbf{q}^\top k /\sqrt{d}.

a(q,k)=q⊤k/d

​.

self-attention

自注意力,即query,key,value全由输入向量自身计算得到的一种注意力机制

计算流程:例第一个输出b1

输入向量为

a

1

,

a

2

,

a

3

,

a

4

a_1,a_2,a_3,a_4

a1​,a2​,a3​,a4​,现在计算第一个输出

b

1

b_1

b1​

用

W

q

W^q

Wq 乘以

a

1

a_1

a1​ ,得到查询向量query

q

1

q_1

q1​;

W

k

W^k

Wk 同时乘以

a

2

,

a

3

,

a

4

a_2,a_3,a_4

a2​,a3​,a4​,得到key即

k

2

,

k

3

,

k

4

k_2,k_3,k_4

k2​,k3​,k4​;将

q

1

q_1

q1​与

k

2

,

k

3

,

k

4

k_2,k_3,k_4

k2​,k3​,k4​相乘,得到注意力分数

α

1

,

2

,

α

1

,

3

,

α

1

,

4

\alpha_{1,2},\alpha_{1,3},\alpha_{1,4}

α1,2​,α1,3​,α1,4​。同时

α

1

\alpha_1

α1​作自环,得

α

1

,

1

\alpha_{1,1}

α1,1​;

将

α

\alpha

α 丢入softmax层计算注意力权重;

用

W

v

W^v

Wv 与输入向量

a

1

,

a

2

,

a

3

,

a

4

a_1,a_2,a_3,a_4

a1​,a2​,a3​,a4​相乘,得到value

v

1

,

v

2

,

v

3

,

v

4

v_1,v_2,v_3,v_4

v1​,v2​,v3​,v4​;

v

1

,

v

2

,

v

3

,

v

4

v_1,v_2,v_3,v_4

v1​,v2​,v3​,v4​与注意力权重作乘积,最后加和,得到

b

1

b^1

b1。同理可得

b

2

,

b

3

,

b

4

b^2,b^3,b^4

b2,b3,b4

参考资料

李沐-动手学深度学习v2《动手学深度学习》第8章第9章李宏毅机器学习—自注意力

Copyright © 2088 1990世界杯_世界杯竞猜 - xindsw.com All Rights Reserved.
友情链接