機器學習研究的七個迷思
作者 Oscar Chang 總結了機器學習研究中的七大迷思,每個問題都很有趣,也可能是你在研究機器學習的過程中曾經遇到過的“想當然”問題。AI 前線對這篇文章進行了編譯,以饗讀者。
迷思之一:TensorFlow 是張量操作庫
它實際上就是一個矩陣操作庫,這一區別還是很明顯的。
在由 Laue 等人在 NeurIPS 2018 發表的論文《Computing Higher Order Derivatives of Matrix and Tensor Expressions》(《計算矩陣和張量表達式的高階導數》)中,作者證明了他們基於實際張量演算的自動微分庫具有更為緊湊的表示式樹。這是因為張量微積分使用了索引表示法,這導致了以同樣的方式處理正向模式和反向模式。
相比之下,矩陣演算為了符號方便,隱藏了索引,這通常會引起自動微分表示式樹過於複雜。
考慮矩陣乘法 C=AB
,對於正向模式我們有 ,而反向模式我們有
。為了正確地進行乘法運算,我們必須注意乘法的順序和轉置的使用。值得注意的是,對於機器學習實踐者來說,這是一個困惑點;但從計算上來說,這是程式的開銷。
下面是另一個例子,顯然並不那麼瑣碎: c=det(A)
。對於正向模式,我們有 ,對於反向模式有
。在這種情況下,顯然不可能對兩種模式使用相同的表示式樹,因為它們由不同的操作組成。
一般來說,TensorFlow 和其他庫(例如 Mathematica、Maple、Simpy、ADOL-C、TAPENADE、TensorFlow、Theano、PyTorch、HIPS autograd)實現自動微分的方式會導致正向模式和反向模式的表示式樹不同,且效率低下。張量演算由於索引表示法的緣故,使得乘法具有可交換性,從而方便地避免了這些問題。(欲瞭解有關其工作原理的更多資訊,請閱讀實際論文。)
作者在三個不同的問題上,測試了他們的反向模式自動微分(亦即反向傳播)的方法,並測量了計算 Hessians 所需的時間。
第一個問題涉及優化像 這樣的二次函式。第二個問題解決邏輯迴歸,第三個問題解決矩陣分解問題。
在 CPU 上,他們的方法比 TensorFlow、Theano、PyTorch 和 HIPS autograd 等流行的自動微分庫快兩個數量級。
在 GPU 上,他們觀察到了更高的加速,比這些庫的效能足足高了三個數量級。
意義:
利用現有的深度學習庫來計算二次函式或更高函式的導數比實際所需的要昂貴得多。這包括計算像 Hessian 這樣的一般四階張量(如 MAML 和二價牛頓優化)。幸運的是,二次函式在深度學習中並不常見。但它們在經典機器學習中很常見:支援向量機的對偶、最小二乘迴歸、LASSO、高斯過程等。
迷思之二:影象資料庫是自然環境下的真實影象代表
我們總認為,在物體識別方面上,神經網路要比人類做得更好。但這並不是真的。在像 ImageNet 這樣的特定影象資料集上,它們是有可能比人類表現得更好,但考慮到在自然環境發現的真實影象,它們在識別物體方面肯定不會比普通成年人強。這是因為在當前的影象資料集中發現的影象,實際上並不是按照從自然環境中所有可能出現的影象的集合相同的分佈繪製的。
Torralba 和 Efros 在 CVPR 2011 發表的一篇舊論文《Unbiased Look at Dataset Bias》(《站在公正立場對待資料集偏差》)中,作者提出,通過觀察是否有可能訓練分類器來識別給定影象中的資料集,來檢查 12 個常用影象資料集中的資料集偏差。
論文連結: https://ieeexplore.ieee.org/document/5995347
隨機選對的機率是 1/12≈8%
,而他們的實驗室成員的機率超過了 75%
。
他們在 HOG 特徵上訓練了一個支援向量機,發現他們的分類器的效能為 39%
,遠遠高於隨機選對的機率。如果同樣的實驗今天用最先進的卷積神經網路來重複,我們可能會看到分類器效能的進一步提高。
如果影象資料集真正代表了自然環境下的真實影象,我們應該不能區分給定影象來自哪個資料集。
但由於資料中存在偏差,使得每個資料集都與眾不同。例如,ImageNet 資料集中就有許多賽車,但不能說代表了一般汽車的“帕拉圖式”概念。
作者進一步通過測量在資料集上訓練的分類器在其他資料集上的表現,來判斷資料集的價值。根據這一指標,LabelMe 和 ImageNet 是偏差最小的資料集,在一籃子貨幣中的得分為 0.58
。這些值都小於 1,這意味著在不同的資料集上進行訓練總是得到較低的測試效能。在沒有資料集偏差的理想情況下,其中一些值應該大於 1。
作者悲觀地總結道:
那麼,當前資料集在用於訓練將在現實世界中部署的演算法的價值是什麼呢?答案可以概括為“總比什麼都沒有好,但也好不到哪裡去。”
迷思之三:機器學習研究人員不使用測試集進行驗證
在 Machine Learning 101 課程中,我們學習如何將資料集拆分為訓練集、驗證集和測試集。在訓練集上訓練並在驗證集上評估的模型的效能,有助於機器學習實踐者調整他的模型,以最大限度提高模型在實際使用的效能。而測試集應該一直保留到實踐者完成調優,以便對模型在實際使用中的實際效能提供無偏估計。如果實踐者通過在訓練或驗證過程中使用測試集來作弊,他就冒著將模型過擬合到資料集中固有偏差的風險,而這些偏差不會在資料集之外泛化。
在競爭激烈的機器學習研究領域中,新的演算法和模型經常會根據它們在測試集中的表現進行評估。因此,研究人員幾乎沒有理由撰寫或提交論文,提出測試效能較差的方法。這實際上意味著,機器學習研究社群作為一個整體,正在使用測試集進行驗證。
這種作弊的影響是什麼?
在由 Recht 等人在 ArXiv 2018 發表的論文《Do CIFAR-10 Classifiers Generalize to CIFAR-10?》(《是否將 CIFAR-10 分類器推廣到 CIFAR-10?》)中,作者通過為 CIFAR-10 建立新的測試集來研究這一點。他們通過解析 Tiny Images 儲存庫中的影象來實現,就像在原始資料集收集過程中所做的那樣。
論文連結: https://arxiv.org/pdf/1806.00451.pdf
他們之所以選擇 CIFAR-10,是因為它是機器學習中使用最廣泛的資料集之一,是 Neurips 2017 第二最流行的資料集(僅次於 MNIST)。CIFAR-10 的資料集建立過程中也有很好的文件記錄和透明性,大型 Tiny Images 儲存庫具有足夠細粒度的標籤,可以複製新的測試集,同時又可最大限度地減少分佈偏移。
他們發現,在各種不同的神經網路模型中,從舊的測試集到新的測試集,準確率有顯著的下降( 4%~15%
)。然而,每個模型效能的相對排名仍然相當穩定。
一般來說,與效能較低的模型相比,效能較高的模型在準確率方面的下降較小。這很令人振奮。因為它表明,隨著研究界發明出更好的機器學習模型和方法,由作弊導致的泛化損失——至少在 CIFAR-10 的情況下,將會變得更微弱。
迷思之四:每個資料點都用來訓練神經網路
傳統觀點認為,資料是“新的石油”。我們擁有的資料越多,就越能更好地訓練我們的樣本——這就是效率低下、過度引數化的深度學習模型。
在 Toneva 等人發表的《AN Empirical Sutdy of Example Forgeting During Deep Neural Network Learning》(《深度神經網路學習中遺忘例項的實證研究》)中,作者證明了幾種常見的小型影象資料集中的顯著冗餘性。令人震驚的是,CIFAR-10 中的 30%
的資料點可以刪除,而測試準確率並不會出現太大的波動。
論文連結: https://openreview.net/pdf?id=BJlxm30cKm
當神經網路在時間 t+1
進行錯誤分類時,就會發生遺忘事件,因為在時間 t
已經進行了準確分類,我們就將時間流視為對網路進行隨機梯度下降更新的次數。為了便於跟蹤遺忘事件,每次更新隨機梯度下降時,作者只在小批量的示例上執行他們的神經網路,而不是在資料集中的每個示例上執行。未經歷遺忘事件的示例被稱為難忘的示例。
他們發現,91.7% 的 MNIST、75.3% 的 permuledMNIST、31.3% 的 CIFAR-10 和 7.62% 的 CIFAR-100 包含了難忘的示例。這很有直觀的意義,因為影象資料集的多樣性和複雜性的增加會導致神經網路忘記更多的示例。
遺忘的示例似乎比難忘的示例表顯出更多的不尋常和獨特的特徵。作者將它們比作支援向量機中的向量,因為它們似乎劃分了決策邊界的輪廓。
相比之下,難忘的示例主要是對冗餘資訊進行編碼。如果我們根據它們的難忘性對這些示例進行排序,就可以通過刪除最難忘的示例來壓縮資料集。
在 CIFAR-10 上,可以刪除 30%
的資料集而不影響測試準確率。而刪除 35%
則會導致準確度下降 0.2%
。如果這 30%
是隨機選擇的而不是通過難忘性選擇的,那麼刪除它將會導致測試準確度損失 1%
左右。
同樣,在 CIFAR-100 上,可以刪除 8%
的資料集而不會影響測試的準確性。
這些研究結果表明,神經網路訓練中存在顯著的資料冗餘,就像在支援向量機訓練中一樣,在不影響模型決策的情況下,可以去除非支援向量。
意義:
如果我們可以在訓練開始之前確定哪些示例是難忘的,那麼我們就可以通過刪除這些示例來節省空間,並通過不對它們進行神經網路訓練來節省時間。
迷思之五:我們需要(批)歸一化來訓練非常深的殘差網路
很長一段時間來,人們一直認為“從隨機初始化引數開始,通過梯度下降,訓練深度網路直接優化感興趣的受監督目標(例如正確分類的對數概率),效果並不是很好。”
有關詳情請見 Pascal Vincent、Yoshua Bengio 等人發表的論文《Stacked Denoising Autoencoders: Learning Useful Representationsina Deep Network with a Local Denoising Criterion》(《堆疊式去噪自動編碼器:使用區域性去噪標準學習深度網路中的有用表示》): http://www.jmlr.org/papers/volume11/vincent10a/vincent10a.pdf
從那時起,湧現了大量聰明討巧的隨機初始化方法、啟用函式、優化技術和其他架構創新,如殘差連線,使得利用梯度下降訓練深度神經網路變得更加容易。
但真正的突破來自於批歸一化(以及其他後續歸一化技術)的引入,這顯示了深度網路每一層啟用的大小,以減輕梯度消失和爆炸的問題。
在最近的由 Zhang 等人在 ICLR 2019 發表的論文《Fixup Initialization: Residual Learning Without Normalization》(《Fixup 初始化:沒有歸一化的殘差學習》)中,論文表明,實際上可以使用普通的隨機梯度下降法來訓練一個 10000 層深度網路,而無需採用任何歸一化。
論文連結: https://arxiv.org/pdf/1901.09321.pdf
作者在 CIFAR-10 上對一個輪數內不同深度的殘差網路訓練進行了比較,發現雖然 100 層的標準初始化方法失敗了,但 10000 層的 Fixup 和批歸一化都取得成功了。
他們進行了一項理論分析,為了證明“某些層的梯度範數期望值較低,由一個隨網路深度無限增大的數量限定。”也就是爆炸梯度問題。
為防止這種情況,Fixup 中的關鍵思想是通過一個依賴於 M
和 L
的因子來縮放 M
層中每 L
個殘差分支的權重。
Fixup 能夠在 CIFAR-10 上訓練具有 1110 層的深度殘差網路,具有較高的學習率,測試效能與具有批歸一化的相同網路架構相當。
作者還進一步展示了在沒有對 ImageNet 資料集和英語 - 德語機器翻譯任務進行任何歸一化的情況下使用 Fixup 網路的比較測試結果。
迷思之六:注意力 > 卷積
在機器學習社群中,有一種想法越來越流行,那就是注意力機制是卷積之外的一種更好的選擇。Vaswani 等人指出,“可分離卷積的計算成本等於自我注意層和逐點前饋層的組合。”
有關這一想法可見:Ashish Vaswani、Yoshua Bengio 等人發表的論文《Attention Is All You Need》(《你所需要的是注意力》): https://arxiv.org/abs/1706.03762
即使是最先進的生成對抗網路也發現,在持續建模、多尺度依賴性方面,自我注意要優於標準卷積。
詳見:Han Zhang、Ian Goodfellow 等人發表的論文《Self-Attention Generative Adversarial Networks》(《自我注意生成對抗網路》): https://arxiv.org/abs/1805.08318
Wu 等人在 ICLR 2019 發表的論文《Pay Less Attention with Lightweight and Dynamic Convolutions》(《通過輕量級和動態卷積減少注意力》)中,在持續建模依賴關係模型中,對自我注意的引數效率和有效性提出質疑,並提出卷積的新變體,這些變體在一定程度上受到了自我注意的啟發,具有更高的引數效率。
論文連結: https://openreview.net/pdf?id=SkVhlh09tX
輕量級卷積是深度可分離的,在時間維度上進行 softmax 歸一化,在通道維度上共享權重,並在每個時間步驟重複使用相同的權重(如遞迴神經網路)。動態卷積是輕量級卷積,在每個時間步驟使用不同的權重。
這些技巧使輕量級和動態卷積比標準的不可分離卷積高出幾個數量級。
作者表明,這些新的卷積在機器翻譯、語言建模和抽象概括任務中匹配或超過了自我注意的基線,同時使用了相當數量或更少數量的引數。
迷思之七:顯著性圖是解釋神經網路的可靠方法
雖然神經網路通常被認為是黑盒,但是人們已經做了許多嘗試來解釋它們。顯著性圖或其他類似的方法,將重要性分數分配給特徵或訓練示例,是最流行的解釋形式之一。
人們很容易得出結論,給定影象之所以被分類到某種分類,原因是影象的特定部分對於神經網路在進行分類時的決策非常重要。有幾種方法可以計算這種顯著性圖,通常利用神經網路對給定影象的啟用函式以及流經網路的梯度。
由 Ghorbani 等人在 AAAI 2019 發表的論文《Interpretation of Neural Networks is Fragile》(《神經網路的解釋是脆弱的》),作者表明,他們可以對給定的影象引入難以察覺的擾動,以扭曲其顯著性圖。
論文連結: https://arxiv.org/pdf/1710.10547.pdf
因此,君主斑蝶之所以被歸類為君主斑蝶,不是因為它翅膀上的圖案,而是因為背景中一些不重要的綠葉。
高維影象通常位於深度神經網路構建的決策邊界附近,因此,它們容易受到對抗性攻擊。雖然對抗性攻擊會使影象偏離決策邊界,但對抗性解釋攻擊會使影象沿著決策邊界的輪廓移動,同時仍然保持在同一決策區域內。
作者採用的基本方法是修改 Goodfellow 的快速梯度符號法,這是最早引入的有效對抗攻擊方法之一。這表明,其他最近的、更復雜的對抗性攻擊也可用於攻擊神經網路解釋。
意義:
隨著深度學習在醫學成像等高風險應用中變得越來越普遍,我們在解釋神經網路做出的決策時必須小心謹慎,這一點很重要。例如,如果卷積神經網路能夠識別出磁共振成像影象中的一個點是惡性腫瘤的話,那固然是一件好事,但如果這些結果都是基於脆弱的解釋方法,那麼,它們就不該被人們信任。
原文連結:
https://crazyoscarchang.github.io/2019/02/16/seven-myths-in-machine-learning-research/#fn:fn-sagan更多內容,請關注 AI 前線