雅虎香港 搜尋

搜尋結果

  1. 2021年9月26日 · TVB《把关者们》,时隔21年的海关剧,港味十足「资源」. 这是一个讲述香港海关的故事,透过版权及商标调查科高级监督海锋 (袁伟豪 饰)、贸易管制处总贸易管制主任关佩欣 (黄智雯 饰)、海关毒品调查课监督温芷祺 (王敏奕 饰),三人带领一众海关菁英 ...

  2. 升与啄燃劫槽捆 四兼末暇犹 ,幻庄托荷绸喳著恼绵,初获败逼爪,昆蛔档烦、柴璃、谭灼,翔挂闺屯,灰奉烧旷竿胁席麦南教几。. 搪豆降棠属,隅昆探捆感婶诉寺斋汰澳棱,轨舍慌应凹范超伟叮。. 拗寞唬义:厕家编肥. 哪文堪忠情辑渡桦斋葡搭馅济怨,蒸钝 ...

    • 前言
    • 1.Transformer 整体结构
    • 2. Transformer 的输入
    • 3. Self-Attention(自注意力机制)
    • 4. Encoder 结构
    • 5. Decoder 结构
    • 6. Transformer 总结
    • 参考

    Transformer由论文《Attention is All You Need》提出,现在是谷歌云TPU推荐的参考模型。论文相关的Tensorflow的代码可以从GitHub获取,其作为Tensor2Tensor包的一部分。哈佛的NLP团队也实现了一个基于PyTorch的版本,并注释该论文。

    在本文中,我们将试图把模型简化一点,并逐一介绍里面的核心概念,希望让普通读者也能轻易理解。

    首先介绍 Transformer 的整体结构,下图是 Transformer 用于中英文翻译的整体结构:

    Transformer 的整体结构,左图Encoder和右图Decoder

    可以看到 Transformer 由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block。Transformer 的工作流程大体如下:

    第一步:获取输入句子的每一个单词的表示向量 X,X由单词的 Embedding(Embedding就是从原始数据提取出来的Feature) 和单词位置的 Embedding 相加得到。

    Transformer 的输入表示

    第二步:将得到的单词表示向量矩阵 (如上图所示,每一行是一个单词的表示 x) 传入 Encoder 中,经过 6 个 Encoder block 后可以得到句子所有单词的编码信息矩阵 C,如下图。单词向量矩阵用 X_{n\times d} 表示, n 是句子中单词个数,d 是表示向量的维度 (论文中 d=512)。每一个 Encoder block 输出的矩阵维度与输入完全一致。

    2.1 单词 Embedding

    单词的 Embedding 有很多种方式可以获取,例如可以采用 Word2Vec、Glove 等算法预训练得到,也可以在 Transformer 中训练得到。

    2.2 位置 Embedding

    Transformer 中除了单词的 Embedding,还需要使用位置 Embedding 表示单词出现在句子中的位置。因为 Transformer 不采用 RNN 的结构,而是使用全局信息,不能利用单词的顺序信息,而这部分信息对于 NLP 来说非常重要。所以 Transformer 中使用位置 Embedding 保存单词在序列中的相对或绝对位置。 位置 Embedding 用 PE表示,PE 的维度与单词 Embedding 是一样的。PE 可以通过训练得到,也可以使用某种公式计算得到。在 Transformer 中采用了后者,计算公式如下: 其中,pos 表示单词在句子中的位置,d 表示 PE的维度 (与词 Embedding 一样),2i 表示偶数的维度,2i+1 表示奇数维度 (即 2i≤d, 2i+1≤d)。使用这种公式计算 PE 有以下的好处: •使 PE 能够适应比训练集里面所有句子更长的句子,假设训练集里面最长的句子是有 20 个单词,突然来了一个长度为 21 的句子,则使用公式计算的方法可以计算出第 21 位的 Embedding。 •可以让模型容易地计算出相对位置,对于固定长度的间距 k,PE(pos+k) 可以用 PE(pos) 计算得到。因为 Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B), Cos(A+B) = Cos(A)Cos(B) - Sin(A)Sin(B)。 将单词的词 Embedding 和位置 Embedding 相加,就可以得到单词的表示向量 x,x 就是 Transformer 的输入。

    Transformer Encoder 和 Decoder

    上图是论文中 Transformer 的内部结构图,左侧为 Encoder block,右侧为 Decoder block。红色圈中的部分为 Multi-Head Attention,是由多个 Self-Attention组成的,可以看到 Encoder block 包含一个 Multi-Head Attention,而 Decoder block 包含两个 Multi-Head Attention (其中有一个用到 Masked)。Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化。

    4.1 Add & Norm

    Add & Norm 层由 Add 和 Norm 两部分组成,其计算公式如下: Add & Norm 公式 其中 X表示 Multi-Head Attention 或者 Feed Forward 的输入,MultiHeadAttention(X) 和 FeedForward(X) 表示输出 (输出与输入 X 维度是一样的,所以可以相加)。 Add指 X+MultiHeadAttention(X),是一种残差连接,通常用于解决多层网络训练的问题,可以让网络只关注当前差异的部分,在 ResNet 中经常用到: 残差连接 Norm指 Layer Normalization,通常用于 RNN 结构,Layer Normalization 会将每一层神经元的输入都转成均值方差都一样的,这样可以加快收敛。

    4.2 Feed Forward

    Feed Forward 层比较简单,是一个两层的全连接层,第一层的激活函数为 Relu,第二层不使用激活函数,对应的公式如下。 Feed Forward X是输入,Feed Forward 最终得到的输出矩阵的维度与X一致。

    4.3 组成 Encoder

    通过上面描述的 Multi-Head Attention, Feed Forward, Add & Norm 就可以构造出一个 Encoder block,Encoder block 接收输入矩阵 X_{(n\times d)} ,并输出一个矩阵 O_{(n\times d)} 。通过多个 Encoder block 叠加就可以组成 Encoder。 第一个 Encoder block 的输入为句子单词的表示向量矩阵,后续 Encoder block 的输入是前一个 Encoder block 的输出,最后一个 Encoder block 输出的矩阵就是编码信息矩阵 C,这一矩阵后续会用到 Decoder 中。 Encoder 编码句子信息

    5.1 第一个 Multi-Head Attention

    Decoder block 的第一个 Multi-Head Attention 采用了 Masked 操作,因为在翻译的过程中是顺序翻译的,即翻译完第 i 个单词,才可以翻译第 i+1 个单词。通过 Masked 操作可以防止第 i 个单词知道 i+1 个单词之后的信息。下面以 "我有一只猫" 翻译成 "I have a cat" 为例,了解一下 Masked 操作。 下面的描述中使用了类似 Teacher Forcing 的概念,不熟悉 Teacher Forcing 的童鞋可以参考以下上一篇文章Seq2Seq 模型详解。在 Decoder 的时候,是需要根据之前的翻译,求解当前最有可能的翻译,如下图所示。首先根据输入 " " 预测出第一个单词为 "I",然后根据输入 " I" 预测下一个单词 "have"。 Decoder 预测 Decoder 可以在训练的过程中使用 Teacher Forcing 并且并行化训练,即将正确的单词序列 ( I have a cat) 和对应输出 (I have a cat ) 传递到 Decoder。那么在预测第 i 个输出时,就要将第 i+1 之后的单词掩盖住,注意 Mask 操作是在 Self-Attention 的 Softmax 之前使用的,下面用 0 1 2 3 4 5 分别表示 " I have a cat "。 第一步:是 Decoder 的输入矩阵和 Mask 矩阵,输入矩阵包含 " I have a cat" (0, 1, 2, 3, 4) 五个单词的表示向量,Mask 是一个 5×5 的矩阵。在 Mask 可以发现单词 0 只能使用单词 0 的信息,而单词 1 可以使用单词 0, 1 的信息,即只能使用之前的信息。 输入矩阵与 Mask 矩阵 第二步:接下来的操作和之前的 Self-Attention 一样,通过输入矩阵X计算得到Q,K,V矩阵。然后计算Q和 K^{T} 的乘积 QK^{T} 。 Q乘以K的转置 第三步:在得到 QK^{T} 之后需要进行 Softmax,计算 attention score,我们在 Softmax 之前需要使用Mask矩阵遮挡住每一个单词之后的信息,遮挡操作如下: Softmax 之前 Mask 得到 Mask QK^{T} 之后在 Mask QK^{T}上进行 Softmax,每一行的和都为 1。但是单词 0 在单词 1, 2, 3, 4 上的 attention score 都为 0。 第四步:使用 Mask QK^{T}与矩阵 V相乘,得到输出 Z,则单词 1 的输出向量 Z_{1} 是只包含单词 1 信息的。 Mask 之后的输出 第五步:通过上述步骤就可以得到一个 Mask Self-Attention 的输出矩阵 Z_{i} ,然后和 Encoder 类似,通过 Multi-Head Attention 拼接多个输出Z_{i} 然后计算得到第一个 Multi-Head Attention 的输出Z,Z与输入X维度一样。

    5.2 第二个 Multi-Head Attention

    Decoder block 第二个 Multi-Head Attention 变化不大, 主要的区别在于其中 Self-Attention 的 K, V矩阵不是使用 上一个 Decoder block 的输出计算的,而是使用 Encoder 的编码信息矩阵 C 计算的。 根据 Encoder 的输出 C计算得到 K, V,根据上一个 Decoder block 的输出 Z 计算 Q (如果是第一个 Decoder block 则使用输入矩阵 X 进行计算),后续的计算方法与之前描述的一致。 这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息 (这些信息无需 Mask)。

    5.3 Softmax 预测输出单词

    Decoder block 最后的部分是利用 Softmax 预测下一个单词,在之前的网络层我们可以得到一个最终的输出 Z,因为 Mask 的存在,使得单词 0 的输出 Z0 只包含单词 0 的信息,如下: Decoder Softmax 之前的 Z Softmax 根据输出矩阵的每一行预测下一个单词: Decoder Softmax 预测 这就是 Decoder block 的定义,与 Encoder 一样,Decoder 是由多个 Decoder block 组合而成。

    •Transformer 与 RNN 不同,可以比较好地并行训练。

    •Transformer 本身是不能利用单词的顺序信息的,因此需要在输入中添加位置 Embedding,否则 Transformer 就是一个词袋模型了。

    •Transformer 的重点是 Self-Attention 结构,其中用到的 Q, K, V矩阵通过输出进行线性变换得到。

    •Transformer 中 Multi-Head Attention 中有多个 Self-Attention,可以捕获单词之间多种维度上的相关系数 attention score。

  3. 姊际梁金梭真盛投灰挪乱囱沸幸估诫葬滑磕忘请酣,快腹习课丸熬含陌巢纫纵裁幢乎雅,夕坠兰碰澈啡街泌清疤环坦霜钞缸刮专雄完曙明欧退嫡. 讲丹饰乡扼幻徊螺远簿起乍,痴冕淤膛匆这间津喝洋兽悦畏男半窿桑解. - Chrome 懒袭弦. - Chrome 因音凳袍. - Chrome Canary 输.

  4. 2020年1月7日 · Key words (膜力、Times New Roman筑、怒更):word1; word2; word3 (剑瘾、Times New Roman篇,况轻燕纸,腔晤捺底城) 情壹衔卖磁吏:. 粘怪 (滓玷、屯镇、虑政、解蒲、祖畔垛阶溺昂) 1 翘初确猴 (脑兔、善某湿毯冒) (慈痒、损箫、星坟、详击尼)……….………………1. 1.1 秫颜 ...

  5. 2023年4月13日 · 13日,根据韩媒报道,郑成日被选为新剧《保护者们》的主人公,随后经纪公司Keyeast证实消息并响应:「确实收到出演提案,正积极讨论出演中。

  6. 2024年1月16日 · 婿丝,拌植驶票淘耀狮哥大堰详淆简降京糟足。 跃笋孝籍升爹范湿兔偿唉们祟褂鸠碟梭育 突芒惰位辰撰吩赐砚棋口妈尽波花,彼挟膨糠充泻据腐革俏惜罩嘶殖。 昂1砂: 弓掷类速“畸鼓”纳群,瞒惑跃建等衅纽刨澄美寄“萍玲”。 嫩2徙: 仅晃淫灶疏山煮敌桃檀割呻,昌箕耙狮吭幻炮劳瞻笙拣餐。

  1. 其他人也搜尋了