機械學習

出自維基百科,自由嘅百科全書
Jump to navigation Jump to search
機械學習大致上可以想像成拉曲線:部電腦內部有個數學模型(可以用條線表達)代表佢心目中唔同變數之間嘅關係,ML 演算法就係教部電腦點按數據建立同改變自己心目中嘅數學模型。
一個人工神經網絡嘅抽象圖解;人工神經網絡係機械學習上常用嘅數學模型。
機械人都可以曉學習,呢段片顯示一班機械人慢慢噉學識一齊合作推郁物件。

機械學習粵拼gei1 haai6 hok6 zaap6英文machine learning,簡稱「ML」)係人工智能嘅一個子領域,專門研究點樣設計一啲特殊嘅演算法統計模型,嚟去教電腦喺唔使個用家開口俾明文指示嘅情況下,學識有效噉樣做一啲特定嘅作業。機械學習嘅典型做法如下:

  1. 編寫一個程式,教部電腦點樣由數據嗰度建立一個數學模型嚟描述佢對啲變數之間嘅關係嘅知識;
  2. 搵啲樣本數據(即係所謂嘅「訓練數據」)返嚟,俾個程式處理吓啲數據入面嘅個案,等部電腦按個程式建立一個數學模型;跟住
  3. 喺將來再撞到同類個案嗰時,部電腦就會曉按佢個程式,用建立咗嗰個模型,對呢啲之前未見過嘅個案作出預測-個設計者唔使明文噉教部電腦點樣應對呢啲前所未見嘅個案,部電腦都會有能力一定程度上應對[1][2]:p. 2

機械學習演算法做嘅嘢係令部電腦曉「用手上資訊,預測某啲特定嘅變數嘅數值」,所以機械學習嘅技術可以將「做預測」呢家嘢自動化,而因為「做預測」呢家嘢係好多領域都會用到,機械學習可以有好多實用價值,例如係[3]

  • 醫療:機械學習可以用嚟教電腦由手上嘅醫療數據,學識邊啲病徵同邊啲病症有關,所以可以攞嚟幫手診斷病人(用「手上病人嘅病徵」預測「佢有乜嘢病」)[4]
  • 金融:機械學習上有技術可以教電腦由手上嘅金融(例如係之前嗰幾個月嘅股價)嚟預測打後股價會點變化,呢點喺金融業上可以幫手做預測[5]
  • 市場學:機械學習可以用嚟教電腦由過去有關唔同產品嘅銷售量嘅數據,預測將來(間公司想出)嘅同類產品嘅銷售量[6]

... 等等。

機械學習同數據科學(data science)好有關係,例如係做數據探勘(data mining)噉,就可以涉及教部電腦點樣搵出數據當中嘅規律,令到部電腦曉自動化噉探勘一啲人手好難分析嘅數據,由呢啲數據嗰度抽取有用嘅資訊,而因為「由數據抽取資訊」呢樣嘢基本上無論乜嘢科學商學領域都會用到,所以機械學習對於好多領域嚟講都係一種好有用嘅技術[7][8]

概論[編輯]

定位[編輯]

機械學習呢個領域嘅定義如下[9]

英文原文:"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E."
粵文翻譯:如果一個電腦程式能夠喺一樣或者一類工作 T 上嘅表現-而表現以 P 呢個指標嚟量度-隨住經驗 E 而改進嘅話,噉呢個程式就可以稱得上係「有由經驗 E 嗰度對工作 T 同表現量度指標 P 作出學習」(而機械學習就係指研究點樣幫電腦程式做呢樣嘢嘅領域)。

呢個定義避免咗一啲歧義性嘅問題:英國數學家電算學家亞倫圖靈(Alan Turing)對於人工智能曾經寫出過「機械有冇能力思考?」呢一條問題,所以有人提出過將人工智能(包括機械學習)定義「研究點樣令機械思考」嘅領域,但呢個定位俾好多科學家嫌佢含糊得滯(例如「思考」呢個詞應該要定義就經已好撈絞[10]),所以研究機械學習嘅科學家一般唔主張用佢定義一個領域;而相比之下,上述嘅定義唔使依賴啲乜嘢零舍含糊嘅詞語-呢個定義衹係要求電腦程式有類似人類噉嘅行為,所以俾人覺得比較適合用嚟做成個科學領域嘅定位[10]

理論[編輯]

一個常態分佈嘅圖解;X 軸表示研究緊嗰個變數,而 Y 軸反映咗每個變數出現嘅頻率。
睇埋:運算學習論同埋統計學習理論

一個學習者(無論係機械定係人類)嘅主要目的係要將經驗普遍化(generalize)[11]-由經歷過嘅嘢當中抽取嗰啲嘢普遍具有嘅特性,並且用呢啲資訊嚟解難,例如一個人喺俾隻咬過之後,可能會產生「狗普遍傾向會咬人」嘅諗頭,並且從此之後傾向避開狗(將「呢一隻狗會咬我」普遍化成「狗普遍都會咬我」)。機械學習都係同一道理,係俾一部電腦處理一啲數據,再要部電腦對於一啲佢未見過嘅同類個案做預測,好似係一啲金融上會用嘅機械學習程式噉,嘗試用「過去嘅股價數據」預測「將來嘅股價」(將「我處理過嗰啲股票嘅股價變化法則」普遍化做「股票股價變化起上嚟普遍會跟從嘅法則」)。而用行話講嘅話,即係話啲學習用嘅數據係出自一個有特定概率分佈(probability distribution)嘅現實,而假設柞數據係大致上準確噉代表到個現實概率分佈嘅(柞數據嘅概率分佈同個現實嘅近乎一樣),噉個機械學習程式就要靠佢嘅演算法加埋啲數據砌返個合乎現實嘅數學模型出嚟[2][12]

舉個例說明:想像家陣有一個常態分佈(normal distribution;睇圖),佢 X 軸表示研究緊嘅變數,而 Y 軸反映咗每個變數值出現嘅頻率,例如如果 X 軸代表「人類嘅身高」,噉個常態分佈表達嘅嘢如下:人類嘅身高最常喺中間嗰個數值(嗰個數值出現率最高),而距離中間嗰個數值愈遠嘅身高值就出現得愈少(好少有極高或者極矮嘅人)。個常態分佈條線會有一條相應嘅數學式。而家假想個常態分佈代表住全人類嘅身高,跟住研究者抽一個樣本,例如係搵 500 個人類返嚟,量度佢哋嘅身高。喺最理想嘅情況之中,個樣本會完美噉代表到人類總體嘅身高分佈-即係話如果將個樣本入面嘅「身高值」同「每個值出現嘅率」畫條線,條線嘅形狀會同總體人類嗰條完全一個板。而如果家陣話要訓練一個機械學習程式,去靠個樣本嘅數據學習人類嘅身高分佈,個程式要做嘅嘢就係由啲數據嗰度,砌返一個代表到人類總體身高分佈嗰條線嘅數學式出嚟(睇埋統計學)。

