# 人工智慧導論 ###### tags: `Machine Learning` ## 認識 AI * 把問題化為函數(function) * 輸入可能是單一文數、圖片矩陣、過往歷史文數紀錄、過往字符加先前狀態 * 找出定義域與值域的映射 * 收集歷史資料 * 過度考古(訓練):**過適/過擬合(overfitting)** * 資料類型 * 訓練資料 training data * 測試資料 test data * 設計函數 * 機器學習 machine learning * 神經網路 neural network * 訓練 * 訓練成果誤差評估:**損失函數(loss function)** * $L(\theta)=\sum_{i=1}^{n}(\overline{P_iQ_i})^2$ * 限制 * 電腦無法設計問題 * 電腦無法設計人工智慧 * 經典演算法 * 問題類型 * 分類問題 classification * 未知新訊息歸納入已知資訊 * 都屬於監督式學習(supervised learning) * 分群問題 clustering * 一群沒有分類或群體的資料透過特徵區分 * 非監督式學習(unsupervised learning) * 分類結果:標籤(label) * 函數參數:特徵(feature) * 結果 * 預測 predition * 線性分類器 linear classifier:迴歸向量 * 超平面 hyperplane:多維迴歸分類平面,一個特徵形成一個維度 * 非線性分類器 nonllinear classifier * 支持向量機 support vector machine, SVM * 分類演算法 * 找出在兩個分類間可平移出最大寬帶線性分類器的支持向量 * 核函數(kernal function)可以非線性,支援非線性分類 * 決策樹 decision tree * 從根節點經由分支進行決策 * 分類特徵經由決策樹後可以變成分類規則 * 資訊獲利(information gain):最高整體準確率的特徵分類方式,需要藉由迭代測試生成 * K 近鄰演算法 K-Nearest Neighbor, KNN * 監督式學習分類演算法 * 利用樣本點與點之間的距離判斷新的資料像哪類 * k: 參考幾個最接近的鄰居 * 原則上奇數 * K 平均分群法 K-means clustering * 分群演算法 * 找分群重心位置 * 先隨機分群,取重心後再計算各點距離重心位置重新分類 ## 基本神經網路架構 * 維度:輸入與輸出的變數數量 * 人工神經網路 Artificial Neural Networks, ANN * 發想源自生物神經網路 * 對新舊事物產生連結,得到學習、記憶、推理、判斷 * 三階級 * 輸入層:接收刺激向後傳遞 * 隱藏層:資料轉換整理 * 輸出層:辨識結果 * **神經網路函數學習機的設計重點** * 隱藏層數量 * 每隱藏層神經元數量 * 前饋神經網路 Feedforward Neural Network:一層一層向下傳遞,每個神經元的動作類似 * 輸入:$\sum_{i=1}^nw_ix_i+b$ * $x$: 上一層傳來輸入 * $w$: 針對每筆輸入設定的權重 * $b$: 為了讓所有神經元都能被激發設定的偏值(bias) * 處理:啟動函數 activation function * 把輸出變成非線性 * 如讓小刺激歸零、大刺激變一 * 輸出:損失函數 loss function, L * 輸出結果與實際的差距 * 梯度下降法 gradient descent/反向傳播法 backpropagation:使 L 變最小 * 找出區域極小值 * $w\to w-rL'(w)$ * $r$: 學習速率,調整的步進值 * 操作訣竅:偏微分,每個參數獨立看待,把其他參數當常數 * 表記為多維度的梯度(gradient)向量 * 深度學習 deep learning:具有多個(三或以上)隱藏層 * 三大神經網路 * (全連結)神經網路 (fully connected) neural network * 每一層的神經元都與下一層的所有神經元相連 * 也叫標準神經網路 * 最常見 * 最萬用 * 針對特定應用表現不如其他 * 可搭配其他使用 * 捲積神經網路 Convolutional NN * 最適合照片影片 * CNN 之父:楊立昆 * 特殊結構 * 捲積層 convolution layer * 看出是否具有某些特徵並依強度賦值的過濾器 filter * 池化層 pooling layer * 把圖片概略分區,每一區只看最具代表性的值 * 目前最常見的是看最大值的最大池化層 max pooling layer * 在這兩層後再接上全連接層 * 遞迴神經網路 Recurrent NN * 有記憶能力 * 隱藏狀態 hidden state:先前輸出結果的暫存 * 每個神經元的輸出會送回同一層的所有神經元 * Chat AI:所有輸入完成後逐字生出回復 ## 圖像識別 * 預處理 preprocessing * 縮放 scaling * 旋轉 rotation * 捲積運算 * 移動-對齊-計算純量積 * 空間濾波 spatial filtering * 濾波器與原圖像做捲積運算 * 濾波器又叫遮罩 mask 或核心 kernal * 種類 * 平滑濾波器 Smoothing Filter:模糊化 blurring、減少雜訊 noise reduction * 平均濾波器 average filter:每格權重相同 * 權重平均濾波器 weighted average filter:中心權重較高、邊緣較低 * 中值濾波器 Median Filter:取遮罩的中間值做輸出 * 索伯濾波器 Sobel Filter:邊緣檢測、左右/上下的差距 * AlexNet * 2012 ILSVRC(ImageNet Large Scale Visual Recognition Competition) 冠軍 * 捲積層分成 RGB 三通道,模型主要部分 * 多個捲積層的輸出會讓特徵逐漸明顯形成特徵圖 feature map * 池化層壓縮特徵圖留下主要特徵,降低運算負擔 * 全連接層作最後分類使特徵不受圖片中位置影響 * 啟動層 (activation layer) 分類特徵空間解決線性系統疊加性 (superposition property) * 非線性啟動函數 * Sigmoid (S 函數):$S(x)=\dfrac1{1+e^{-x}}$ * tanh (雙曲正切函數,hyperbolic tangent):$\tanh x=\dfrac{e^x-e^{-x}}{e^x+e^{-x}}$ * **ReLU (線性整流函數,Rectified-Linear):**$f(x)=\max(x,0)$ * 標準化指數層(softmax layer)將輸出結果標準化到 0 與 1 之間的值 * 訓練 * 訓練集調整參數 * 驗證集調整結構 * 測試集測試成果 * ImageNet 世界最大圖像資料庫 * 過擬合 overfitting * 資料增強 data augmentation:調整圖片讓一張看起來像是很多張 * 丟棄 dropout:隨機停止少數神經元運作 * 應用 * 影像整理 * 圖片影片網 * 資料庫 * 行銷 ## 視訊識別 * 動作估計 motion estimation * 使用動作向量(motion vector)表示兩取樣時間中向素、區塊、物件的水平垂直位移量 * 前提假設 * 物件兩影格間的位移量不會太大 * 物件不會隨時間改變顏色 * 物件不會隨時間改變形狀 * 切分區塊,在搜尋範圍內尋找絕對值相差最少的區塊 * RGB 轉換成向量資料量會變成原來的 2/3 * 物件追蹤 object tracking * 找到特定物件隨時間在空間的位置變化 * 把滑動視窗(滑窗,sliding windows)掃過圖片的結果應用在視訊影格,特徵差異小於閾值(threshold)就視為相同物件 * 誤差絕對值 * 誤差平方和 * 將特徵圖做等比例切割,讓不同大小的物件有同樣大小的特徵圖 * 行為識別 action recognition * 識別視訊中發生的行動 * 難題 * 方位、光線、角度影響線索採集 * 深度神經網路更能克服不同環境變化 * 同一類別行為的個別差異可能極大 * 分析所有必要動作的完備性 * 不同取樣率下,不同類別行為可能部分特徵極為相似 * 低取樣率得到部分資訊,搭配高取樣率的動作估測結果 * 干擾物件多 * 篩選機制 * 架構 * 以較低再採樣率對視訊/動作採樣 * 單影格再採樣 * 多影格再採樣 * 原始視訊 * **多影格混合** * **多影格分組混合再採樣** * 動作資訊 * 輸入神經網路提取特徵 * 分類器取得識別結果 * 注意力機制 attention mechanism * 遮罩 ## 音訊識別 * 音訊:基頻(fundamental frequency)介於 20Hz 到 20kHz * 電腦對音訊儲存 * 取樣率 sample rate * 一秒內取樣點數 * 8kHz:電話 * 16kHz:語音識別錄音 * 44.1kHz:音樂CD * 位元解析度 bit resolution * 每個取樣點的位元數 * 8or16 * 聲道數 number of channels * 單聲道 mono * 雙聲道/立體聲 stereo * 聲學特徵 * 音框 frame:音訊切分單位,至少要比基本週期(fundamental period)長 * 音框率 frame rate:每秒音框數量,越大所需資源越多 * 音量 volume:強度(intensity)或能量(energy),震幅,單位分貝(decibel, dB) * 音高 pitch:高低,每秒基本週期個數 * 半音差 semitone:$pitch=69+12\log_2(\dfrac{freq}{440})$ * 音色 timbre:內容,發音方式,以不同頻率的能量分布表示 * 快速傅立葉轉換(FFT)將訊號轉換成幅度頻譜(magnitude spectrum),但常有諧波(harmonics) * 語音識別時使用梅爾倒頻譜係數(mel-frequency cepstral coefficients, MFCC) * 語音識別 * 使用者 * 語者相關 specker dependent:限定特定人使用 * 語者獨立 specker independent:不限定 * 功能 * 語音命令 voice command:從有限命令集找出使用者最有可能下達的指令 * 關鍵詞偵測 keyword spotting:從語句中找出特定關鍵詞彙 * 聽寫 dictation:從語句生成逐字稿 * 對話 dialog:從語句生成聊天回應 * 語者相關的語音命令系統 * 最簡單 * 動態時間扭曲 dynamic time warping, DTW * 一種動態規劃 * 根據音色比對 * 針對語速伸縮 * 達到最好對位(alignment) * 錄樣本時進行端點偵測(endpoint detection)計算 MFCC * 語者無關的對話系統 * 最複雜 * 語音助理 * 使用不同聲學模型代表不同音色,估算MFCC向量的機率密度(probability density) * 使用高維度機率密度函數(PDF)建立聲學模型 * 最常用方法:最大似然率估測法 maximum likehood estimate, MLE * 計算模型最佳平均向量(mean vector)、共變異矩陣(covariance matrix)與函數加權權重(weighting factor) * 最常用模型:高斯混合模型 Gaussian mixture models, GMM * 高斯 PDF 的加權平均 * 進階模型:隱藏式馬可夫模型 hidden Markov models, HMM * 描述序列(sequence)的PDF * 由數個狀態(state)組成 * 狀態轉移由轉移機率表示(transition probability) * 不知音框的MFCC狀態,需用 segmental k-means 估算似然率 1. 對於每語句,用動態規劃將MFCC向量分配到每個狀態 2. 對於每狀態,根據MFCC計算對應的GMM最佳參數 3. 根據每個音框分配的狀態,計算tp matrix 4. 回到步驟1.,直到所有參數收斂 * 能表示發音隨時間變化 * 音素 phoeme:最小發音單位,可以建立更準確音學模型 * 單音素 monophone:粗略,所需資料與運算需求皆小 * 雙連音素 biphone:右相關(right-content deppendent, RCD) * 三連音素 triphone:左右相關 * 似然率:維特比搜尋(Viterbi search) * 動態規劃演算法 * 最短距離 * 聽寫 * 樹或圖建立詞格(word lattice) * 新方法:DNN * GMM-HMM變成DNN-HMM * 使用GPU * 哼唱選歌 Query By Singing/Humming, QBSH * 音高追蹤(pitch tracking) * 聲門振動頻率作為音高基本頻率 * 自相關函數 audo-correlation function, ACF:對音框反覆平移與內積得到曲線,兩個最大值位置的區間間隔即是基本週期 * $acf(\tau)=\sum_{i=0}^{n-1-\tau}s(i)s(i+\tau)$ * 音高向量與資料庫比對 * 線性伸縮 linear scaling, LS * 進階方法:DTW * 難題 * 複音音訊音樂(polyphonic audio music)的音高追蹤 * 資料庫運算量:雲端運算 cloud computing * 原生音高準確度(raw pitch accuracy)仍沒有顯著進步 * 應用 * 醫療診斷 * 音訊事件偵測 ## 自然語言處理 Natural Languague Processing, NLP * 斷詞處理 * 決定詞彙邊界 * 中央研究院 中文斷詞系統 * 史丹佛大學 Stanford CoreNLP * 詞性(part of speech, POS)標記 * 詞彙性質 * 中研院 平衡語料庫 詞類標記集 * 詞意消歧 * 詞彙意思 * 語法剖析 * 詞彙成分(constituent)組成片語 * 輸出剖析樹(parse tree) * 簡化:相依剖析(dependency parsing) * 不必逐字標記的應用可只標記詞彙間關係 * 智慧問答系統 * 將問句與資料庫比對計算相似度輸出對應答案 * 問句與資料庫表示 1. 斷詞:擷取關鍵字構成詞袋(bag of word) 2. 斷詞+詞性標記:只保留某些詞性的詞彙構成詞袋 3. 斷詞+詞性標記+相依剖析 * 兩表示的比較與評分 * 雅卡爾係數(Jaccard coefficient): $J=(A,B)=\dfrac{|A\cap B|}{|A\cup B|}$ * Stanford CoreNLP 相依剖析 * 代名詞處理:代名詞消解(pronoun resolution) * 資料庫:倒置列表(inverted list)記住關鍵字出現的問題 * 深度學習方法 * 詞向量(word vector):衡量詞彙關聯度,由詞嵌入(word embedding)產生 * 單詞組(word unigram)、雙連詞組(word bigram)、三連詞組(word trigram)等不同尺寸過濾器捲積出不同特徵 * 池化出句向量 * 餘弦相似度(cosine similarity)計算關聯度 * 參考:Neural Network Methods for Natural Language Processing, Yoav Goldberg ## 知識發現 knowledge discovery * 知識發現流程 1. 資料篩選 data selection:統一資料格式、選出目標 2. 資料預處理 data preprocessing:去除缺失、雜訊與不完整資料 3. 資料轉換 data transformation:轉換成資料探勘演算法的格式 4. 資料探勘 data mining:探勘隱藏樣式、建立預測模型 5. 知識評估 knowledge evaluation:評估知識正確性可用性 * 關聯規則探勘 Association Rule Mining * 找出相關組合 * $信賴度(\Bbb{confidence})=\dfrac{規則中前項與後項共同出現的次數}{前項出現的次數}$ * 最小信賴度 minimum confidence:篩選出信任度高於特定值 * 支持度 support:規則在整個資料庫裡的占比 * 最小支持度 minimum support:篩選出支持度高於特定值 * 步驟 1. 找出支持度夠高的頻繁項目集 * 窮舉法 method of exhaustion * 先驗演算法 Apriori Algorithm * FP-growth 2. 生成信賴度夠高的關聯規則 * 應用 * 購物習慣分析 * 疾病關聯分析 * 機台異常分析 * 入侵偵測 * 基因表現製藥分析 * 序列樣式探勘 Sequential Pattern Mining * 找出隨時間變化的序列樣式 * 以時間為分類的關聯規則 * 應用 * 購物預測 * 網站推薦 * 移動行為預測 * 疾病診斷 * 用藥指南 * 分類模型 classification modeling * 根據已知模型對資料進行分類 * 決策樹 decision tree 1. 樹的建構:將所有訓練集放在根節點,根據選定特徵由上向下遞迴把訓練集分開,特徵可選擇分開資料後錯誤較少的 2. 樹的剪枝:刪除包含雜訊與異常值(outliner)的分叉 * 新資料進入時就依各特徵依序判斷 * 支援向量機 support vector machine * 找到一個可以分開資料的超平面(hyperplane) * 支援向量:代表類別邊界的資料點 * 決策邊界 decision boundary:距離各個支援向量最遠的邊界位置 * 非線性可分時要使用核技巧(kernal trick) * ANN * 應用 * 顧客分析 * 推薦系統 * 醫學診斷 * 財經決策 * 電腦視覺 * 聚類 clustering * 不預先含有分類標籤 * k-means 1. 初始化:資料正規化,隨機選K個資料點作為群中心 2. 分群:將所有其他資料點分配給最近的群中心 3. 更新中心:用群內資料點更新群中心位置 4. 終止:重複分群與更新中心直到沒有資料被重新分配 * 階層式聚類 hierarchical clustering * 凝聚式 agglomerative:bottom-up 1. 每筆資料視為各自一個群 2. 找到最近的兩群合併 3. 計算新群與舊群之間的距離 * 單一連接法 Single Linkage Method:不同群兩點最大距離 * 完全連接法 Complete Linkage Method:不同群兩點最小距離 * 平均連接法 Average Linkage Method:不同群各點距離總和平均,抗雜訊 * 中心點連接法 Centroid Linkage Method:不同群中心點距離,抗異常值 4. 重複 2. 與 3. 直到達到目標群數量 * 分裂式 divisible:top-down * 應用 * 市場行銷 * 城市規劃 * 犯罪分析 * 社群網路分析 * 人員配置 ## 創作 AI * 生成對抗 * 對抗式學習 adversarial learning * 藉由生成、判別兩角度對抗來達成進步 * 生成模型(generative model)的中心思想 * 希望能產出資料沒有的東西 * 資料空間 data space:所有可能資料點(data point)的集合 * 資料分布 data distribution:資料點在資料空間中的出現趨勢 * 生成對抗網路 generative adversarial network, GAN * 生成器 generator:從潛在空間(latent space)中生成資料 * 判別器 discriminator:評分系統 * 訓練方式 * 固定生成網路,訓練判別網路 * 希望提高分辨生成與真實的區別 * 固定判別網路,訓練生成網路 * 希望讓生成的東西難以被分辨 * 條件式生成對抗網路 conditional GAN:可根據指令生成 * 藉由指令向量對生成空間進行限制 * 循環式生成對抗網路 CycleGAN:圖片風格轉換 * 其他技術 * 變分自編碼器 Variational Autoencoder, VAE * 自回歸模型 autoregressive model * 以流為基礎的生成模型 flow-based generative model ## 強化學習 reinforcement learning, RL * 歷史:1970 專家系統(expert system) * 背景:行為主義心理學 Behavioristic Psychology * 制約刺激/反應 * 代理人(agent)從環境獲取狀態(state)決定行動(action),環境則依行動給予獎勵(reward) * Q-learning * 華金斯 Chris Watkins * Q-table:W(action, state) * $W'(a,s)=W(a,s)+v(s')$ * 接收新刺激時先根據先前經驗做出動作a,再根據這次的回饋調整記憶矩陣 * 列(row)為狀態,行(column)為行動,中間各格為獎勵值 * 運作流程 * 初始化:把表格全部填成0 * 選擇一個行動執行 * 量測獎勵並記錄 * 更新Q表 * 試誤法(trial and error) * 貝爾曼方程式 Bellman Equation * $newQ(s,a)=Q(s,a)+\alpha[R(s,a)+\gamma maxQ'(s',a')-Q(s,a)]$ * $\alpha$:學習率 * $\gamma$:折價因子 * $maxQ'(s',a')$:新狀態與行動下選擇最大Q值的方法 * 應用 * 遊戲人工智慧 * 對弈遊戲 * 參考 * 機率學 * 馬可夫鏈 Markov chain * 馬可夫程序 Markov process * 套件 * Deeplearning4j(Java) * TensorFlow(Python) * Keras(Python) * MXNet(Python) * PyTorch(Python) * OpenAI Gym ## 未來世界 * 智慧辦公室 * 影像聲音文件全紀錄 * 語音辨識 * 自然語言處理 * 影像識別擷取文字 * 智慧教育 * 學習歷程 * 專屬學習計畫 * 智慧娛樂 * 智慧家庭 * 物聯網智慧感測器 * 醫療巨量資料與預防醫學 * 金融管理 * 想要從事人工智慧領域工作精進技術? * 基礎學科專業 * 數學、物理學 * 應用學科專業 * 計算機科學、心理學、生物學 * 跨領域應用