Vision Transformer(https://arxiv.org/abs/2010.11929)這篇文章最大的貢獻點在於abstract裡講的「We show that this reliance on CNNs is not necessary and a pure transformer applied directly to sequences of image patches can perform very well on image classification tasks」。但是文章裡提出的方法中會將圖片分成多個無overlap的patch,每個patch通過linear projection映射為patch embedding,這個過程其實就是卷積,跟文章裡聲稱的不依賴CNNs自相矛盾。
文章conclusion裡的「Unlike prior works using self-attention in computer vision, we do not introduce any image-specific inductive biases into the architecture」和introduction裡的「We find that large scale training trumps inductive bias」,給人一種inductive bias在大量數據的情況是一個不好的東西,應該拋棄的意思。
inductive bias可以理解為assumptions about the nature of the relation between examples and labels。如果這些assumptions跟實際數據分布的確是相符的,那麼無論我們已有的數據量是大還是小,我們利用這個inductive bias應該是一個更好的選擇。
inductive bias是人類通過學習、實踐而歸納總結出來的knowledge,我們設計一個機器學習/深度學習模型,其實也是讓模型通過訓練集去學習knowledge。knowledge的好壞應該由knowledge與實際數據分布的匹配程度來衡量,而不是knowledge的來源來衡量。
反過來想,如果後面有研究者想在儘量減少inductive bias的路上一路狂奔,也許可以直接用全連接層替換self-attention。然後我們繞了個大圈又回到了幾十年前的MLP:CNN和RNN的提出本來是將領域的知識作為inductive bias,融入到MLP之中,以加速深度學習在CV和NLP等特定領域的落地,我們現在數據量大了,計算資源強了,錢包鼓了,桌子一掀——要什麼領域知識,讓機器自己學去。
之前在CNN與GCN的區別、聯繫及融合(https://zhuanlan.zhihu.com/p/147654689)這篇文章中從數學的層面對比了CNN和self-attention的異同。CNN中每個滑動窗中每個特徵的空間變換的參數是獨立的,特徵與特徵之間的相關性是通過空間變換的參數隱式建模的;而self-attention中每個滑動窗(可以理解為滑動窗大小為整張feature map,即全局)中每個特徵變換的參數是共享的,特徵與特徵之間的相關性是顯示通過某種度量函數(比如點積)來建模的。
另外,對比一下非全局的CNN和self-attention,會發現前者參數量會更多一些,而計算量會更小一些。
總體來看,在CV領域,二者各有優劣,我認為self-attention在CV領域的未來應該是和CNN互相取長補短,你中有我,我中有你,結合起來構建更強大的模型。
科學革命和工業革命之後。整個世界的科技發展日新月異,發展速度越來越快,計算機視覺領域遵循同樣的規律,不斷有新的理論或者技術湧現,兩三周不關注學術界,感覺就要被行業拋棄了。
一個領域發展越快,越有利於年輕人,因為經驗可能隨時被顛覆,相對不太利於年紀漸長的人,但是每個人都會老去。在知識迭代快的行業裡,經驗的作用會淡化,更重要的是學習能力,這樣面對一個又一個新的理論或者技術出現的時候,可以立馬跟上。
但是隨著年紀的增長,生理方面的能力必然會下降,比如記憶力、反應速度等等,也就是從生理層面來看,隨著年紀的增長,學習能力會下降。這是一個必然而又悲哀的事實。
然後就沒解了嗎?我覺得有一個緩解方案——積累如何學習的經驗,類似機器學習裡的meta learning。年紀大的人相比年輕人可以形成的優勢主要是可以積累的東西,比如財富、不容易被時代拋棄的經驗。關於過去理論或者技術的經驗在這個時代容易被時代拋棄,而如何學習的經驗相對而言會比較保值。