---
# System prepended metadata

title: 人工智慧導論
tags: [Machine Learning]

---

# 人工智慧導論

###### 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

## 未來世界

* 智慧辦公室
  * 影像聲音文件全紀錄
  * 語音辨識
  * 自然語言處理
  * 影像識別擷取文字
* 智慧教育
  * 學習歷程
  * 專屬學習計畫
* 智慧娛樂
* 智慧家庭
* 物聯網智慧感測器
* 醫療巨量資料與預防醫學
* 金融管理
* 想要從事人工智慧領域工作精進技術？
  * 基礎學科專業
    * 數學、物理學
  * 應用學科專業
    * 計算機科學、心理學、生物學
  * 跨領域應用
