如何找研究想法 1【論文精讀】

如何從論文中發(fā)掘研究思路
打補丁法
以 MAE 為例講解如何打補丁,在讀論文的時候讀到的是整個故事,但是如果要自己想 idea 的時候,需要將原文章中的東西蒸餾出來,因此,MAE 其實講的是一個非常簡單的故事----基于 ViT + BERT
首先是基于 ViT ,MAE 論文中最后一小段講的是如何將 ViT 與 BERT 進行結合,但是效果不如直接在標號上訓練比較好,基于此 MAE 做了兩個改進
1、做掩碼的時候遮住了更多的圖片塊,這樣能夠盡量使得圖片之間沒那么融合,使得任務更具有挑戰(zhàn)性(在編碼的時候只處理那些沒有遮住的塊用來加速,但這個東西只是這個想法延申而來的一個加速技巧)
2、作者認為用一個簡單的全連接來輸出像素信息跨越度比較大,因此作者用的是一個 transformer 塊來輸出最后所要的像素
基于以上改進,提出三個想法:
1、針對第一個改進,看上去是一個比較自然的想法,可以認為是一個非常強的數(shù)據(jù)增強,就是在圖片中加入很多的噪音,圖片增強的目的是用來盡量使得模型不至于過擬合,最后的結果也確實是如此:作者在 ImageNet 訓練到1600 輪的時候仍然在提升
- 但是反過來講,壞處是導致模型的訓練特別慢,可以認為是訓練到 1600 輪的時候仍然沒有收斂,依然還能夠提升,那么在更大是數(shù)據(jù)集上,使用更大的 ViT 架構時應該怎么辦?所以這時候的第一個想法是能不能做一些別的數(shù)據(jù)增強,從而縮短訓練的時間,同時效果又不至于太差
2、針對第二點改進,作者所使用的主干網(wǎng)絡 ViT ,作者在論文中說其實可以用一些新一點的架構,可能會有更好的效果。所以第二個想法是能不能用一些新的模型來替換掉 ViT 看一下效果
- 其實在 transformer 中,自注意力也好,MLP 也好,其實都是可以替換的,只要整體的架構不變,其實效果也是不錯的
- 甚至可以干脆換成一個 CNN 的模型,看效果如何
3、再回到 BERT ,BERT 在做損失的時候其實有兩個損失函數(shù):一個是完形填空;另一個是句子對的匹配。那么在這個地方是否可以考慮增加額外的損失函數(shù),比如說最近比較火的 contrastive learning 是否可以加進來作為一個額外的損失函數(shù)
想法從何而來
在看論文的時候可以在每一個細節(jié)仔細揣摩,如果換成自己來做的話有沒有別的方法來實現(xiàn),由此可以得到很多的想法,但是最后還是需要進行驗證,通過實驗對比看哪個想法的效果最好
- 有的時候,某些想法在進行實現(xiàn)的時候可能得不到比較好的效果,但是通過觀察實驗的結果,能夠得到一些新的想法,然后繼續(xù)進行實驗驗證
- 最終其實每個想法對最后的結果都能夠提供一點點的貢獻,將這些東西進行糅合也可能形成一篇文章(MAE 其實也是糅合了兩個東西,拿掉任何一個東西效果都會打折)
注意事項
不要打太多的補丁,這些補丁如果東一塊西一塊的話會顯得比較臟,最好是在打補丁的時候能夠有一個故事將這些補丁串聯(lián)起來
- MAE 論文中的這兩個補丁雖然是比較遠的,但是多多少少還是在 Intro 中,通過一個故事串聯(lián)起來了,所以讀起來沒有太強的違和感,因此這是一個非??简瀸懽鞯姆椒ǎㄓ袝r候為了故事的連續(xù)性,可以把一些不那么重要的補丁拿掉也是可以的)
打補丁論文的選擇
選擇哪篇論文打補丁也是比較講究的,需要選擇一些比較新的論文,而且空間比較大
- 如果一篇論文已經(jīng)是一個打補丁的論文了,如果繼續(xù)在上面打補丁的話,很可能比較困難,因為作者在一開始的時候,可能已經(jīng)試過很多東西了,所以再取進行嘗試的時候,很有可能已經(jīng)是作者早就嘗試過了的東西了,有些時候根本就不起作用
- 這個時候最好是選一些腦洞比較大的論文,比如 ViT 剛一出來就有大量的作者進行跟進,也就是因為大家認為這一塊比較新,可能里面還有很多沒有被實現(xiàn)過的想法
- 另外需要結合自己的實際情況,因為這是一個比較燒錢的工作,MAE 已經(jīng)算是一個比較便宜的工作了,但是它每次訓練都需要使用 128 個 GPUv3 的核,訓練時間大概在一天以上,換算過來大概是幾千美金,整個論文作者應該是做了幾十個甚至上百個實驗,所以整個過程的花費大概在幾十萬美金,如果沒有一定的財力支持的話,就不要選擇這一類的文章
- 反過來講,可以做一些新的模型或者一些改進來加速整個訓練過程,使得整個訓練更快更便宜,而不是說去提高精度,這也是一個非常好的想法