技術部落格丨原來模型訓練可以不用標註?一文全解四大機器學習方法

格物钛Graviti發表於2022-01-11

作者:Ta-Ying Cheng,牛津大學博士研究生,Medium技術博主,多篇文章均被平臺官方刊物Towards Data Science收錄

即使在人工智慧已經逐漸普遍的今天,有許多人對機器學習相關的概念仍是一知半解。雖然機器學習論文層出不窮,幾乎每過一陣子都有新技術和新想法發表,然而絕大多數新詞只能淪為人們交口傳誦的人工智慧術語,至於這些詞究竟是什麼意思則不做深究。本文將用通俗的方式,為大家介紹耳熟能詳卻分辨不清的四個機器學習核心概念:監督式學習、半監督學習、無監督學習和自監督學習,並將用例項簡介它們試圖解決的問題,希望能帶大家走出機器學習的入門迷霧!

監督式學習


img

圖 1. 監督式學習圖示 

製作:作者,素材:Unsplash

圖片翻譯:Dataset 資料集、Input 輸入、Label 標註、Dog 狗、Cat 貓、Tasks (e.g., Classification, Regression) 機器學習任務(如分類、迴歸等)

監督式學習(supervised learning)是最為常見的機器學習方法,一般提到機器學習指的都是監督式學習。

簡而言之,監督式學習就是給機器提供一組輸入-輸出對,這樣模型能夠學習一箇中間系統,使得輸入對映到正確的輸出。

我們可以舉一個簡單的例子來說明監督式學習的工作方式。如圖所示,我們需要確定圖片中的動物是貓還是狗(也可以是其他動物),那麼我們首先就需要拿到用於訓練模型的動物圖片資料集以及這些圖片所對應的“類”(class),也就是我們常說的標註(labels)。

按照目前流行的方法,有了給定的輸入-標註對之後,我們就將直接拿這組資料來訓練我們的深度神經網路(如卷積神經網路)。訓練後,模型會對已有的圖片給出自己的標註預測,然後我們需要計算模型的預測和原有的正確標註之間的差別(稱作可微損失),再把這些差別反饋給模型來調整其引數並最佳化最終的預測結果(這個過程稱為反向傳播,backpropagation)。

總的來說,監督式學習是所有機器學習方法中最顯而易懂的方法,這種方法預設所有圖片的標註都是給定的,由此能讓機器學習的過程變得更加簡單。

半監督學習


img

圖2. 半監督學習圖示 

製作:作者,素材:Unsplash

圖片翻譯:Dataset 資料集、Labelled 已標註、Input 輸入、Label 標註、Dog 狗、Cat 貓、Unlabelled 未標註、Tasks (e.g., Classification, Regression) 機器學習任務(如分類、迴歸等)

監督式學習的想法很強大也很簡單,只需要我們手頭上的資料集有著完整且正確的標註就可以了,但現實並非總是如此美好。隨著AI行業的發展,人們越來越認識到標註是一個高度勞動密集型的環節,資料集的標註並非總是完美。在成本不足的情況下,手頭上的資料可能只有部分有標註甚至可能完全沒有標註。

半監督學習的誕生正是為了解決問題:我們如何在只有一小部分資料有標註的情況下做到四兩撥千斤的效果呢?

回到剛剛說的圖片標註任務,假設我們手頭上的資料集只有部分圖片有標註,其餘那些沒有標註的資料還有用嗎?

答案是肯定的,我們可以用一種叫偽標籤(pseudo-labeling) 的方法來利用這些資料。

對於剛剛的任務,我們可以先按照通常的監督式學習方法用有標註的資料來訓練一個分類模型,然後我們用這個模型來為剩下的資料做標註。如果模型有充分的把握認為自己的標註是正確的,那麼我們就把這部分預測標註當作是正確標註新增回原來的有標註資料當中(實際上這些預測標註只是偽標籤)。由此,我們再重複原來的模型訓練過程,一遍遍地往返迭代,直到所有的資料都被用上並且最終的分類模型達到其最優效能。

當然,這種方法聽起來非常聰明,但在實際操作中很容易出問題。如果原有的已標註資料實在有限,那麼模型很有可能會一上來就給出錯誤的偽標籤,導致最終的訓練結果完全失敗。因此對於半監督學習來說,確定模型至少有多大的把握才能將偽標籤加入訓練資料中是至關重要的。