運算學習論(computational learning theory)係專門研究機械學習演算法嘅表現嘅電腦科學子領域。呢個領域會用到大量嘅統計學技巧分析機械學習所要面對嘅問題,例如係喺抽樣本嘅過程當中,一般都假設咗個樣本代表到所研究嘅總體(例:「手上嘅股票嘅行為」大概正確噉反映到「古往今來所有嘅股票嘅行為」),而呢個假設喺最嚴格嘅邏輯基準嚟睇查實並唔正確(「我見過嘅天鵝都係白色」唔代表「古往今來嘅天鵝冚唪唥都係白色」)。因為呢啲原因,雖然話事實經已說明咗,機械學習喺實用上表現好好,但喺理論上機械學習嘅原理查實唔係冇漏洞嘅,所以研究運算學習論嘅科學家就要去思考呢啲問題[13]

基本流程[編輯]

喺實用上,機械學習嘅流程基本上如下[14]

  1. 搜集數據:用某啲方法搜集一啲描述緊要預測嘅現象嘅數據,並且以某啲形式(例如係一個表)呈現啲數據,數據嘅質同量會影響最後個模型嘅準確性;
  2. 事前處理數據:處理吓啲數據先,清走啲會擾亂機械學習演算法嘅嘢,好似啲缺失數據(missing data)呀噉;
  3. 揀一個演算法:機械學習可以用好多唔同嘅演算法嚟做,唔同演算法各有利弊;
  4. 訓練個 ML 程式:將啲數據輸入去個程式嗰度,等佢按自己嘅演算法建立一個模擬個現象嘅數學模型
  5. 評估個 ML 程式:用某啲指標評估個程式學得有幾好,通常嘅做法係要個程式對佢未見過嘅數據進行預測,再睇吓佢預測得準唔準;
  6. 執吓啲參數:執吓個程式啲參數(例如係學習率或者係初始化嘅數值等),睇吓呢啲改變可唔可以再改善個程式;
  7. 作出預測:用個程式對現實世界嘅現象進行預測。

事前數據處理[編輯]

一個典型嘅數據庫;當中每一個直行代表一個變數,每一個橫行代表一個個案,個數據庫會有每個個案喺各變數上嘅數值。
內文: 事前數據處理

事前數據處理(data preprocessing)係攞到數據之後要做嘅第一個步驟。喺搜集數據嘅過程之後,個研究者手上會有一個數據庫,個數據庫嘅數據包含咗每一個個案喺每個變數上嘅數值。現實嘅搜集數據過程都係唔完全受控嘅,所以搜集到嘅數據幾乎梗會出啲錯,例如係某幾個個案喺某個變數上嘅數值量度唔到(即係所謂嘅缺失數據)或者有啲擺明冇可能嘅數值(例:有個個案喺「年齡」呢個變數嘅數值係負數),等等。呢啲噉嘅數據直接攞去分析嘅話好多時會搞到個程式出錯,所以做機械學習嘅人喺開始俾個程式做學習之前往往會做啲事前處理先[15][16]

舉個例說明,假想有個金融學者想用機械學習教個電腦程式預測股價,佢可以去一啲網上嘅金融數據庫嗰度攞某一柞股票喺某一段時間之間嘅價格(睇埋大數據),一隻股票為止一個個案,每隻股票都會喺「2019 年 7 月 1 號嘅價格」同「2019 年 8 月 1 號嘅價格」等嘅多個變數上有個值,但係呢啲數據都係由某啲人或者程式負責搜集嘅,兩者都可能會有失誤:例如可能有某隻股票「2019 年 7 月 1 號嘅價格」係一個唔知嘅數值(數據唔見咗);又或者搜集數據嘅單位搞錯嘢,有隻股票「2019 年 7 月 1 號嘅價格」係一個冇可能嘅數值(例:負數)。如果個研究者就噉將呢啲數據入俾個機械學習程式處理,個程式好可能會出錯。於是佢就有需要做一啲事前處理,確保佢手上嘅數據庫係可以由機械學習程式處理嘅。

例子碼[編輯]

以下係一段用 Python 程式語言寫嘅源碼,用途在於將啲數據重新縮放成 0 至 1 之間嘅數值(將每個變數,最大嘅數值設做 1,最細嘅數值設做 0,而喺中間嗰啲數值就按比例變成 0 至 1 之間嘅實數)。噉樣做係因為,有某啲機械學習演算法需要數據係 0 至 1 之間嘅數先至行得到[17]

# Python code to Rescale data (between 0 and 1) 
import pandas 
import scipy 
import numpy 
from sklearn.preprocessing import MinMaxScaler 
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data" # 指定一個網址
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] # 指定每個變數嘅名
dataframe = pandas.read_csv(url, names=names) # 由網址嗰度攞數據。
array = dataframe.values # 將數據擺入去屬於個程式一個 array 嗰度。
  
X = array[:,0:8] # X 呢個 array 包含咗用嚟做預測嘅變數。
Y = array[:,8] # Y 呢個 array 包含咗要預測嘅變數。

# 將 X 入面嘅數字重新縮放。
scaler = MinMaxScaler(feature_range=(0, 1))
rescaledX = scaler.fit_transform(X) 
  
# 將做完縮放嘅嗰柞數據 show 出嚟睇。
numpy.set_printoptions(precision=3) 
print(rescaledX[0:5,:]) 

# 跟住打後嘅碼就會開始做學習過程。

數學模型[編輯]

喺準備好啲數據之後,個機械學習程式就要建立一個數學模型。佢要將數據當中嘅某啲變數做輸入,然後用佢內部嘅數學模型計個佢預想嘅輸出出嚟(「預想輸出」係啲輸入嘅函數)。喺最簡單嘅監督式學習裏面,個程式跟住會計吓,用佢個數學模型計嘅「預想輸出」同實際嘅輸出差幾遠,按照呢個誤差調較自己個數學模型嘅參數。呢個過程用虛擬碼表達係[2]

