机器学习三要素之数据、模型、算法
參考:https://gitbook.cn/gitchat/column/5ad70dea9a722231b25ddbf8/topic/5b1086eccad6fe44db4c1268
1. 機器學習與人腦映射關系
我們自己用來判斷萬事萬物的“觀點”、“看法”、“洞察”,實際上都是我們頭腦中一個個“模型”對所聞所見(輸入數(shù)據(jù))進行“預測”的結(jié)果。這些模型自身的質(zhì)量,直接導致了預測結(jié)果的合理性。
從機器學習認識客觀規(guī)律的過程中,我們可以知道,模型是由數(shù)據(jù)和算法決定的。對應到人腦,數(shù)據(jù)是我們經(jīng)歷和見過的萬事萬物,而算法則是我們的思辨能力。
2. 學原理和公式推導的意義
- 不同模型的特質(zhì)、適用場景,對當前數(shù)據(jù)的匹配程度;
- 不同算法對算力和時間的消耗;
- 不同框架對軟硬件的需求和并行化的力度;
- 評判模型性能的指標有哪些,如何計算?
- 正在使用的模型是怎么工作的?
- 這些超參數(shù)是什么含義,調(diào)整它們會產(chǎn)生哪些影響?
- 特征選取有哪些原則、方法可運用?
真正創(chuàng)造價值的,從來都是解決實際問題的人。
但對于理論知識扎實的機器學習工程師來說,他們完全有可能針對具體業(yè)務問題,構(gòu)造出目標函數(shù),甚至開發(fā)出符合自身軟硬件資源特點的求解算法。
作者強烈建議:即使目標崗位是“深度學習工程師”,也應該從統(tǒng)計學習方法學起。
一方面深度學習與機器學習具有傳承的關系,學習后者對于直觀理解前者有極大幫助。
另一方面,統(tǒng)計學習方法建立在將概念“數(shù)字化”(向量化)的基礎上,以數(shù)學公式和計算來表達概念之間的關聯(lián)及轉(zhuǎn)化關系。機器學習是一種認識世界的工具,借助它,我們可以從一個新的角度來看待世間萬物。
換句話說,當我們知道機器是怎樣通過學習事物特征的概率分布和轉(zhuǎn)換來掌握事物規(guī)律的時候,我們就有可能反過來審視自己看待世界的方法,發(fā)現(xiàn)其中不合理的部分,并主動優(yōu)化自己的思維模型。
作者分享出來只是想說明:學習機器學習原理和公式推導,并非只是做一些無聊的數(shù)字變換。很可能由此為我們打開一扇窗,讓我們從新的角度看待世界,并為日常的思考過程提供更加可量化的方法。
3. 數(shù)據(jù)模型算法之間的聯(lián)系
機器學習三要素包括數(shù)據(jù)、模型、算法。簡單來說,這三要素之間的關系,可以用下面這幅圖來表示:
總結(jié)成一句話:算法通過在數(shù)據(jù)上進行運算產(chǎn)生模型。
3.1 數(shù)據(jù)
輸入給計算機的圖片或者視頻是原始數(shù)據(jù),由于計算機只能處理數(shù)值,而不是圖片或者文字。所以我們就需要構(gòu)建一個向量空間模型( Vector Space Model ,VSM)。 VSM 負責將格式(文字、圖片、音頻、視頻)轉(zhuǎn)化為一個個向量。然后開發(fā)者把這些轉(zhuǎn)換成的向量輸入給機器學習程序,數(shù)據(jù)才能夠得到處理。
3.1.1 無標注數(shù)據(jù)
比如圖2小馬寶莉中的6為女主角,我們要給她們做聚類,而且已經(jīng)知道了,要用她們的兩個特征來做聚類,這兩個特征就是:獨角和翅膀。
那么我們就可以定義一個二維的向量 A=[a_1,a_2]。a_1 表示是否有獨角,有則 a_1 = 1, 否則 a_1 = 0。而 a_2 表示是否有翅膀。
那么按照這個定義,我們的6匹小馬最終就會被轉(zhuǎn)化為下面6個向量:
X_1 = [1,0]X_2 = [0,0]X_3 = [0,0]X_4 = [0,1]X_5 = [0,1]X_6 = [1,0]
這樣,計算機就可以對數(shù)據(jù) X_1,……,X_6 進行處理了。這6個向量也就叫做這份數(shù)據(jù)的特征向量(Feature Vector)。
3.1.2 有標注數(shù)據(jù)
數(shù)據(jù)標注簡單而言就是給訓練樣本打標簽。這個標簽是依據(jù)我們的具體需要給樣本打上的。
比如,我們要給一系列圖標做標注,所有圖片分為兩類:“貓”或者“不是貓”。那么就可以標注成下圖這樣:
我們把樣本的標簽用變量 y 表示,一般情況下,y 都是一個離散的標量值。
標注數(shù)據(jù)當然也要提取出特征向量 X。每一個標注樣本既有無標注樣本擁有的 X,同時還比無標注樣本多了一個 y。 例如:
我們用三維特征向量 X 表示老鼠分類器的源數(shù)據(jù),每一維分別對應“耳朵是圓的”、“有細長尾巴”、“是尖鼻子”。同時用一個整型值 y 來表示是否為老鼠,是的話 y=1,否則 y=0。
那么圖1老鼠和其他動物對應的數(shù)據(jù)就是這樣的:
X_1 = [1,1,1]; y = 1X_2 = [1,1,1]; y = 1X_3 = [1,1,1]; y = 1X_4 = [1,1,1]; y = 1X_5 = [1,1,1]; y = 1X_6 = [0,1,1]; y = 0X_7 = [0,0,0]; y = 0X_8 = [0,1,0]; y = 0X_9 = [0,0,1]; y = 0
在數(shù)據(jù)轉(zhuǎn)換到 VSM 之后,機器學習程序要做的就是把它交給算法,通過運算獲得模型。
大家已經(jīng)看到了,我們之所以能把具體的一系列童話人物轉(zhuǎn)化為2維或者3維的向量,是因為我們已經(jīng)確定了對某些人物用哪些特征。
這里其實有兩步:
- 確定用哪些特征來表示數(shù)據(jù);
- 確定用什么方式表達這些特征。
這兩步做的事情就叫做特征工程。有了特征工程,才有下一步的 VSM 轉(zhuǎn)換。
3.2 模型
3.2.1 模型概念
模型是機器學習的結(jié)果,這個學習過程,稱為訓練( Train )。
一個已經(jīng)訓練好的模型,可以被理解成一個函數(shù): y=f(x) 。我們把數(shù)據(jù)(對應其中的 x)輸入進去,得到輸出結(jié)果(對應其中的 y)。
這個輸出結(jié)果可能是一個數(shù)值(回歸),也可能是一個標簽(分類),它會告訴我們一些事情。
比如,我們用老鼠和非老鼠數(shù)據(jù)訓練出了老鼠分類器。這個分類器就是分類模型,它其實是一個函數(shù)。
3.2.2 模型來源
模型是基于數(shù)據(jù),經(jīng)由訓練得到的。訓練又是怎么回事?
模型是函數(shù): y=f(x) , x 是其中的自變量, y 是因變量。從 x 計算出 y 要看 f(x) 的具體形式是什么,它有哪些參數(shù),這些參數(shù)的值都是什么。
在開始訓練的時候,我們有一些樣本數(shù)據(jù)。如果是標注數(shù)據(jù),這些樣本本身既有自變量 x (特征)也有因變量 y (預期結(jié)果)。否則就只有自變量 x 。對應于 y=f(x) 中的 x 和 y 取值實例。
這個時候,因為已經(jīng)選定了模型類型,我們已經(jīng)知道了 f(x) 的形制,比如是一個線性模型 y=f(x)=ax+bx+c ,但卻不知道里面的參數(shù) a 、 b 、 c 的值。
**訓練 **就是:根據(jù)已經(jīng)被指定的 f(x) 的具體形式——模型類型,結(jié)合訓練數(shù)據(jù),計算出其中各個參數(shù)的具體取值的過程。
訓練過程需要依據(jù)某種章法進行運算。這個章法,就是算法。
3.3 算法
有監(jiān)督和無監(jiān)督學習的算法差別甚大。因為我們在日常中主要應用的還是有監(jiān)督學習模型,所以就先以此為重點,進行講解。
有監(jiān)督學習的目標就是:讓訓練數(shù)據(jù)的所有 x 經(jīng)過 f(x) 計算后,獲得的 y’ 與它們原本對應的 y 的差別盡量小。
我們需要用一個函數(shù)來描述 y’ 與 y 之間的差別,這個函數(shù)叫做損失函數(shù)( Loss Function ) L(y, y’)= L(y, f(x)) 。
Loss 函數(shù)針對一個訓練數(shù)據(jù),對于所有的訓練數(shù)據(jù),我們用代價函數(shù)( Cost Function )來描述整體的損失。
代價函數(shù)一般寫作: J ( theta )——注意,代價函數(shù)的自變量不再是 y 和 f(x) ,而是變成了 theta , theta 表示 f(x) 中所有待定的參數(shù)( theta 也可以是一個向量,每個維度表示一個具體的參數(shù))!
至此,我們終于得到了一個關于我們真正要求取的變量( theta )的函數(shù)。而同時,既然 J(theta) 被稱為代價函數(shù),顧名思義,它的取值代表了整個模型付出的代價,這個代價自然是越小越好。
因此,我們也就有了學習的目標(也稱為目標函數(shù)): argmin J(theta) —— 最小化 J(theta) 。
能夠讓 J(theta) 達到最小的 theta ,就是最好的 theta 。當找到最好的 theta 之后,我們把它帶入到原 f(x) ,使得 f(x) 成為一個完整的 x 的函數(shù),也就是最終的模型函數(shù)。
怎么能夠找到讓 J(theta) 最小的 theta 呢?這就需要用到優(yōu)化算法了。
具體的優(yōu)化算法有很多,比如:梯度下降法( Gradient Descent )、共軛梯度法( Conjugate Gradient )、牛頓法和擬牛頓法、模擬退火法( Simulated Annealing ) 等等。
在這里需要強調(diào)一點:要得到高質(zhì)量的模型,算法很重要,但往往(尤其是在應用經(jīng)典模型時)更重要的是數(shù)據(jù)。
有監(jiān)督學習需要標注數(shù)據(jù)。因此,在進入訓練階段前必須要經(jīng)過一個步驟:人工標注。標注的過程繁瑣且工作量頗大,卻無法避免。
人工標注的過程看似簡單,但實際上,標注策略和質(zhì)量對最終生成模型的質(zhì)量有直接影響。
往往能夠決定有監(jiān)督模型質(zhì)量的,不是高深的算法和精密的模型,而是高質(zhì)量的標注數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的机器学习三要素之数据、模型、算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。