self attention

1. self attention layer可以取代RNN,因为其可以并行,并且能考虑全局输入

2. RNN在t时刻的输出o(t)取决于当前时刻的输入x(t)和隐藏层的值s(t),而其中的隐藏层的值s(t)不仅取决于当前时刻的输入x(t),还取决于前一时刻隐藏层的值s(t-1),具体公式如下图:

3.一个 transformer 模型用自注意力层而非 RNNs 或 CNNs 来处理变长的输入。这种通用架构有一系列的优势:

1. 它不对数据间的时间/空间关系做任何假设。这是处理一组对象(objects)的理想选择(例如,星际争霸单位(StarCraft units))。
2. 层输出可以并行计算,而非像 RNN 这样的序列计算。
3. 远距离项可以影响彼此的输出,而无需经过许多 RNN 步骤或卷积层(例如,参见场景记忆 Transformer(Scene Memory Transformer))
4. 它能学习长距离的依赖。在许多序列任务中,这是一项挑战。

该架构的缺点是:

1. 对于时间序列,一个单位时间的输出是从整个历史记录计算的,而非仅从输入和当前的隐含状态计算得到。这可能效率较低。
2. 如果输入确实有时间/空间的关系,像文本,则必须加入一些位置编码,否则模型将有效地看到一堆单词。
原文地址:https://www.cnblogs.com/peng-yuan/p/14843844.html