0 引言
上一期[1]說明了在人們學習知識的過程中,除了會記憶(背)之外,還會進行歸納、抽象,然后對眼前或腦海里想象的新事物進行推論(如鑒往知來),甚至能舉一反三。本期將以唐詩的4種平仄韻律為例,與您一起來欣賞AI的初步推論技能:見微知著。也就是,從部分信息推測(Predict)出全貌。
1 復習:分類型特征編碼
回憶一下,在前2期[1-2]里曾經介紹了機器學習的特征(feature)含義;也說明了2種主要特征:數值型(numerical)與分類型(categorical)特征。其中,分類型特征又可分為:次序型(ordinal)和名目型(nominal)特征。如圖1所示。

例如,有一家房產公司公布了4套房屋的相關數據,如圖2所示。

其中,每一筆數據都包含了該房屋的4項特征?,F在,從機器學習的視角來敘述這些特征的類型和編碼方式。如圖3所示。

其中特征1屬于名目型特征,包括2種名目:新(屋)與舊(屋)。適合采用OHE(獨熱)編碼,以[10]代表新(屋)、以[01]代表舊(屋)。而特征2也屬于名目型特征,包括4種名目:東、西、南、北,也適合采用OHE(one-hot-encoding)編碼,以[1000]代表東,[0100]代表西,[0010]代表南,[0001]代表北。而特征3則屬于次序型特征,包括3種等級:大、中、小,適合采用標簽編碼(label-encoding),以3代表大,2代表中,1代表小。至于特征4,則是您已經很熟悉的數值型特征,表示為一般的浮點數(floating-point)即可。如圖4所示。

于是,這些房屋的特征數據就能成為機器學習中的樣本數據了,其中涵蓋了華夏文化中的房屋方位的智慧。
2 細說OHE編碼與坐標空間
關于OHE編碼的使用,大家最常提出的問題是:在華夏的易經八卦智慧里,已經有了二進制(binary)編碼方式,為什么在機器學習領域,這些陰陽五行等知識概念并不采用傳統二進制編碼,而要采用OHE編碼呢?例如,上述的方位(東西南北),如果采用二進制編碼,可編碼為:
東 ---- > [00] 西 ---- > [01]
南 ---- > [10] 北 ---- > [11]
如果采用OHE編碼,上述的方位(東西南北)可編碼為:
東 ---- > [1000] 西 ---- > [0100]
南 ---- > [0010] 北 ---- > [0001]
兩者相比,可以看出:后者比較冗長,需要占用更大的內存空間。
現在,來細說其中的緣由。因為在神經網絡模型中,會以數學歐式空間(euclidean space)里的向量(vector)來表示分類型特征。因此,一項特征會對應到歐式空間中的某個點(point)。在機器學習領域,我們常稱之為:把特征向量嵌入(Embedding)到歐式空間中。
一旦嵌入到歐式空間中,就能夠計算出空間中各點之間的距離,然后依據此距離來得知事物之間相似度(similarity),進而支撐神經網絡模型的分類(classification)、回歸(regression)和分群(clustering)等典型算法和功能。
那么,計算距離又與OHE編碼有何關系呢?答案是:例如上述房屋方位特征的4個名目(東西南北)之間,并沒有大小或等級之分。所以在歐式空間中,它們相互之間的距離最好是相等的。而OHE編碼則具有這種特質。來看一個簡單的例子(圖5)。

這里的冷熱特征包括了3類:熱、溫、冷,以一維空間的3個向量來表示,如圖6所示。
可以看出,其中的“冷”與“溫”2個向量之間距離為1;而“溫”與“熱”2個向量之間的距離為1。然而,“冷”與“熱”2個向量之間的距離是2。如果您覺得這種距離感是合理的(例如,會覺得冷與溫比較相似,冷與熱比較不相似),就可采用標簽編碼,以2代表“熱”,1代表“溫”,0代表“冷”。
那么,如果把圖6更改為圖7,您會覺得這種距離感還是合理的嗎?


一般而言,我們通常會認為:天、地、人是三項并立的概念或名目。所以圖7的距離感并不太合理。此時,就可以采用OHE編碼,以三維空間的3個向量來表示,如圖8所示。

這通稱為:把特征嵌入為三維的向量。于是,采用OHE編碼,如下:
天 ---- > [100] 地 ---- > [010] 人 ---- > [001]
可以看出,圖8中的3個點(即向量)之間的距離是相等的,能更精確計算出事物之間的相似度。凡是3項以上的并立名目(如方位、五行、十二生肖等)都適合采用OHE編碼。
那么,一個比較特別的是:二元(binary)名目,只含有2項并立的名目,例如:太極圖的陰、陽。此時,2種嵌入途徑(即編碼方式)皆可??梢圆捎肙HE編碼嵌入到二維空間:陽→[10];陰→[01]。如圖9所示。

也可以采用binary編碼嵌入到一維空間:陽→[1];陰→[0]。再如,唐詩韻律的平、仄。此時,2種嵌入途徑皆可??梢圆捎肙HE編碼,如圖11所示。

也可以采用binary編碼,如圖12所示。

對于二元名目型特征,2種編碼方式皆是適當的。但是后者比較節省空間,所以大多會采用后者(Binary編碼)。
3 欣賞AI推論技能:以唐詩的韻律為例
基于上述的編碼觀念,就可以對五言絕句唐詩的韻律進行編碼,以作為機器學習的材料。于是,把它放在Excel畫面(圖13)中,成為神經網絡(NN)模型的訓練數據(training data)。按下“學習”按鈕,開始機器學習。

經過數分鐘,訓練完成。這時,AI模型已經記憶了這些韻律,還能進行簡單的推論。接著進行測試。我們輸入這首詩的前3段韻律(圖14)。

然后,來檢驗AI模型是否能把欠缺的最后一段韻律填補起來。請按下“測試”,展開推論,并輸出推論結果(圖15)。

AI模型填補了最后一段:[0.1, 0.1, 0.9, 0.9, 0.1]。這非常接近于[0,0,1,1,0],代表了[平、平、仄、仄、平]的韻律。表示AI推論得很棒。仔細看看圖16,所輸入的測試數據中有1個錯別字:春,使我們輸入的編碼是:0(代表平音),也是錯的。此時,AI模型也有能力偵測出這個錯誤,自動將它更正為:0.8(代表仄音)。

以上2個范例展示了AI的記憶和推論能力。當我們給予正確的測試數據,它能夠進行推論而填補起來。此外,當我們給予少數錯別字時,它也能自動更正,而做出正確的推論。
在欣賞了上述的AI簡單推論技能之后,如果意猶未盡,可繼續閱讀下一期,將介紹AI更多精妙的推論技能。
參考文獻:
[1]高煥堂.學貫中西(2):認識AI的記憶(背誦)技能[J].電子產品世界,2021(12):28-30.
[2]高煥堂.學貫中西:讓機器學習華夏智慧[J].電子產品世界,2021(11):17-19.
3681501908220