人工智能AI面試題-6.2請詳細(xì)說說Transformer
6.2請詳細(xì)說說Transformer 6.2 論Transformer之奧妙(詳解與圖解并茂) 編者按:前不久??Google推出的BERT模型在11項(xiàng)NLP任務(wù)中奪得SOTA結(jié)果,引爆了整個NLP界。然而,BERT之成功的關(guān)鍵在于Transformer的強(qiáng)大作用。??Google的Transformer模型最早用于機(jī)器翻譯任務(wù),當(dāng)時達(dá)到了SOTA效果。Transformer改進(jìn)了RNN最被人詬病的訓(xùn)練速度慢的問題,利用self-attention機(jī)制實(shí)現(xiàn)了快速并行計算。此外,Transformer能夠擴(kuò)展到非常深的層次,充分發(fā)掘了DNN模型的特性,提高了模型的準(zhǔn)確率。在本文中,我們將深入研究Transformer模型,將其剖析細(xì)致入微,以便更好地理解其工作原理。 正文: Transformer由論文《Attention is All You Need》提出,現(xiàn)在已經(jīng)成為??Google云TPU推薦的參考模型。相關(guān)的Tensorflow代碼可從GitHub獲取,它作為Tensor2Tensor包的一部分。哈佛大學(xué)的NLP團(tuán)隊也實(shí)現(xiàn)了一個基于PyTorch的版本,并對論文進(jìn)行了詳細(xì)注釋。 在本文中,我們將試圖將這個模型簡化一些,逐一介紹其中的核心概念,希望讓廣大讀者也能輕松理解。 Attention is All You Need:https://arxiv.org/abs/1706.03762 從宏觀的角度開始 首先,將這個模型看作是一個??黑箱操作。在機(jī)器翻譯中,就是輸入一種語言,輸出另一種語言。 那么拆開這個??黑箱,我們可以看到它是由編碼組件、解碼組件以及它們之間的連接組成。 編碼組件部分由一堆編碼器(encoder)構(gòu)成(論文中是將6個編碼器疊在一起——數(shù)字6沒有什么神奇之處,你也可以嘗試其他數(shù)字)。解碼組件部分也是由相同數(shù)量(與編碼器對應(yīng))的解碼器(decoder)組成的。 所有的編碼器在結(jié)構(gòu)上都是相同的,但它們沒有共享參數(shù)。每個解碼器都可以分解成兩個子層。 從編碼器輸入的句子首先會經(jīng)過一個?注意?(self-attention)層,這層幫助編碼器在對每個單詞編碼時關(guān)注輸入句子的其他單詞。我們將在稍后的篇章中更深入地研究?注意?。 ?注意?層的輸出會傳遞到前饋(feed-forward)神經(jīng)網(wǎng)絡(luò)中。每個位置的單詞對應(yīng)的前饋神經(jīng)網(wǎng)絡(luò)都完全相同(譯注:另一種解讀就是一層窗戶為一個單詞的一維卷積神經(jīng)網(wǎng)絡(luò))。 解碼器中也有編碼器的?注意?(self-attention)層和前饋(feed-forward)層。除此之外,這兩個層之間還有一個注意?層,?來關(guān)注輸入句子的相關(guān)部分(和seq2seq模型的注意?作?相似)。 引入張量的視角 我們已經(jīng)了解了模型的主要部分,接下來我們看一下各種向量或張量(譯注:張量概念是向量概念的推廣,可以簡單理解向量是一階張量,矩陣是二階張量)是如何在模型的不同部分中,將輸入轉(zhuǎn)化為輸出的。 以上為改寫后的解答全文,希望對你理解Transformer模型有所幫助。如果有更多問題或需要進(jìn)一步解釋,請隨時提出。