當AI深度學習模型走進死胡同時該咋辦?
深度學習是一項龐大又復雜的工程,在建立深度學習模型時,走進死胡同被迫從頭再來似乎是常事。
本文引用地址:http://m.butianyuan.cn/article/201807/384323.htm近日,Semantics3網(wǎng)站的聯(lián)合創(chuàng)始人Govind Chandrasekhar在官方博客上發(fā)表了一篇文章,講述了程序員在解決深度學習問題時的應該自問的五個問題。
Semantics3是一家2012年成立的數(shù)據(jù)科學初創(chuàng)公司,它創(chuàng)建了一個數(shù)據(jù)庫,跟蹤產(chǎn)品在網(wǎng)上的銷售過程,為零售商提供數(shù)據(jù)。對于Govind Chandrasekhar寫的這篇文章如下:
研究數(shù)據(jù)科學是一件悲喜交加的事情。喜在當你偶然的發(fā)現(xiàn)提高了算法的性能,可能讓你擁有持久的興奮感;悲在你會經(jīng)常發(fā)現(xiàn)自己站在一條單行道的盡頭,苦苦探索到底哪里出了問題。
在這篇文章里,我將詳述走過無數(shù)條深度學習死路后,得到的五個教訓。在處理新問題或新方法前,我都會用想想下面這五個問題。
問題一:
先不管神經(jīng)網(wǎng)絡,一個沒有先驗知識、只受過你的數(shù)據(jù)集訓練的人能解決這個問題嗎?
這個問題對解決監(jiān)督學習的困境尤為受用——這些問題的典型前提是,一個小的高質量數(shù)據(jù)集(比如N個實體)可以幫助你的模型近似得到一個潛在的功能,之后泛化到包含1000N個實體的整個數(shù)據(jù)集。
這些方法的好處在于,人類只需要研究很小部分數(shù)據(jù)就可以了,機器會學會把它運用到大范圍的示例中。
但是在現(xiàn)實世界中,問題不總是含有可以被優(yōu)先識別的模式。人們利用外部常識來解決的認知挑戰(zhàn)比我們意識到的還要多,這經(jīng)常導致我們錯誤地期望我們的算法在沒有常識的情況下能夠解決同樣的挑戰(zhàn)。
舉個例子吧,看下面這三種描述:
Pets First Arkansas Dog Jersey, X-Small, Pink
Pets First Arizona Dog Jersey, X-Small, Pink
Pets First AR Dog Jersey, X-Small, Pink
這三組描述中,有兩個表示的含義相同,你能找出那個含義不同的嗎?
大多數(shù)美國人都不難解決這個問題,因為AR=Arkansas,AR!=Arizona是個常識。但是,一個對美國并不熟悉的人,可能就不知道答案是什么了。
你會發(fā)現(xiàn),你創(chuàng)建的神經(jīng)網(wǎng)絡也沒有能力解決這個問題,因為在語言應用這方面,沒有特定的縮寫規(guī)則可以供神經(jīng)網(wǎng)絡去模仿。當然指定了Arkansas等同于AR的情況除外。
類似這樣的問題還有很多(可能在一開始你并不理解這些問題),并且它們在實際工作中還經(jīng)常出現(xiàn)。回頭審視之前建造的神經(jīng)網(wǎng)絡,并且明確需要補充的新知識是非常困難的。所以,在構建神經(jīng)網(wǎng)絡時,要及時跳出自己的思維定式。
問題二:
你構建的神經(jīng)網(wǎng)絡能通過正確的視角理解你的數(shù)據(jù)嗎?
假設地區(qū)的縮寫始終是名字的前兩個字母,同時這個縮寫不會重復。那么,我們再來用不同的示例回看剛剛的匹配問題:
“Pets First Arkansas Dog Jersey, X-Small”
“Pets First Arkansas Dog Jersey, Extra-Small”
“Pets First AR Dog Jersey, X-Small”
“Pets First Arkansas Dog Jersey, Large”
“Pets First MA Dog Jersey, Large”
你的目標是建立一個神經(jīng)網(wǎng)絡用于識別1、2、3等價而4、5不同。這個任務是在考驗神經(jīng)網(wǎng)絡對“大小”這個概念理解——它們是否知道X-Small=Extra-Small ?也是在考驗它對縮寫的理解能力,比如Arkansas=ARkansas=AR因為前兩個字母相同,而Arkansas不等于MA,等等。
你可能會通過Word2Vec來構建一個嵌入空間,將 X-Small映射為Extra-Small來解決這個問題。
盡管這種方法是一個標準解法,但可能你會妨礙神經(jīng)網(wǎng)絡找到你想讓它學習的內容。如果把AR換成小寫的ar,對人類來說就比較難識別了,我們會糾結ar到底指的的Arizona還是are。
同樣,如果你選擇建立詞匯的嵌入空間,有效地將每一個單詞映射到唯一的標記,那么你就掐斷了神經(jīng)網(wǎng)絡理解組成字符“ARkansans”的機會。
這種模糊網(wǎng)絡問題在你構建網(wǎng)絡時經(jīng)常出現(xiàn),尤其是在建立考慮不同類型的輸入信號的模型時。
問題三:
你的網(wǎng)絡是在鉆你訓練集里的牛角尖,還是幫你解決手頭的問題?
假設你正在構建一個二分的圖像分類器,來檢查文檔中的文本是計算機打印的還是手寫的。為了構建計算機打印文本的訓練數(shù)據(jù)集,你用電腦上的軟件直接生成了帶文字的jpeg圖片;為了獲取手寫文本的樣本,你把這些jpeg圖片發(fā)送到做數(shù)據(jù)標注的公司,讓他們把這些圖片轉錄成文字,并將掃描成jpeg文件。
之后,就可以運行你的分類器了。不要高興得太早,雖然目前它的訓練準確率已經(jīng)超過了99%,但當我們用實際場景來測試時,分類器表現(xiàn)并不好。這是為什么呢?
你構建的神經(jīng)網(wǎng)絡可能帶有簡單的指示性偏差,掃描手寫的圖片可能帶有灰白的背景色,而軟件生成的JPEG是純白色的背景。你的神經(jīng)網(wǎng)絡為了解決你交給它的問題,可能并沒有去分析內容、上下文、形狀和顏色等要素,而是只抓住了背景色的這一點微小差別。
需要記住的是,你的神經(jīng)網(wǎng)絡永遠都不會明白你的大方向,它所做的就是基于手頭的目標和數(shù)據(jù),以最簡單的方式盡快給出一個答案。
徹底審查你的數(shù)據(jù)集,消除可供神經(jīng)網(wǎng)絡鉆牛角尖的特征,可以節(jié)約成本和時間。
問題四:
你的網(wǎng)絡有兄弟問題可以為它提供支持嗎?
在特定領域的問題上,諸如GloVe和Inception之類的預先訓練模型可能并不好用。這將迫使你開始隨機初始化神經(jīng)網(wǎng)絡,也就意味著可能經(jīng)過好幾天的訓練,你還不知道自己的模型效果如何。
你的模型可能還面臨著一個問題:數(shù)據(jù)集太小了或者質量太差了,即使通過旋轉、變形等手段擴充之后,也還是達不到訓練的要求。
在這種情況下,尋找它的兄弟問題可能是個解決辦法。但要注意,這些問題需要符合兩個標準:
它們不能和你手頭的數(shù)據(jù)集有同質量和數(shù)量的問題。
它們的神經(jīng)網(wǎng)絡需要有一組層,能捕捉到你的模型所需的概念。
問題五:
你的網(wǎng)絡是做不到還是懶?如果它懶,如何逼迫它學習?
假如你是一個繪畫外行,讓你猜測三幅昂貴的繪畫作品價格。有三個可用信息可供你查看——作品的年限、作品十年前的價格和這幅畫的高分辨率圖像。
在沒有經(jīng)過前期訓練的情況下,讓你完成這個任務,給出盡可能正確的答案,你會怎么辦?
你是會報名參加一個為期兩月的繪畫課程,來學習復雜的繪畫技藝,還是會考慮用作品的年限和十年前的價格做一個方程來猜測價格?
即使你能意識到理想的價格方程式包含這三種信息的組合,但你還是很愿意接受一個懶惰的選項:、用兩種信息來進行預測。雖然這個選項不是最優(yōu)解,但也是在能接受范圍的。你會更傾向只依賴容易理解和表達的信息。
在用機器學習解決真實問題時,如果你的模型有多個輸入信息,它們的復雜度差異很大時,也會遇到這個問題。對這樣的模型進行訓練,幾個周期之后,你可能會發(fā)現(xiàn)你的模型好像已經(jīng)接近完成,并且拒絕進一步學習。
在這種情況下,最好的解決方法是去掉一個輸入項,看整體指標的變化。如果一個輸入項和結果相關,去掉了之后卻對結果毫無影響,你就應該考慮單獨用這個輸入項來訓練模型,當模型學會了依據(jù)這個輸入項做判斷之后,再逐漸將其余的信息也加入進來。
評論