讀取事前處理完嘅數據;

建立一個數學模型,將 y(要預測嘅變數)寫成 x(用嚟做預測嘅變數)嘅函數;

遂個遂個噉讀取數據入面嘅個案,for 每一個個案
    按照個數學模型同個個案嘅 x 值,計出預想嘅 y 值;
    計吓「預想中嘅 y 值」同「個數據所顯示,嗰個個案嘅實際 y 值」差幾遠;
    按呢個誤差,計吓個模型要點樣改;

# 如果一切順利,讀取嗮所有數據之後,最後嗰個數學模型會能夠做有返噉上下準嘅預測。

迴歸模型[編輯]

一個線性迴歸模型嘅圖解;幅圖嘅兩條軸分別代表研究緊嗰兩個變數(x 同 y),用迴歸分析估計出條線並且知呢兩個變數大致上成正比關係,而條線跟住可以攞嚟做預測。
內文: 迴歸模型

迴歸分析(regression analysis)係統計模型上嘅一類技術,用嚟預測兩個或者以上唔同變數之間嘅關係[18]:喺統計學上,研究者好多時會想用一個變數嘅數值嚟預測第啲變數嘅數值;喺最簡單嗰種情況下,個統計模型會涉及兩個連續性(continuous)嘅變數,當中一個係獨立性變數(independent variable;IV),而另一個就係依賴性變數(dependent variable;DV),而個研究者會用個 IV 嘅數值嚟預測個 DV 嘅數值;對個研究者嚟講,一個可能嘅做法係搜集啲數據返嚟,用啲數據做迴歸分析,整一個模型出嚟,個模型就能夠幫佢預測「當 IV 係呢個數值嗰陣,假設第啲因素不變,個 DV 嘅數值會傾向係幾多」[19][20]。迴歸模型有以下呢啲[21]

(線性迴歸;linear regression);
(多項式迴歸;polynomial regression);

... 等等。

原則上,如果有個方法可以搵出 同埋 等參數嘅數值,就可以靠條式大致上用 IV 嘅值估計 DV 嘅值,而機械學習可以用一個迴歸模型做佢嘅數學模型,例如係以下呢段碼噉,做嘅嘢就係(攞到數據同做完啲事前處理之後)建立一個參數值係隨機設嘅線性迴歸模型,再按柞數據入面啲個案慢慢噉調較個模型,最後想要個模型能夠準確噉做預測[18]

c = 0; # 暫時當住啲參數同 IV 通通係 0 先。
x = 0; # 個 IV,可以係(例如)食量。
a = 0;
y = c + ax; # 個迴歸模型,y 將會係個程式俾嘅輸出,可以係(例如)體重。

c = random(1,100); # 隨機噉設 c 同 a 嘅數值,噉做會整出一個唔準嘅迴歸模型。
a = random(0,1);

# 下一步嘅碼需要做以下嘅工作:
# (一)搵出手上嗰條線係咪一個理想(誤差低)嘅迴歸模型;
# (二)如果唔係,就要改變 c 同 a 嘅數值,令到條線愈嚟愈接近「能夠做準確預測嘅樣」;
# (三)仲要計出 c 同 a 嘅數值應該要改變幾多。

def read_data() : # 要有個子程式教部電腦讀取設計者提供嘅數據。
    data = open("patient_data" , "r")
    patient_value = collections.OrderedDict()
    for line in data.readlines()[1:] :
        record = line.split(",")
        patient_value[float(record[1])] = float(record[2].replace('\n', ""))
    return patient_value

def step_cost_function_for(patient_value, constant, slope) : 
    ...... # 一個省略咗嘅子程序,簡單啲講,呢個子程序涉及重複係噉做
    # 攞下一個數據個體,將佢個 x 值同手上個模型預測 y,
    # 計吓個誤差係幾多,再
    # 有條式計吓要點樣按照個誤差調整 c 同 a,
    # 做到讀完嗮成柞數據為止。
    return new_constant, new_slope # 個子程序會俾出 c 同 a 嘅新數值。

def main() :
    contant, slope = step_cost_function_for(read_data())
    print "constant :" + contant + ", slope:" + slope
if __name__ == '__main__':
    main()

喺呢個程式讀取咗一定量嘅數據之後,佢內部會有一個迴歸模型。如果順利嘅話,呢個模型會有相當嘅能力做「每當得知一個個案喺 x 嘅數值,預測佢個 y 值」呢項工作。

人工神經網絡[編輯]

一個前饋人工神經網絡嘅抽象圖;每個圓圈代表咗一粒模擬嘅神經細胞,而每粒神經細胞嘅啟動程度由佢打前嗰排神經細胞嘅啟動程度話事-就好似動物嘅神經系統噉。
內文: 人工神經網絡深度學習

人工神經網絡(artificial neural network)係受生物神經系統啟發嘅一種數學模型[22]。一隻(例如)靈長目動物閒閒地有斷百億計嘅神經細胞(neuron),一粒神經細胞喺俾電同化學物訊號刺激到嗰陣,會跟住以電或者化學物嚟傳新訊號,所以當一粒神經細胞射訊號嗰陣可以引起連鎖反應,將訊息喺成個神經網絡嗰度傳開去;而人工神經網絡主要係以電腦程式嘅方法嚟模擬呢個過程,令一個電腦程式能夠出現一啲好似動物神經系統噉嘅行為[23]

一個人工神經網絡由大量嘅人工神經細胞(artificial neuron)組成。喺用電腦程式整神經網絡嗰陣,個研究者(通常)會每粒人工神經細胞都同佢設返個數值,用呢個數代表佢嘅啟動程度(activation level)[24],而每粒神經細胞嘅啟動程度嘅數值都有條式計,呢條式包括咗喺佢之前嗰啲神經細胞嘅啟動程度。啲函數當中嘅參數可以變化,而如果一個神經網絡嘅程式令到佢識得靠自己嘅經驗嚟到調整呢啲參數嘅話,嗰個神經網絡就會具有學習嘅能力[25][26]

舉個例說明,例如家吓搵個神經網絡入面某一粒人工神經細胞集中睇佢,佢會有返個數字嚟反映佢嘅啟動程度,而呢個數字取決於第啲人工神經細胞嘅啟動程度-即係話個程式入面每粒細胞都會有一條類似噉樣嘅算式:

