用戶:だ*ぜ/Draft/機械學習

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

機械學習(英語:machine learning,簡稱「ML」)是人工智能的一個子領域,專門研究如何設計一些特殊的演算法統計模型,用於去教電腦在不需要個用家開口給明文指示的情況下,學識有效這樣做一些特定的作業。機械學習的典型做法如下[2][3]:2

  1. 編寫一個程式,教部電腦如何由數據那裏建立一個數學模型來描述他對啲變數之間的關係的知識;
  2. 找啲樣本數據(即是所謂的「訓練數據」)返來,給個程式處理嚇啲數據裏面的個案,等部電腦按個程式建立一個數學模型;以及
  3. 在將來再遇到同類個案的時候,電腦就會瞭解按他個程式,用建立了那個模型,對這些之前未見過的個案作出預測(即設計者不需要另外讓電腦學習如何應對這些前所未見的個案,電腦自身也會有能力在一定程度上做出應對)。

機械學習演算法做的事情是令部電腦瞭解「用手上資訊,自動地預測某些特定的變數的數值」,所以機械學習的技術可以將「做預測」這件事情自動化,而因為「做預測」這件事情在好多領域都會用到,機械學習可以有好多實用價值,例如是[4]

  • 醫療:機械學習可以用來教電腦由手上的醫療數據,學識哪些病徵與哪些病症有關,所以可以拿來幫手診斷病人(用「手上病人的病徵」預測「他有甚麼病」)[5]
  • 金融:機械學習上有技術可以教電腦由手上的金融(例如是之前那幾個月的股價)來預測打後股價會點變化,這點在金融業上可以幫手做預測[6]
  • 市場學:機械學習可以用來教電腦由過去有關不同產品的銷售量的數據,預測將來(間公司想出)的同類產品的銷售量[7]

⋯⋯等等。

機械學習與數據科學data science)的關係十分密切,例如數據探勘data mining),就可以涉及教部電腦如何找出數據當中的規律,令到部電腦瞭解自動化地探勘一些人手好難分析的數據,由這些數據那裏抽取有用的資訊,而因為「由數據抽取資訊」這件事情基本上無論甚麼科學商學領域都會用到,所以機械學習對於好多領域來講都是一種好有用的技術[8][9]

概論

編輯

定位

編輯

機械學習這個領域的定義如下[10]

上述這個定義避免了一些歧義性的問題:英國數學家電算學家艾倫·圖靈對於人工智能曾經問過「機械有沒有能力思考?」這個問題,所以有人提出將人工智能(包括機械學習)定義為「研究如何令機械思考」的領域。但這個定位給好多科學家嫌他含糊得滯(例如「思考」這個詞應該要定義就經已好摎攪[11]),所以研究機械學習的科學家一般不主張用這個詞定義一個領域;而相比之下,上述的定義不需要依賴啲甚麼零舍含糊的詞語——這個定義只是要求電腦程式有類似人類一樣的行為,所以給人覺得比較適合用來做成個科學領域的定位[11]

理論

編輯

一個學習者(無論是機械還是人類)的主要目的是要將經驗普遍化generalize[12]——由經歷過的事情當中抽取那些事情普遍具有的特性,並且用這些資訊來解難,例如一個人在被隻咬過之後,可能會產生「狗普遍傾向會咬人」的諗頭,並且從此之後傾向避開狗(將「這一隻狗會咬我」普遍化成「狗普遍都會咬我」)。機械學習都是同一道理:做機械學習會給一部電腦處理一些數據,再要部電腦對於一些他之前未見過的同類個案作出預測,類似是一些金融上會用的機械學習程式一樣,設計者嘗試教部電腦用「過去的股價數據」預測「將來的股價」(將「我處理過那些股票的股價變化法則」普遍化做「股票股價變化起上來普遍會跟從的法則」)[3][13]

用行話講的話,這個過程如下:學習用的數據是出自一個有特定概率分佈probability distribution)的現實,而假設組數據是大致上準確地代表到個現實概率分佈的(組數據的概率分佈同個現實的近乎一樣),那麼機械學習程式就要靠他的演算法加埋啲數據砌返個合乎現實的數學模型出來[3][14]

 
一個常態分佈的圖解;X軸表示研究緊那個變數,而Y軸反映了每個變數出現的頻率。

