機器學習

Molecular Biomedical Informatics
分子生醫資訊實驗室

機器學習 / Machine Learning

我個人的理解

  1. 把術語解譯清楚 例如什麼叫模型
  1. 知道它能做什麼
  1. 自己能做什麼


在最短的時間內動手操作,只給最低需求的介紹

操作是為了體會,沒有技法教學

測試一下,該從哪開始?

三者的關係是?

看起來好像有智慧就好

人類基因體實驗室 @ 台灣人工智慧實驗室
bulls-and-cows.ipynb

這支程式有智慧嗎?

這支程式怎麼運作的?

提示:電腦的記憶力好,而且不會抱怨無聊的事
  1. 產生所有可能的數字列表
  2. 亂數(隨便)挑一個數字回答
  3. 根據結果刪掉不可能的數字
  4. 重回步驟 2 直到猜對

來個真實的人工智慧 Akinator

這支程式怎麼運作的?

電腦會思考,只是方式不同

不能用人類定義的思考

The Imitation Game, 2014 - A story about Alan Turing

模仿遊戲台詞


ALAN TURING: "I want Christopher to be... Smarter. To make a calculation, and then to determine what to do next. Like a person does. Think of it: An electrical brain. A digital computer.

TITLE: His machine was never perfected, though it generated a whole field of research into what became nicknamed "Turing Machines." Today, we call them "computers."

看看學了哪些術語


要不要試試讓它變精確?

這就是工程師/程式設計師/Programmer 的工作。優秀的設計演算法,一般的實作演算法,共通點就是都得知道電腦理解、執行、不會什麼

似乎只講了前兩點

Eight puzzle

  1. 產生所有可能的下一步盤面
  2. 從現有盤面中挑出分數最高的
  3. 重回步驟 1 直到完成

上述演算法保證最少步數 它叫 A*

在場有人可以做到同樣的保證嗎?


你會怕這支程式佔領地球嗎?為什麼?

弱人工智慧

強人工智慧是人工智慧研究的主要目標之一,同時也是科幻小說和未來學家所討論的主要議題。 相對的,弱人工智慧(applied AI,narrow AI,weak AI)只處理特定的問題。 維基百科


另一個問題,盤面分數怎麼計算?

  1. 多少數字不在正確的位置上
  1. 所有數字與它正確位置的距離和

差別是什麼?


更短的計算/搜尋/思考時間

領域專家/domain expert的價值
提供領域知識/domain knowledge

只是這個例子的領域專家看起來不值錢

圍棋(AlphaGo)

現在人工智慧這麼火紅的元兇

領域專家的價值就很重要

2017/10/19 出了 AlphgGo Zero,完全不需要領域知識


  1. 產生所有可能的下一步盤面
  2. 從下一層(第一層)盤面中挑出分數最高的
  3. 多走一步
  4. 從下一層(第二層)盤面中挑出分數最低的,更新上一層的分數
  5. 多走一步
  6. 從下一層(第三層)盤面中挑出分數最高的,更新上一層的分數
  7. ...
  8. 思考到時間結束,走第一層分數最高的棋步

金融規則更複雜,也不符合完全資訊/complete information的條件

過程中領域專家的角色只會更重要

還有什麼想問的嗎?

看起來好像有在學習就好


學習在字典中的定義
操作型定義


直接來看演算法

K-Nearest Neighbor/KNN

K-近鄰演算法

這演算法簡單到,各位(應該)可以自己寫一個出來

knn.ipynb


這樣它有學習嗎?

拖鞋越穿越舒服/合腳,
它會學習嗎?

機器、拖鞋只是忠實執行人類給的工作,
它並不知道自己在學習,人類定義的學習

看看多了哪些術語

來看一些實際的例子

過程中可以想想你會怎麼定義問題(包含樣本類別特徵)

Loan applications (American Express/美國運通)

Detection of oil slicks

Load forecasting

Diagnosis of machine faults

Marketing and sales


還有什麼想問的嗎?

先談模型,因為深度學習就是模型比較機器學習

