機器學習 / Machine Learning 我個人的理解 把術語解譯清楚 例如什麼叫模型 知道它能做什麼 你 自己能做什麼 在最短的時間內動手操作,只給最低需求的介紹操作是為了體會,沒有技法教學 測試一下,該從哪開始? 人工智慧 / Artificial Intelligence 三者的關係是? 看起來好像有智慧就好 人類基因體實驗室 @ 台灣人工智慧實驗室 bulls-and-cows.ipynb
這支程式 有智慧嗎? 這支程式 怎麼運作的? 提示:電腦的記憶力好,而且不會抱怨無聊的事
產生所有可能的數字列表 亂數(隨便)挑一個數字回答 根據結果刪掉不可能的數字 重回步驟 2 直到猜對 這支程式 怎麼運作的?
電腦會思考,只是方式不同 不能用人類定義的思考 VIDEO 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 直到完成
上述演算法 保證最少步數 它叫 A* 在場有人可以做到同樣的保證嗎? 你會怕這支程式佔領地球嗎?為什麼?弱人工智慧 強人工智慧是人工智慧研究的主要目標之一,同時也是科幻小說和未來學家所討論的主要議題。 相對的,弱人工智慧(applied AI,narrow AI,weak AI)只處理特定的問題。
維基百科 另一個問題,盤面分數怎麼計算?多少數字不在正確的位置上 所有數字與它正確位置的距離和 差別是什麼? 更短的
計算/
搜尋/思考時間
領域專家/domain expert 的價值提供領域知識/domain knowledge
只是這個例子的領域專家 看起來不值錢 圍棋(AlphaGo) 現在人工智慧 這麼火紅的元兇 領域專家 的價值就很重要
產生所有可能的下一步盤面 從下一層(第一層)盤面中挑出分數最高的 多走一步 從下一層(第二層)盤面中挑出分數最低的,更新上一層的分數 多走一步 從下一層(第三層)盤面中挑出分數最高的,更新上一層的分數 ... 思考到時間結束,走第一層分數最高的棋步
金融規則更複雜,也不符合完全資訊/complete information 的條件 過程中領域專家 的角色只會更重要 還有什麼想問的嗎? 看起來好像有在學習就好 學習在字典中的定義
to get knowledge of by study, experience, or being taught to become aware by information or from observation to commit to memory to be informed of, ascertain; to receive instruction 操作型定義
things learn when they change their behavior in a way that makes them perform better in the future 直接來看演算法 K-Nearest Neighbor/KNN K-近鄰演算法 這演算法簡單到,各位(應該)可以自己寫一個出來 knn.ipynb
problem: in vitro fertilization, selection of embryos that will survive given: embryos described by 60 features data: historical records of embryos and outcome learnt?: definition of embryo goodness 這樣它有學習嗎?機器、拖鞋只是忠實執行人類給的工作, 它並不知道自己在學習,人類定義的學習 看看多了哪些術語 圖中一個點是圈還是叉 一個樣本 的答案 有哪些類別 通常依實務需求決定 (有時需要轉換 ) 特徵/因子/維度/屬性/feature/factor/dimension/attribute 圖中一個點的 x 跟 y 座標 決定要用哪些特徵 通常是實務上最關鍵的工作 feature engineering/特徵工程 (完全跳過 )訓練/訓練集/訓練資料/training/training set/training data 來看一些實際的例子
過程中可以想想你會怎麼定義問題(包含樣本 、類別 、特徵 ) Loan applications (American Express/美國運通) Given: financial and personal information Question: should money be lent? Simple statistical method covers 90% of cases Borderline cases referred to loan officers But 50% of accepted borderline cases defaulted Borderline cases are most active customers 1000 training examples of borderline cases 20 attributes: age, years with current employer... Learned rules: correct on 70% of borderline cases Rules could be used to train new officers Detection of oil slicks Given: radar satellite images of coastal waters Problem: detect oil slicks in those images Oil slicks appear as dark regions with changing size and shape Dark regions can be caused by weather conditions Attributes: size of region, shape, area... YOLO: Real-Time Object Detection Load forecasting Forecasts of min/max load for each hour lead to significant savings Experience: base load for the year, load periodicity over the year, effect of holidays... Prediction corrected using "most similar" days Attributes: temperature, humidity, wind speed... Diagnosis of machine faults Given: Fourier analysis of vibrations measured at various points of a device's mounting Question: which fault is present? So far: diagnosis by expert/hand-crafted rules Available: 600 faults with expert's diagnosis Attributes augmented by intermediate concepts that embodied causal domain knowledge Expert not satisfied with initial rules because they did not relate to his domain knowledge Further background knowledge resulted in more complex rules that were satisfactory Learned rules outperformed hand-crafted ones Marketing and sales Companies precisely record massive amounts of marketing and sales data Customer loyalty: identifying customers that are likely to defect by detecting changes in their behavior (e.g. banks/phone companies) Special offers: identifying profitable customers (e.g. reliable owners of credit cards that need extra money during the holiday season) 還有什麼想問的嗎?先談模型 ,因為深度學習 就是模型 比較深 的機器學習 最簡單的模型是看起來像一條線,稱為線性模型
\(2.6 x_1 + 11.3 x_2 - 30 = 0 \) 在 n 維空間上(一個樣本 有 n 個特徵 時),有 n+1 個參數要決定 三維空間中的線性模型 長什麼樣子? 用更高次的函數就可以建出
非線性模型 \(0.41 x_1^2 - 1.42 x_1 - x_2 + 3.17 = 0 \) 模型更複雜,有更多參數需要決定 訓練 就是用訓練資料 決定模型 的參數
有時跟建模 是互通的 能建立線性模型 的機器學習 演算法 pla.ipynb
Perceptron Learning Algorithm (PLA) 尋找一個預測錯誤的樣本 針對該樣本 ,將線往正確的方向移動、旋轉 重複 1 直到沒有錯誤的樣本 或是超出時間 Perceptron Learning Algorithm @ 機器學習基石: theory and practice 這樣的模型一般人不喜歡
決策樹/Decision Tree 將所有樣本放到根節點(node) 找出最好的分枝(branch) 將樣本 分到新節點 單一分枝 使用單一特徵 對每個新節點 重複步驟 2 直到無法產生分枝 或是超出時間 decision-tree.ipynb
German Credit Data 你比較喜歡哪一種模型 ? 換個角度來看 決策樹 的模型 有斷點 ,不易分析
不可微分、無法定義切線,數學性質較差 看過兩種模型 之後,可以回頭來看 KNN 的模型 了 KNN 在建模 時,只是把訓練資料 記下來就完成了
每筆訓練資料 所在的位置,就是 KNN 的模型 或是再加上決定參數 K 硬要寫成數學式的話 \(knn(k, \mathbf{x}) = \sum y_i \cdot weight( k, \lVert \mathbf{x} - \mathbf{tr}_i \rVert^2 ) \) 不好理解、數學性質也不好 但是效果好
如果為每筆訓練資料 加上一個係數並去掉 K 變成一個超級複雜的模型 \(knn(\mathbf{x}) = \sum y_i \cdot w_i \cdot \lVert \mathbf{x} - \mathbf{tr}_i \rVert^{-1/2} \) 參數從特徵 數變成樣本 數 當樣本 很多時,就可以建出非常準確但難以描述、解讀的模型
了解模型 之後,要不要試著解釋以下的經驗法則? 機器學習可以給出很準的預測,但是不一定能解釋為什麼要這樣預測 因為它的演算法 本質上就是找出在訓練集 上最準的參數 至於是亂湊的還是人類未知的真理,在未知、未來的資料上表現如何,就是看訓練資料 夠不夠完整、夠不夠具代表性 簡單的說在機器學習領域中,資料就是一切 以一個老師傅來比喻,資料就像是他經手的案例,模型 就像是他的經驗
還有什麼想問的嗎?模型很深的機器學習 深 ≠ 複雜,不過越深的模型通常就越複雜 要定義深的話,得先了解人工神經網路/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
來看一些實際的例子 相當振奮人心
過程中可以幻想一下未來的生活 你能用它做什麼 你想用它做什麼
你自己能做什麼 感謝聆聽