為了避免訓練初期的過擬合,我們也可以利用資料增強這一強大技巧來增加原始訓練資料的大小,為模型訓練提供分佈更廣的資料。如果大家對資料增強感興趣,可以參看我們之前釋出的關於mixup的文章。

無監督學習


img

圖3. 無監督學習圖示 

製作:作者,素材:Unsplash

圖片翻譯:Dataset 資料集、Tasks (e.g., Clustering) 機器學習任務(如聚類等)

既然我們已經知道怎麼樣用最少的標註達到最大的訓練效果,那麼一個很自然又很大膽的想法便呼之欲出:能不能使用完全無標籤的資料進行學習呢?

無監督學習完全站在另一個極端,輸入的資料沒有任何對應的標註,訓練的最終目標是要找到資料集內部的分佈規律。

無監督學習就是針對完全無標籤的資料進行的學習方法,一般用在客群劃分、推薦演算法等各種分類任務當中。

而這時由於我們手頭上沒有能夠給機器進行驗證的正確標註,那麼我們需要透過聚類(clustering) 的方法來找到資料集內部的規律。也就是說,對於一個給定的資料集,我們需要找到這些資料都共同存在什麼樣的特徵,然後按照這些特徵對資料進行分類。比較常用的聚類方法有K-MeansK-Medoids等。

聚類聽起來似乎非常簡單,但能夠為實際生產中的問題提供非常有用的資訊。比如,當我們在設計推薦演算法系統時,我們可以直接根據使用者的使用習慣來將他們進行分類,然後便可以推送使用者喜歡的內容給他們。在此過程中,我們完全不需要去知道每個使用者具體的興趣是什麼,一切分類工作都可以交由模型進行處理。

自監督學習


img

圖4. 自監督學習圖示 

製作:作者,素材:Unsplash

圖片翻譯:Dataset 資料集、Tasks (e.g., Classification, Regression) 機器學習任務(如分類、迴歸等)

自監督學習聽起來和無監督學習非常像,但自監督學習更多地用來應對那些傳統上使用監督式學習進行處理的任務。

自監督學習在某種程度上也可以算作是一種無監督學習,因為它不需要利用訓練資料給定的標註資訊。不過,自監督學習不用於聚類任務,而是專攻像圖片分類這樣傳統上使用監督式學習進行處理的任務。

自監督學習的目標聽起來似乎是天方夜譚,但近年來許許多多的研究已經提出了非常創新的思路來實現對傳統監督式學習任務的無標註的學習。其中一種思路就是著名的對比學習(contrastive learning),透過比較正例和負例樣本來進行學習。簡單來講,在對比學習中我們會首先對同一影像進行資料增強操作。比如用同一張小狗圖片用不同的增強方式生成多張新的小狗圖片,這些圖片我們用作正例樣本,而資料集中的其他影像我們都當作是負例樣本。對比學習模型在訓練過程中需要做的事情,便是儘可能地在模型內讓正例樣本離彼此更近,同時讓正負例樣本之間更遠。由此神經網路可以學習到這些正例樣本的本質特徵,這樣的學習方式使得影像分類這樣原本需要ground truth(可以理解為正確標註)的任務在自監督學習中成為可能。

小試牛刀

如果你想要親自上手來體會這些不同概念之間的區別,可以先找到自己想要訓練的資料集,然後自行透過移除部分或所有標註的方式來體驗這些學習方法的區別。

我們的資料集如果是直接從torchvision中呼叫的,會帶有已做好的標註。如果我們想要嘗試半監督或自監督學習,可以試著自己寫一個DataLoader(資料載入器)。另外,我們還可以使用格物鈦公開資料集平臺來簡單方便地獲取資料集。格物鈦的平臺提供了機器學習最為常用的公開資料集,可以免費下載,還可以在瀏覽器中直接檢視資料集內容。格物鈦還提供了實用的API供我們將資料集的獲取介面直接整合到自己的程式碼當中,讓設計DataLoader變得更加簡單。建議手頭上只有一臺膝上型電腦的同學先用MNIST和CIFAR-10這樣的資料集進行測試,因為這兩個資料集需要的算力相對而言更少一些。

結語

希望看到這裡你已經掌握了這四個概念之間的聯絡及區別!如果想要進一步瞭解自監督學習方向的最新進展,可以到paperswithcode社群檢視最新的論文及其程式碼。

更多資訊請訪問格物鈦官網

相關文章