舉個例說明:想像現在有一個常態分佈normal distribution;睇圖),他X軸表示研究緊的變數,而Y軸反映了每個變數值出現的頻率,例如如果X軸代表「人類的身高」,那麼常態分佈表達的事情如下:人類的身高最常在中間那個數值(那個數值出現率最高),而距離中間那個數值愈遠的身高值就出現得愈少(好少有極高或者極矮的人)。個常態分佈條線會有一條相應的數學式。而家假想個常態分佈代表住全人類的身高,跟住研究者抽一個樣本,例如是找500個人類返來,量度他們的身高。在最理想的情況之中,個樣本會完美地代表到人類總體的身高分佈——即如果將個樣本裏面的「身高值」同「每個值出現的率」畫條線,條線的形狀會同總體人類那條完全一個板。而如果現在話要訓練一個機械學習程式,去靠個樣本的數據學習人類的身高分佈,個程式要做的事情就是由一些數據那裏,砌返一個代表到人類總體身高分佈那條線的數學式出來(另見統計學)。

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

基本流程

編輯

在實用上,機械學習的流程基本上如下[16]

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

事前數據處理

編輯
 
一個典型的數據庫;當中每一個直行代表一個變數,每一個橫行代表一個個案,個數據庫會有每個個案在各變數上的數值。

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

舉個例說明,假想有一個金融學者想用機械學習教個電腦程式預測股價,他可以去一些網上的金融數據庫那裏拿某一組股票在某一段時間之間的價格(另見大數據),一隻股票為止一個個案,每隻股票都會在「2019年7月1號的價格」同「2019年8月1號的價格」等的多個變數上有一個值,但是這些數據都是由某些人或者程式負責搜集的,兩者都可能會有失誤:例如可能有某隻股票「2019年7月1號的價格」是一個不知的數值(數據不見了);又或者搜集數據的單位搞錯事情,有隻股票「2019年7月1號的價格」是一個不可能的數值(例:負數)。如果個研究者就噉將這些數據入給個機械學習程式處理,個程式好可能會出錯。於是他就有需要做一些事前處理,確保他手上的數據庫是可以由機械學習程式處理的。

例子碼

編輯

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

# 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,:]) 

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

數學模型

編輯

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

讀取事前處理完嘅數據

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

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

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

迴歸模型

編輯
 
一個線性迴歸模型的圖解;幅圖的兩條軸分別代表研究緊那兩個變數(x同y),用迴歸分析估計出條線並且知這兩個變數大致上成正比關係,而條線跟住可以拿來做預測。

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

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

⋯⋯等等。

原則上,如果有一個方法可以找出 以及 等參數的數值,就可以靠一條公式大致上用IV的值估計DV的值,而機械學習可以用一個迴歸模型做他的數學模型,例如是以下這段碼這樣,做的事情就是(拿到數據同做完啲事前處理之後)建立一個參數值是隨機設的線性迴歸模型,再按組數據裏面啲個案慢慢地調較個模型,最後想要個模型能夠準確地做預測[20]

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)是受生物神經系統啟發的一種數學模型[24]。例如,一隻靈長目動物閒閒地有斷百億計的神經細胞(neuron),一粒神經細胞在給電同化學物訊號刺激到的時候,會跟住以電或者化學物來傳新訊號,所以當一粒神經細胞射訊號的時候可以引起連鎖反應,將訊息在成個神經網絡那裏傳開去;而人工神經網絡主要是以電腦程式的方法來模擬這個過程,令一個電腦程式能夠出現一些類似動物神經系統噉的行為[25]

一個人工神經網絡由大量的人工神經細胞artificial neuron)組成。在用電腦程式整神經網絡的時候,個研究者(通常)會每粒人工神經細胞都同他設返個數值,用這個數代表他的啟動程度activation level[26],而每粒神經細胞的啟動程度的數值都有條公式計算,這條公式包括了在他之前那些神經細胞的啟動程度。啲函數當中的參數可以變化,而如果一個神經網絡的程式令到他識得靠自己的經驗來到調整這些參數的話,那個神經網絡就會具有學習的能力[27][28]

舉個例說明,例如家嚇找個神經網絡裏面某一粒人工神經細胞集中睇他,他會有返個數字來反映他的啟動程度,而這個數字取決於其他人工神經細胞的啟動程度——即個程式裏面每粒細胞都會有一條類似這樣的算式:

 

在這條公式當中, 代表那粒神經細胞的啟動程度, 代表其他神經細胞當中第 粒的啟動程度,而 就是其他神經細胞當中第 粒的權重(指那粒神經細胞有幾影響到 那粒神經細胞的啟動程度)。所以當一粒人工神經細胞啟動的時候,會帶起他後面啲人工神經細胞跟住他啟動——十分類似生物神經網絡裏面那些神經細胞。假如個神經網絡的程式令他能夠自行按照經驗改變 的數值的話,他就會瞭解學習(根據經驗改變自己的行為)[27]

在演算法上,一個最簡單的監督式學習神經網絡同一個用迴歸模型的機械學習演算法一個板,分別只是在於y同x之間的那條公式不同了。在一個人工神經網絡的程式當中,會有若干粒細胞做輸出值,若干粒細胞做輸入值,每粒輸出層細胞的啟動程度會是他之前那層細胞的啟動程度的函數,如此類推。在程式編寫上,這樣多噉多的權重值同啟動值可以用矩陣輕易噉儲住。類似是以下這段虛擬碼噉[27]

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);

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

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

