AI 基礎:模型、算法和訓練的關係及遷移學習

模型、訓練、算法這幾個概念是機器學習和深度學習的最基礎,現在看來有必要說明一下。 以下所有解釋均僅限於人工智能領域。

模型

模型是什麼? 通常 形容AI語境下的模型一詞時,比較多的情況會類比數學領域的函數。 不過個人感覺,那樣比較容易跑偏,不如我們先姑且將它理解成是“一個程序”吧。

模型這種“程序”接受輸入,經過一系列內部處理,給出輸出——在這一點上它和 普通意義上的程序 一樣。

AI 基礎:模型、算法和訓練的關係及遷移學習

模型和普通程序不一樣的是:後者是人類直接編寫出來的,而前者則是經有另外一個人類編寫的訓練程序訓練出來的。

從某種意義上可以說, 模型是程序產生的程序

訓練程序和算法

這個訓練模型的程序(簡稱訓練程序),一般情況下是實現了某一種訓練算法,這個算法接受輸入的數據,進行某些運算,運算的結果就形成了模型。

AI 基礎:模型、算法和訓練的關係及遷移學習

訓練程序運行的過程就叫做訓練, 模型 是 訓練程序的輸 出,訓練的結 果

概念間的關係

說到這裡,我們已經涉及到了四個概念:A.普通程序;B. 模型;C. 訓練程序;和D.算法。

它們之間的關係見下圖:

AI 基礎:模型、算法和訓練的關係及遷移學習

AI 基礎:模型、算法和訓練的關係及遷移學習

普通程序、模型和訓練程序的 共性 是:接受輸入數據;內部處理輸入的數據後生成輸出數據;輸出輸出數據。

但是它們仨又有所 不同

1. A(普通程序)和C(訓練程序)都是人類編寫出來的;而B(模型)則是C運行的結果(輸出)。

2. A和B對輸入輸出的處理是靜態的; 而C對輸入輸出的處理是動態的

靜態 vs 動態

關於 不同之處的第2點 ——“靜態處理輸入輸出”和“動態處理輸入輸出”的區別,我們需要特別解釋一下。

靜態是指:對於A(普通程序)和B(模型)而言,給它們一個特定的輸入,它們就會給出一個特定的輸出。

A和B能夠處理的數據非常多,但就算是各自接受一百萬份輸入,每份輸入對應的輸出都是既定的,並不會因為A或B之前已經處理了其他的數據而產生不同的輸出。

動態 則是說:C(訓練程序)在獲得不同的輸入後會輸出不同的B(模型)。

訓練、訓練數據與模型

訓練程序在獲得不同的輸入數據後輸出不同的模型 ”

——這是什麼意思?

來看個例子:

我們用某個訓練程序 c0 訓練了包含2M樣本的數據集Dataset_1,生成了一個模型b1。

後來,我們又獲得了包含另外1M樣本的數據集Dataset_2。 既然又有了新數據,自然就想把Dataset_2也用於 c0 的訓練。 那麼我們可以:

方式 i)用Dataset_2從頭開始訓練,可以獲得模型b2;

或者, 方式 ii) 將b1作為預訓練模型,在它的基礎上,用Dataset_2繼續訓練,獲得模型b1’。

按照上述兩種方式,c0同樣是處理Dataset_1+ Dataset_2共3M的樣本數據,但因為具體的訓練方式(運行c0的方式)不同,輸出的結果是不同的。

方式 i)輸出的兩個模型:b1是基於2M樣本獲得的,b2是基於1M樣本獲得的。

方式 ii)輸出的兩個模型:b1基於2M樣本,而b1 ’ 則是基於3M樣本!

兩種方式中的b1是一樣的,b2和b1’ 卻差距頗大。

b 2僅具備從Dataset_2中學習到的知識;而 b 1 ’ 除了Dataset_2,還學習了Dataset_1中的知識——這一部分不是通過直接的訓練,而是通過已經訓練出來的b1間接得到的。相當於b1先學習了Dataset_1中蘊含的知識,再移交(transfer)給了b1 ’ .

順便說一下,方式 ii)又叫做 遷移學習(Transfer Learning) ,是不是有點耳熟?

AI 基礎:模型、算法和訓練的關係及遷移學習

造成這樣差異的原因不是數據,也不是訓練程序本身,而是訓練的方式不同。這就是訓練程序的特色啦!

訓練算法及其實現

A,B和C雖然有所不同,但基本上還是同一個層次的概念——都是程序嘛。

D和它們又有什麼關係呢?

簡單來說,D(算法)是C(訓練程序)的靈魂;或者說,D是C的原理,而D是C的具體實現。

如果你還要繼續問:什麼是原理,什麼又是實現?

原理就是從抽象層面上來講一件事情應該怎麼做,而實現則是指在現實中把這件事情做出來。

原理是策略、方法、流程;而實現是落實執行。


分享到:


相關文章: