? ? ? ? 寫在前面:博主本人也是剛接觸計算機視覺領域不久,本篇文章是為了記錄自己的學習,大家一起學習,有問題歡迎大家指出。(博主本人的習慣是看文章看到不懂的有立馬去看不懂的那塊,所以博文可能內容比較雜)
? ? ? ? 本篇將詳細講解transfomer中的自注意力機制,自注意力機制使模型能夠同時考慮輸入序列中的所有位置(循環神經網絡RNN和卷積神經網絡CNN只能逐步處理,不了解RNN和CNN的同學可以看本篇的第三大點)。自注意力機制允許模型根據輸入序列中的不同部分來賦予不同的注意權重,從而更好地捕捉語義關系。
論文鏈接:[1706.03762] Attention Is All You Needhttps://arxiv.org/abs/1706.03762
目錄
一、自注意力機制的輸入
二、自注意力機制的計算方式
三、額外知識擴展
下圖是原論文在中的自注意力機制的計算流程圖:
一、自注意力機制的輸入
????????首先是從整個模型的最開始,輸入一個句子(序列)X,然后從這個輸入中生成三個向量,分別為查詢向量(Q,Query)、鍵向量(K,Key)、值向量(V,Value)。這個時候,肯定會有同學疑惑,這三個向量是咋生成的嘞?這三個向量是通過輸入序列與三個權重矩陣相乘(即線性變換)創建出來的,其實就是最簡單的矩陣乘法。
下圖是生成過程的直觀表達:
二、自注意力機制的計算方式
????????上圖是原論文給出的計算公式——首先是將生成的Q和K進行點積,原論文中提到點積是計算兩個矩陣相似度的方法,即為每個向量都計算了一個score分數,也就是相似度分數。然后,為了梯度的穩定(不出現梯度爆炸和梯度消失的情況),進行了score分數歸一化,即將上一步得到的分數除以(輸入向量的維度的平方根)。緊接著是將得到的分數放到softmax中,經過softmax后,所有分數的都是正值且總和為1。最后再將經過softmax后的輸出與V進行點乘,這樣就得到了加權的每個輸入向量的評分,從而實現了篩選值得注意的部分。
????????值得注意的一部分是,在最開始的流程圖有一個Mask(opt.)模塊,這個模塊是將計算相似度分數之后的數轉換為一個非常大的負數,這樣經過softmax后就無限趨于0,也就是完全不需要關注了。
? ? ? ? 可能有的同學看完上面一段感覺非常難理解,的確是,因為我語言組織能力有限,同學們可以根據自己的矩陣知識來理解這個公式,就是將得到的相似分數歸一化后再加權得到注意力分數,大家不要把它想得過于復雜了。
三、額外知識擴展
????????RNN主要用于語言處理,類似與耳朵和嘴巴,用于解析語言,RNN的假設——事物的發展是按照時間順序展開的,即前一刻發生的事物會對未來的事情的發展產生影響通常用于自然語言處理中,可以用來處理時間序列數據,RNN的主要思想是把前面的信息傳遞到后面,這樣網絡可以利用之前的信息做出預測,能夠處理序列中每個時間步的數據。(“時間步”通常指的是序列數據中一個觀察點到下一個觀察點之間的時間間隔。)
????????CNN主要用于圖像識別,類似眼睛,用于圖像處理,CNN的假設——人的視覺總是會關注視線內特征最明顯的點。通常用于計算機視覺中,CNN用于提取圖像的空間特征,通過不斷的卷積和池化操作實現特征提取和降維。
? ? ? ? Word2Vec是一種流行的詞嵌入(word embedding)方法,將詞匯映射到向量的技術,使得語義上相似的詞在向量空間中彼此接近。
????????我覺得我這篇博客寫的好水啊,但是我還是得寫,以后復習也能有參考,還能發現自己的漏洞,同學們,繼續一起努力吧!