決策樹

編輯
 
一個用來預測一個鐵達尼號乘客有幾大機會生還的決策樹

決策樹學習decision tree learning)是機械學習的一種模型,一個決策樹(decision tree)會有若干個節點(node),每個節點代表了一個考慮緊的變數,並且在接收到一個個案的時候,先後噉用這些變數作出預測,例如是附圖裏面那個決策樹這樣,他會接收一個個案的數據,然後先後噉按照個個案的各種變數(性別、年紀、同有幾多個親屬在船上呀噉)預測那個鐵達尼號乘客有幾大機會生還。而一個用決策樹的機械學習演算法要做的事情就是用手上的數據,砌出一個這樣的決策樹[29]。一個建立決策樹的演算法步驟大致如下[30]

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

例如是以下的虛擬碼噉,就能夠由手上數據砌一個決策樹出來[31]

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

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

 information gain 最高嗰個變數嚟分類

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

貝氏網絡

編輯
 
一個簡單的貝氏網絡

貝氏網絡Bayesian network[32]是一種可以用來教電腦做推理[33]、學習[34]、同計劃[35]的工具。一個貝氏網絡會考慮大量的變數,並且用一組基於貝氏定理Bayes' Theorem)的方程式模擬不同變數之間的關係。舉個簡單的例子說明,假想家嚇有一個貝氏網絡,他會睇某些變數(包括了「有沒有落雨」以及「啲灌溉花灑有沒有開着」)的數值,並且計算出「啲草是濕的」這個狀態是「真」的機會率,會用到(例如)以下這條公式[36]

 

當中 是指「啲草濕了」這個狀態, 是指「啲灌溉花灑著了」這個狀態,而 是指「有落雨」這個狀態。整條公式用日常用語講的話是噉的:「那三個狀態都是真的機會率」( )等如「如果有落雨而且啲灌溉花灑著了,啲草濕了的機會率」( )乘以「如果有落雨,啲灌溉花灑著了的機會率」( )乘以「有落雨的機會率」( )。

個設計者寫好程式之後,可以(例如)找一大組有關這幾個變數之間的關係的數據給個程式睇,跟住叫個程式用這些過往的數據計算出變數同變數之間的關係是點,而個程式就可以拿來預測未來[32]。貝氏式人工智能有相當廣泛的用途,例如Xbox Live,在幫一些打緊網上遊戲的玩家找比賽加入的時候就會用到考慮那個玩家的贏率的貝氏網絡[37],並且寫個演算法找出令到這個機會率最接近50%的分隊法(即是盡可能令場比賽勢均力敵)[37]

支援向量機

編輯

支援向量機support vector machines,簡稱「SVM」)是一類機械學習上會用的數學模型,用來做分類,多數是監督式學習之下先會用的。當一個支援向量機接到收有關一組個案的數據的時候時,會將每個個案分類做兩個(事先指定了的)類別的其中一個。例如是附圖裏面噉,黑點同白點是兩類不同的個案,每個個案在X軸同Y軸這個變數上有一個數值,H1這條線不能夠將個案清楚噉分類,H2叫勉強做到分類,而H3就能夠清楚噉將個案分做兩類,是最理想那條線——而用多個兩個變數做分類的支援向量機可以按同一道理想像[38][39]

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

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

  1. 讀取數據;
  2. 將數據裏面每一個個案用一個向量表達(  是個個案所屬的類別,而 就是若干個用來將個案分類的變數);
  3. 在個空間(維度數量=用來分類的變數的數量)裏面畫一條線(不一定是直線),再用某些指標量度這條線「能不能夠有效噉將一些個案清楚分類」;
  4. 按指標睇嚇需不需要改嚇條線以及要點改。

學習範式

編輯

在建立了一個數學模型之後,個程式就要以某些方法慢慢噉改變個模型啲參數——是迴歸模型或者支援向量機的話,就要執條線的式那些系數;是人工神經網絡的話,就要執啲神經細胞之間的權重值⋯⋯等等,目的是最後達致一個能夠準確噉做預測同決策的模型——就類似人類同其他動物的學習過程這樣。在機械學習上,這個過程可以用好多演算法做,而這些演算法可以分幾大類[40][41]

監督式學習

編輯

監督式學習supervised learning)可以話是最簡單直接那種學習範式。監督式學習演算法做的事情是建立一個數學模型模擬組數據,他當中某些變數扮演輸入、又有一些變數扮演輸出。組學習用的數據是所謂的訓練用數據training data)。用數學行話講返,即是要找出一組已知的例子,有若干對輸入( )同正確輸出( ), ,再由容許得的函數當中找返個同啲例子最對搭的函數 出來。在這種學習之下,個神經網絡會由研究者度收到一組數據給他學,類似有一個老師噉——所以就叫「監督」式學習[40][42]

