原本發(fā)布T方法的論文名為《Attention is all you need》,意思是注意力機(jī)制就已經(jīng)完全足夠滿足你的所有那些亂七八糟的技術(shù)需求了。
這項(xiàng)工作不僅引發(fā)了注意力技術(shù)的狂潮,順帶還引發(fā)了一波起名的狂潮。一時(shí)間,滿大街都是XXX is all you need樣式的名字。
這篇論文的一大意義是徹底拋棄了傳統(tǒng)的循環(huán)網(wǎng)絡(luò)和卷積網(wǎng)絡(luò)結(jié)構(gòu),推陳出新,而是僅僅只使用注意力機(jī)制來(lái)處理機(jī)器翻譯問(wèn)題,并且取得了非常好的效果。
此前,人們一般都認(rèn)為,注意力機(jī)制只能作為一種輔助道具,協(xié)助傳統(tǒng)的網(wǎng)絡(luò)來(lái)學(xué)習(xí)特征。
此后,這種全新的T方法迅速成為了語(yǔ)言類研究的重點(diǎn)方向,并且衍生出了BERT和GPT兩個(gè)經(jīng)典的路線,后者更是進(jìn)化出了ChatGPT這個(gè)家喻戶曉的新穎技術(shù)。
“注意力機(jī)制這個(gè)概念其實(shí)已經(jīng)有了很多年了,差不多跟我的年齡一樣大。”九幾年的時(shí)候,注意力概念就已經(jīng)在計(jì)算機(jī)視覺(jué)領(lǐng)域產(chǎn)生。
“它的概念也非常好理解,就像是直播中捕捉視覺(jué)的眼動(dòng)儀,可以在直播畫(huà)面上顯示主播眼睛正在觀察的地方。注意力機(jī)制的目的,就是為了讓深度神經(jīng)網(wǎng)絡(luò)可以起到類似的效果,迫使神經(jīng)網(wǎng)絡(luò)去關(guān)注圖片中的重要部分。”
比如孟繁岐最開(kāi)始參加的千分類圖像競(jìng)賽,人工智能模型或許可以正確地識(shí)別了這張圖片的內(nèi)容,但是真正讓它做出這個(gè)判斷的原因,卻很可能大大出乎你的意料。
它識(shí)別出圖像中的內(nèi)容是貓,卻非常有可能并不是因?yàn)樗摹咀⒁饬Α吭陉P(guān)注圖像中的貓,神經(jīng)網(wǎng)絡(luò)也許壓根就沒(méi)有在看圖像中的貓這個(gè)生物,它在看別的。
或許是因?yàn)閳D像中有貓糧,或者圖片的角落有【貓】相關(guān)的水印,又或者它可能是發(fā)現(xiàn)周邊都是草地的圖片內(nèi)容往往是貓,因而一看到綠色的草地,就會(huì)做出類似的判斷。
當(dāng)然,更有可能的是出于某種人類無(wú)法理解和解釋的原因。
雖然看的地方不對(duì),結(jié)果卻是正確的,這種現(xiàn)象很容易被研究者們忽略,是非常危險(xiǎn)的。
這種缺陷可以通過(guò)大量的數(shù)據(jù)和各種其他技術(shù)手段去彌補(bǔ)。如果沒(méi)有做好這些事情,模型在訓(xùn)練測(cè)試的時(shí)候往往會(huì)表現(xiàn)得非常出色,可等到實(shí)際投入使用的時(shí)候,就很可能出大問(wèn)題。
“隔壁有同事在嘗試把你寫(xiě)的注意力算子應(yīng)用在高分辨率的圖片上,以求降低計(jì)算成本。”
伊利亞分享了一下谷歌內(nèi)部相關(guān)的情況:“我這邊也在考慮,在循環(huán)網(wǎng)絡(luò)或者長(zhǎng)短期記憶網(wǎng)絡(luò)上結(jié)合注意力,去處理翻譯任務(wù)。”
注意力機(jī)制加上高清圖片是比較合理的,通過(guò)注意力的篩查,可以剔除圖片中不重要的部分,從而大大減少計(jì)算量。
孟繁岐微微點(diǎn)了點(diǎn)頭,心中想著:“圖片中的像素其實(shí)是非常冗余的,比如人類就可以輕松通過(guò)很局部的內(nèi)容推測(cè)出物體的全貌,根據(jù)愷明后來(lái)的研究,甚至只需要原本百分之十幾二十的像素,就可以完成圖像的重構(gòu)。”
“借助注意力來(lái)篩掉一部分像素,的確可以極大地減少計(jì)算量。使用這種辦法,就可以在原本的速度下采用更高分辨率的圖像,對(duì)關(guān)鍵的部分會(huì)處理得更加清楚,也就更加準(zhǔn)確。”
孟繁岐認(rèn)同這種做法,不過(guò)那是在圖像任務(wù)當(dāng)中了,在語(yǔ)言問(wèn)題當(dāng)中是大不一樣的。人類的語(yǔ)言信息含量是非常高,密度也很大,即便只少一兩成信息,甚是一兩個(gè)字的差別,都很有可能會(huì)徹底改變句子的含義。
比如【我很喜歡】和【我不喜歡】,一字之差含義完全就不對(duì)了。因而類似的做法在語(yǔ)言上是不大行得通的。
不過(guò)可以像伊利亞一樣,換一個(gè)做法去使用注意力機(jī)制。
“注意力機(jī)制如果應(yīng)用在語(yǔ)言和文本當(dāng)中,其實(shí)計(jì)算的就是一個(gè)【相關(guān)程度】,一個(gè)句子當(dāng)中每一個(gè)詞與其余詞的相互關(guān)系和相關(guān)的情況。”
孟繁岐也沒(méi)想到伊利亞的思路這么靈活,自己年初剛剛在搜索引擎中稍微利用了一下類似的概念,也沒(méi)有寫(xiě)作論文,但伊利亞就很快捕捉到了這種技術(shù)在翻譯類型任務(wù)上的可能性。
“天才人物對(duì)技術(shù)的嗅覺(jué)果然不得了啊...”孟繁岐有些感慨。
注意力機(jī)制畢竟二十年來(lái)都是圖像領(lǐng)域的概念,它使用到語(yǔ)言文本里的形式是有很大變化的,這里面聽(tīng)起來(lái)很像很容易,但實(shí)際上的差距并不小,不是那么容易就能想明白的。
更別提用代碼去實(shí)現(xiàn)了。
“如果使用注意力機(jī)制的話,為什么還一定非要使用舊的循環(huán)網(wǎng)絡(luò)和長(zhǎng)短期記憶不可呢?”
孟繁岐指出了這個(gè)思維慣性不合理的地方。
“傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)建構(gòu)語(yǔ)言的時(shí)間序列信息,前面的詞都要依次傳遞到后面的詞上面,這種信息的反復(fù)堆積有些浪費(fèi),并且全都堆在一起,直覺(jué)上不好區(qū)分。”
“你是說(shuō)文字的長(zhǎng)期依賴問(wèn)題?”伊利亞微微皺眉,捕捉到了重點(diǎn):“不過(guò)長(zhǎng)期依賴問(wèn)題,已經(jīng)相當(dāng)程度上被循環(huán)網(wǎng)絡(luò)的進(jìn)化版本,長(zhǎng)短期記憶方法又或者是各種門(mén)控制給解決了。”
“說(shuō)是解決了,但實(shí)際上是減輕了,終究還是治標(biāo)不治本,只是把癥狀壓了下去。”
“那怎么辦?難道干脆就不要了?”伊利亞沒(méi)想那么多,隨口問(wèn)道。
問(wèn)完卻發(fā)現(xiàn),孟繁岐正在似笑非笑地看著他。
“你是認(rèn)真的?”伊利亞此前是被思維的慣性局限住了,根本沒(méi)有想到注意力機(jī)制這樣一個(gè)配菜,能干脆成為主餐,取代原本常用的網(wǎng)絡(luò)結(jié)構(gòu)。
現(xiàn)在孟繁岐已經(jīng)暗示了他的想法,伊利亞自然也就開(kāi)始認(rèn)真地考慮這種操作的可行性。
“原本最常見(jiàn)的循環(huán)網(wǎng)絡(luò)和卷積網(wǎng)絡(luò)互有利弊,如果長(zhǎng)度為n,前向的復(fù)雜度是O(n)級(jí)別,卷積是O(1)級(jí)別。但是卷積的每層復(fù)雜度要再根據(jù)卷積核的大小增加開(kāi)銷。”
“倘若用注意力機(jī)制去做,前向的復(fù)雜度是O(1),每層的復(fù)雜度則從O(nd^2)變?yōu)镺(n^2d)。關(guān)鍵是,它可以并行了!”
分析復(fù)雜度分析到一半,伊利亞眼睛一亮,發(fā)現(xiàn)了重點(diǎn)。復(fù)雜度只是小事情,能夠輕松并行才是最關(guān)鍵的地方。
傳統(tǒng)的長(zhǎng)短期和循環(huán)網(wǎng)絡(luò),可以處理時(shí)間序列信息,但總是需要根據(jù)之前的信息來(lái)推測(cè)當(dāng)前的信息,依賴前置位的信息,因而無(wú)法并行。
簡(jiǎn)單點(diǎn)說(shuō),就是能并行的模型學(xué)不到長(zhǎng)距離語(yǔ)言之間的聯(lián)系,能學(xué)到的又沒(méi)法并行。無(wú)法并行,用現(xiàn)在的設(shè)備自然就很難把語(yǔ)言模型做大。
“可目前最強(qiáng)力的模型都是帶門(mén)控制,編碼器加解碼器的循環(huán)網(wǎng)絡(luò)和卷積網(wǎng)絡(luò)...難道我們真的一點(diǎn)舊有的技術(shù)都不使用嗎?”
旁邊有旁聽(tīng)的同事越聽(tīng)越覺(jué)得不靠譜了,這一步子跨得也有點(diǎn)太大了,咔,容易扯著蛋。
“它可以無(wú)視語(yǔ)言中,兩個(gè)詞之間的距離為它們單獨(dú)建立相關(guān)性關(guān)系,單獨(dú)這一點(diǎn),就足以成為我們嘗試的理由了。你們翻譯任務(wù)當(dāng)中,長(zhǎng)句不也是相當(dāng)令人頭疼的問(wèn)題嗎?”
句子一長(zhǎng),就容易出岔子,加上目前的模型還喜歡持續(xù)累加各個(gè)詞的信息。
機(jī)器看到中間,早就忘記前面是什么內(nèi)容了。
“我是誰(shuí)?我在哪?我在干嗎?”