某種程度上,深度學習最大的優勢就是自動創建沒有人會想到的特性能力。
如今,深度學習在眾多領域都有一席之地,尤其是在計算機視覺領域。盡管許多人都為之深深著迷,然而,深網就相當于一個黑盒子,我們大多數人,甚至是該領域接受過培訓的科學家,都不知道它們究竟是如何運作的。
大量有關深度學習的成功或失敗事例給我們上了寶貴的一課,教會我們正確處理數據。在這篇文章中,我們將深入剖析深度學習的潛力,深度學習與經典計算機視覺的關系,以及深度學習用于關鍵應用程序的潛在危險。
視覺問題的簡單與復雜
首先,我們需要就視覺/計算機視覺問題提出一些看法。原則上它可以這樣理解,人們給定一幅由攝像機拍攝的圖像,并允許計算機回答關于與該圖像內容的相關問題。
問題的范圍可以從“圖像中是否存在三角形”,“圖像中是否有人臉”等簡單問題到更為復雜的問題,例如“圖像中是否有狗在追逐貓”。盡管這類的問題看起來很相似,對于人類來說甚至有點微不足道,但事實證明,這些問題所隱藏的復雜性存在巨大差異。
雖然回答諸如“圖像中是否有紅圈”或“圖像中有多少亮點”之類的問題相對容易,但其他看似簡單的問題如“圖像中是否有一只貓”,則要復雜得多。“簡單”視覺問題和“復雜”視覺問題之間的區別難以界限。
這一點值得注意,因為對于人類這種高度視覺化的動物來說,上述所有問題都是不足以成為難題,即便是對孩子們來說,回答上述視覺問題也并不困難。然而,處在變革時期的深度學習卻無法回答這些問題。
傳統計算機視覺V.S.深度學習
傳統計算機視覺是廣泛算法的集合,允許計算機從圖像中提取信息(通常表示為像素值數組)。目前,傳統計算機視覺已有多種用途,例如對不同的對象進行去噪,增強和檢測。
一些用途旨在尋找簡單的幾何原語,如邊緣檢測,形態分析,霍夫變換,斑點檢測,角點檢測,各種圖像閾值化技術等。還有一些特征代表技術,如方向梯度直方圖可以作為機器學習分類器的前端,來構建更復雜的檢測器。
與普遍的看法相反,上面討論的工具結合在一起可以造出針對特定對象的檢測器,這種檢測器性能強,效率高。除此之外,人們還可以構建面部檢測器,汽車檢測器,路標檢測器,在精準度和計算復雜性等方面,這些檢測器很可能優于深度學習。
但問題是,每個檢測器都需要由有能力的人從頭開始構建,這一行為低效又昂貴。因此,從歷史上看,表現優良的探測器只適用于那些必須經常被檢測,并且能夠證明前期投資是明智的對象。
這些探測器中有許多是專有的,不向公眾開放,比如人臉檢測器,車牌識別器等等。但是,沒有一個心智正常的人會花錢編寫狗探測器或分類器,以便從圖像中對狗的品種進行分類。于是,深度學習就派上了用場。
尖子生的啟迪
假設你正在教授計算機視覺課程,在課程的前半部分,你要帶領學生們復習大量的專業知識,然后留時間給學生完成任務,也就是收集圖像內容并提問。任務一開始很簡單,例如通過詢問圖像中是否有圓形或正方形,再到更復雜的任務,例如區分貓和狗。
學生每周都要編寫計算機程序來完成任務,而你負責查看學生編寫的代碼,并運行查看它們的效果如何。
這個學期,一名新生加入了你的班級。他不愛說話,不愛社交,也沒有提過什么問題。但是,當他提交自己的第一個任務方案時,你感到有點意外。這名新生編寫的代碼讓人難以理解,你從來都沒見過這樣的代碼。看起來他像是用隨機的過濾器對每幅圖像進行卷積,然后再用非常奇怪的邏輯來得到最終的答案。
你運行了這段代碼,效果非常好。你心想,雖然這個解決方案非同尋常,但只要它有效就足夠了。幾周過去了,學生們需要完成的任務難度越來越高,你也從這名新生那里得到了越來越復雜的代碼。他的代碼出色地完成了難度日益增大的任務,但你無法真正理解其中的內容。
期末的時候,你給學生們布置了一項作業,用一組真實的圖片來區分貓和狗。結果,沒有學生能夠在這項任務上達到超過65%的準確率,但是新生編寫的代碼準確率高達95%,你大吃一驚。你開始在接下來的幾天中深入分析這些高深莫測的代碼。你給它新的示例,然后進行修改,試著找出影響程序決策的因素,對其進行反向工程。
最終你得出一個非常令人驚訝的結論:代碼會檢測出狗的標簽。如果它能檢測到標簽,那么它就可以判斷對象的下部是否為棕色。如果是,則返回“cat”,否則返回“dog”。如果不能檢測到標簽,那么它將檢查對象的左側是否比右側更黃。如果是,則返回“dog”,否則返回“cat”。
你邀請這名新生到辦公室,并把研究結果呈給他。你向他詢問,是否認為自己真的解決了問題?在長時間的沉默之后,他終于喃喃自語道,他解決了數據集顯示的任務,但他并不知道狗長什么樣,也不知道狗和貓之間有什么不同……
很明顯,他作弊了,因為他解決任務目的和你想要的目的無關。不過,他又沒有作弊,因為他的解決方案確實是有效的。然而,其他學生的表現都不怎么樣。他們試圖通過問題來解決任務,而不是通過原始數據集。雖然,他們的程序運行得并不好,倒也沒有犯奇怪的錯誤。
深度學習的祝福和詛咒
深度學習是一種技術,它使用一種稱為梯度反向傳播的優化技術來生成“程序”(也稱為“神經網絡”),就像上面故事中學者學生編寫的那些程序一樣。這些“程序”和優化技術對世界一無所知,它所關心的只是構建一組轉換和條件,將正確的標簽分配給數據集中的正確圖像。
通過向訓練集添加更多的數據,可以消除虛假的偏差,但是,伴隨著數百萬個參數和數千個條件檢查,反向傳播生成的“程序”會非常大,非常復雜,因此它們可以鎖定更細微偏差的組合。任何通過分配正確標簽,來統計優化目標函數的方法都可以使用,不管是否與任務的“語義精神”有關。
這些網絡最終能鎖定“語義正確”的先驗嗎?當然可以。但是現在有大量的證據表明,這并不是這些網絡分內之事。相反的例子表明,對圖像進行非常微小的、無法察覺的修改就可以改變檢測結果。
研究人員對訓練過的數據集的新示例進行了研究,結果表明,原始數據集之外的泛化要比數據集內的泛化弱得多,因此說明,網絡所依賴的給定數據集具有特定的低層特性。在某些情況下,修改單個像素就足以產生一個新的深度網絡分類器。
在某種程度上,深度學習最大的優勢就是自動創建沒有人會想到的特性能力,這同時也是它最大的弱點,因為大多數這些功能至少在語義上看起來,可以說是“可疑的”。
什么時候有意義,什么時候沒有意義?
深度學習對于計算機視覺系統來說無疑是一個有趣的補充。我們現在可以相對容易地“訓練”探測器來探測那些昂貴且不切實際的物體。我們還可以在一定程度上擴展這些檢測器,以使用更多的計算能力。
但我們為這種奢侈付出的代價是高昂的:我們不知道深度學習是如何做出判斷,而且我們確實知道,分類的依據很可能與任務的“語義精神”無關。而且,只要輸入數據違反訓練集中的低水平偏差,檢測器就會出現失效。這些失效條件目前尚且不為人知。
因此,在實踐中,深度學習對于那些錯誤不是很嚴重,并且保證輸入不會與訓練數據集有很大差異的應用程序非常有用,這些應用能夠承受5%以內的錯誤率就沒問題,包括圖像搜索、監視、自動化零售,以及幾乎所有不是“關鍵任務”的東西。
具有諷刺意味的是,大多數人認為深度學習是應用領域的一次革命,因為深度學習的決策具有實時性,錯誤具有重大性,甚至會導致致命的結果,如自動駕駛汽車,自主機器人(例如,最近的研究表明,基于深層神經網絡的自主駕駛確實容易受到現實生活中的對抗性攻擊)。我只能將這種信念描述為對“不幸”的誤解。
一些人對深度學習在醫學和診斷中的應用寄予厚望。然而,在這方面也有一些令人擔憂的發現,例如,針對一個機構數據的模型未能很好地檢測另一個機構數據。這再次印證了一種觀點:這些模型獲取的數據要比許多研究人員所希望的更淺。
數據比我們想象的要淺
出人意料的是,深度學習教會了我們一些關于視覺數據(通常是高維數據)的東西,這個觀點十分有趣:在某種程度上,數據比我們過去認為的要“淺”得多。
似乎有更多的方法來統計地分離標有高級人類類別的可視化數據集,然后有更多的方法來分離這些“語義正確”的數據集。換句話說,這組低水平的圖像特征比我們想象的更具“統計意義”。這是深度學習的偉大發現。
如何生成“語義上合理”的方法來分離可視數據集模型的問題仍然存在,事實上,這個問題現在似乎比以前更難回答。
結論
深度學習已經成為計算機視覺系統的重要組成部分。但是傳統的計算機視覺并沒有走到那一步,而且,它仍然可以用來建造非常強大的探測器。這些人工制作的檢測器在某些特定的數據集度量上可能無法實現深度學習的高性能,但是可以保證依賴于輸入的“語義相關”特性集。
深度學習提供了統計性能強大的檢測器,而且不需要犧牲特征工程,不過仍然需要有大量的標記數據、大量GPU,以及深度學習專家。然而,這些強大的檢測器也會遭遇意外的失敗,因為它們的適用范圍無法輕易地描述(或者更確切地說,根本無法描述)。
需要注意的是,上面的討論都與“人工智能”中的AI無關。我不認為像深度學習與解決人工智能的問題有任何關系。但我確實認為,將深度學習、特性工程和邏輯推理結合起來,可以在廣泛的自動化空間中實現非常有趣和有用的技術能力。
編輯:jq
-
gpu
+關注
關注
28文章
4701瀏覽量
128705 -
人工智能
+關注
關注
1791文章
46858瀏覽量
237552 -
計算機視覺
+關注
關注
8文章
1696瀏覽量
45927 -
數據集
+關注
關注
4文章
1205瀏覽量
24643
原文標題:反思深度學習與傳統計算機視覺的關系
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論