天天看點

機器學習:self-attention

輸入

機器學習:self-attention
機器學習:self-attention

編碼方式:

  • one-hot:
  • word-embedding:能更明顯的區分不同類别的輸入
    機器學習:self-attention
    機器學習:self-attention
    圖也能看作是多個向量輸入
    機器學習:self-attention

輸出

  • 每個向量都有一個label
機器學習:self-attention
  • 一整個sequence有一個label
    機器學習:self-attention
  • 模型自己決定有多少個label(sequence to sequence)
    機器學習:self-attention

重點介紹每個vector有一個label

機器學習:self-attention
  • saw詞性第一個和第二個不同,但是網絡無法識别
  • 通過聯系上下文解決
    機器學習:self-attention
    機器學習:self-attention
    self-attention不隻是隻能做一次,能做很多次
    機器學習:self-attention
  • 文章: attention is all you need - transformer
機器學習:self-attention
  • 第一步:找到與a1相關的向量, a表示兩個向量的關聯程度
  • 計算a:
    • dot-product
    • additive
      機器學習:self-attention
      機器學習:self-attention
      自己跟自己也要計算關聯度:
      機器學習:self-attention
  • 再計算softmax,得到每個的重要分數
    機器學習:self-attention
  • 最後每個向量生成一個v,每個向量對應的權重與另外的向量v相乘累加作為最終那個向量的輸出
    機器學習:self-attention
    機器學習:self-attention
    用矩陣的形式表示:
    機器學習:self-attention
    q與k計算attention分數,可以用矩陣與向量相乘表示:
    機器學習:self-attention
    多個向量的話組成一個矩陣,可以看作是矩陣和矩陣相乘:
    機器學習:self-attention

    A = K T ∗ Q A = K^T * Q A=KT∗Q

    A ′ = s o f t m a x ( A ) A' = softmax(A) A′=softmax(A)

機器學習:self-attention

輸出 O = V ∗ A ′ O = V * A' O=V∗A′

總的過程如下:
機器學習:self-attention
唯一要學習的參數就是 W q W^q Wq, W k W^k Wk, W v W^v Wv

不同的變體

  • multi-head self-attention
機器學習:self-attention
機器學習:self-attention

注意到self-attention 沒有位置資訊。

可以加入position編碼資訊(手工,或者學習得到)

機器學習:self-attention
機器學習:self-attention
機器學習:self-attention

應用

  • 語音
    機器學習:self-attention
    由于語音資料非常大,可以采用truncated方式隻看很小的一個範圍,一定範圍之内的資料就能完成
    機器學習:self-attention
  • 圖像
    機器學習:self-attention
    整張圖檔5103, 每個位置的pixel看作是一個三維向量,每張圖看做是一個5*10的向量
    機器學習:self-attention
    機器學習:self-attention
    機器學習:self-attention
    機器學習:self-attention
機器學習:self-attention
  • rnn如果需要記得之前的資訊的話需要一直儲存到memory
  • rnn不能并行
    機器學習:self-attention
  • 機器學習:self-attention
    機器學習:self-attention

繼續閱讀