當前位置:
首頁 > 教育 > 遷移學習:如何在自然語言處理和計算機視覺中應用?

遷移學習:如何在自然語言處理和計算機視覺中應用?

遷移學習:如何在自然語言處理和計算機視覺中應用?

在這篇文章中,我將討論兩個關於遷移學習的應用:NLP(自然語言處理)和CV(計算機視覺)。並且我會分別在這兩個領域提供一個範例。

NLP

現在很多NLP管道都在使用詞嵌入(word embedding)。與獨熱編碼相比,這些單詞的嵌入是一種更豐富的表示單詞的方式。它們被廣泛使用,並且存在著不同的變體。通常,這些變體在其起源的語料庫中有所不同,例如維基百科、新聞文章等,以及嵌入的模型也有所不同。了解這些模型和語料庫的背景知識是很重要的,從而可以了解是否使用詞嵌入學習是明智的。人們通常不會使用「嵌入式」遷移學習,但我不同意,因為這與計算機視覺上的轉移學習有相似之處。從本質上說,使用詞嵌入意味著你在使用一個特徵或者嵌入網路來將文字轉換成信息載體。

遷移學習:如何在自然語言處理和計算機視覺中應用?

在NLP中,有不同的方法來表示單詞(在左邊是一個詞嵌入的表示,在右邊是一個弓形的表示)。使用詞嵌入機器學習模型可以利用存在於不同辭彙之間的關係。

儘管word2vec已經4歲了,但它仍然是一個非常有影響力的詞嵌入方法。最近的另一種方法,如FastText,已經使許多語言中可以使用詞嵌入了。與詞袋(bag-of-words:是個在自然語言處理和信息檢索(IR)下被簡化的表達模型。此模型下,像是句子或是文件這樣的文字可以用一個袋子裝著這些詞的方式表現,這種表現方式不考慮文法以及詞的順序。)方法相比,從word2vec或FastText中獲得的嵌入是一個重要的進步。然而,它們的有效性通常由問題的領域來決定。

想像一下,你正在為銷售人員建立一個新聞推薦服務。銷售人員想要接收那些可能對他們正在銷售的產品感興趣的公司的新聞。在新聞文章中使用的辭彙一般是相當通用的,這意味著使用了大多數詞嵌入所支持的辭彙表(取決於它們所接受的語料庫)。此外,如果你有銷售人員收集的他們閱讀了幾周的新聞文章,那麼你馬上就會有一個很大的標記語料庫。通過重用詞嵌入,推薦引擎可能比簡單的弓形模型表現要好得多。

另一方面,假設你必須在法律合同上執行主題分類。不只是任何形式的法律合同,而是在競爭法環境下的一種法國的法律合同。這些類型的數據集通常不被標記,或者只有一組有限的標記文檔可用。下一節將描述為什麼開箱即用(out of the box)的遷移學習會讓你在這種情況下獲得如此大的幫助:

  • 辭彙表外的(OOV)單詞是在訓練中沒有出現的單詞。雖然word2vec和FastText都是在維基百科或其他語料庫上經過訓練的,但能使用的辭彙量是有限的。在訓練中,沒有經常過出現的單詞總是會被遺漏。這意味著,不支持在競爭法里的法律合同中特定領域的單詞。當使用預先訓練過的詞嵌入時,通常會檢查OOV單詞並將它們替換為「未知單詞令牌」(UNK token),並且所有這些單詞都被賦予相同的向量。如果語料庫是特定領域的,那麼前面所說的內容就會變得無效的,因為領域特定的詞通常具有很多意義。如果大部分的(帶有含義的)單詞被未知單詞令牌所取代,那麼這個模型將無法學到很多東西。

  • 一種替代標準的預先訓練的詞嵌入的方法是對一組無監督的文檔的嵌入進行調整。注意,如果有大量的文檔可用,那麼這只是一個選項。這意味著如果你有一個關於競爭法的大型語料庫,你就可以為特定領域的辭彙訓練詞嵌入,從預先訓練的詞嵌入到另一個更普通的詞。通常,開始接受預先訓練的詞嵌入將加速整個過程,並使訓練你自己的詞嵌入變得更容易。要注意的是,使用開箱即用的詞嵌入的方法仍然更加困難,並且需要一些關於如何準備語料庫的知識。

本文中提到的問題和解決方案是在處理有限數量的數據時創建魯棒性的NLP系統和詞嵌入的關鍵。

Gensim、Spacy和FastText是三個很棒的框架,可以讓你快速地在機器學習應用中使用詞嵌入。此外,它們還支持對自定義詞嵌入的訓練。

  • Gensim教程:https://radimrehurek.com/gensim/tut1.html

  • Spacy教程:https://spacy.io/usage/vectors-similarity#section-custom

  • FastText教程:https://github.com/facebookresearch/fastText#obtaining-word-vectors-for-out-of-vocabulary-words

在CV中的遷移學習

深度學習方法在計算機視覺方面取得了巨大的成功。你不需要手動定義問題特定的特徵,例如,方向梯度直方圖(HoG)特徵、顏色特徵等等,深度學習可以讓從業者訓練那些將原始圖像作為輸入的模型。

遷移學習:如何在自然語言處理和計算機視覺中應用?