監督式學習演算法要做的工作如下[10][14]

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

用監督式學習可以訓練一個機械學習程式做好多不同的工作,類似是圖形辨識pattern recognition[43]呀噉。舉個例說明,家嚇有一個研究員想訓練一個程式分辨一個病人是咪有肺癌[44],用來幫一些醫生手做檢查;他可以去問醫院同醫學院等的單位借有關肺癌病人的數據,這組數據要包括了每個病人的檢查結果( )以及他是咪真是有肺癌( )等的資訊;跟手個研究員就會逐個逐個將一些病人個案的檢查結果同X光片那組數字入落去個程式的輸入那裏,而個輸出層就會是是但一個二元(binary)的輸出——「有肺癌」(用「1」代表)同「沒有肺癌」(用「0」代表)。剛開始時,個程式會犯好多錯,但是在用這組數據訓練到噉上下之後,個程式會根據他啲學習法則改變了他啲參數,順利的話啲誤差會變到愈來愈細[45];而最後如果個誤差細到去一個可以接受的水平的話,啲醫護人員就有可能會有興趣用這個程式幫他們手做肺癌檢查。事實是,在醫學上經已有不少醫護人員會用機械學習程式幫手做診斷,有研究甚至發現,用機械學習程式來做診斷有陣時仲準過用人手做[46]

非監督式學習

編輯
 
聚類分析的圖解;每一點代表一個個案,每個個案在用X軸同Y軸分別代表那兩個變數上都各有其數值,由幅圖睇得出,啲個案明顯可以按這兩個變數分三大類。

非監督式學習unsupervised learning)同監督式學習最大分別在於非監督式學習不會有一個設計者話給個程式知甚麼才是「正確答案」。一個用非監督式學習的機械學習程式淨是會接收輸入,並且嘗試由收到的輸入當中找出一些規律。一個典型的非監督式學習演算法的步驟大致如下[47]

  1. 拿數據裏面的一個個案;
  2. 將他同其他個案比較,例如是他會不會同某組個案(「某組個案」是手上個案的子集)有共通點或者在各變數上的數值距離特別近等等;
  3. 將下一個個案這樣做。

非監督式學習最常見的用途就是拿來做聚類分析cluster analysis)。比如,家嚇有一個生態學家想研究嚇一柵區域裏面那些傾向於聚集在甚麼位置,他可以坐直昇機或者用人造衛星拍攝一些相片,再記錄嗮那柵區域裏面每棵樹生在哪個位置(這個過程會浪費不少時間),這樣得出一個數據庫,之記錄嗮每棵樹在X軸同Y軸那裏的坐標。跟手他就可能會想睇嚇:啲樹會不會傾向於聚集在個區域裏面的某些特定位置(這些資訊可能有助他保育一些靠樹生存的動物)。如果相對來講有某一組、啲樹彼此之間距離近、又同他們以外的樹距離遠,噉就可以話他是「聚埋一群」。而聚類分析就正是用來分析一組個案裏面會不會有幾群個體是「彼此之間距離近,同群以外啲個體距離遠」的[48][49][50]

在這次研究裏面,個生態學家不會事先知道要點將樹分群,所以用不到監督式學習[49]。但是他可以使非監督式學習來整一個神經網絡幫他手做這個聚類分析。一個較可能的簡單做法是好像以下所述:將前饋網絡的第一層——輸入層設做「棵樹的坐標」,等那些隱藏層用每一棵樹的數據逐個逐個計算。而前饋網絡的最後一層——輸出層就有(例如)5粒人工神經細胞。對每棵樹的運算結束之後都會有一粒輸出層的神經細胞的啟動程度是大過其他的——據此個生態學家就可以按「將棵樹的數據入了落去個神經網絡度之後,哪一粒輸出層神經細胞的啟動程度最大」為準則將樹分做不同聚類,而且他仲有得按照分類結果分得好不好,來計算一下需不需要改變神經網絡的參數——個神經網絡就噉在度進行緊學習。除了噉,電腦科學界仲有其他更加精良的演算法來做開非監督式學習[49][50]

強化學習

編輯

