# 人工智慧(一) (Artificial Intelligence - 1) ## 1.1 人工智慧與深度學習課程簡介 ### 深度學習的突破來自於3點結合 * 硬體(例:GPU) * 軟體(模擬學習平臺) * 大數據(共享平臺:社交平臺、購物網站) --- ### 深度神經網路 * 接近**人腦複雜度**和功能 * 處理**多層次抽象化**(學習行爲) * 建立感官信號與腦的**直接連接** --- ### 傳統機械學習的瓶頸 * 訊號無法直接使用 需轉化成符號 才能在模組間傳遞 -> **時間消耗大** * 新的資料無法喚起舊的記憶(曾學過的東西)-> **無法纍積知識** * **無法實現特徵偵測/截取** 必須由内存無中尋找類似結構體 -> 若沒有類似結構體就會出現卡殼 * 綜合以上三個問題 -> **無法因應現代社會多、快、雜、疑的數據** --- ### 深度神經網絡配合大數據 * 多——**數據很多** -> 模型擁有足夠學習能量 * 快——**時間不等人** -> 模型的學習過程不會卡頓 * 雜——資料來源來自四面八方 **無整理** -> 模型有足夠彈性 * 疑——資料**不一定正確** -> 模型有容錯空間 ## 1.2 人工智慧與其他領域的交互 ### 哲學 1. 我思故我在(by笛卡爾): 1-1 身心二元論:靈魂與肉體是兩個實體 1-2 我在思考->證明我存在 2. 圖靈測試 2-1 類似現在的查AI率 2-2 測試機器是否能夠表現出與人等價或無法區分的智慧 2-3 是否代表機器具有思維或意識 https://zh.wikipedia.org/wiki/%E5%9B%BE%E7%81%B5%E6%B5%8B%E8%AF%95 3. 中文屋思考實驗 3-1 能否創造出強人工智慧 3-2 即便有一物體與心靈一樣强大 那物體也不一定是心靈 https://zh.wikipedia.org/wiki/%E4%B8%AD%E6%96%87%E6%88%BF%E9%97%B4 --- ### 心理認知神經科學 1. 赫布型學習(Hebbian Learning) 1-1 神經元同時有反應則連接變强(cell that fire together, wire together) -> 神經元學習 1-2 啓發神經網路發展 2. 深度學習處理過程 2-1 與深度學習類似 ![1.2.1](https://hackmd.io/_uploads/S1dz2-fQkl.png) 此爲階層式學習 --- ### 賽侷理論 研究個體與團體如何做決策 ![1.2.2](https://hackmd.io/_uploads/HyRfaWzQkg.png) *納許均衡(Nash equilibrium) 若某情況下無一參賽者可以透過獨自行動而增加收益 則此情況為納許均衡點 ## 1.3 人工智慧的未來發展 ### 影像、語音識別 ![1.3.1](https://hackmd.io/_uploads/r1jNAZMmyl.png) * 人工智慧在2015年首次在視覺分析上贏過人類 --- ### 機器翻譯 https://research.google/blog/zero-shot-translation-with-googles-multilingual-neural-machine-translation-system/ ![1.3.2](https://hackmd.io/_uploads/SyMHA-fQkx.png) * 機器翻譯上的學習 --- ### 自動駕駛 https://github.com/momonala/deeptesla * 特斯拉 google 已將機器學習運用在駕駛上 就像人類學車一樣 --- ### 通用人工智慧 * 整合**學習**、**推理**、**規劃**、**記憶** * 面對任何問題都能處理 --- ### 對社會衝擊 https://obamawhitehouse.archives.gov/blog/2016/12/20/artificial-intelligence-automation-and-economy * 上述官方文章表示:大多數在未來工作都有可能會被人工智慧取代 # 人工智慧(二) (Artificial Intelligence - 2) ## 2.1 機器學習簡介 人工智慧:推理、邏輯、認知表達、行爲、**學習** 什麽是學習->人是怎麽學習的:機器能從**經驗或是資料**中學習,而後在**某個問題與任務**上**衡量標準**能有所提升,稱爲機器學習 例:考試學習 * 訓練資料:參考書 * 問題與任務:考試 * 衡量標準:分數 ![2.1.1](https://hackmd.io/_uploads/S10r0ZfQyl.png) ## 2.2 機器學習的問題類型 ### 監督式學習(Supervised Learning) * 訓練資料: 包括**資料與標簽** * 目標: 學習資料與標簽之間的**關係** 例:綫性回歸(Linear regression) 資料:坪數 標簽:售價 ![2.2.1](https://hackmd.io/_uploads/BkdUCWzmJe.png) --- ### 非監督式學習(Unsupervised Learning) * 訓練資料: 僅包含資料本身,**無標簽** * 目標: 學習資料之間所**隱含的結構** 例:分群(Clustering) * 社交網路分析 資料:興趣、照片、發文...... ![2.2.2](https://hackmd.io/_uploads/HkfDC-zQ1l.png) --- ### 增强學習(Reinforcement Learning) * 訓練資料: 來自一系列與**環境互動**的**行動**與**獎勵回饋** * 目標: 學習如何**選擇動作**並獲得**纍積最大的獎勵** ## 2.3 機器學習的流程 ### 機器學習的流程 ![2.3.1](https://hackmd.io/_uploads/HkhOC-Gm1l.png) * 訓練資料: 影像、語音、文章 有沒有**噪音(Noise)**、**偏誤(Bias)**、**獨立性** * 假設集合 綫性模型、**深度學習** * 學習演算法 決策樹、支持向量機 --- ### 機器學習的目標 * 用訓練資料在加設集合中找一個最接近正是模型的**預測模型,在所有資料的表現要盡可能與真實模型一樣(Generalization)** * 預測模型在訓練資料上表現好,**不代表在所有資料上真的表現很好(Overfitting)** ## 2.4 綫性模型的特偵轉換 ### 綫性假設空間(Linear hypothesis) * 如何創造一個綫性模型假設空間? ![2.4.1](https://hackmd.io/_uploads/HJk9CbGQke.png) * 找靠近真實模型的點 --- ### 特徵轉換(Feature Transform * 把非綫性的問題**綫性化** * 把資料轉換到**新空間**,再用綫性模型處理 * 真實模型多半非常複雜 用**特徵轉換Φ(x)**來調整成比較接近綫性關係的樣子,再來用綫性模型近似 ![2.4.2](https://hackmd.io/_uploads/BkUqC-fX1e.png) ## 2.5 Overfitting & Regularization 以下爲機器學習選出的三種假設 ![2.5.1](https://hackmd.io/_uploads/SJp9AWG7yl.png) 1. Overfitting 模型 2. 穩定基本資料 3. Underfitting 模型 --- ### Overfitting * 容易受資料影響 **簡單模型優先** * 資料有噪音或變異很大 **清理與預處理資料** --- ### Regularization * 要如何避免學習演算法挑到太複雜的假設->限縮再假設空間能挑的範圍 ![2.5.2](https://hackmd.io/_uploads/B1EjAZfX1x.png) # 神經網路(一) (Neural Network - 1) ## 3.1 神經網路 Neural Network ### 生物神經網絡架構 ![3.1.1](https://hackmd.io/_uploads/ByWm6gvQJe.png) * **樹突**:負責接收來自其他神經元的訊號,將這些訊號傳遞到細胞體。它們像樹枝一樣分支擴展,增加了與其他神經元連接的表面積。 * **細胞體**:包含細胞核和大多數細胞器,負責維持神經元的正常功能。細胞體處理來自樹突的訊號,並作出是否傳遞神經衝動的決定。 * **細胞核**:位於細胞體內,包含遺傳物質(DNA),負責調控細胞的基因表達和新陳代謝活動。 * **軸突**:是一條長且細的纖維,將來自細胞體的神經衝動傳遞到其他神經元或目標細胞(如肌肉細胞)。 * **髓鞘**:包裹在軸突外的脂肪質絕緣層,能夠加快神經衝動的傳導速度。由許旺細胞(許旺细胞)構成。 * **許旺細胞**:製造並維持髓鞘,支援神經元的功能。 * **郎飛結**:位於髓鞘之間的節點,能使神經衝動以“跳躍式傳導”的方式快速傳遞,增加了傳導效率。 * **軸突終末**:軸突的末端部分,與其他神經元或目標細胞形成突觸,負責釋放神經遞質,將神經訊號傳遞給下一個細胞。 --- ### 生物神經元的傳遞方式 * **訊號接收**:樹突從其他神經元或感覺細胞接收電或化學訊號。 * **訊號處理**:這些訊號在細胞體中整合,如果訊號總和超過閾值,細胞體會觸發動作電位。 * **訊號傳導**:動作電位沿著軸突向下傳遞。髓鞘加快了傳導速度,並且在郎飛結處以跳躍式傳導的方式進行。 * **訊號釋放**:當動作電位到達軸突終末時,會引發神經遞質釋放到突觸間隙。 * **訊號傳遞**:神經遞質跨越突觸間隙,與下一個神經元的受體結合,開始新的訊號傳遞過程 --- ### 生物神經網絡 * 人腦約有**860億**個神經元 * 人工神經網絡為模擬生物神經 ## 3.2 神經元 ### 綫性模型 * 綫性模型就是個**最簡單**的綫性神經元 ![3.2.1](https://hackmd.io/_uploads/S1ag3-vQ1e.png) * 把綫性模型加上一個**激活函數(g、b)**,成了一個**非綫性的神經元** ![3.2.2](https://hackmd.io/_uploads/SkXMn-P7yx.png) --- ### 神經元能做什麽 * 神經元可以對簡單的資料進行一刀切式的分類 ![3.2.3](https://hackmd.io/_uploads/H14WTAJEkl.png) --- ### 神經元不能做什麽 * 資料複雜或任務複雜就容易出錯 ![3.2.5](https://hackmd.io/_uploads/S1qXT0kN1g.png) ## 3.3 多層神經網絡 ### 多層神經網絡 * 把**神經元**當作基本單位,通過**層次結構組合成神經網絡 ![3.3.1](https://hackmd.io/_uploads/SJVN601Vkg.png) * 決定結構后形成一個**假設集合** --- ### 多層神經網絡能做什麽 * 開始可以解決複雜(多層次)的資料分類 ![3.3.2](https://hackmd.io/_uploads/HJcNp014yx.png) --- ### 層計算過程 * 前一層輸出,傳遞下一層當作輸入->類似遞回 ![3.3.3](https://hackmd.io/_uploads/HkfBp01V1l.png) --- ### 輸出層計算過程 * 分類問題:使用**Softmax**來轉換機率分佈 ![3.3.4](https://hackmd.io/_uploads/S13r6Ck4Jl.png) Softmax: ## 3.4 計算流程圖與梯度 ### 計算圖 (Computational graph) * 任何的計算過程都能用流程圖來表示 ![3.4.1](https://hackmd.io/_uploads/ByDU6R1Nkl.png) --- ### 神經網絡計算圖 * 先做矩陣相乘,再全部加起來 ![3.4.2](https://hackmd.io/_uploads/rykPT01Nye.png) **計算圖建構工具** * Tensorflow: https://www.tensorflow.org/?hl=zh-cn * Pytorch: https://pytorch.org/ --- ### 梯度 (Gradient) ![3.4.3](https://hackmd.io/_uploads/HkwvTAkN1e.png) * 梯度的概念就是x改變多少對於f(x)值的影響有多大 --- ### 梯度計算圖 * 計算過程用流程圖來表示,并且能像向后計算梯度 ![3.4.4](https://hackmd.io/_uploads/rkXdTAyNyx.png) # 神經網路(二) (Neural Network - 2) ## 4.1 損失函數 ### 損失函數(Loss Function) * 衡量任務表現(神經網絡)好不好 --- ### 回歸問題(Regression Problem) * L1 Loss : |x-y| * L2 Loss : (x-y)² * 標簽與輸出都是實數,計算彼此差異 *![4.1.1](https://hackmd.io/_uploads/S1o_60y41l.png) --- ### 分類問題(Classification Problem) * 0/1 Loss : * 分類正確->1 * 分類錯誤->0 * 標簽是以one-hot vector的方式表示是哪個類別 ![4.1.2](https://hackmd.io/_uploads/BJGFpA1EJx.png) 上圖的方法就是log(那個點的几率)× 它所獲得的分數 ## 4.2 梯度下降演算法 ### 最佳化問題(Optimization problem) * 包含一個目標函數與多個限制條件所組成,在符合條件下,最大化或最小化目標函數 * 機器學習問題往往是一個最佳化問題 * 目標函數:最小化訓練誤差 * 限制條件:Regularization --- ### 梯度下降演算法(Gradient descent) * 類似回滾 * 通過回滾概念 將f(θ)往下滾 ![4.2.1](https://hackmd.io/_uploads/SJ5FaCyVkl.png) * 梯度指引**正確方向**,學習率決定**往前走多遠** * 陷在**局部最優**,而不是全局最優->No-convex problem * 學習率扮演重要關鍵->要能**自動調整** * 計算簡單快速->二階微分效果更好,但計算量太大 ## 4.3 訓練神經網絡 ### 計算梯度 ![4.3.1](https://hackmd.io/_uploads/HJs5a0JVyg.png) ![4.3.2](https://hackmd.io/_uploads/Hyo5TAk4kl.png) ![4.3.3](https://hackmd.io/_uploads/Syi9pRJN1l.png) --- ### 更新參數 ![4.3.4](https://hackmd.io/_uploads/HkHsa01V1x.png) ## 4.4 訓練神經網路的困難 ### 區域最小值(Local minimum) * 區域最小值不一定是全局最小值 ![4.4.1](https://hackmd.io/_uploads/HyAiTCk4Jg.png) * 解決方法:增加隱藏層->複雜,但**變異高度差距小** ![4.4.2](https://hackmd.io/_uploads/r1HhTRJ4Jg.png) --- ### 鞍點 * 到達某一點之後訓練**過程停止** ![4.4.3](https://hackmd.io/_uploads/rkZapC141e.png) * 解決方法:增加Noise->訓練過程中得到**擾動**->不會停在鞍點 --- ### 梯度消失 * 反向計算時,下一層再等上一層資料會等不到,因爲激活函數將資料吃掉 ![4.4.4](https://hackmd.io/_uploads/SkuT6Ak41g.png) * 解決方法:換一個激活函數,使用**Relu Function** # 邁向深度學習 ## 5.1 特徵學習 ### 什麽是特徵 * **特徵**是一個函數,能截取出**輸入的某些特性** * 貓的那組後面數字代表的是有無 --- ### 什麽是好的特徵 * 特徵要搭配得上問題 * 好的特徵需要有**代表性**,需要可以**容忍變異性** --- ### 人工定義特徵 * 依靠經驗、研究 * 一旦問題不同都要重新定義 --- ### 自動學習特徵 * **層次結構**更有效率的重複利用已經學習到的特徵,**組合成更複雜的特徵** ![image](https://hackmd.io/_uploads/ryL36GxXJe.png) * **組成特定的權重值**,代表從資料中學習到的模式 ## 5.2 表徵學習 ### 什麽是表徵 * 心智表徵:**假設性**的,能夠**表示外在現實**的**内在認知象徵**,或是一種可以**讓心智過程得以利用**的内在認知表象 * 資料表徵:以不同的**基底**聊描述資料 * 分散式表徵(Distributed representation):提供簡單明確的表示,但在表示能力上有所限制(高維度) * 非分散式表徵(Non Distributed representation):能夠捕捉數據之間的相似性,適合複雜的數據表示(低維度) --- ### 表徵學習 * 主成分分析(PCA:Principal components analysis):將多維度資料進行降維尋找相似性 * 自動編碼機(Autoencoder) * 將輸入資料**壓縮編碼**成表徵 * 學習到的**表徵需要隱含足夠的輸入資料的訊息** ![image](https://hackmd.io/_uploads/SyxNbQemye.png) * 深度學習 * 層次結構能**逐層**的利用學習到的特徵,形成新的表徵 * **深層表徵**在很多問題上非常重要 * **表徵與特徵是共同學習出來的** ## 5.3 回顧神經網絡的發展歷史 * 300BC:亞里斯多德- 探討人類如何學習 * 1873:Alexander Bain - 探討人類神經元之間的反應、學習(赫布型學習) * 1943:McCulloch & Pitts - MCP Model, 最早的神經元模型 * 1949:Donald Hebb - 赫布型學習問世 * 1958:Frank Rosenblatt - 第一個人工神经网络(感知器)問世,是一种二元线性分类器。 * 1974:Paul Werbos - BP演算法出現 * 1980:Teuvo Kohonen - 自主分類演算法出現(SOM) * 1980:Kunihiko Fukushima - 新認知機出現 * 1982:John Hopfield - Hopfield神經網絡,神經網絡首次出現出現記憶功能 * 1985:Hilton & Sejonwski - 波茲曼機器 * 1986:Paul Smolensky - 限制波茲曼機器,改進 * 1986:Michael I.Jordan - 提出循环神经网络(RNN) * 1990:Yann LeCun - 最早的捲積神經網絡(LeNet) * 1997:Schuster & Paliwal - 雙向RNN * 1997:Hochreiter & Schmidhuber - 长短期记忆(LSTM)進階RNN * 2006:Geoffrey Hinton - 首次出現深度學習一詞,**開啓深度學習時代** * 2009:Salakhutdinov & Hinton - 深度波茲曼機器機器 * 2012:Geoffrey Hinton - Dropout概念被提出 ## 5.4 深度學習新突破 ### 深度學習突破 * 多層神經網絡難訓練 * 2006年,Hinton提出**逐層訓練方法** * 逐層訓練法: * 學習第一層的表徵 * 將第一層的表徵當第二層的輸入 * 逐層學習到深層 * 新突破 * 更多資料量 * 更快的計算 * 更大、更複雜的模型 * 更好的演算法 * 更瞭解模型内部結構 --- ### 邁向深度學習 * 捲積神經網絡(Convolution neural network) * 遞回神經網絡(Recurrent neural network) * 記憶與注意力機制(Memory and attention) * 生成式模型(Generative model) * 深度增强學習(Reinforcement learning) # 捲積神經網路 (Convolution Neural Network) ## 6.1 摺積神經網路 ### 視覺感知過程 ![6.1.1](https://hackmd.io/_uploads/SJfpkUmm1e.png) * 不同點光源都有一個神經元進行感知 --- ### 稀疏鏈接 * 區域特徵 * 影像**相鄰像素**比較遠的像素之間更有關係 ![6.1.2](https://hackmd.io/_uploads/r1w2JLQQ1x.png) * 部分意義不大的特徵直接放棄學習,這些被放棄的特徵就是係數鏈接 * 可以有效地減少神經元的學習參數 * Regularization * 對於資料有**區域特徵的先驗知識** --- ### 參數共享 * 若區域特徵重複出現,則共有同一參數 ## 6.2 摺積與反摺積 ### 摺積的數學定義 ![6.2.1](https://hackmd.io/_uploads/rJ4dgIX7kg.png) * -a的部分就是“摺” * 摺積 * Input:(輸入數量,高度,寬度,厚度) * Kernel:(高度,寬度,厚度) * Padding:額外補多少邊界 * Stride:一次移動多少 * 摺積與反摺積互爲**反操作** * 摺積為綫性運算 ## 6.3 摺積神經網絡架構 ### 摺積神經網絡 ![6.3.1](https://hackmd.io/_uploads/HJXr4I7XJl.png) ![6.3.2](https://hackmd.io/_uploads/BkuYHUmmkx.png) * Kernel代表一個區域特徵 * 冗餘特徵(reductant feature) * 同一個特徵,但角度不同 --- ### pooling layer * 將面積變小->減少計算量 ![6.3.3](https://hackmd.io/_uploads/B15YILmmke.png) * Max-pooling 僅讓輸出最强的神經元通過 * **過濾最强**的訊號 * 僅考慮特徵有無 * 犧牲空間資訊 * 增强輸入**特徵的不變性** * 增加神經元感受區域 --- ### 神經元感受區域 * 維度改變 * 由**寬淺**變爲**窄深** ![6.3.4](https://hackmd.io/_uploads/B1qwvIQXye.png) ## 6.4 深度殘差網絡 ### 跳躍結構 * 神經網絡加深,學習容量增加->同時**參數增加**,**更難訓練** ![6.4.1](https://hackmd.io/_uploads/SJofcU7X1g.png) ### 殘差神經網絡 ![6.4.2](https://hackmd.io/_uploads/Sy8ScUmX1g.png) * 若想跳過F(x)就設它為0 # 遞迴神經網路 (Recurrent Neural Network) ## 7.1 隱藏馬可夫模型 ### 序列資料學習 * 資料序列 * 時間序列是一組時間排序的隨機變數 * 股票、語音 * 探討隨機變數之間的關係 * 給定一個序列,問發生的几率 * P(早安)>P(安早) * 給定一個序列,預測下一個狀態 * P(嗎|你好)>P(他|你好) * 給定一個序列,預測一整個序列 * p(how are you|你好嗎) --- ### 圖機率模型 * 一種結合圖的表示與機率的學習方法 ![7.1.1](https://hackmd.io/_uploads/HkOVskL7ke.png) * Representation * 如何表示隨機變數閒的關係 * 獨立性 * Inference * 給定一些觀察到的狀態,估計其他的隨機變數 * Learning * 給定資料學習圖形結構或參數 * 好處: * 可彈性加入先驗知識 * 建立隨機變數之間關係 * 獨立性可大幅簡化模型複雜度 * 與深度學習關係 * 圖形結構表示 * Restricted Boltzman Machine --- ### 隱藏馬可夫模型 * 含有隱藏狀態的序列圖機率模型 * 無法觀察到的隱藏過程 * 馬可夫性質 * P(xt|xt-1) ## 7.2 遞回式神經網絡計算過程 ### 遞回式神經網絡 * 用神經網絡來處理序列資料 * 對比隱藏馬可夫模型 * 記憶性 * 整個過去歷史都會影響現在 ![7.2.1](https://hackmd.io/_uploads/Sy2JMl8Xye.png) * 每個時間點都**加入新的資訊給隱藏狀態** * 每個時間點h(t+1)包含**過去到現在的資訊**,用來計算輸出 * 與HMM比較,**隱藏狀態為一個連續的向量,可以容納更多訊息** --- ### 延展計算過程 ![7.2.2](https://hackmd.io/_uploads/rJEgNeUQ1l.png) ![7.2.3](https://hackmd.io/_uploads/rytgVeUmke.png) ## 7.3 序列至序列學習架構 ### 序列表徵 ![7.3.1](https://hackmd.io/_uploads/rynVIxI7Je.png) * 將整句話的意義壓縮至隱藏層的向量内 --- ### 序列值序列學習 * 多用於機器翻譯、聊天機器人 ![7.3.2](https://hackmd.io/_uploads/BJdSDe8mye.png) ## 訓練遞回神經網絡 # 最新研究進展 ## 8.1 最新深度學習研究進展 ### 注意力機制 * 視覺注意力機制 * 減少認知負載 --- ### Machine translation ![8.1.1](https://hackmd.io/_uploads/r1cOeWvX1l.png) * 只將注意力放在最相關的字上,減少負載 --- ### Attenion Is All You need ![8.1.2](https://hackmd.io/_uploads/BkU4W-PQyg.png) ## 8.2 生成式模型 * 一種瞭解世界的方法 * Working models * Model: captures some of the structure in the world,but not all * Working: simulate this part of the world, imagining what will follow from different initial conditions ### PixelCNN * Joint distribution of pixels over an image x * 總之就是透過先前的資料判斷下一個像素的走向 ![8.2.1](https://hackmd.io/_uploads/S1ta4WwXyg.png) --- ### Variational Autoencoders ![8.2.2](https://hackmd.io/_uploads/BJFTr-Pmyl.png) * 變分自編碼器 ![8.2.3](https://hackmd.io/_uploads/rytILWDmJx.png) * 可創建新的資料,但多屬流變 --- ### Generative Adversarial Networks * Generator * Transformation models * Discriminator * 判斷image space哪些區域最爲真實 ![8.2.4](https://hackmd.io/_uploads/ByVgw-vXJg.png) ## 8.3 增强式學習 ### Reinforcement Learning * 增强式學習就是機器與環境互動的結果,在互動的過程中會獲得回報,目標就是使回報最大化 ![8.3.1](https://hackmd.io/_uploads/Sk-7_WvQJx.png) ### Deep learning in RL * Policies * Deep Policy Gradient * Value functions * Deep Q learning