新智元報道

  來源:Piekniewski's blog

  編輯:元子

  【新智元導讀】深度學習的成功和一系列令人驚訝的失敗模式教會了我們處理數據的寶貴教訓。本文展示了深度學習真正可以實現什麼,與經典計算機視覺的區別是什麼,以及進行關鍵應用的潛在危險有哪些。

  我們對深度網絡的黑盒效應都很熟悉了。雖然沒有人知道黑盒子裏到底經歷了什麼,然而深度學習的成功以及一系列驚人的失敗模式,提供瞭如何處理的數據的寶貴教訓。

  本文作者Piekniewski,將爲我們展示深度學習的實際能力、與經典計算機視覺的關係,在關鍵應用上依賴深度學習的潛在危險,以及未來走向。

  此人也對AI寒冬論持有堅定的信念,參見文章《

  深度學習到頂,AI寒冬將至!

  》《歷史總是在重演,AI寒冬或再來》。

  視覺問題中沒有純粹的“簡單”和“複雜”

  首先需要就視覺/計算機視覺做一點說明。原則上可以表述如下:給定一臺攝像機拍攝的圖像,計算機可以回答關於該圖像內容的一些問題。

  簡單的問題比如“圖像中是否存在三角形”,“圖像中是否存在人臉”;複雜的問題例如“是否有狗在圖像中追逐貓”。這些對人類來說小兒科的問題看似有很多相似的地方,然而事實卻證明這些問題的背後的複雜性存在巨大差異。

  同樣是讓計算機回答“圖中是否有XX”的問題,“圖中是否有貓”顯然要比“圖中是否有紅色”更難。你看,試圖將視覺問題劃分爲“簡單”或“複雜”將會陷入無止境的深淵。

  這一點很重要。因爲像我們人類這種高度視覺化的動物,以上問題都不是問題。但對計算機深度學習來說,確實非常複雜。

  傳統計算機視覺存在的問題

  傳統的計算機視覺就是使用一套算法,從圖片裏提取信息(通常表示爲像素值數組)。比如去噪、增強和檢測的算法,一些方法旨在尋找簡單的幾何圖元,例如邊緣檢測、形態分析、霍夫變換、斑點檢測、角點檢測、各種圖像閾值處理技術等。還有特徵表示技術和變換,如定向梯度的直方圖、Haar級聯等可以用作機器學習分類器的前端以構建更復雜的檢測器。

  與流行的看法相反,上述工具結合在一起可以組成非常強大有效的特定物體探測器。人們可以構建面部檢測器、汽車檢測器、路牌檢測器,並且它們很可能在精度和計算複雜性方面,優於這些特定對象的深度學習解決方案。

  但問題是,每個探測器都需要由有能力的人員從頭開始構建,低效又昂貴,且不可擴展的。

  因此,李上上那些很厲害的探測器只適用於必須高頻場景,還需要證明前期投資的合理性。許多探測器都是專有的,一般公衆無法使用。

  優秀的面部探測器、車牌閱讀器很多,但狗探測器卻很少。沒有一個心智正常的人會投入人力和物力去編寫狗探測器或分類器,從圖像中分類出一種狗,貴且不切實際。

  這是傳統視覺的死穴,卻是深度學習的用武之地。

  用一個聰明學生的故事來解釋深度學習的本質

  想象一下,你正在教授計算機視覺課程。在開始的幾個講座中,學生瞭解到豐富的技術(例如上面討論的技術),接下來就是給學生布置一些任務。

  先從一些簡單的任務開始,例如通過詢問圖像中是否有圓形或正方形;接下來逐漸提高複雜度。學生每週都要編寫計算機程序來解決下一個任務。而你來查看代碼,並在某些示例上運行代碼來檢驗效果。

  這個學期,來了一個新生,他不跟周圍人說話,也從不問問題。但當他提交第一個解決方案時,你會發現這是一堆難以理解的代碼,跟你以前看到的代碼都不同。

  看起來他正在用一些隨機看的過濾器對每個圖像進行卷積,然後使用一些非常奇怪的邏輯,許多“if then else”語句具有大量搞不懂的參數來獲得最終答案。你在樣本上運行此代碼,它居然完全正常!你心想,這個方法是在不同尋常難以理解,但管他呢,確實有效啊!

  幾周過去了,任務複雜度在不斷提升,你越來越看不懂這個學生的代碼,但就算是最複雜的任務,它的效果也令人驚訝。最後一個問題是在一組真實的圖像中區分貓和狗。其他學生代碼的準確率都沒有超過65%,但新學員的代碼能夠達到95%!太不可思議了。

  你對代碼進行了逆向工程,結果發現他那堆複雜的代碼,背後的邏輯其實非常簡單:

  檢測是否有狗牌:如果有返回“狗”;沒有返回“貓”

  如果沒有狗牌,檢測圖像的左側部分是否比右側部分更黃:如果是返回“狗”;不是返回“貓”

  你把這個學生叫到辦公室問他是怎麼想的,他表示其實自己也不知道,他根本不明白貓和狗是什麼,只知道通過什麼方法將二者區分出來。這算作弊嗎?從人類的角度來看,是的,他的出發點和你想的完全不同。

  雖然其他學生使用原始數據集並沒有得到特別突出的結果,但也不會出什麼奇怪的錯誤。相比而言,新學生的方式雖然在使用當前數據集的時候,效果卓著,然而一旦稍微對數據集做一點改動,例如將狗牌貼在貓身上,結果就是完全錯誤的。

  深度學習的天賜和詛咒

  上面那個新學生的例子,其實很形象的表述了深度學習的特性。

  深度學習是一種使用梯度反向傳播的、特定優化技術來生成“程序”(也稱爲“神經網絡”)的技術。上面學生的程序只是構建一組轉換和條件,將正確的標籤分配給數據集中的正確圖像。而且總是在尋求解決問題最省力的方法,比如給定數據集裏,狗的圖片都在右上角有一道藍色的光暈,那麼深度學習就會立刻使用這作爲區分貓狗的標準。

  爲了消除這些虛假的偏差,我們通常會向訓練集添加更多數據、反向傳播生成的“程序”可能非常大、非常複雜,具有數百萬個參數和數千個條件檢查,可以鎖定到組合更精細偏見的組合。任何允許分配正確標籤以統計優化目標函數的東西都會做,無論是否與任務的“語義精神”相關。

  深度網絡能否最終鎖定到“語義正確”先驗的東西上?當然可以。但現在有大量證據表明,實際上並非五次。對抗性的例子表明,對圖像的微小修改都可以導致錯誤的結果。對類似於先前訓練的數據集的新樣本的研究表明,超出原始數據集的泛化遠比數據集中的泛化弱得多。

  自動創建無人能想到的功能,是深度學習的最大優勢,同時也是它的最大弱點、因爲大多數時候,至少在語義上是存疑的。

  深度學習在什麼情況下好用,什麼情況下不可用?

  深度學習無疑是計算機視覺工具箱的一個有趣補充。現在可以相對容易地“訓練”探測器來探測物體,還可以在一定程度通過調整探測器來使用更多算力。但同時也需要爲深度網絡的黑盒屬性付出高昂的代價,我們無法確定他如何做出決定,而且跟我們認可的“語義精神”毫無關係。因此,在輸入數據中出現的任何低級偏差都會導致檢測器意外地失敗,而且這些失效條件實際上無法表徵。

  因此在落地應用時,深度學習主要用於對錯誤不敏感、且能夠保證輸入不會與訓練數據集有很大差異場景,例如圖像搜索,可能是監視,自動零售以及幾乎所有的“非關鍵任務”,95%的準確率非常夠用了。

  具有諷刺意味的是,大多數人堅信深度學習在無人駕駛汽車、自動機器人場景下的應用是一場革命,Piekniewski認爲,只能將這種信念描述爲“不幸”的誤解。因爲這些場景需要需要實時決策,容錯率極低,經常會導致致命的結果,最近的研究顯示基於深度神經的自動駕駛解決方案在現實生活中確實容易受到對抗性攻擊。

  還有人對深度學習應用在醫學和診斷中寄予厚望。然而,在這個領域,也有一些相關的發現,例如,在一個機構數據上訓練的模型失敗了,換一個機構數據卻成功了,說明這些模型使用比許多研究人員所希望的更淺度的數據。

  數據比我們想象的更淺。

  深度學習 vs 傳統計算機視覺

  深度學習現在非常流行,但傳統的計算機視覺也並非就失去價值。

  傳統計算機視覺仍然可以用來構建強大的探測器。這些手工做成的探測器可能無法在某些特定數據集指標上實現高性能,但可以保證依賴於輸入的“語義相關”特徵集,它的故障模式可以更好地表徵和預期。

  深度學習提供統計上強大的探測器,而不需要昂貴的特徵工程,儘管仍需要大量已標記的數據,外加大量GPU和現場的深度學習專家。而且,這些探測器會意外地失效,適用範圍也不容易被(完全)表徵。

  所以,在容錯率高的場景中,可以選擇深度學習;在容錯率低且計算複雜性更重要的場景中,經典機器視覺管道將在可預見的未來繼續佔據重要位置。

  參考鏈接

  https://blog.piekniewski.info/2019/04/07/deep-learning-and-shallow-data/

相關文章