強化學習reinforcement learning)是機械學習的一種,在機械人設計上好有用。在強化學習的過程裏面,個研究者不會有一個數據庫 給個程式睇同跟住學,而是給個程式是噉同他周圍的環境互動(個環境可以是現場,又可以是一個模擬的環境):在每一個時間點 ,個程式會產生一個用輸出的數字表示的動作(例如用「0」代表「企在度不動」同「1」代表「向前行」呀噉),而跟住他周圍個環境會給返一些回饋(feedback)——簡單啲講就是話返給個程式聽,他個動作對不對(例如:地上有一個洞,「向前行」會跌得很痛)。而個程式跟手就會根據這個回饋計算嚇,睇嚇要如何改他那些參數先可以令到下次他做行動的時候得到正面回應的機會率高啲——而上述的這個例子就有可能可以拿來教一個機械人行路[51][52][53]

強化學習的過程大致可以想像成噉[54][55]

  1. 個程式給出一個輸出, 
  2. 個環境會根據他的內部運作法則決定回饋, ,是乜( 是現時狀態,而 是下一個狀態);
  3. 個程式會根據 決定是咪要修改自己內部的參數,若果是,要點改;
  4. 返步驟1做過。

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

遺傳演算法

編輯

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

  1. 整一大組同類的數學模型出來,當中每個啲參數都有不同;
  2. 叫每個數學模型做若干次的預測,每個按他做預測陣時的準確度得返個分數,分數愈高表示他表現愈好;
  3. 揀選分數最高那組模型,將其餘的模型淘汰澌;
  4. 做「繁殖」的過程——用最高分那組模型做「父母」,生產下一代的模型。啲仔在參數上會似他們的父母(「每個仔的每粒參數」都是「他父母的同位參數」的函數);
  5. 再做過上述過程,重複若干代;
  6. 如果一切順利,若干代之後手上的模型會是一些預估估得對的模型[58]

模型評估

編輯

在做完學習過程之後,就要評估嚇最後得出那個模型好定不好。要評一個模型是咪「好」,有以下指標使得[59][60]

準確度

編輯

最常用開評估機械學習模型的指標就是準確度。即是在做完學習之後,要個機械學習程式睇一些他之前未見過的個案,以及要他對那些個案進行預測。比如一個訓練來預測股價的機械學習程式噉,要評估他的準確度,最好方法就是要他預估嚇一些股價、是他之前未見過的時間點的。要評估一個模型的準確度,主要有幾種做法[61]

  • 將手上啲數據分成訓練集training set)同測試集test set):在開始做學習之前,將手上數據分做訓練集同測試集。用訓練集(通常包含了2/3的個案)做學習,然之後用測試集(通常包含1/3的個案)要個程式試嚇做預測,再用某些指標來量度個程式在測試當中個預測有幾準——如果是做分類的話,可以用準確度(估對的比率)做指標;而如果要預測的變數是連續變數的話,就可以使平均誤差(平均來講,預測的數值同正確數值差幾遠)。
  • 自助抽樣法bootstrapping);設個數據裏面的個案數量是n;個演算法會由一些數據度隨機抽一個個案出來,將個個案放入自助樣本bootstrap sample),跟住再擺返第個個案入去抽過(即所謂的「邊替換邊抽樣sampling with replacement),重複n次。最尾得出一個(可能有重複的)自助樣本,用個自助樣本做過測試。
  • K次交叉驗證K-fold cross-validation):隨機噉將數據的個案劏做K份;然後拿其中一份做測試,其餘啲份做學習——跟住逐份逐份過這個過程。同一道理,都要使某些指標量度準確度[62]

靈敏度同特異度

編輯

除了預測準確度之外,一個做分類的機械學習模型的質素仲可以用靈敏度同特異度sensitivity and specificity)作為指標來量度。靈敏度同特異度包括了四個數值:歸對唨啲陽性個案的真陽性率(True Positive Rate,TRP)跟歸對唨啲陰性個案的真陰性率(True Negative Rate,TNR),以及歸錯唨啲陽性個案的假陽性率(False Positive Rate,FRP)跟歸錯唨啲陰性個案的假陰性率(False Negative Rate,FNR)。亦都有一些設計者嫌這些數字淨是顯示到比例,所以在寫論文同報告的時候會將一些比例的分子分母都報埋出來[63][64]

表徵學習

編輯

表徵學習feature learning,又有叫「representation learning」)是機械學習裏面會用的一種演算法,專門用來將一些輸入轉化、令啲輸入簡單啲有用啲,但同時又保留到啲輸入當中帶的訊息。例如在現實應用當中,個數據庫有陣時可以有成幾百個用來做預測的變數(x的維度有幾百個),而這類情況可能會造成種問題,之個程式要做的運算量太大、甚至乎要花好耐時間先行得完[65]。於是個機械學習程式的設計者就可能會想使某些方法去減少輸入當中變數的數量(降低x的維度),等個學習程式易行啲。常見的方法有事前幫組數據做嚇主成分分析principal component analysis)或者聚類分析先,跟住先至將一些數據輸入落去個機械學習程式那裏。但這樣做就梗會令到輸入捱簡化了,造成訊息流失。所以「表徵學習要點做」在機械學習上是一個好受關注的課題[66][67]