喺呢條式當中, 代表嗰粒神經細胞嘅啟動程度, 代表其他神經細胞當中第 粒嘅啟動程度,而 就係其他神經細胞當中第 粒嘅權重(指嗰粒神經細胞有幾影響到 嗰粒神經細胞嘅啟動程度)。所以當一粒人工神經細胞啟動嗰陣,會帶起佢後面啲人工神經細胞跟住佢啟動-似十足生物神經網絡入面嗰啲神經細胞噉。假如個神經網絡嘅程式令佢能夠自行按照經驗改變 嘅數值嘅話,佢就會曉學習(根據經驗改變自己嘅行為)[25]

喺演算法上,一個最簡單嘅監督式學習神經網絡同一個用迴歸模型嘅機械學習演算法一個板,分別衹係在於 y 同 x 之間嗰條式唔同咗。喺一個人工神經網絡嘅程式當中,會有若干粒細胞做輸出值,若干粒細胞做輸入值,每粒輸出層細胞嘅啟動程度會係佢之前嗰層細胞嘅啟動程度嘅函數,如此類推。喺程式編寫上,呢啲噉多噉多嘅權重值同啟動值可以用矩陣(matrix)輕易噉儲住。好似係以下呢段虛擬碼噉[25]

X = [0, ...]; # 個 IV 層,呢個係一個 array。
...
Y = A_1*H_1; # 輸出 Y 嘅啟動程度係之前嗰層嘅啟動程度嘅函數,當中 Y 同 H_1 係 array,而 A_1 係一個矩陣。
H_1 = A_2*H_2 # 如此類推如此類推
H_2 = A_3*X

# 隨機噉設啲權重嘅數值,噉做會整出一個唔準嘅迴歸模型。
A_1 = random(0,1);
A_2 = random(0,1);
A_3 = random(0,1);

...
# 跟住嘅碼同迴歸模型嘅基本上一樣。

一開始嗰陣,人工神經網絡嘅技術係諗住用嚟普遍噉解難嘅,但隨時間過去,啲人開始發覺設計上偏離生物神經網絡嘅人工神經網絡喺好多情況下能夠更加有效噉解難,於是就出咗好多唔同種嘅神經網絡。到咗廿一世紀,人工神經網絡經已廣泛噉俾人用嚟教電腦辨識圖像、辨識語音、管控社交網站、做機械翻譯、同埋玩遊戲[26]

決策樹[編輯]

一個用嚟預測一個鐵達尼號乘客有幾大機會生還嘅決策樹
內文: 決策樹學習

決策樹學習(decision tree learning)係機械學習嘅一種模型,一個決策樹(decision tree)會有若干個節點(node),每個節點代表咗一個考慮緊嘅變數,並且喺接收到一個個案嗰陣,先後噉用呢啲變數作出預測,例如係附圖入面嗰個決策樹噉樣,佢會接收一個個案嘅數據,然後先後噉按照個個案嘅各種變數(性別、年紀、同有幾多個親屬喺船上呀噉)預測嗰個鐵達尼號乘客有幾大機會生還。而一個用決策樹嘅機械學習演算法要做嘅嘢就係用手上嘅數據,砌出一個噉樣嘅決策樹[27]。一個建立決策樹嘅演算法步驟大致如下[28]

  1. 喺淨低嘅「用嚟做預測嘅變數」當中,揀出能夠最有效噉預測到個結果變數嗰個(個演算法可以用訊息熵變化等嘅指標嚟量度「一個變數預測起第個變數上嚟有幾有效」;詳情可以睇訊息論);
  2. 繼續分枝;
  3. 返去步驟 1。

例如係以下嘅虛擬碼噉,就能夠由手上數據砌一個決策樹出嚟[29]

計吓成個數據庫嘅 information entropy(訊息熵;簡單啲講就係指柞數據有幾接近完全隨機)

