深度學習模型那麼多,科學研究選哪個?
- 2020 年 4 月 26 日
- AI
以深度學習為代表的機器學習技術,已經在很大程度顛覆了傳統學科的研究方法。然後,對於傳統學科的研究人員,機器學習演算法繁雜多樣,到底哪種方法更適合自己的研究問題,常常是一大困擾。
從2006年到2020年,這15年內,深度學習經歷了發展期、爆發期,期間誕生了許多演算法原理,眾多神經網路也在多項人類任務上都表現優異。例如,2012年,Hinton課題組為了證明深度學習的潛力,首次參加ImageNet影像識別比賽,其通過構建的CNN網路AlexNet一舉奪得冠軍,且碾壓第二名(SVM方法)的分類性能。
2013、2014、2015、2016年,通過ImageNet影像識別比賽,DL的網路結構,訓練方法,GPU硬體的不斷進步,促使其在其他領域也在不斷的征服戰場。
尤其是2016年3月,由Google旗下DeepMind公司開發的AlphaGo與圍棋世界冠軍、職業九段棋手李世石進行圍棋人機大戰,以4比1的總比分獲勝之後,更是掀起了一陣深度學習高潮。
爆發之後回歸平靜,演算法井噴之後,目前更多的是需求是面向產品,如何將演算法集成起來包裝成產品?如何落地?如何促進其他領域的科學研究?能夠回答這樣的問題,才能更多增加AI價值。
更加具體一些,此類問題可以衍生為:在什麼場景下,該應用什麼樣的深度演算法?或者,這些深度學習演算法的特點適合什麼領域的科學研究?
標準神經網路模型和任務
關於標準的神經網路,普遍認為包括用於影像預測和變換的卷積神經網路、用於化學領域的圖神經網路、專長於序列數據的transformer……最基本的深度神經網路當屬多層感知器,模型設置非常簡單,只有一堆非線性函數組成的全連接層。
雖然簡單,但是對付數據可能由一組截然不同的特徵組成的問題很有用,例如表格數據。這個模型比邏輯回歸和線性回歸有更強的表達能力。但是在用的時候,需要對數據進行預處理,選擇一些特徵集進行計算,並將其用作輸入。最近的一項研究是用在了藥物開發上面,研究機構是中藥品質研究國家重點實驗室。
卷積神經網路
多層感知機只是簡單的深度網路,在它的基礎上,卷積神經網路發展了起來,成為了最廣為人知的神經網路家族,其特有的卷積層允許許神經網路在影像的不同空間位置重複使用參數。作為一種對影像數據非常有用的歸納偏差,能夠幫助更加有效地學習一些好特徵以應用層面來分,卷積神經網路派生了影像分類、目標檢測、語義分割和實例分割、影像超解析度、影像配准、姿勢估計……
其中四個的分類的區別大致可以用上圖表示他們之間的區別可以大致用上圖表示,在分類的時候整個影像只有一個氣球標籤,而在目標檢測中,每個氣球都用一個邊界框進行定位。而在語義分割中,演算法識別的是氣球對應的所有像素,在實例分割中分別識別每個單獨的氣球。
簡單來看,影像分類是經過一個函數,輸入一個圖形,輸出一個類別。在醫學上將胸部X圖片映射到二進位疾病標籤,就是影像分類的應用。
常見的用於影像分類的神經網路有:VGG,這個模型在多個遷移學習任務中的表現要優於googLeNet,缺點在於參數量有140M之多,需要更大的存儲空間;Resnet,能夠對付梯度消失和梯度爆炸問題;DenseNet,其特色在於能夠通過特徵在channel上的連接來實現特徵重用;還有最新的ResNeXt和EfficientNets,其能夠對網路深度、寬度和輸入影像的空間解析度有單獨的縮放係數。影像分類演算法已經應用於了許多不同的科學項目,例如分析低溫電子顯微鏡技術,但主要還是在醫學上應用廣泛,因為從眼科到放射科都需要通過影像預測疾病標籤。
如果說影像分類是對影像做一個大致的總結,那麼目標檢測就深入到影像的一些細節中了。例如給定一張戶外圖片,裡面有樹、人、狗,目標檢測演算法的任務是分別同時識別出這三個物體,並用「圈圈」標記他們。
有很多卷積框架在目標檢測方向表現優異,包括最早期的Faster R-CNN,後來在他基礎上改進的 Mask R-CNN斬獲了 ICCV2017 年的最佳論文,在實例分割、目標檢測、人體關鍵點檢測三個任務都取得了很好的效果。除此之外,很多改進的模型例如,YOLOv3、EfficientDets 以及剛剛開源的 YOLOv4 也是做目標檢測的很好選擇。
目標檢測也是醫學方向大愛,在跨模式的腫瘤細胞識別,放射學中的骨折判斷都已經有相關研究發布。如果更加深入到影像的底層細節,對影像的像素進行分類,那麼這就涉及到語義分割技術了。如果有一張街道圖片,裡面有道路、車輛、行人等,語義分割演算法的目的是確定圖片中像素的歸屬,即是屬於車輛,還是屬於道路,亦或者屬於行人。而實例分割則更加複雜,它要弄明白的是這個像素是屬於行人一,還是行人二,還是行人三。
綜上,分割模型需要對每個像素進行分類,所以它們輸出的不是單個類別的標籤和邊界框,而是完整的影像。設計分割模型時要求演算法能夠保存圖片的空間資訊。當前比較常用的架構是U-net,主要由卷積層、最大池化層(下取樣)、反卷積層(上取樣)以及ReLU非線性激活函數組成。
FCN,此架構不含全連接層的全卷積網路,可適應任意尺寸輸入;增大數據尺寸的反卷積層,能夠輸出精細的結果;結合不同深度層結果的skip結構,同時確保魯棒性和精確性。
此外,還有Segnet模型,它在FCN的語義分割任務基礎上,搭建編碼器-解碼器對稱結構,實現端到端的像素級別影像分割。
最後,做實例分割,首選 Mask R-CNN和最近的Detectron2框架。值得一提的是Detectron2 與其他框架不同,其還包含了全景分割這一任務。
分割任務在醫學界應用也非常廣泛,分割大腦MR影像,識別不同組織中細胞的關鍵區域,甚至研究骨骼結構等方向已經發表了許多論文。
除了上述四個,影像超解析度也是卷積神經網路的一個分支應用。對於低解析度影像,傳統的解決方案是想法辦在圖片上思佳一些約束條件,如稀疏度等。卷積神經網路家族中的SRCNN找到了稀疏編碼和卷積神經網路之間的對應關係。RDN網路已經成為實現超解析度的流行方法。此外,預測濾波流(Predictive Filter Flow)在影像去噪和去模糊化方向也非常棒。
影像配準是數字影像處理的一種重要應用,用於對齊兩幅或多幅相同場景的圖片。影像配准需要輸入影像與參考影像。輸入影像是我們希望變換的影像,參考影像是想要配准輸入影像的影像。
這種需要讓兩幅影像對齊的技術核心是卷積神經網路,通常需要的是編碼器-解碼器結構的神經網路,例如U-net。
姿勢估計也能看做卷積神經網路的應用,重點在於圖片中人物的關鍵節點,例如膝蓋、手肘、頭部等。2D的姿勢估計是電腦的核心問題,此類的數據集和卷積架構也比較多,早期的堆疊沙漏網路結構衍生的各種變種演算法,牢牢佔據了姿態檢測的半壁江山。
最近的網路 HRNet,能夠通過並行連接高解析度到低解析度卷積來保持高解析度表示,並通過重複跨並行卷積執行多尺度融合來增強高解析度表示。另外,卡內基梅隴大學也提供了端到端的多人姿勢檢測系統,用自監督學習實現了人類3D動作追蹤。值得一提的是,姿勢估計已經在助力動物行為研究的相關項目了。
圖神經網路
圖是一種非常神奇的表示方式,生活中絕大多數的現象或情境都能用圖來表示,例如人際關係網、道路交通網、資訊互聯網等等。相比於傳統的圖模型,圖網路最大的優勢在於它不只可以對一個節點進行語義表示。
可以把圖神經網路看做將深度學習技術應用到符號表示的圖數據上,或者說是從非結構化數據擴展到了結構化數據。應用特點:數據具有固有的圖形結構特點,能夠在圖結構上學習到一些函數,無論是某些頂點,還是全局都可以。
對隨時間演變的圖結構執行預測可以使用時空圖神經網路。技術參考:大多數圖神經網路遵循從頂點鄰域聚集資訊並使用這些資訊來更新特徵向量的高級結構。
當前也有一些結構變體與其他的神經網路模型相聯繫,例如卷積神經網路和遞歸模型,還有時空圖網路已經用來解決影片中動作識別問題。有兩篇文章做了很好的總結,第一篇總結了早期的一些流程方法,第二篇對不同類型的架構、問題、基準數據集和開源資料進行了整理。
文章1:Justin Gilmer, Samuel S Schoenholz, Patrick F Riley, Oriol Vinyals, and George E Dahl. Neural message passing for quantum chemistry. In Proceedings of the 34th International Conference on Machine LearningVolume 70, pages 1263–1272. JMLR. org, 2017.
文章2:Zonghan Wu, Shirui Pan, Fengwen Chen, Guodong Long, Chengqi Zhang, and Philip S Yu. A comprehensive survey on graph neural networks. arXiv preprint arXiv:1901.00596, 2019.圖神經網路在自然語言處理中的應用包括多跳閱讀、實體識別、關係抽取以及文本分類等。在電腦視覺中的應用是根據語義生成影像。 在生物醫療領域包括新藥物的發現、化合物篩選、蛋白質相互作用點檢測、以及疾病預測。
用於序列數據的神經網路
數據的一個非常常見的屬性是具有順序結構,例如影片中的幀、蛋白質的氨基酸序列或句子中的單詞。開發神經網路模型來處理序列數據一直是過去幾年來最廣泛的研究領域之一。其中很大一部分是由自然語言處理任務的進展所推動,該領域的重點是讓電腦讀懂人的工作。這個領域的機器翻譯和問題回答兩個熱門的任務已經取得了一些進展。當前需要處理序列數據的核心人物包括:語言建模、序列到序列轉換、問答等
序列到序列預測任務的圖示語言建模(Next Token Prediction)作為一種訓練方法,將時間或者位置t的序列標記作為輸入,然後用這些標記來預測t+1的標記。在NLP任務中,該方法體現在:將句子或者單詞作為輸入送到神經網路中,然後預測下一個單詞。
具體例子,如:給定一個句子 “The cat sat on the roof”, “The “作為作為神經網路的輸入,要求預測 “cat”,然後被喂入 “The cat”,並要求預測 “sat”,以此類推。這種方法已經成為自然語言中流行的方法,另外,在一些科學項目中也應用廣泛,例如蛋白質功能預測,AlphaFold預測蛋白質結構中部分使用此方法。
序列到序列:處理序列數據
另一個比較流行的方法是序列到序列的轉換,即將一個序列轉換為另一個序列。此方法一般機器翻譯常用,通常依賴於具有編碼器-解碼器結構的神經網路模型,其中編碼器神經網路接收輸入序列並學習提取重要特徵,然後解碼器神經網路使用該特徵來產生目標輸出。該範式已經用於生物學和能源預測,其中在裡面發揮重要作用的是Attention技術。
遞歸神經網路模型的示意圖問答也能夠作為處理序列數據的一個基準,此類神經網路模型的標準是:一段文字(作為上下文)和一個具體的問題作為輸入,回答的段落作為輸出。值得一提的是,問答模型要求的神經網路模型必須能夠理解不同序列集的相關性和相似性。
處理序列數據比較強大的神經網路有遞歸神經網路、注意力機制、Transformers。遞歸神經網路(RNN)包括一層內的加權連接(與傳統前饋網路相比,連接僅饋送到後續層)。因為RNN包含循環,所以它們可以在處理新輸入的同時存儲資訊。
這種記憶使它們非常適合處理必須考慮事先輸入的任務(比如時間序列數據)。遞歸神經網路(RNN)非常適合處理文本、語音、影片等時間序列數據樣本。注意力在深度學習中可以大致理解為對於某一個向量關注的程度如何,這個向量可能表示的是影像中的某一局部區域或是句子中的某個詞,使用注意力向量來估計關注的部分和其他元素之間的關係強弱,並將不同部分的值的和用注意力向量加權得到的結果作為目標的近似值。
雖然注意力有助於解決遠程依賴中的挑戰,但RNN訓練起來仍然很慢,NLP中的Transformer是全新的框架,旨在解決序列到序列的任務,同時輕鬆處理長時依賴。其用全attention的結構代替了lstm,能夠在翻譯任務上取得了更好的成績。在科研中也有幾個有趣的例子,如在蛋白質序列上進行訓練並找到編碼有意義的生物特性的表徵、通過語言建模生成蛋白質、在生物醫學數據中進行文本挖掘的bioBERT……
如何減少對數據標籤的依賴?
上述提到神經網路和方法,都比較依賴於數據的標籤,下面將討論如何減少對標籤的依賴,具體內容包括:遷移學習、領域自適應、多任務學習、弱監督。遷移學習(Transfer Learning)是一種機器學習方法,是把一個領域(即源領域)的知識,遷移到另外一個領域(即目標領域),使得目標領域能夠取得更好的學習效果。
通常,源領域數據量充足,而目標領域數據量較小,這種場景就很適合做遷移學習,例如我們我們要對一個任務進行分類,但是此任務中數據不充足(目標域),然而卻又大量的相關的訓練數據(源域),但是此訓練數據與所需進行的分類任務中的測試數據特徵分布不同(例如語音情感識別中,一種語言的語音數據充足,然而所需進行分類任務的情感數據卻極度缺乏),在這種情況下如果可以採用合適的遷移學習方法則可以大大提高樣本不充足任務的分類識別結果。領域自適應是遷移學習中的一種代表性方法,指的是利用資訊豐富的源域樣本來提升目標域模型的性能。
領域自適應問題中兩個至關重要的概念:源域(source domain)表示與測試樣本不同的領域,但是有豐富的監督資訊;目標域(target domain)表示測試樣本所在的領域,無標籤或者只有少量標籤。源域和目標域往往屬於同一類任務,但是分布不同。
關於領域自適應的一些常見操作和方法,都可以在下面的鏈接中找到
//towardsdatascience.com/deep-domain-adaptation-in-computer-vision-8da398d3167f
多任務學習的目標是利用多個學習任務中所包含的有用資訊來幫助為每個任務學習得到更為準確的學習器。與傳統遷移學習、領域自適應等方法不同,多任務學習是一種並行遷移模式。
在多任務學習中,任務之間的資訊相互共享,知識在不同的任務中互相遷移,因此多任務學習也被叫做並行遷移學習。多任務學習方法通過多任務資訊共享提升整體的學習效果,這對於小樣本上的學習尤其有效。
更多多任務學習請參見:
//ruder.io/multi-task/index.html#fn4
弱監督通常分為三種類型:不完全監督、不確切監督、不準確監督。
不完全監督,指的是訓練數據只有部分是帶有標籤的,同時大量數據是沒有被標註過的;不確切監督,即訓練樣本只有粗粒度的標籤;不準確監督,即給定的標籤並不總是真值。其中比較著名的一個工具是Snorkel ,由斯坦福 AI 實驗室創建,在這個系統中,可以不使用手動標註的訓練數據,而是要求用戶編寫標註函數即可。關於弱監督與其他領域的聯繫請參見:
https://hazyresearch.github.io/snorkel/blog/ws_blog_post.html
高級深度學習方法
上面的方法能夠解決大多數的深度學習問題,但是偶爾會求助到更高級的深度學習方法,特別是生成模型和強化學習。不過這些方法通常需要更複雜的實現,可能需要問題的特定屬性才能有用,例如強化學習對優秀環境模型/模擬器要求比較高。
生成性建模有兩個基本目標。首先,從高維數據分布(如自然影像)中建模並實現取樣。其次,學習數據的低維潛在編碼,從而找到關鍵屬性。
StyleGAN2模型生成的
比較著名的生成模型有對抗生成模型(GAN)、變分自動編碼器、自動回歸模型。其中GAN的應用比較廣泛,假新聞、假圖片都會以他為基礎,但是需要注意的是區分無條件GAN與條件GAN。前者僅用隨機雜訊矢量作為輸入來生成數據,後者是前者的變體,生成以附加資訊為條件。
變分自動編碼器和GAN的目標是一致的,希望構建一個從隱變數 Z 生成目標數據 X 的模型,但是實現上有所不同。它本質上就是在我們常規的自編碼器的基礎上,對 encoder 的結果(在VAE中對應著計算均值的網路)加上了「高斯雜訊」,使得結果 decoder 能夠對雜訊有魯棒性。
近年來也出現了不少基於自回歸思路的深度生成模型如PixelRNN,PixelCNN,NADE,MADE等,但是由於AutoRegressive模型一個很大的缺點是AR模型需要逐pixel的生成(後面pixel的生成依賴於前面的pixel),這也導致了生成過程比較慢。
最後,相比於GAN和VAE,基於流的生成模型(也被稱作reversible generative models)得到的關注比較少,它主要是利用了Normalizing flow(由多個可逆的變換函數組成序列,稱為流)來對訓練數據分布進行建模。
強化學習的常見模型是標準的馬爾可夫決策過程 。按給定條件,強化學習可分為基於模式的強化學習(model-based RL)和無模式強化學習(model-free RL),以及主動強化學習(active RL)和被動強化學習 (passive RL) 。強化學習的變體包括逆向強化學習、階層強化學習和部分可觀測系統的強化學習。求解強化學習問題所使用的演算法可分為策略搜索演算法和值函數(value function)演算法兩類。深度學習 模型可以在強化學習中得到使用,形成 深度強化學習 。
強化學習模型設計需要考慮三方面:一,如何表示狀態空間和動作空間。二,如何選擇建立訊號以及如何通過學習來修正不同狀態-動作對的值。三如何根據這些值來選擇適合的動作。用強化學習方法研究未知環境下的機器人導航,由於環境的複雜性和不確定性,這些問題變得更複雜。
(雷鋒網)(雷鋒網)(雷鋒網)