self-attention is all you need(二)
過年的氣息越來越濃厚了,那我們接著從self-attention is all you need (一)寫下去
在self-attention is all you need (一)呢,我們已經操作過怎樣跟據Input sequence得到output sequence。self-attention要做的事情,就是給定一排的input vector得到另外一排output vactor。之前我們已經操作過如何根據一排input sequence(a1~a4)得到b1,同理可以得到b2~b4。這里需要強調的一點呢,是b1~b4并不需要依序產生,而是一次同時被計算出來的。
接下來呢,我們從矩陣乘法的角度,再重新整理一遍self-attention的運作過程。
那self-attention是怎么運作的呢?現在我們已經知道說a1~a4中的每一個a啊,都要分別產生q、k、v。如果矩陣運算表示這樣一個操作是什么樣子呢?我們每一個a都左乘矩陣,得到,即。這些不同的a啊,你可以把它們合起來,當作一個矩陣來看待。什么意思呢?a1乘上得到,a2乘上得到,a3乘上得到,a4乘上得到。即:
那我們可以把vector a1~a4呢拼起來,形成一個大的矩陣,我們給它命名:I;同理,我們再把vector?~拼起來,形成一個大的矩陣,我們給它命名Q。所以我們從a1~a4得到?~這一件事情,其實就是把一個叫做I的矩陣,左乘矩陣,呢其實是nerve的參數,得到大Q,大Q的四個Colum就是?~?。
那么接下來怎么產生k跟v呢?它們的操作跟q是一摸一樣的。?我們每一個a都左乘矩陣,得到,即。同理啊,這些不同的a啊,你仍可以把它們合起來,當作一個矩陣來看待。即?a1乘上得到,a2乘上得到?,a3乘上得到,a4乘上得到。~?拼起來,形成一個大的矩陣,我們把它叫做大K,大K的四個Colum就是?~??
那v的產生就不贅述了,是相同的道理,從下圖我們可以很清楚的查看到?
所以每一個a怎么得到Q,K,V呢,其實就是把輸入的vector sequence乘上三個不同的矩陣、、,你就的到了Q,得到了K,得到了V。
那么接下來我們要做一個什么事情呢?在self-attention is all you need(一)里有提到,我們根據a1找出這個sequence(a1~a4)里面,跟a1相關的其它向量來產生b1(其他同理啦),所以我們會做這樣的一個操作得到attention score:
這邊呢,為了方便,我們用橫向的矩形框代表轉置?,希望不會讓你產生誤解。上面這四個步驟的操作啊,你其實可以把它們拼起來,看作是矩陣跟向量相乘。你可以把~拼起來,當作是一個矩陣的四個row。
那我們剛才有提到呢,不止q1要跟k1~k4計算attention score,q2也要對k1~k4計算attention score,這個操作啊和上面是一摸一樣。那么同理q3、q4也分別要和k1~k4計算attention score,道理呢也就是上面的道理。所以我們可以再把attention score拼起來,形成一個大的矩陣。
所以這些attention score是怎么來的,可以看作 是兩個矩陣的相乘,一個矩陣它的row啊就是k1~k4,另外一個矩陣它的Colum啊就是q1~q4,這樣一相乘,就得到了attention的分數。我們把k的transpose叫做,得到的attention score矩陣呢我們把它叫做A。那我們之前有提到會對attention score呢做一下softmax,得到
我們計算完?以后,接下來呢,里的Colum乘上對應的v,就的得到了b1~b4(我們以b1為例先)
?那么你可能猜到了,我們再把b1~b4拼起來,就有如下的結果:
所以整個self-attention啊,其實就是一連串的矩陣乘法而已。怎么說呢,下面圖示一目了然,不需要我多贅述了
可以看到,在self-attention里面呢,唯一需要學習的參數就只有??、、而已。
未完待續~
總結
以上是生活随笔為你收集整理的self-attention is all you need(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光纤传感器实验模块_光纤传感器实验报告.
- 下一篇: VisionMobile:M2M生态系统