就演算法,褦有表徵學習的監督式機械學習過程是噉的[68]

做事前數據處理

做表徵學習同柞數據降低維度

讀取處理完嘅數據

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

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

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

「做表徵學習,同組數據降低維度」的過程可以用是但一種學習範式或者數學模型來做。比如對於一個監督式學習人工神經網絡的表徵學習,是設他啲輸入做成數據庫裏面所有的x變數,跟手設他啲輸出做成若干粒神經細胞(輸出神經細胞數量要明顯少過x變數的數量),再教他畀出正確輸出[69][70]

應用

編輯

異常檢測

編輯

在數據探勘上,異常檢測anomaly detection)是指探測一些同手上的大多數個案不同的異常個案,好多時是因為這些個案有一些可疑——例如是在醫療上探測哪些病人身體狀況數據異常、金融上哪些銀行交易似是詐騙,又或者一段字裏面哪些句子似是文法錯誤之類。在現實應用當中,要檢查的個案數量通常閒閒地都論千計,所以好難用人手做。因此,有不少機械學習專家都落力研究如何用機械學習技術做異常檢測[71][72][73]

異常檢測方面的技術常用於探測異常網絡活動(因為這些活動可能暗示黑客攻擊等等網絡安全問題)。在這種情況下,異常檢測未必會依賴「異常」作為分類指標,因為這些活動未必如此罕有;一種常見的做法是運用聚類分析,教部電腦(例如)認出同黑客攻擊有拏褦的網絡活動通常都有一些甚麼特徵,最後令部電腦瞭解自動地探測哪些活動似是黑客攻擊[74]

無論監督式學習定非監督式學習,機械學習演算法都可以拿來做異常檢測。非監督式學習的例子通常是,個程式自動地用聚類分析將一些個案分類、再自動地將一些屬於少數類型的個案歸類做「異常」。這種做法大前題是一些屬少數那類型的個案真是想要探測的類型(在網絡安全上,這個假設未必成立)。而監督式學習的例子通常來講就是個程式設計者明文地教個程式,講埋他聽哪些個案是「異常」,哪些是「正常」。半監督式學習的做法就是用一組「正常」個案的數據,建立一個數學模型;跟手在撞到下一個個案的時候,計算嚇「假設個產生個案的模型與程式內部那個一樣、會出現這些數值」的機會率。而假如計算出來這個機會率數值夠細,就有理由相信這個個案屬於「異常」[71][75][76]

其他

編輯

機械學習能夠令電腦自動地預測某些變數的數值,所以基本上任何科學或者商學領域都可以用到機械學習的技術[8]

⋯⋯等等。

批評

編輯

雖然機械學習是一種重大的革新,但機械學習好多時都達不到理想的效果[77][78][79]。原因可以有好多:不夠好使的數據、存取不到有用的數據、數據本身的偏差以及用錯演算法等都可以搞到個機械學習演算法失敗[80]。「機械學習」可能失敗是一個好受關注的議題,因為廿一世紀初好多技術都是靠機械學習做的。例如是在2018年,邀步(Uber)架靠機械學習訓練的自駕車探測不到行人,於是炒了車,仲撞死了人[81]。而仲有一個案報告話用來做醫療診斷的機械學習程式出唨錯,搞到病人好長手尾[82][83]。這樣的問題令到機械學習的專家思考開機械學習有一些甚麼缺陷,以及啲缺陷要點補救[77][84]

另見

編輯

參考文獻

編輯

註腳

