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