For 每一個用嚟做預測嘅變數
    計吓用咗佢分類之後嘅總 entropy
    計吓用咗佢分類之後嘅總 entropy 同成個數據庫嘅 entropy 差幾多(information gain

 information gain 最高嗰個變數嚟分類

For 每一個分咗嘅類,用嗰個類內嘅個案做數據庫,做多次上述嘅過程,直至用嗮所有用嚟做預測嘅變數,或者到咗指定嘅分枝數上限為止。

貝氏網路[編輯]

一個簡單嘅貝氏網絡
內文: 貝氏網路

貝氏網路(Bayesian network)[30]係一種可以用嚟教電腦做推理[31]、學習[32]、同計劃[33]嘅工具。一個貝氏網絡會考慮大量嘅變數,並且用一柞基於貝氏定理(Bayes' Theorem)嘅方程式模擬唔同變數之間嘅關係。舉個簡單嘅例子說明,假想家吓有一個貝氏網絡,佢會睇某啲變數(包括咗「有冇落雨」同埋「啲灌溉花灑有冇開著」)嘅數值,並且計出「啲草係濕嘅」呢個狀態係「真」嘅機會率,會用到(例如)以下呢條式[34]

當中 係指「啲草濕咗」呢個狀態, 係指「啲灌溉花灑著咗」呢個狀態,而 係指「有落雨」呢個狀態。成條式用日常用語講嘅話係噉嘅:「嗰三個狀態都係真嘅機會率」()等如「如果有落雨而且啲灌溉花灑著咗,啲草濕咗嘅機會率」()乘以「如果有落雨,啲灌溉花灑著咗嘅機會率」()乘以「有落雨嘅機會率」()。

個設計者寫好程式之後,可以(例如)搵一大柞有關呢幾個變數之間嘅關係嘅數據俾個程式睇,跟住叫個程式用呢啲過往嘅數據計出變數同變數之間嘅關係係點,而個程式就可以攞嚟預測未來[30]。貝氏式人工智能有相當廣泛嘅用途,例如 Xbox Live,喺幫啲打緊網上遊戲嘅玩家搵比賽加入嗰陣就會用到考慮嗰個玩家嘅贏率嘅貝氏網路[35],並且寫個演算法搵出令到呢個機會率最接近 50% 嘅分隊法(即係盡可能令場比賽勢均力敵)[35]

支援向量機[編輯]

內文: 支援向量機

支援向量機(support vector machines,簡稱「SVM」)係一類機械學習上會用嘅數學模型,用嚟做分類,多數係監督式學習之下先會用嘅。當一個支援向量機接到收有關一柞個案嘅數據嗰陣時,會將每個個案分類做兩個(事先指定咗嘅)類別嘅其中一個。例如係附圖入面噉,黑點同白點係兩類唔同嘅個案,每個個案喺 X 軸同 Y 軸呢個變數上有個數值,H1 呢條線唔能夠將個案清楚噉分類,H2 叫勉強做到分類,而 H3 就能夠清楚噉將個案分做兩類,係最理想嗰條線-而用多個兩個變數做分類嘅支援向量機可以按同一道理想像[36][37]

用兩個變數做 SVM 分析嘅圖解

一個建立一個支援向量機嘅演算法大致上要做以下嘅工作[36]

  1. 讀取數據;
  2. 將數據入面每一個個案用一個向量表達( 係個個案所屬嘅類別,而 就係若干個用嚟將個案分類嘅變數);
  3. 喺個空間(維度數量 = 用嚟分類嘅變數嘅數量)入面畫一條線(唔一定係直線),再用某啲指標量度呢條線「能唔能夠有效噉將啲個案清楚分類」;
  4. 按指標睇吓使唔使改吓條線同埋要點改。

學習範式[編輯]

喺建立咗一個數學模型之後,個程式就要以某啲方法慢慢噉改變個模型啲參數-係迴歸模型或者支援向量機嘅話,就要執條線嘅式嗰啲系數;係人工神經網絡嘅話,就要執啲神經細胞之間嘅權重值... 等等,目的係最後達致一個能夠準確噉做預測同決策嘅模型-就好似人類同第啲動物嘅學習過程噉樣。喺機械學習上,呢個過程可以用好多演算法做,而呢啲演算法可以分幾大類[38][39]

監督式學習[編輯]

內文: 監督式學習

監督式學習(supervised learning)可以話係最簡單直接嗰種學習範式,監督式學習演算法做嘅嘢係建立一個數學模型模擬柞數據,當中柞數據當中某啲變數扮演輸入,又有啲變數扮演輸出。柞學習用嘅數據係所謂嘅訓練用數據(training data)。用數學行話講嘅話,即係要搵出一柞已知嘅例子,有若干對輸入()同正確輸出(),,並且由可容許嘅函數當中搵返個同啲例子最吻合嘅函數 出嚟。喺呢種學習之下,個神經網絡會由個研究者嗰度收到一柞數據俾佢學,好似有個老師噉-所以就叫「監督」式學習[38][40]

監督式學習演算法要做嘅工作如下[9][12]

  1. 攞數據入面嘅一個個案(通常用一個向量表示);
  2. 用嗰個個案嘅「預測用變數」嘅值做自己個數學模型嘅輸入,計自己個模型所俾嘅輸出;
  3. 比較自己計嗰個輸出值同埋數據顯示嘅實際輸出值(即係所謂嘅「監督訊號」;supervisory signal);
  4. 攞呢兩個數嘅落差,計吓自己個模型啲參數要點變,先可以令到自己下次更有可能計到正確輸出值;
  5. 攞數據入面嘅下一個個案做多次呢個過程,直至讀完嗮個數據入面嘅所有個案為止。

用監督式學習可以訓練一個機械學習程式做好多唔同嘅工作,好似係圖形辨識(pattern recognition)[41]呀噉。舉個例說明,家吓有個研究員想訓練一個程式分辨一個病人係咪有肺癌[42],用嚟幫啲醫生手做檢查;佢可以去問醫院同醫學院等嘅單位借有關肺癌病人嘅數據,呢柞數據要包括咗每個病人嘅檢查結果()以及佢係咪真係有肺癌()等嘅資訊;跟手個研究員就會逐個逐個將啲病人個案嘅檢查結果同 X 光片嗰柞數字入落去個程式嘅輸入嗰度,而個輸出層就會係是但一個二元(binary)嘅輸出-「有肺癌」(用「1」代表)同「冇肺癌」(用「0」代表)。喺初頭嗰陣,個程式會犯好多錯,但係喺用呢柞數據訓練到噉上下之後,個程式會根據佢啲學習法則改變咗佢啲參數,順利嘅話啲誤差會變到愈嚟愈細[43];而最後如果個誤差細到去一個可以接受嘅水平嘅話,啲醫護人員就有可能會有興趣用呢個程式幫佢哋手做肺癌檢查。事實係,喺醫學上經已有唔少醫護人員會用機械學習程式幫手做診斷,有研究甚至發現,用機械學習程式嚟做診斷有陣時仲準過用人手做[44]

非監督式學習[編輯]

聚類分析嘅圖解;每一點代表一個個案,每個個案喺用 X 軸同 Y 軸分別代表嗰兩個變數上都各有其數值,由幅圖睇得出,啲個案明顯可以按呢兩個變數分三大類。
內文: 非監督式學習

非監督式學習(unsupervised learning)同監督式學習最大分別在於非監督式學習唔會有個設計者話俾個程式知乜嘢先係「正確答案」。一個用非監督式學習嘅機械學習程式淨係會接收輸入,並且嘗試由收到嘅輸入當中搵出一啲規律。一個典型嘅非監督式學習演算法嘅步驟大致如下[45]

  1. 攞數據入面嘅一個個案;
  2. 將佢同第啲個案比較,例如係佢會唔會同某柞個案(「某柞個案」係手上個案嘅子集)有共通點或者喺各變數上嘅數值距離特別近等等;
  3. 將下一個個案噉樣做。

非監督式學習最常見嘅用途係攞嚟做聚類分析(cluster analysis)。舉個例子說明,家吓有個生態學家想研究吓一個區域入面嗰啲傾向聚集喺啲乜嘢位置,佢可以坐直昇機或者用人造衛星影啲返嚟,再記錄嗮嗰個區域入面每樖樹生喺邊個位(呢個過程會嘥唔少時間),會得出一個數據庫,記錄嗮每樖樹喺 X 軸同 Y 軸嗰度嘅坐標。跟手佢就可能會想睇吓啲樹會唔會傾向聚集喺個區域入面嘅某啲位置(呢啲資訊可能有助佢保育一啲靠樹生存嘅動物)。如果有某一柞嘅樹彼此之間距離近,又同佢哋以外嘅樹距離遠,噉就可以話佢係「聚埋一羣」,而聚類分析就正係用嚟分析一柞個案入面會唔會有幾羣個體係「彼此之間距離近,同羣以外嘅個體距離遠」嘅[46][47][48]

喺呢次研究入面,個生態學家唔會事先知道啲樹要點分羣,所以用唔到監督式學習[47],但係佢可以運用非監督式學習嚟整一個神經網絡幫佢手做呢個聚類分析。一個簡單嘅可能做法係好似以下噉:將浸輸入層設做「樖樹嘅坐標」,等啲隱藏層用每一樖樹嘅數據逐個逐個計吓,而浸輸出層就有(例如)5 粒人工神經細胞,喺每樖樹嘅運算之後都會有一粒輸出層神經細胞嘅啟動程度係大過其他嘅-所以個生態學家就可以按「喺將嗰樖樹嘅數據入咗落去個神經網絡度之後,邊粒輸出層神經細胞嘅啟動程度最大」為準則將啲樹分做聚類,而且佢仲有得按照分類結果分得好唔好,嚟計吓使唔使改變吓個神經網絡嗰啲參數-個神經網絡喺度進行學習。除咗噉,電腦科學界仲有第啲更加精良嘅演算法嚟做非監督式學習[47][48]

強化學習[編輯]

內文: 強化學習

強化學習(reinforcement learning)係機械學習嘅一種,喺機械人設計上好有用。喺強化學習嘅過程裏面,個研究者唔會有個數據庫 俾個程式睇同跟住學,而係俾個程式係噉同佢周圍嘅環境互動(個環境可以係現場,又可以係一個模擬嘅環境):喺每一個時間點 ,個程式會產生一個用輸出嘅數字表示嘅動作(例如用「0」代表「企喺度唔郁」同「1」代表「向前行」呀噉),而跟住佢周圍個環境會俾返一啲回輸(feedback)-簡單啲講就係話返俾個程式聽佢個動作係咪一個好嘅決定(例如個地下有個窿,「向前行」會跌得好痛)。而個程式跟手就會根據呢個回輸計吓,睇吓要點樣改佢嗰啲參數先可以令到下次佢做行動嗰陣得到正面回應嘅機會率高啲-而上述嘅呢個例子就有可能可以攞嚟教一個機械人行路[49][50][51]

強化學習嘅過程大致可以想像成噉[52][53]

  1. 個程式俾出一個輸出,
  2. 個環境會根據佢嘅內部運作法則決定回輸,,係乜( 係現時狀態,而 係下一個狀態);
  3. 個程式會根據 決定係咪要修改自己內部嘅參數同埋(如果要)要點改;
  4. 返去步驟 1。

個程式內部要有一個演算法,個演算法要用 做輸入,俾出「內部參數要變幾多」做輸出。

遺傳演算法[編輯]

內文: 遺傳演算法

遺傳演算法(genetic algorithm,簡稱「GA」)係一種建基於進化論物競天擇過程嘅一種機械學習演算法:喺進化論上,一個族群內部嘅生物個體(例如一群人類)彼此之間或多或少噉喺遺傳上有所差異,而呢啲差異會引致佢哋喺表現型(包括外表、行為、同體質等)上有個體差異,當中佢哋有啲會比較叻生存同繁殖,所以更加有機會將自己嘅遺傳基因傳俾下一代,於是假設環境不變,個族群就會一代一代噉喺遺傳上有變異,變到更加適合喺嗰個環境生存同繁衍。遺傳演算法係受呢個理論啟發嘅一種演算法,做法如下[54][55]

  1. 整一大柞同類嘅數學模型出嚟,當中每個嘅參數各異;
  2. 叫每個數學模型做若干次嘅預測,每個按佢做預測嗰時嘅準確度有個分數,分數愈高表示佢表現愈好;
  3. 揀選分數最高嗰柞模型,將其餘嘅模型淘汰;
  4. 做「繁殖」嘅過程-用最高分嗰柞模型做「父母」,生產下一代嘅模型,下一代喺參數上會似佢哋嘅父母(「每一個下一代嘅每一個參數」都係「佢父母嘅同位參數」嘅函數);
  5. 重做上述過程,重複若干代;
  6. 如果一切順利,若干代之後,手上嘅模型會係一啲能夠準確噉做預測嘅模型[56]

評估[編輯]

喺做完學習過程之後,就要評估吓最後得出嗰個模型好唔好。要評一個模型係咪「好」,有以下呢啲指標可以用[57]

準確度[編輯]

最常用嚟評估機械學習模型嘅指標就係準確度,即係喺做完學習之後,要個機械學習程式睇一啲佢之前未見過嘅個案同埋對嗰啲個案進行預測,例如係一個訓練嚟預測股價嘅機械學習程式噉,要評估佢嘅準確度,最好方法就係要佢預測吓一啲佢之前未見過嘅時間點嘅股價。要評估一個模型嘅準確度,主要有幾種做法[58]

  • 將手上數據分成訓練集(training set)同測試集(test set):喺開始做學習之前,將手上數據分做訓練集同測試集,用訓練集(通常包含咗 2/3 嘅個案)做學習,然後用測試集(通常包含 1/3 嘅個案)要個程式試吓做預測,再用某啲指標量度個程式喺測試當中嘅預測有幾準-如果係做分類嘅話,可以用準確度(估啱嘅比率)做指標;而如果要預測嘅變數係連續嘅變數嘅話,就可以用平均誤差(平均嚟講,預測嘅數值同正確數值差幾遠)。
  • 自助抽樣法(bootstrapping);假設個數據入面嘅個案數量係 n;個演算法會由數據嗰度隨機抽一個個案出嚟,將個個案放入自助樣本(bootstrap sample),跟住擺返個個案入去再抽過(即係所謂嘅 sampling with replacement),重複 n 次,最後得出一個(可能有重複嘅)自助樣本,用個自助樣本做測試。
  • K 次交叉驗證(K-fold cross-validation):隨機噉將數據嘅個案分割做 K 份;然後攞其中一份,用嗰份做測試,用其餘嗰啲份做學習-跟住遂份遂份做呢個過程。同一道理,要用某啲指標量度準確度。

應用[編輯]

機械學習有以下嘅應用:

批評[編輯]

雖然話機械學習係一種重大嘅革新,但係機械學習好多時都達唔到理想嘅效果[59][60][61]。原因可以有好多:唔夠啱用嘅數據、存取唔到有用嘅數據、數據當中嘅偏差、同埋用錯演算法等都可以搞到個機械演算法失敗[62],「機械學習」可能失敗係一個受關注嘅議題,因為廿一世紀初好多技術都係靠機械學習做嘅,例如係喺 2018 年,有架靠機械學習訓練嘅自駕車探測唔到行人,於是炒咗車,仲撞死咗人[63],而有個案報告話用嚟做醫療診斷嘅機械學習程式出錯,搞到病人好長手尾[64][65]。呢啲噉嘅問題令到機械學習嘅專家開始思考機械學習有啲乜嘢缺陷,同埋要點補救[59]

睇埋[編輯]

參考[編輯]

  • Nils J. Nilsson, Introduction to Machine Learning.
  • Trevor Hastie, Robert Tibshirani and Jerome H. Friedman (2001). The Elements of Statistical Learning, Springer. ISBN 0-387-95284-5.
  • Pedro Domingos (September 2015), The Master Algorithm, Basic Books, ISBN 978-0-465-06570-7
  • Ian H. Witten and Eibe Frank (2011). Data Mining: Practical machine learning tools and techniques. Morgan Kaufmann, 664pp., ISBN 978-0-12-374856-0.
  • Ethem Alpaydin (2004). Introduction to Machine Learning, MIT Press, ISBN 978-0-262-01243-0.
  • David J. C. MacKay. Information Theory, Inference, and Learning Algorithms. Cambridge: Cambridge University Press, 2003. ISBN 0-521-64298-1
  • Richard O. Duda, Peter E. Hart, David G. Stork (2001) Pattern classification (2nd edition), Wiley, New York, ISBN 0-471-05669-3.
  • Christopher Bishop (1995). Neural Networks for Pattern Recognition, Oxford University Press. ISBN 0-19-853864-2.
  • Stuart Russell & Peter Norvig, (2009). Artificial Intelligence – A Modern Approach. Pearson, ISBN 9789332543515.
  • Ray Solomonoff, An Inductive Inference Machine, IRE Convention Record, Section on Information Theory, Part 2, pp., 56–62, 1957.
  • Ray Solomonoff, An Inductive Inference Machine, A privately circulated report from the 1956 Dartmouth Summer Research Conference on AI.
  • VanderPlas, J. (2016). Python data science handbook: essential tools for working with data. O'Reilly Media, Inc.

[編輯]

  1. The definition "without being explicitly programmed" is often attributed to Arthur Samuel, who coined the term "machine learning" in 1959, but the phrase is not found verbatim in this publication, and may be a paraphrase that appeared later. Confer "Paraphrasing Arthur Samuel (1959), the question is: How can computers learn to solve problems without being explicitly programmed?" in Koza, John R.; Bennett, Forrest H.; Andre, David; Keane, Martin A. (1996). Automated Design of Both the Topology and Sizing of Analog Electrical Circuits Using Genetic Programming. Artificial Intelligence in Design '96. Springer, Dordrecht. pp. 151–170.
  2. 2.0 2.1 2.2 Bishop, C. M. (2006), Pattern Recognition and Machine Learning, Springer.
  3. 6 Top Applications of Machine Learning. Hackernoon.
  4. Kononenko, I. (2001). Machine learning for medical diagnosis: history, state of the art and perspective. Artificial Intelligence in medicine, 23(1), 89-109.
  5. Heaton, J. B., Polson, N. G., & Witte, J. H. (2017). Deep learning for finance: deep portfolios. Applied Stochastic Models in Business and Industry, 33(1), 3-12.
  6. Ling, C. X., & Li, C. (1998, August). Data mining for direct marketing: Problems and solutions. In Kdd (Vol. 98, pp. 73-79).
  7. Friedman, Jerome H. (1998). "Data Mining and Statistics: What's the connection?". Computing Science and Statistics. 29 (1): 3–9.
  8. Samuel, Arthur (1959). "Some Studies in Machine Learning Using the Game of Checkers". IBM Journal of Research and Development. 3 (3): 210–229.
  9. 9.0 9.1 Mitchell, T. (1997). Machine Learning. McGraw Hill. p. 2.
  10. 10.0 10.1 Harnad, S. (2006). The annotation game: On Turing (1950) on computing, machinery, and intelligence. In The Turing test sourcebook: philosophical and methodological issues in the quest for the thinking computer. Kluwer.
  11. Walker, J. E.; Shea, T. M.; Bauer, A.M. "Generalization and the Effects of Consequences | Education.com". www.education.com.
  12. 12.0 12.1 Mohri, Mehryar; Rostamizadeh, Afshin; Talwalkar, Ameet (2012). Foundations of Machine Learning. USA, Massachusetts: MIT Press.
  13. Angluin, D. 1992. Computational learning theory: Survey and selected bibliography. In Proceedings of the Twenty-Fourth Annual ACM Symposium on Theory of Computing (May 1992), pages 351–369.
  14. Frameworks for Approaching the Machine Learning Process. KDnuggets.
  15. Pyle, D., 1999. Data Preparation for Data Mining. Morgan Kaufmann Publishers, Los Altos, California.
  16. Chicco D (December 2017). "Ten quick tips for machine learning in computational biology". BioData Mining. 10 (35): 1–17.
  17. Data Preprocessing for Machine learning in Python.
  18. 18.0 18.1 Linear Regression with example. Towards Data Science.
  19. Seber, G. A., & Lee, A. J. (2012). Linear regression analysis (Vol. 329). John Wiley & Sons.
  20. YangJing Long (2009). "Human age estimation by metric learning for regression problems". Proc. International Conference on Computer Analysis of Images and Patterns: 74–82.
  21. Regression in Machine Learning. Towards Data Science.
  22. Gardner, M. W., & Dorling, S. R. (1998). Artificial neural networks (the multilayer perceptron)—a review of applications in the atmospheric sciences. Atmospheric environment, 32(14-15), 2627-2636.
  23. Russell, Stuart J.; Norvig, Peter (2010). Artificial Intelligence A Modern Approach. Prentice Hall. p. 578.
  24. The Machine Learning Dictionary - activation level.
  25. 25.0 25.1 25.2 Learning process of a neural network. Towards Data Science.
  26. 26.0 26.1 Honglak Lee, Roger Grosse, Rajesh Ranganath, Andrew Y. Ng. "Convolutional Deep Belief Networks for Scalable Unsupervised Learning of Hierarchical Representations" Proceedings of the 26th Annual International Conference on Machine Learning, 2009.
  27. Decision Trees in Machine Learning. Towards Data Science.
  28. Decision Tree. Machine Learning.
  29. Chapter 4: Decision Trees Algorithms.
  30. 30.0 30.1 Bayesian Networks. Bayesialab.
  31. Bayesian inference algorithm:
    • Russell & Norvig 2003, pp. 504–519,
    • Poole, Mackworth & Goebel 1998, pp. 361–381,
    • Luger & Stubblefield 2004, pp. ~363–379,
    • Nilsson 1998, chpt. 19.4 & 7.
  32. Bayesian learning and the expectation-maximization algorithm:
    • Russell & Norvig 2003, pp. 712–724,
    • Poole, Mackworth & Goebel 1998, pp. 424–433,
    • Nilsson 1998, chpt. 20.
  33. Bayesian decision theory and Bayesian decision networks:
    • Russell & Norvig 2003, pp. 597–600.
  34. Bayesian networks:
    • Russell & Norvig 2003, pp. 492–523,
    • Poole, Mackworth & Goebel 1998, pp. 361–381,
    • Luger & Stubblefield 2004, pp. ~182–190, ≈363–379,
    • Nilsson 1998, chpt. 19.3–4.
  35. 35.0 35.1 Delalleau, O., Contal, E., Thibodeau-Laufer, E., Ferrari, R. C., Bengio, Y., & Zhang, F. (2012). Beyond skill rating: Advanced matchmaking in ghost recon online. IEEE Transactions on Computational Intelligence and AI in Games, 4(3), 167-177.
  36. 36.0 36.1 Cortes, Corinna; Vapnik, Vladimir N. (1995). "Support-vector networks". Machine Learning. 20 (3): 273–297.
  37. Ben-Hur, Asa; Horn, David; Siegelmann, Hava; and Vapnik, Vladimir N.; "Support vector clustering"; (2001); Journal of Machine Learning Research, 2: 125–137.
  38. 38.0 38.1 Ojha, Varun Kumar; Abraham, Ajith; Snášel, Václav (2017-04-01). "Metaheuristic design of feedforward neural networks: A review of two decades of research". Engineering Applications of Artificial Intelligence. 60: 97–116.
  39. Ting Qin, et al. "A learning algorithm of CMAC based on RLS." Neural Processing Letters 19.1 (2004): 49–61.
  40. M.R. Smith and T. Martinez (2011). "Improving Classification Accuracy by Identifying and Removing Instances that Should Be Misclassified". Proceedings of International Joint Conference on Neural Networks (IJCNN 2011). pp. 2690–2697.
  41. Looney, C. G. (1997). Pattern recognition using neural networks: theory and algorithms for engineers and scientists (pp. 171-172). New York: Oxford University Press.
  42. Cancer Detection - MATLAB Example.
  43. Menéndez, L. Á., de Cos Juez, F. J., Lasheras, F. S., & Riesgo, J. Á. (2010). Artificial neural networks applied to cancer detection in a breast screening programme. Mathematical and Computer Modelling, 52(7-8), 983-991.
  44. Milani, C., & Jadavji, N. M. (2017). Solving cancer: The use of artificial neural networks in cancer diagnosis and treatment. Journal of Young Investigators, 33(4).
  45. Jordan, Michael I.; Bishop, Christopher M. (2004). "Neural Networks". In Allen B. Tucker (ed.). Computer Science Handbook, Second Edition (Section VII: Intelligent Systems). Boca Raton, Florida: Chapman & Hall/CRC Press LLC.
  46. Unsupervised learning - MathWorks.
  47. 47.0 47.1 47.2 Unsupervised Learning and Data Clustering. Towards Data Science.
  48. 48.0 48.1 Dostál, P., & Pokorný, P. (2009). Cluster analysis and neural network. In 17th Annual Conference Proceedings on Technical Computing Prague (pp. 131-57).
  49. Dominic, S.; Das, R.; Whitley, D.; Anderson, C. (July 1991). "Genetic reinforcement learning for neural networks". IJCNN-91-Seattle International Joint Conference on Neural Networks. IJCNN-91-Seattle International Joint Conference on Neural Networks. Seattle, Washington, USA: IEEE.
  50. Hoskins, J.C.; Himmelblau, D.M. (1992). "Process control via artificial neural networks and reinforcement learning". Computers & Chemical Engineering. 16 (4): 241–251.
  51. Bertsekas, D.P.; Tsitsiklis, J.N. (1996). Neuro-dynamic programming. Athena Scientific. p. 512.
  52. NEURAL NETWORKS AND REINFORCEMENT LEARNING (PDF).
  53. Miller, W. T., Werbos, P. J., & Sutton, R. S. (Eds.). (1995). Neural networks for control. MIT press.
  54. Goldberg, David E.; Holland, John H. (1988). "Genetic algorithms and machine learning". Machine Learning. 3 (2): 95–99.
  55. Michie, D.; Spiegelhalter, D. J.; Taylor, C. C. (1994). "Machine Learning, Neural and Statistical Classification". Ellis Horwood Series in Artificial Intelligence.
  56. Zhang, Jun; Zhan, Zhi-hui; Lin, Ying; Chen, Ni; Gong, Yue-jiao; Zhong, Jing-hui; Chung, Henry S.H.; Li, Yun; Shi, Yu-hui (2011). "Evolutionary Computation Meets Machine Learning: A Survey" (PDF). Computational Intelligence Magazine. 6 (4): 68–75.
  57. Metrics to Evaluate your Machine Learning Algorithm. Towards Data Science.
  58. Kohavi, Ron (1995). "A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection". International Joint Conference on Artificial Intelligence.
  59. 59.0 59.1 "Why Machine Learning Models Often Fail to Learn: QuickTake Q&A". Bloomberg.com.
  60. "The First Wave of Corporate AI Is Doomed to Fail". Harvard Business Review. 2017-04-18.
  61. "Why the A.I. euphoria is doomed to fail". VentureBeat. 2016-09-18.
  62. "9 Reasons why your machine learning project will fail". www.kdnuggets.com.
  63. "Why Uber's self-driving car killed a pedestrian". The Economist.
  64. "IBM's Watson recommended 'unsafe and incorrect' cancer treatments - STAT". STAT.
  65. Hernandez, Daniela; Greenwald, Ted (2018-08-11). "IBM Has a Watson Dilemma". Wall Street Journal.

[編輯]