自然语言处理—自注意机制(self-attention)

今天是 2021 年第一天,在此祝大家新年快乐! 相关视频都发布在西瓜视频上,西瓜视频账号为 zidea。

cover.jpg

自注意力机制(Self Attention)

\hat{g}(x) = \frac{\sum_{i=1}^n|X_i - 1 \le h|y_i}{\sum_{i=1}^n|X_i - 1 \le h|}

\frac{\sum_{i=1}^n (\frac{X_i - x}{h})y_i}{(\sum_{i=1}^n \frac{X_i - x}{h})}

  • 这里老师不错,就是学习氛围不太好

  • 户型不错就是价格有段

g(x) = E(y_i|X_i = x)

  • 观察数据集 X_i 大量等于 x 的样本对应 y_i 的平均值就是作为估计值

有关自注意力层应用,在原始论文中是将 self-attention 和 LSTM 结合使用,这里介绍将 self-attention 和 SimpleRNN 结合使用,其实道理都是一样的,我们主要是学习如何将 self-attention 融入到循环神经网络中。

h_1 = \tanh(A \cdot \begin{bmatrix} x_1\\ h_0 \end{bmatrix} + b)

在之前介绍 SimpleRNN 中,我们知道更新 h_1 是通过上一个时刻和当前时刻输入 x_1 一起来更新当前的隐含状态 h_1

h_1 = \tanh(A \cdot \begin{bmatrix} x_1\\ c_0 \end{bmatrix} + b)

引入自注意力机制后,我们更新隐含状态 h_1 就是用当前上时刻得到 c_0 来代替 h_0 来和输入 x_0 一起更新隐含状态 h_1

h_1 = \tanh(A \cdot \begin{bmatrix} x_1\\ h_0\\ c_0 \end{bmatrix} + b)

\alpha_i = align(h_i,h_2)

self_attention_001.png
self_attention_002.png
self_attention_003.png

然后以此类推来更新下一个时刻隐含状态,用隐含状态 h_1 后,利用 h_1c_1 计算得到得到当前时刻的隐含状态 h_2

self_attention_005.png

然后通过计算 \alpha = align(h_i,h_2) 可以得到隐含状态 \alpha_1,\alpha_2

self_attention_006.png

这样我们可以使用这些权重 \alpha_1,\alpha_2h_1,h_2

self_attention_007.png
self_attention_008.png
self_attention_009.png
self_attention_010.png
  • 每一轮都会用 context 看一轮之前输入隐含状态。
  • 自注意力机制还会关注每一个输入,
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容