在昨天的文章[Day 3] 機器學習的步驟 中介紹了我們如何訓練機器學習的步驟,今天要來聊聊不同的訓練方式。
在機器學習中,主要有以下五種訓練方式
如同我們在上一篇文章提到的,我們提供大量的資料來讓機器學習,而這些資料當中,同時也明確告訴機器輸入與輸出的關係,譬如
聲音 | 體長 | 結果 |
---|---|---|
2020Hz | 30cm | 貓 |
1440Hz | 100cm | 狗 |
1984Hz | 45cm | 貓 |
其中「聲音」與「體長」就是我們要輸入「模型」的內容,而「貓」或「狗」就是不同資料相對應的結果。機器學習的目的就是要找到最好的「模型」,在未來輸入新的「聲音」與「體長」的資訊之後,能有很高的機率判斷出正確的結果。
但事情總是沒有一般人想得這麼簡單,要能夠訓練好機器,需要非常大量的資料,而且這些資料需要有明確的輸入與輸出的對應關係。
舉例來說,如果我們今天是用大量的貓與狗來訓練機器,我們不僅只是要讓機器去讀取(測量)他們的聲音與體長,同時我們也要「告訴機器正確答案是什麼」,這個步驟,就需要人類智慧的介入,也就是我們需要先幫機器判斷出正確答案。
在真實世界中,我們可能沒有這麼大量的、完整的資料能夠提供給機器去學習,讓模型達到我們預期的準確度。因此我們需要以下幾種不同的學習方式。
監督式學習,就好像是有老師站在學生旁邊,告訴學生每一個練習題到底是做對還是做錯,監督著學生的學習。然而剛剛提到,大量且資訊完整的資料可能沒有這麼多,或是取得相當困難,因此後來人們開發出了半監督學習的技術。
在半監督學習當中,我們使用少量的完整資料,以及其他不完整的資料來學習。可以想像是學生在用 10 份有答案的練習卷以及 90 份沒有答案的練習卷在學習。這樣就可以大量減少對於完整資料的需求
遷移學習的技術,則是可以將機器在某一個任務中學習到的知識(訓練好的模型),轉移到另外一個任務上。譬如我們可以利用一個能夠判斷鳥與老鼠的機器,來幫助我們現在的機器來判斷貓與狗,在這樣的情況下,等同於我們借助了其他的資料(鳥與老鼠),來間接訓練我們用來判斷貓與狗的機器,也就是說,我們不需要跟監督式學習一樣大量的貓與狗的資料,就能來訓練機器。
當然更厲害技術就是,不告訴機器任何的完整資料,讓機器自己透過演算法自己摸索出人類所期待的正確模型。聽起來就像是讓學生寫 100 份沒有正確答案的練習卷,然後學生要想辦法自己學會什麼才是正確答案。
強化學習則是強調透過與環境的持續互動,來達到學習的效果。同樣以考試的例子來說,我們就讓學生直接上考場寫考卷,交卷之後,我們告訴學生有及格還是沒有及格。學生拿到這個「回饋」之後,回頭想辦法調整自己的作答方式,然後再次交卷,拿到另外一個回饋。
同樣的這個方法,不需要像監督式學習一樣,提供大量有明確輸入與輸出的完整資訊。這樣的學習方法,也很像人類的學習行為:透過與環境互動而獲得的回饋,來強化自己的學習。
說了這麼多,到底哪一種方法最厲害呢?其實端看我們手上有多少資源。如果我們有取之不盡用之不覺得完整資料,那麼我們就可以直接用監督式學習的方法來訓練機器學習。但如果我們不是含著金湯匙出身,沒有這麼多的資源,那麼就要去思考哪一種方法最能夠有效運用手上的資源,來達到最好的機器學習效果。
談完了機器學習的一些方法,明天來聊聊一些關於數學的東西吧!