根據問題的類型,需要定義不同類型的HoG特徵。這是一種可以用於計算機視覺的視覺特徵。請注意與下面提到的卷積網路所提取的特徵的相似性。

特徵定義的最初複雜性現在已經轉向定義網路的複雜性。雖然體系結構經常被重用,但是在構成網路體系結構中沒有單一的策略。通常,深度學習技術已經被發明並應用於大型數據集(如ImageNet或MS Coco)的研究設置。為了提高這些大型數據集的性能,研究人員發現了網路架構的深度和複雜性。這些架構導致了數百萬個參數(通常)不能擴展到小的圖像數據集的模型。在不超過5000張圖片的數據集上訓練諸如ResNet或VGG net這樣的架構,只會導致明顯的過度擬合。最近的深度學習趨勢已經取得了顯著的進步,但似乎只有使用少量數據集的數據科學家被冷落了。

  • ImageNet數據集:http://www.image-net.org/

  • MS Coco數據集:http://cocodataset.org/#home

事實證明,深度學習網路可以學習分層的特徵表示(請參閱下面鏈接中的文章)。這意味著較低層次的層可以學習較低層次的特徵,例如邊緣(edges),而較高層次的層則學習更高的層次,但是無法解釋概念,例如形狀(shapes)。當網路在不同的數據集上進行訓練時,也會出現分層特徵表示的思想,這表明它們可以在不同的問題領域中重用。

  • 文章:https://distill.pub/2017/feature-visualization/

遷移學習:如何在自然語言處理和計算機視覺中應用?

能夠區分圖像中的邊緣線條和形狀(左)可以更容易地判斷出什麼是「汽車」。遷移學習允許你利用其他計算機視覺模型中的學習模式。

在計算機視覺問題上使用遷移學習時,使用兩種方法。

  • 首先,如果有相當數量的圖片(每個類有大於1000張圖像)可用,你可以初始化一個新的模型,該模型的權重是在一個不同的數據集上訓練的。在訓練期間,你將保持許多固定層(通常是第一個卷積層),並優化高級層的參數。目標是減少需要優化的參數的數量,同時重用較低層次的層。無論問題的領域是什麼,較低層次的層都很可能是相似的,並且針對問題模型必須自由地將更高層次的層組合在一起。

  • 其次,如果只有少量的圖片可用(小於1000張),那麼對現有模型進行再訓練很可能在大多數情況下仍然會導致過度使用。需要優化的參數數量對於圖像的數量來說太大了。無論如何,只要數據與大型數據集中的圖像相似,就可以使用一個大型的預先訓練過的網路(在大型數據集上進行訓練)。更具體地說,你刪除了大型網路的最後N個層(通常是N=1或N=2),並使用大型預先訓練網路的輸出作為圖像的特徵表示。這是基於預先訓練的網路中的第一個層學習問題獨立特徵的假設。這些特徵可以用於支持SVM(支持向量機)或邏輯回歸,類似於傳統的計算機視覺方法。然而,並不是必須手動定義這些特徵,而是將預先訓練的網路作為一個特徵。

Keras的API允許你載入預先訓練的網路,並在訓練期間保持幾個層的固定。在下一節中,我將再次討論兩個用例,分別是遷移學習是有用的,而另一個則是沒有用的。

  • Keras的API:https://keras.io/visualization/

想像一下你在野生動物保護場所工作,你想要對出現在攝像機中的不同動物進行分類。特別是那些瀕臨滅絕的物種,你可能無法收集到大量的標記數據。考慮到預先訓練的網路通常都是在廣泛的概念領域進行訓練(從食物,到動物和物體),使用預先訓練的網路作為一個特徵者,或者作為初始化者絕對是一種選擇。

另一方面,想像一下你需要分析腫瘤專家的放射圖像。這些圖像不是典型的貓或狗這樣的圖像,因為它們是對病人進行掃描的輸出。這些圖像雖然被轉換為RGB圖像,但通常是在灰度圖中顯示掃描結果。儘管預先訓練過的網路能夠探測到RGB圖像的形狀和邊緣,但它們很可能難以在X光圖像上發現這些圖像,因為這些圖像不在預先訓練的訓練數據中。此外,在醫學場景中,標記數據的數量通常很低。有幾種技術可以利用(潛在的)未標記的數據,但是它們通常需要更多的工作。通常,這些技術試圖通過迭代訓練每一層來重構圖像(使用卷積和解卷層)來預先訓練分類網路的權重。這些技術和預先訓練的網路的組合常常被用來提高收斂性。

上面提到的計算機視覺的兩種方法都依賴於一個重要的假設:原始數據集中提取的模式在新數據集中是有用的。這種有效性很難量化,但它是一個重要的假設。地震、高光譜、甚至醫學圖像都與ImageNet中的圖像相似。然而,理解計算機視覺問題領域是成功應用計算機視覺的關鍵。通過了解在遷移學習中使用的模型(數據集、技術等)的背景,你可以避免在實驗期間浪費時間,並集中調整那些可能造成差異的模型。

本文為編譯文章,轉載請註明出處。

來源:atyun_com

來源網址:http://www.atyun.com/15542_遷移學習:如何在自然語言處理和計算機視覺中應.html

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |