机器视觉与深度神经网络—洗去浮华,一窥珠玑
近年來(lái)機(jī)器學(xué)習(xí)、AI領(lǐng)域隨著深度神經(jīng)網(wǎng)絡(luò)(DNN)的崛起而迎來(lái)新一波的春天,尤其最近兩年無(wú)論學(xué)界還是業(yè)界,或是各大媒體,甚至文盲老百姓都言必稱(chēng)“智能”。關(guān)于這方面,可討論的東西實(shí)在太多太多,我不想寫(xiě)成一本厚厚的書(shū),所以在此僅以機(jī)器學(xué)習(xí)在計(jì)算機(jī)視覺(jué)和圖像領(lǐng)域的人臉識(shí)別應(yīng)用作為一個(gè)例子,來(lái)陪著大家看看這場(chǎng)熱潮、浮華背后有哪些被專(zhuān)家學(xué)者們忽視或輕視,但卻有著根本性重要的東西,并同時(shí)提出本領(lǐng)域的若干值得展開(kāi)的創(chuàng)新性研究方向。好了,廢話(huà)少說(shuō),且看DNN的大戲上演。
2014年對(duì)于人臉識(shí)別領(lǐng)域來(lái)講可謂是“歡欣鼓舞”的一年,在LFW數(shù)據(jù)集(labeled faces in the wild)上的評(píng)測(cè)結(jié)果被連續(xù)“刷表”,首先是Facebook的AI Lab發(fā)表論文DeepFace報(bào)告了accuracy達(dá)到97.25%,緊接著Face++的《Learning Deep Face Representation》小小勝出達(dá)到97.3%,結(jié)果板凳還沒(méi)坐熱就被香港中文大學(xué)的Xiaoou Tang和Xiaogang Wang實(shí)驗(yàn)室的GaussianFace刷到了98.52%,宣稱(chēng)首次超越了“人類(lèi)的識(shí)別能力”(97.53%)。然后,此次在新加坡VISVA 2014 winter-school上看到Xiaogang Wang報(bào)告,他們最新的DeepID2將上述記錄刷到了99.15%。下圖1是引自GaussianFace一文,作為展示各大新近算法那“優(yōu)美”ROC曲線的一個(gè)示例。
圖1:多種算法在LFW數(shù)據(jù)集上的ROC曲線
可以想象,各大科技媒體、投資機(jī)構(gòu)、業(yè)界巨頭等都將目光、熱忱投向了AI領(lǐng)域,仿佛雙目所及都是滿(mǎn)滿(mǎn)的“$_$”;各大磚家學(xué)者、大蝦菜鳥(niǎo)也都或奔走相告、粉墨登場(chǎng)如巡回演唱般,或摩拳擦掌、瘋狂涌入想著趁熱沾沾光、分一杯羹。
古人云,“不知者不罪”,對(duì)于那些不懂AI、機(jī)器學(xué)習(xí)以及深度神經(jīng)網(wǎng)絡(luò)(后簡(jiǎn)稱(chēng)DNN)理論及方法的人還情有可原,但是那些具備多年知識(shí)積淀和實(shí)戰(zhàn)經(jīng)驗(yàn)的磚家們,我就分不清他們是真的“too young too naive”還是另有原因了。在這場(chǎng)浮華背后,我為大家撥開(kāi)云霧,看看那些被忽視或掩蓋起來(lái)的本質(zhì)問(wèn)題。
1Unfair comparison
各大研究機(jī)構(gòu)論文中報(bào)告的accuracy,通常都會(huì)同時(shí)與其它的多個(gè)算法系統(tǒng)進(jìn)行對(duì)比,但是這些對(duì)比是unfair的!因?yàn)樗鼈冊(cè)谀P偷挠?xùn)練階段,使用的training data差別迥異,而且絕大多數(shù)image都是不在LFW數(shù)據(jù)集里面out-set data。眾所周知,欲對(duì)比算法、模型的優(yōu)劣,必先固定訓(xùn)練數(shù)據(jù)集與測(cè)試數(shù)據(jù)集,為各candidates營(yíng)造公平的周邊條件和評(píng)價(jià)準(zhǔn)繩。
2算法之間的性能差異未經(jīng)統(tǒng)計(jì)檢驗(yàn)——不靠譜
“拍拍腦袋,設(shè)計(jì)了一個(gè)新算法,一頓coding之后,放到XXX數(shù)據(jù)集上一跑,做個(gè)10-fold cross validation,拿著accuracy rate跟其它論文方法一對(duì)比,發(fā)現(xiàn)有0.5個(gè)百分點(diǎn)的提升,于是欣喜若狂、普大喜奔、paper滿(mǎn)天飛”……這就是計(jì)算機(jī)視覺(jué)領(lǐng)域乃至整個(gè)AI領(lǐng)域的現(xiàn)狀。然而,學(xué)過(guò)統(tǒng)計(jì)的人都應(yīng)該提這樣的問(wèn)題:“算法A與算法B的差異,究竟是隨機(jī)因素引起的波動(dòng),還是具有統(tǒng)計(jì)顯著性的?它們的output error rate波動(dòng)特性如何?……”這本身又可以看成一個(gè)假設(shè)檢驗(yàn)問(wèn)題,例如可使用ANOVA、F-test、t-檢驗(yàn)等來(lái)研究,看看是否在 (=0.05)顯著性水平上,算法A優(yōu)于算法B這個(gè)假設(shè)是可接受的。但可笑的是,從未見(jiàn)有人用這種“科學(xué)”態(tài)度和精神來(lái)對(duì)待這些“科學(xué)問(wèn)題”!
3人臉識(shí)別算法性能超越人類(lèi)?——我讀書(shū)少,你別騙我
假設(shè)某算法A在某數(shù)據(jù)集X上的accuracy比某“人”的識(shí)別結(jié)果高,能斷言算法A優(yōu)于“人類(lèi)”的識(shí)別性能嗎?請(qǐng)別欺我沒(méi)學(xué)過(guò)統(tǒng)計(jì)。這個(gè)問(wèn)題有點(diǎn)類(lèi)似上述問(wèn)題2,但是稍微更復(fù)雜點(diǎn)。
對(duì)于一個(gè)具體的人,例如張三,他的decision model可以簡(jiǎn)記為“算法B”。而“人類(lèi)”是一個(gè)類(lèi)屬概念,可以認(rèn)為是很多不同的decision models構(gòu)成的model-class。好吧,至此在我有限的知識(shí)范圍內(nèi),縱觀數(shù)學(xué)和計(jì)算機(jī)學(xué)界還沒(méi)有人提出過(guò)一個(gè)合理的metric(度量),來(lái)評(píng)價(jià)一個(gè)算法A與某個(gè)“模型族”的性能差異,以及該差異的統(tǒng)計(jì)檢驗(yàn)指標(biāo)……
如果有哪位專(zhuān)家對(duì)此領(lǐng)域頗有建樹(shù),已經(jīng)超越美帝、秘密而低調(diào)地走在國(guó)際最前沿,還敬請(qǐng)回信指教,在此我先行謝過(guò)。
4只看數(shù)字指標(biāo),忘了產(chǎn)品和應(yīng)用“標(biāo)的”
究竟我們研究人臉識(shí)別算法干嘛用?這里簡(jiǎn)單談兩個(gè)方面的應(yīng)用,一者娛樂(lè)用,另一者那是相當(dāng)?shù)摹安粖蕵?lè)”啊。先說(shuō)前者,舉個(gè)栗子就是百度魔圖去年搞的“pk大咖明星臉”(測(cè)測(cè)你與哪個(gè)明星長(zhǎng)得像,如圖2a)和“全民大穿越”(看看你跟各種電視劇里的誰(shuí)比較像,圖2b)。顯然,對(duì)于這樣的非嚴(yán)肅場(chǎng)景,即使識(shí)別錯(cuò)了也無(wú)妨,甚至還錯(cuò)得蠻可愛(ài)的。在這類(lèi)應(yīng)用中,根本無(wú)需太追求算法的accuracy,更遑論絞盡腦汁、苦苦地追尋那97%到98%的微不足道的、毫無(wú)意義的提升。
圖2:百度魔圖的兩個(gè)娛樂(lè)應(yīng)用
然而對(duì)于另一類(lèi)應(yīng)用,例如biometric(生物身份識(shí)別),那就千萬(wàn)馬虎不得了。打個(gè)比方某銀行推出了“刷臉取錢(qián)”的快捷服務(wù),就是你往ATM機(jī)前一站,它能自動(dòng)識(shí)別你是張三還是李四,然后驗(yàn)證通過(guò)就咔咔吐出一堆鈔票,確實(shí)挺酷。現(xiàn)在拿目前最先進(jìn)的算法DeepID2來(lái)看,號(hào)稱(chēng)accuracy 99%。于是張三在ATM機(jī)前多晃悠幾十次,就沒(méi)準(zhǔn)碰上被誤識(shí)別為李四,畢竟1%的概率嘛(這是個(gè)戲謔的概數(shù),嚴(yán)謹(jǐn)來(lái)說(shuō)不是這個(gè)值,此處暫且按下不表),然后把李四賬戶(hù)的錢(qián)全卷跑了。
通常,在金融系統(tǒng)中,要求在0.1%的FAR(false accept rate)下verification rate達(dá)到99%,才可以投入實(shí)用。而根據(jù)最新的研究發(fā)現(xiàn),在FAR=0.1%的約束下,目前最好的算法verification rate=41.66%,還遠(yuǎn)遠(yuǎn)達(dá)不到實(shí)用的地步。
至此,我所理解的全世界專(zhuān)家們孜孜不倦地追求high accuracy的算法,應(yīng)該是要應(yīng)用到類(lèi)似biometric這樣的嚴(yán)肅場(chǎng)合。那么問(wèn)題來(lái)了,他們?yōu)楹尾恢苯硬捎眠@類(lèi)場(chǎng)合通用的評(píng)價(jià)標(biāo)準(zhǔn)“verification rate @ low FAR”,卻籠統(tǒng)地用了個(gè)掩耳盜鈴的accuracy。
5全自動(dòng)機(jī)器學(xué)習(xí)?——作為“人”還是別對(duì)自己的智商妄自菲薄吧
很多技術(shù)論壇以及國(guó)際學(xué)術(shù)會(huì)議上,都常常聽(tīng)到某些“看起來(lái)像是”磚家大神的,吐沫橫飛地講著“用DNN可以讓機(jī)器實(shí)現(xiàn)全自動(dòng)地學(xué)習(xí),并超越人類(lèi)handcrafted的特征和方法”,抑或是言必稱(chēng)DNN多么多么復(fù)雜,不把自己顯得高大上誓不罷休。其實(shí)在我看來(lái),DNN是非常非常簡(jiǎn)單的一個(gè)東西,它的外在的、看似復(fù)雜的樣子也只是由內(nèi)在的很多簡(jiǎn)單的組件加在一起所展現(xiàn)出來(lái)的表面的繁雜而已(在此暫不展開(kāi)說(shuō))。而且更重要的是,說(shuō)handcrafted或啟發(fā)式方法不好,那純粹是一種惡意的詆毀。
首先,DNN本身的結(jié)構(gòu)中,layer的數(shù)量、每個(gè)layer的node數(shù)、卷積層與全連接層的組合模式、卷積kernel的大小、max-pooling層的位置、輸出層的log-transform、輸入層的數(shù)據(jù)模式等等,無(wú)一不是handcrafted。除了結(jié)構(gòu)和參數(shù),就連訓(xùn)練方法中也融入了很多啟發(fā)式的設(shè)置,例如采用drop-out來(lái)緩解耦合與過(guò)擬合,又如神經(jīng)元之間以及相鄰layer之間的locality-influence方式來(lái)幫助增強(qiáng)稀疏化。
其次,除了DNN外,無(wú)論logistic regression(LR)還是SVM或是其它很多模型,都是人類(lèi)智慧的結(jié)晶,是非常美的東西。例如LR中sigmod函數(shù)(也常被用于DNN)的平滑、對(duì)稱(chēng)和雙邊飽和特性,又如SVM的最大間隔原理和VC維理論所刻畫(huà)的簡(jiǎn)單性原理,這些都是極其符合自然美學(xué)的設(shè)計(jì),也彰顯了大繁至簡(jiǎn)。其實(shí)將最大間隔與VC維的理念融入DNN,尋找結(jié)合點(diǎn),也是很值得研究的方向之一,直覺(jué)能夠?yàn)镈NN帶來(lái)再一次的不小的提升。
此外,還有值得一提的是,DNN的高層網(wǎng)絡(luò)中,某些神經(jīng)元的刺激響應(yīng)模式類(lèi)似圖3a所示,對(duì)人臉和貓臉的輪廓會(huì)輸出極大響應(yīng)值。聯(lián)想PCA人臉識(shí)別方法中的eigenface,如圖3b所示,其實(shí)兩者存在很多相似的地方,這絕非偶然。實(shí)際上,DNN在某種意義上可以理解為一種級(jí)聯(lián)的變換或encoder,在information loss和對(duì)非線性的處理能力上增強(qiáng)了;而PCA是一種線性變換,對(duì)于數(shù)據(jù)的非線性特性和豐富的細(xì)節(jié),描述能力較差(information loss較大),所以出現(xiàn)圖3這樣的差別就不難理解了。在某種意義上可以把DNN看做“非線性化的PCA”。事實(shí)上,筆者思考和粗略提出了clustering-based PCA以及multi-stage residual-boosting PCA方法,感興趣的讀者可以交流并一起嘗試研究,或許可以揭示DNN與PCA的某些內(nèi)在關(guān)聯(lián)。
圖3:DNN人臉&貓臉(a)與PCA的eigenface(b)
行文至此,作為總結(jié),皆化作一句話(huà):“面臨機(jī)器學(xué)習(xí)尤其是DNN被大肆吹捧的熱潮和浮華,諸君當(dāng)冷靜而理性視之,做到不卑不亢、靜水流深,方能真正登堂入室”。
本文來(lái)源于"中國(guó)人工智能學(xué)會(huì)",原文發(fā)表時(shí)間""總結(jié)
以上是生活随笔為你收集整理的机器视觉与深度神经网络—洗去浮华,一窥珠玑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux最佳聊天软件:Skype 4.
- 下一篇: 《动手玩转Arduino》——2.4 展