編輯
  1. ^ AI today and tomorrow is mostly about curve fitting, not intelligence. diginomica.
  2. ^ 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.
  3. ^ 3.0 3.1 3.2 3.3 Bishop, C. M. (2006), Pattern Recognition and Machine Learning, Springer.
  4. ^ 6 Top Applications of Machine Learning. Hackernoon.
  5. ^ Kononenko, I. (2001). Machine learning for medical diagnosis: history, state of the art and perspective. Artificial Intelligence in medicine, 23(1), 89-109.
  6. ^ 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.
  7. ^ Ling, C. X., & Li, C. (1998, August). Data mining for direct marketing: Problems and solutions. In Kdd (Vol. 98, pp. 73-79).
  8. ^ 8.0 8.1 Friedman, Jerome H. (1998). "Data Mining and Statistics: What's the connection?". Computing Science and Statistics. 29 (1): 3–9.
  9. ^ Samuel, Arthur (1959). "Some Studies in Machine Learning Using the Game of Checkers". IBM Journal of Research and Development. 3 (3): 210–229.
  10. ^ 10.0 10.1 Mitchell, T. (1997). Machine Learning. McGraw Hill. p. 2.
  11. ^ 11.0 11.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.
  12. ^ Walker, J. E.; Shea, T. M.; Bauer, A.M. "Generalization and the Effects of Consequences | Education.com". www.education.com.
  13. ^ Vidyasagar, M. (2002). A theory of learning and generalization. Springer-Verlag.
  14. ^ 14.0 14.1 Mohri, Mehryar; Rostamizadeh, Afshin; Talwalkar, Ameet (2012). Foundations of Machine Learning. USA, Massachusetts: MIT Press.
  15. ^ 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.
  16. ^ Frameworks for Approaching the Machine Learning Process. KDnuggets.
  17. ^ Pyle, D., 1999. Data Preparation for Data Mining. Morgan Kaufmann Publishers, Los Altos, California.
  18. ^ Chicco D (December 2017). "Ten quick tips for machine learning in computational biology". BioData Mining. 10 (35): 1–17.
  19. ^ Data Preprocessing for Machine learning in Python 互聯網檔案館存檔,存檔日期2019年7月6號,..
  20. ^ 20.0 20.1 Linear Regression with example. Towards Data Science.
  21. ^ Seber, G. A., & Lee, A. J. (2012). Linear regression analysis (Vol. 329). John Wiley & Sons.
  22. ^ YangJing Long (2009). "Human age estimation by metric learning for regression problems". Proc. International Conference on Computer Analysis of Images and Patterns: 74–82.
  23. ^ Regression in Machine Learning. Towards Data Science.
  24. ^ 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.
  25. ^ Russell, Stuart J.; Norvig, Peter (2010). Artificial Intelligence A Modern Approach. Prentice Hall. p. 578.
  26. ^ The Machine Learning Dictionary - activation level 互聯網檔案館存檔,存檔日期2018年8月26號,..
  27. ^ 27.0 27.1 27.2 Learning process of a neural network[失效連結]. Towards Data Science.
  28. ^ 28.0 28.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.
  29. ^ Decision Trees in Machine Learning[失效連結]. Towards Data Science.
  30. ^ Decision Tree. Machine Learning.
  31. ^ Chapter 4: Decision Trees Algorithms.
  32. ^ 32.0 32.1 Bayesian Networks 互聯網檔案館存檔,存檔日期2019年7月9號,.. Bayesialab.
  33. ^ 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.
  34. ^ Bayesian learning and the expectation-maximization algorithm:
    • Russell & Norvig 2003, pp. 712–724,
    • Poole, Mackworth & Goebel 1998, pp. 424–433,
    • Nilsson 1998, chpt. 20.
  35. ^ Bayesian decision theory and Bayesian decision networks:
    • Russell & Norvig 2003, pp. 597–600.
  36. ^ 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.
  37. ^ 37.0 37.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.
  38. ^ 38.0 38.1 Cortes, Corinna; Vapnik, Vladimir N. (1995). "Support-vector networks". Machine Learning. 20 (3): 273–297.
  39. ^ Ben-Hur, Asa; Horn, David; Siegelmann, Hava; and Vapnik, Vladimir N.; "Support vector clustering"; (2001); Journal of Machine Learning Research, 2: 125–137.
  40. ^ 40.0 40.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.
  41. ^ Ting Qin, et al. "A learning algorithm of CMAC based on RLS." Neural Processing Letters 19.1 (2004): 49–61.
  42. ^ 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.
  43. ^ Looney, C. G. (1997). Pattern recognition using neural networks: theory and algorithms for engineers and scientists (pp. 171-172). New York: Oxford University Press.
  44. ^ Cancer Detection - MATLAB Example.
  45. ^ 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.
  46. ^ 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).
  47. ^ 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.
  48. ^ Unsupervised learning - MathWorks.
  49. ^ 49.0 49.1 49.2 Unsupervised Learning and Data Clustering[失效連結]. Towards Data Science.
  50. ^ 50.0 50.1 Dostál, P., & Pokorný, P. (2009). Cluster analysis and neural network. In 17th Annual Conference Proceedings on Technical Computing Prague (pp. 131-57).
  51. ^ 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.
  52. ^ Hoskins, J.C.; Himmelblau, D.M. (1992). "Process control via artificial neural networks and reinforcement learning". Computers & Chemical Engineering. 16 (4): 241–251.
  53. ^ Bertsekas, D.P.; Tsitsiklis, J.N. (1996). Neuro-dynamic programming. Athena Scientific. p. 512.
  54. ^ NEURAL NETWORKS AND REINFORCEMENT LEARNING 互聯網檔案館存檔,存檔日期2018年10月24號,. (PDF).
  55. ^ Miller, W. T., Werbos, P. J., & Sutton, R. S. (Eds.). (1995). Neural networks for control. MIT press.
  56. ^ Goldberg, David E.; Holland, John H. (1988). "Genetic algorithms and machine learning". Machine Learning. 3 (2): 95–99.
  57. ^ Michie, D.; Spiegelhalter, D. J.; Taylor, C. C. (1994). "Machine Learning, Neural and Statistical Classification". Ellis Horwood Series in Artificial Intelligence.
  58. ^ 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.
  59. ^ Metrics to Evaluate your Machine Learning Algorithm. Towards Data Science.
  60. ^ Various ways to evaluate a machine learning model’s performance. Towards Data Science.
  61. ^ Kohavi, Ron (1995). "A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection". International Joint Conference on Artificial Intelligence.
  62. ^ Rodriguez, J. D., Perez, A., & Lozano, J. A. (2009). Sensitivity analysis of k-fold cross validation in prediction error estimation. IEEE transactions on pattern analysis and machine intelligence, 32(3), 569-575.
  63. ^ Altman DG, Bland JM (June 1994). "Diagnostic tests. 1: Sensitivity and specificity". BMJ. 308 (6943): 1552.
  64. ^ Pontius, Robert Gilmore; Si, Kangping (2014). "The total operating characteristic to measure diagnostic ability for multiple thresholds". International Journal of Geographical Information Science. 28 (3): 570–583.
  65. ^ A beginner’s guide to dimensionality reduction in Machine Learning. Towards Data Science.
  66. ^ Y. Bengio; A. Courville; P. Vincent (2013). "Representation Learning: A Review and New Perspectives". IEEE Trans. PAMI, Special Issue Learning Deep Architectures. 35 (8): 1798–1828.
  67. ^ Coates, Adam; Ng, Andrew Y. (2012). "Learning feature representations with k-means". In G. Montavon, G. B. Orr and K.-R. Müller (ed.). Neural Networks: Tricks of the Trade. Springer.
  68. ^ Tillmann, A. M. (2015). "On the Computational Intractability of Exact and Approximate Dictionary Learning". IEEE Signal Processing Letters. 22 (1): 45–49.
  69. ^ Nathan Srebro; Jason D. M. Rennie; Tommi S. Jaakkola (2004). Maximum-Margin Matrix Factorization. NIPS.
  70. ^ Coates, Adam; Lee, Honglak; Ng, Andrew Y. (2011). An analysis of single-layer networks in unsupervised feature learning. Int'l Conf. on AI and Statistics (AISTATS).
  71. ^ 71.0 71.1 Hodge, V. J.; Austin, J. (2004). "A Survey of Outlier Detection Methodologies". Artificial Intelligence Review. 22 (2): 85–126.
  72. ^ Killourhy, K. S., & Maxion, R. A. (2009, June). Comparing anomaly-detection algorithms for keystroke dynamics. In 2009 IEEE/IFIP International Conference on Dependable Systems & Networks (pp. 125-134). IEEE.
  73. ^ Zimek, Arthur; Schubert, Erich (2017), "Outlier Detection", Encyclopedia of Database Systems, Springer New York, pp. 1–5.
  74. ^ Dokas, Paul; Ertoz, Levent; Kumar, Vipin; Lazarevic, Aleksandar; Srivastava, Jaideep; Tan, Pang-Ning (2002). "Data mining for network intrusion detection" (PDF). Proceedings NSF Workshop on Next Generation Data Mining.
  75. ^ Chandola, V.; Banerjee, A.; Kumar, V. (2009). "Anomaly detection: A survey". ACM Computing Surveys. 41 (3): 1–58.
  76. ^ Mahadevan, V., Li, W., Bhalodia, V., & Vasconcelos, N. (2010, June). Anomaly detection in crowded scenes. In 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (pp. 1975-1981). IEEE.
  77. ^ 77.0 77.1 "Why Machine Learning Models Often Fail to Learn: QuickTake Q&A". Bloomberg.com.
  78. ^ "The First Wave of Corporate AI Is Doomed to Fail". Harvard Business Review. 2017-04-18.
  79. ^ "Why the A.I. euphoria is doomed to fail". VentureBeat. 2016-09-18.
  80. ^ "9 Reasons why your machine learning project will fail". www.kdnuggets.com.
  81. ^ "Why Uber's self-driving car killed a pedestrian". The Economist.
  82. ^ "IBM's Watson recommended 'unsafe and incorrect' cancer treatments - STAT". STAT.
  83. ^ Hernandez, Daniela; Greenwald, Ted (2018-08-11). "IBM Has a Watson Dilemma". Wall Street Journal.
  84. ^ Char, D. S.; Shah, N. H.; Magnus, D. (2018). "Implementing Machine Learning in Health Care—Addressing Ethical Challenges". New England Journal of Medicine. 378 (11): 981–983.

書目

編輯

外部連結

編輯

Template:機械學習