雖然心裡五味雜陳,但還是來探討一下alphago背後的技術吧,alphago使用的是所謂的deep learning(深度學習),其奠基於我們將要介紹的machine learning (機器學習),以下就先來探討一下機器學習的定義吧!
機器學習定義為: 一個電腦程式經驗中學習,使得它提升在任務中的表現
上述的定義好像有點抽象,不過如果用alphago的例子來看的話,就是越下越強,這樣應該比較好懂吧XD
他的大架構可以看成我們有一個學習情境, 根據此我們去選相對應的模型,我們用資料去訓練模型來得到目標函數(專業術語叫做training ),之後再把目標函數拿去實際應用(專業術語叫做testing)! 詳細請見另一篇文章: 點此
機器學習可依學習情境粗略分成三種:
1. supervised learning (監督學習): 給input得到output,來預測input和output的關係
2. unsupervised learning(未監督學習): 意思就是不告訴機器輸入的資訊對或不對,通常機器會利用叢集性(clustering)來判斷,也就是利用某些資料會聚集在一起,來判斷相關性
3. reinforcement learning(強化學習): 在餵給機器資料後,依照機器的表現,給予獎賞或懲罰,使機器越做越好, 這個學習情境和監督學習最大的不一樣來自於並非對於單一輸入給予相對應的輸出來訓練,而是給予一連串的輸入,才會有一個對應的輸出
舉例來說,下棋下的很多步,最後輸掉了,我們並不知道是哪一步下不好,因此須採用這種技術來做分析
其實以上三種分類只是大概,有時很難分得清
在每種學習情境下,又可以依照想達成的目標來分為兩種
1. classification(分類): (其函數輸出為分類)
以supervised learining 來舉例的話, 意思就是告訴機器每次的輸入是對或不對,舉例來說餵給機器病人資料,並告訴機器病人最後是否診斷出癌症,來判斷哪些原因和癌症相關
2. regression(回歸):(其函數輸出為純量)
以supervised learining 來舉例的話, 意思就是利用目前資料去做回歸,求出輸入input,應該要得到怎樣的output, 例如利用過去的雨量來預測未來的雨量
最後當人重要的是算法啦,不過不管是甚麼算法,最終目的都是要提升任務表現:
以下是常用的算法:
# 依學習情境分類:
一. supervised learning:
常用的算法有以下幾種
1. regression:
(1) linear regression (用在連續資料)
(2) logistic regression (用在分組資料)
- gradient descent algorithm for logistic regression
- conjugate gradient
- BFGS
- L-BFGS
(1) neural network
- forward propagation
- backward propagation
(3) decision tree
(4) K-NN
(5) perceptron model:
- perceptron learning algorithm: for linear separable data
- pocket algorithm: for linear non-separable data
(6) neural network: (即為deep learning,又被稱作multi-layer neural network)
即為很多層的perceptron, 其原理相關直觀,因為有些資料無法輕易分類,因此利用多層轉換,最後形成容易分類的資料
三. reinforcement learning
p.s. 參考資料:
1. artificial intelligence a modern approach 3rd
2. coursera
3. edx machine learning
4. learning from data
5. 李宏毅教授youtube
沒有留言:
張貼留言