高煥堂
0 前言
機(jī)器學(xué)習(xí)(ML)除了能夠?qū)W習(xí)大數(shù)據(jù)(big data)中的規(guī)律和法則之外,也能夠?qū)W習(xí)人類的智慧。華夏文化淵源長久、博大精深,處處充滿智慧。因此,我們可以讓機(jī)器來學(xué)習(xí)華夏的文化底蘊(yùn)和智能,還能更上層樓而學(xué)貫中西。
1 復(fù)習(xí):什么是特征(feature)
機(jī)器學(xué)習(xí)之路,首先從觀察特征出發(fā)?;貞浺幌?,人們對于周圍的問題或事件常從不同的角度來觀察或看出不同的特征。所謂特征(feature),就是一件事物或一群事物,其具有與眾不同的特色或表征。例如,人們在辨別其他人的長相時,常常會觀察對方的臉形、眼神、嘴巴、發(fā)型等特征來區(qū)分和判斷,只要記住對方獨(dú)特的長相特征就可以,而不必記憶其他細(xì)節(jié)。這是人們天賦的觀察和提取特征的能力。再如,當(dāng)您一大早從家里出門時,常常會先觀察天氣的特征:溫度23℃、“陽光普照”等。
在前面各期曾經(jīng)說明了ML(機(jī)器學(xué)習(xí))的目的并不一定是拿數(shù)據(jù)來運(yùn)算,而是在于〈觀察〉在此X空間里數(shù)據(jù)的大小、分布及重復(fù)出現(xiàn)頻率(次數(shù))等。每一條數(shù)據(jù)成為空間里的一個點(diǎn)(point),而每一項特征則成為空間的一個維度(dimension)。于是,各條數(shù)據(jù)的特征值成為該點(diǎn)的坐標(biāo)值。
2 特征的種類
在ML(機(jī)器學(xué)習(xí))領(lǐng)域,特征常分為兩種:數(shù)值型(Numerical)特征與分類型(Categorical)特征?!皵?shù)值型特征”是大家很熟悉的,可以用整數(shù)或浮點(diǎn)數(shù)表示,是能拿來進(jìn)行加減乘除等數(shù)學(xué)計算的特征(值)。例如剛才提到的氣溫是23℃。這就是一個數(shù)值特征。再如,人的身高、貓尾巴長度等也都是數(shù)值特征。至于分類型特征,又可細(xì)分為兩種:次序型(ordinal)特征和名目型(nominal)特征。
其中,“次序型特征”是具有順序、可分等級的特征。例如,衣服的大小常常分為:小(S)、中(M)、大(L)、特大(XL)4個等級。再如,牛排的熟度可分為:Blue、Rare、Medium Rare、Medium、Medium Well和Well Done 6個級別。
再如,《孫子兵法》有言:“不戰(zhàn)而屈人之兵,善之善者也。故上兵伐謀,其次伐交,其次伐兵,其下攻城?!逼渲蟹譃?個等級:伐謀、伐交、伐兵和攻城?!秾O子兵法》又言:“知彼知己,百戰(zhàn)不殆。不知彼而知己,一勝一負(fù)。不知彼不知己,每戰(zhàn)必殆。”其中分為三個等級:知彼知己、不知彼而知己和不知彼不知己。
“名目型(nominal)特征”只是對事物分門別類之后各類別的名稱或標(biāo)簽而已。例如,性別:男、女。兩儀:陰、陽。五行:金、木、水、火、土。它們之間沒有級別之分。
3 如何對“分類型特征”進(jìn)行編碼
在ML領(lǐng)域,必須將分類型特征轉(zhuǎn)換成數(shù)字,又稱為對這些特征進(jìn)行編碼(encoding)。對于次序型與名目型特征,各有不同的方法將它們轉(zhuǎn)換成數(shù)字。
例如,對于次序型(ordinal)特征常使用卷標(biāo)編碼(label-encoding)方式進(jìn)行轉(zhuǎn)換。例如,衣服的?。⊿)、中(M)、大(L)、特大(XL)4個等級對應(yīng)1、2、3、4,這樣特征(值)之間的大小順序也就呈現(xiàn)出。再如,牛排熟度的Blue、Rare、Medium Rare、Medium、Medium Well和Well Done 6個等級對應(yīng)1、2、3、4、5、6,這樣就可以了。
另外,對于名目型(nominal)特征則常使用唯1編碼(one-hot-encoding)方式進(jìn)行轉(zhuǎn)換,在中文里又稱為“獨(dú)熱編碼”。例如上述的兩儀。
由于它們之間不具有順序性,所以也可把“陽”對應(yīng)成[01],而“陰”對應(yīng)成[10]。
由于每一個編碼中都含有一個1,其他都為0,所以稱為One-Hot-Encoding編碼;簡稱OHE編碼。
4 “分類型特征”的范例
剛才已經(jīng)提到了華夏文化中的五行觀念,就是金、木、水、火、土。使用OHE編碼如下:
大家知道,五行之間有“相生”關(guān)系,也有“相克”關(guān)系。
現(xiàn)在,來建立一個兩層神經(jīng)網(wǎng)絡(luò)(NN)模型,如圖5所示。
以NN模型表示如圖6所示。
在Z空間中設(shè)定了5個目標(biāo)值,如圖7所示。
只要按下“學(xué)習(xí)”按鈕,ML就會尋找出隱藏層的權(quán)重WH和BH,同時尋找出輸出層的權(quán)重W和B。如圖8所示。
有了隱藏層的權(quán)重WH和BH,以及輸出層的權(quán)重W和B之后,就可以隨時輸入層X空間,對應(yīng)隱藏層H空間,再對應(yīng)輸出層的Z空間,就得到預(yù)測值了。例如,把剛才訓(xùn)練好的權(quán)重拿過來,就可以隨時輸入X值,然后通過兩層權(quán)重的計算得到Z預(yù)測值。這個過程,就是所謂的:預(yù)測(Predict)。如圖9所示。
請按下“相生”,輸入木和水的OHE編碼,然后通過兩層權(quán)重的計算得到Z預(yù)測值。如圖10所示。
例如,輸入測試數(shù)據(jù):木=[0,1,0,0,0],通過NN模型的兩層權(quán)重計算得到預(yù)測值。此時,ML計算出預(yù)測值:Z=[0.02、0、0、0.95、0.03]。那么,ML如何得知這個預(yù)測值就是“火”呢?非常簡單,只要看看Z空間中這個預(yù)測值代表的點(diǎn)靠近哪一個目標(biāo)值(點(diǎn))就知道了。例如,預(yù)測值Z=[0.02、0、0、0.95、0.03],非??拷黐0、0、0、1、0],所以歸于“火”類。如圖 11所示。
同樣,另一測試資料:水=[0、0、1、0、0],通過NN模型的兩層權(quán)重計算得到預(yù)測值:Z=[0、0.97、0、0、0.03]。那么,ML如何得知這個預(yù)測值就是“木”呢?非常簡單,只要看看Z空間中這個預(yù)測值代表的點(diǎn)靠近哪一個目標(biāo)值(點(diǎn))就知道了。例如,這預(yù)測值Z=[0、0.97、0、0、0.03],非常靠近[0、1、0、0、0],所以歸于“木”類。
5 結(jié)語
善于使用OHE編碼將非常方便表達(dá)華夏文化中的概念(Concept)和術(shù)語。然而,您可能會問:如果數(shù)千或數(shù)萬個術(shù)語,其OHE編碼將變得很冗長,實(shí)際上可行嗎?答案是沒問題的。因為ML有很好的機(jī)制可以進(jìn)行“降維”,能有效化解上述問題。下一期,將會繼續(xù)說明。
3175501908239