深度學習筆記(21):結構化機器學習項目的一般策略總結(3)

手工分析的必要性:誤差分析

比如我們在分類貓模型中,得到了error是10%。我們去查看了判斷錯誤的測試集,嘗試去優化,使得模型更加準確。我們發現,模型將一些長得像貓的狗的照片分類出來了。那麼問題就來了,我們應不應該爲此專門地去設計一下狗的分類器進而優化呢。
這裏面我們就要考慮到,這個問題到底會不會顯著影響到我們的準確度,考慮到新建一個分類器在實際過程中可能要耗時數天或者數月。

在這裏插入圖片描述
我們應該先去做的是,去花費幾分鐘或者幾小時,人工干預一下,把每一個分類錯誤的數據地類型都填寫到表格中彙總統計。然後根據佔比決定我們是否值得對於某一個部分特殊考慮特殊優化。那些我們可以預料的沒有顯著影響的,就沒有必要再去考慮了,我們也就不會在上面浪費時間。

在這裏插入圖片描述

對於那些標記錯誤的數據,我們該怎麼辦

我們很容易想到,在標記中可能會有一些疏忽,比如按錯鍵等等,使得標記的y並不對,那我們應該怎麼處理呢?

在這裏插入圖片描述

如果說這些錯誤是隨機的沒有規律的,那其實我們不用去專門將標記錯誤的數據修改掉,他們對於結果並不會有很大影響。值得考慮的地方是,你要去看,那些標記錯誤的數據集(當然標記錯誤和分類器無關,分類器判斷正確和錯誤的數據集都要檢查,當然,工作量很大)裏面是不是有共性的標記傾向,比如把所有的白色狗都標記成貓,這些地方是會讓我們的神經網絡的判斷產生偏頗的。
相比於其他地方的優化,因爲這部分工作量比較大,所以我們把它放到清單的後半部分考慮。
在這裏插入圖片描述
比如該表中,我們就應該想到先去優化狗造成的影響。直到別的大的,同等級的,甚至佔比低一些的都考慮完成後,我們再去考慮標記錯誤造成的影響這部分。

優化目標和訓練集分佈不同引發的思考

很多時候,我們其實無法在現實生活中收集我們所要優化的領域的足量數據,但是卻可以收集到足量的近似領域的數據。比如在我們優化識別貓模型中,我們手裏有大量高清的貓的圖片(比如說200,000張照片),但是用戶app端上傳的都是比較模糊的圖片,我們手裏有數量較少的這部分照片(比如說10,000張),很顯然,我們並不能說這兩者來自同一分佈。
在這裏插入圖片描述

這時候我們就要面臨着抉擇,一種想法是拋棄掉那些大量的高清圖片,然後只用一個分佈下的模糊圖片進行訓練和測試,當然這樣的話,我們會由於數據量過少而造成並不準確的問題(訓練集僅僅爲千級別的),這種方案肯定不行。

那麼我們把這兩部分數據打亂掉,然後再去劃分開呢?我們會發現,由於高清照片佔主導,實際上我們的優化目標和訓練集中近似於全部是高清圖片,這時候我們就把靶子放錯位置了。
卻實實在在地解放了思想的方法橫空出世了。就是將所有的高清圖片(200,000)加上少部分模糊圖片(5,000)作爲train,而把dev和test都設置成模糊圖片(各爲2,500個)。
在這裏插入圖片描述
有同學可能就問了,這不離譜嗎?這都不是同一個分佈啊,怎麼能優化出來呢?事實上,高清和模糊的數據集並不是完全沒有關係,我們不想完全通過狹小的模糊圖片數據集來訓練,我們想要利用更多的知識,把高清的圖片所具有的貓的知識爲我所用,遷移過來。遷移學習的思想開始誕生了。我們後面再細說。

不同數據劃分的偏差和方差應該如何衡量

我們在上述劃分之後,由於開始耦合起來,我們不知道如果按照原來的劃分各個集合上的錯誤率之間的關係代表什麼。我們需要重新劃分。

在這裏插入圖片描述
我們製造出兩個dev,一個是和訓練集同分布的train-dev,一個是用來作爲優化目標的dev,這樣的話,我們就可以對比train error和train-dev error看出來模型到底是具有偏差,對比train-dev和dev以及dev和test看是否具有過擬合的方差等等,決定我們下一步如何調優。
在這裏插入圖片描述