最簡單的模型是看起來像一條線,稱為線性模型
用更高次的函數就可以建出非線性模型
訓練就是用訓練資料決定模型的參數

有時跟建模是互通的

能建立線性模型機器學習演算法

pla.ipynb

Perceptron Learning Algorithm (PLA)

  1. 尋找一個預測錯誤的樣本
  2. 針對該樣本,將線往正確的方向移動、旋轉
  3. 重複 1 直到沒有錯誤的樣本或是超出時間

Perceptron Learning Algorithm @ 機器學習基石: theory and practice

這樣的模型一般人不喜歡

決策樹/Decision Tree

  1. 將所有樣本放到根節點(node)
  2. 找出最好的分枝(branch)樣本分到新節點

    單一分枝使用單一特徵

  3. 對每個新節點重複步驟 2 直到無法產生分枝或是超出時間
decision-tree.ipynb
German Credit Data

你比較喜歡哪一種模型

換個角度來看

決策樹模型斷點,不易分析

不可微分、無法定義切線,數學性質較差

看過兩種模型之後,可以回頭來看 KNN 的模型

KNN 在建模時,只是把訓練資料記下來就完成了

不好理解、數學性質也不好

但是效果
樣本很多時,就可以建出非常準確但難以描述、解讀模型

了解模型之後,要不要試著解釋以下的經驗法則?

因為它的演算法本質上就是找出在訓練集上最準的參數

至於是亂湊的還是人類未知的真理,在未知、未來的資料上表現如何,就是看訓練資料夠不夠完整、夠不夠具代表性


簡單的說

在機器學習領域中,資料就是一切

以一個老師傅來比喻,資料就像是他經手的案例,模型就像是他的經驗


還有什麼想問的嗎?

模型很深的機器學習

深 ≠ 複雜,不過越深的模型通常就越複雜


要定義深的話,得先了解

人工神經網路/Artificial Neural Network (ANN)
神經網路/類神經網路/Neural Network (NN)

相較於人類的經驗,機器的模型非常明確


不過,明確是我們要的嗎?

無論怎麼設計都會落入拖鞋的情況
當遇到超級難題時

創造力變得非常重要

人類其實也沒辦法描述創造力

所以要設計人類也不懂的演算法

每當工程師不知道該怎麼辦時,仿生

基因演算法、飛機、蛙鞋等等都是

這次換成神經元/neuron

實際上有把電路接上器官這種研究

根據訓練資料決定邊上的權重 (反向傳播/Back Propagation完全跳過)

網路架構(例如有幾層、每層有幾個神經元) + 權重

現在來體會一下深度學習有多深

這是一顆神經元

就相當於一個線性模型的能力 (\(x_1 = 2.6, x_2 = 11.3, x_0 = -30 \))

然後深一點,就會學習了

為什麼?


哪些應用適合深度學習


\(\begin{cases} w_0 + w_1 \cdot xx + w_2 \cdot xx = 1 \\ w_0 + w_1 \cdot xx + w_2 \cdot xx = -1 \\ \dots \\ \end{cases} \)

nn.ipynb
來看一些實際的例子 相當振奮人心

過程中可以幻想一下未來的生活

Let there be color SIGGRAPH, 2016

Pixel Recursive Super Resolution 2017

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields 2017

DeepWarp: Photorealistic Image Resynthesis for Gaze Manipulation ECCV, 2016

Astronomers explore uses for AI-generated images Nature, 2017

How Google Translate squeezes deep learning onto a phone 2015

Image-to-Image Translation with Conditional Adversarial Nets CVPR, 2017

Project Sunroof

DeepMind Atari Deep Q Learner, 2015

Tesla Autopilot Full Self Driving Demonstration 2016

Boston Dynamics, 2016

OpenAI

Chopin Music Generation with RNN and Deep Learning, 2016

Visually Indicated Sounds, 2016

LipNet: End-to-End Sentence-level Lipreading, 2016

A Neural Algorithm of Artistic Style 2015

你能用它做什麼
你想用它做什麼
你自己能做什麼


感謝聆聽