人工干預,定位數據不匹配

識別中,我們想利用正常語音的知識,(和具有汽車噪音下的語音信息當然有一定區別)去學習汽車行駛中人發出語音指令的識別。我們需要去人工查看一下,正常語音和汽車行駛狀態下,人語音的區別,比如內容上的區別(汽車語音指令可能涉及到更多的地址),還有一些汽車噪音等。他們之間的距離越相近,模型的效果當然就會越好。

在我們人工查看並且定位到了之間的區別之後,我們就可以通過一些手段使其彼此靠近。比如說我們可以通過參加汽車噪音,將普通語音轉化成汽車語音。(我們需要注意,雖然人耳無法聽出來,但是如果我們使用一個小時的噪音反覆加入合成數據,會導致對於汽車噪音的過擬合)
在這裏插入圖片描述
同樣好玩的理論,爲啥我們不能通過將遊戲裏面的車換不同視角截圖,然後製造出大量數據集呢。其實每個遊戲裏面的車的種類也就幾十種,產生再多的照片也就是會讓機器擬合他們罷了,所以這個設想是沒用滴。還得老老實實找各種車的照片,或者想別的辦法。
在這裏插入圖片描述

遷移學習

其實之前我們一直都在滲透遷移學習的思想啦。

遷移學習其實就是通過將和B領域相近的A的數據也放到B模型的訓練中,想把一個領域(A)的知識遷移到另一個領域(B)上來。因爲有時候可能我們手裏的A的數據更加的多,而B相對較少,那麼這時遷移學習可以或多或少的將A的部分知識學到B的模型中,這樣的話有了更多的知識就可以使得模型的各項能力,泛化準確度等等都增強。

在這裏插入圖片描述

多任務學習

和遷移學習思路類似,不過這次是想從類似領域的任務中獲取知識,把可以在不同分類器中完成的任務放在一個分類器中完成,進而內部相互學習。
在這裏插入圖片描述
舉例說明,當我們AA1 ,AA2,AA3…等若干分類任務,每個數據量都是1000個,一個直覺的就是我先分開考慮,對於這些分類任務分別構造自己的分類器,最後放在一起進行查看。但是這樣的話其實數據量少這一缺陷就會很明顯了。
一個合理的做法是使用多任務學習同時訓練,這時候期望着他們可以彼此學到一些東西(即使是淺層的也好)。研究表明我們使用深層大型神經網絡這麼做的效果不會比單獨分開效果差,只會更好。
在這裏插入圖片描述

端到端學習

在各個AI領域,機器學習過程被多年的經驗拆分成了各個環節:
比如在語音識別中,一般是會按照,從語音(x)出發,特徵提取,機器學習,拆分成詞,得到結果這樣的步驟進行(得到最後的y)。
端到端的學習就是指直接從x出發得到y,而不在中間加入任何環節。

在這裏插入圖片描述

端到端學習其實是是一把雙刃劍,一方面這避免了人的固有假設和步驟造成的侷限性,比如我們永遠也不知道自己的設置的步驟可能看起來會使得模型優化,但是他也失去了自己的創造性和變化性。
另一方面,端到端學習,因爲沒有任何人類知識的干預,機器需要自己去走很多的彎路,他的訓練成本,所需要餵養的數據,所需要優化的時間等都爆炸級增加,使得很多東西變得不切實際了起來。

舉例說明,比如說工大的圖書館人臉識別裝置,實際上如果是不加干預的端到端學習,是將攝像頭拍到的整個畫面,映射到人的信息上進行對應,是端到端的訓練,端到端的識別。如果是我們來分步驟,可能會先去提取出人臉到底在哪裏,然後把人臉放大,再作爲訓練集進行訓練,這樣很顯然因爲我們人的知識使其更進一步導致訓練和識別變得簡單起來。再比如說通過x光,看骨骼判斷這個人多少歲,我們人可能會加知識,先判斷出每個骨頭多長,然後最去訓練骨頭長度和歲數的關係。但是如果是端到端,可能就需要自己去挖掘這一點(或者說它自己可以找到新的方法,不過如果真的有別的很顯然的方法,那人類的智商真是受到侮辱了),進而效率急速下降了。

總結來看,如果我們有足夠多的數據,我們可以嘗試端到端學習;否則,按照一定的步驟去做往往會使得數據的訓練和識別變得更簡單,數據量需求更實際。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章