人工智能期末筆記

1. 緒論

  • 四大流派程序員

    • 符號主義(知識圖譜)

      原理主要爲物理符號系統(即符號操做系統)假設和有限合理性原理web

      用數理邏輯描述智能行爲, 在計算機上實現了邏輯演繹系統。算法

      舉例,其有表明性的成果爲啓發式程序LT邏輯理論家,證實了38條數學定理,表了能夠應用計算機研究人的思惟多成,模擬人類智能活動。網絡

    • 鏈接主義(神經網絡)

      認爲人工智能源於仿生學,特別是對人腦模型的研究。框架

      舉例,MP神經元,感知機,神經網絡機器學習

    • 行爲主義(智能機器人)

      認爲人工智能源於控制論。早期的研究工做重點是模擬人在控制過程當中的智能行爲和做用,如對自尋優、自適應、自鎮定、自組織和自學習等控制論系統的研究,並進行「控制論動物」的研製。ide

      舉例,智能控制和智能機器人函數

    • 統計主義(機器學習)

      基於機率論與數理統計性能

      舉例,貝葉斯分類器(條件機率)學習

<br>
  • AI,ML,DL的異同、關聯

    知乎

    • AI最初的概念,是用計算機構造與人類擁有一樣智慧的機器。

      人工智能的研究領域包括專家系統、CV、NLP、推薦系統等等。

      // AI分爲弱AI和強AI,
      // 弱 AI 讓機器經過觀察和感知, 作到必定程度的理解和推理
      // 強 AI 讓機器得到自適應能力, 解決沒有遇到過的問題

      // 目前的科研工做都集中在弱人工智能這部分,並頗有但願在近期取得重大突破
      // 電影裏的人工智能多半都是在描繪強人工智能,而這部分在目前的現實世界裏難以真正實現。

    • ML 是一種實現人工智能的方法

      ML 根據某些算法,經過大量數據進行訓練和學習,而後對真實世界中的事件作出決策和預測。

      算法:決策樹、聚類、貝葉斯分類、支持向量機等等。

      學習方法:監督學習(如分類問題)、無監督學習(如聚類問題)、半監督學習、集成學習、深度學習和強化學習。

      預處理:特徵工程

    • DL 一種實現機器學習的技術

      DL 利用深度神經網絡來進行特徵表達,DL的學習過程就是DNN的訓練過程

      DNN 自己並非一個全新的概念,可大體理解爲包含多個隱含層的NN

      應用:圖像識別、語音識別

      預處理:數據清洗

      存在的問題

      • 深度學習模型須要大量的訓練數據,才能展示出神奇的效果,但現實生活中每每會遇到小樣本問題,此時深度學習方法沒法入手,傳統的機器學習方法就能夠處理
      • 有些領域,採用傳統的簡單的機器學習方法,能夠很好地解決了,不必非得用複雜的深度學習方法
      • 深度學習的思想,來源於人腦的啓發,但毫不是人腦的模擬,舉個例子,給一個三四歲的小孩看一輛自行車以後,再見到哪怕外觀徹底不一樣的自行車,小孩也十有八九能作出那是一輛自行車的判斷,也就是說,人類的學習過程每每不須要大規模的訓練數據,而如今的深度學習方法顯然不是對人腦的模擬
<br>
  • 機器學習的兩個階段

    • 訓練(三步曲)

      • define Model

        定義 model

      • goodness of a function

        定義Loss function

      • pick the best function

        經過 GD 調整參數,使得損失函數達到最小值,此時的 function 就是某個 Model 中的最佳function

        # 全部訓練數據用了一次
        for e in epoch:
            # 迭代多少次
            for it in iteration:
                GD(batchsize)
                update(W)
        
        # Epoch: 
        # All sample data in the train set are used once in 1 epoch
        # Iteration (Batch):
        #
        # Batch-size:
        # The number of data in one iteration

        偏差反向傳播, 與GD一塊兒使用, 更新權值, 訓練模型

    • 測試

      在 Dev set / Test set 上進行測試

      前向傳播, err = y - predict(x), acc = y - err, 給定輸入, 預測輸出, 計算準確率

<br>
  • 機器學習的分類(區分差別, 舉例說明)

    • 監督學習

      數據集帶標籤, 即訓練集的 y 已知, 能夠計算 err = y - h(x)

      舉例,線性迴歸,圖像識別

    • 非監督學習

      數據集無標籤,y 未知,須要經過某種方法自動組織成一個個類別

      舉例,聚類算法

    • 半監督學習

      數據集一部分有標籤,一部分沒標籤

    • 強化學習

      強化學習也是使用未標記的數據。

      在監督學習中,能直接獲得每一個輸入的對應的輸出。強化學習中,訓練一段時間後,你才能獲得一個延遲的反饋,而且只有一點提示說明你是離答案愈來愈遠仍是愈來愈近。

      遊戲AI,AlphaGo,Dota,不是立刻就能獲得遊戲結果,可是能夠在一段時間延遲後知道本身離勝利是否愈來愈近。

      DeepMind 利用強化學習令遊戲 AI 大幅進步,以 AlphaGo 的成功最爲典型。

    • 遷移學習

      https://blog.csdn.net/jiandan...

      從源領域(Source Domain)學習了東西,應用到新的目標領域(Target Domain)

      源領域和目標領域之間有區別,有不一樣的數據分佈

      樣本遷移、特徵遷移、模型遷移、關係遷移

      訓練數據少(容易過擬合),原先某個訓練好的模型,部分組件能夠重用,部分組件須要修改,用於新的場景,

      相似面向對象,可重用性,或者某個web框架能夠快速搭建各類web應用

      原來識別貓,如今能夠識別狗(四條腿的特徵能夠重用),或者其餘動物

      訓練真實圖片,識別卡通圖片

<br>

線性迴歸

  • 機器學習定義

    機器學習,對於某類任務 T 和性能度量 P,模型程序能夠經過經驗 E 學習和改進,提高它在任務 T 上的性能 P

    T 預測

    P 準確率

    E 訓練集

  • 線性迴歸

    Y = h(x) = WX + b

    X(1) = 28x1, Y(1) = 10x1

  • 三步曲

    model, loss function, 經過 GD 使 loss 最小

    訓練集上表現很差 ---> 欠擬合 ---> 使用更復雜的模型,使用更多特徵做爲輸入

    訓練集表現好 -> 測試集表現很差 --> 過擬合 ---> 正則化,增長訓練數據

  • 偏差來源分析

    Testing Error = Bias error + Variance Error

    Bias error ≈ train error = avoidable error + unavoidable error

    Variance error ≈ 測試集 上的表現比訓練集上差多少

    = test error - train error
    • 欠擬合:bias error 高, variance error 低
    • 過擬合:bias error 低, variance error 高
    • Good:bias error 低, variance error 低
    • y5 = W5x^5 + ... + W1x + W0

      y1 = W1x + W0, y1 是 y5 的子集

  • 三類數據集

    • 訓練集:訓練模型參數
    • 開發/驗證集:用於挑選超參數
    • 測試集:用於估計泛化偏差,衡量模型性能
  • 數據集不是特別大時,使用 K-折 交叉驗證

    TODO 交叉驗證

    將數據集D劃分紅k個大小類似的互斥子集,

    每次用k-1個子集做爲訓練集,餘下的子集作測試集,最終返回k個訓練結果的平均值。

    交叉驗證法評估結果的穩定性和保真性很大程度上取決於k的取值。

  • 參數,自動學習,W,b

    超參數,某次訓練中不會改變的,由程序員肯定

    lr,正則化係數,模型階數,batchsize,epoch,梯度優化算法,filter的尺寸、步長

  • 正則化

    • L1(θ) = L(θ) + λ[θ]1

      [θ]1 = |w1| + |w2| + ... 參數絕對值之和,

      做用: 特徵篩選

    • L2(θ) = L(θ) + λ[θ]2

      [θ]2 = w1^2 + w2^2 + ... 參數平方和

      做用:限制模型複雜度, 避免過擬合, 提升泛化能力

    • Elastic, L1 + L2

      L3(θ) = L(θ) + λ{ρ[θ]1 + (1-ρ)[θ]2}

  • 加快模型訓練

    • 歸一化
    • 使用不一樣的 GD

      SGD, BGD, miniBGD, AdaGrad, RMSProp, SGDM, Adam,

      TODO: 不一樣GD之間的比較

    • 微調學習率lr

      TODO: 自適應變化的lr,t++, η--

<br>

分類 classification

  • Why not use linear regression model to solve classification?

    • 線性迴歸沒法解決多分類問題
    • 有些問題不是線性可分的(異或問題)
  • Why use cross entropy as loss metric, not MSE (Mean Square Error)?

    若是是交叉熵,距離target越遠,微分值就越大,就能夠作到距離target越遠,更新參數越快。而平方偏差在距離target很遠的時候,微分值很是小,會形成移動的速度很是慢,這就是不好的效果了。

    離目標離目標很近的時候,∂L/∂w 很小致使更新很慢。

  • What is Cascading logistic regression model? Why introduce this concept?

    https://blog.csdn.net/soulmee...

    https://cloud.tencent.com/dev...

    串級聯的邏輯迴歸模型能夠進行,特徵轉換,解決非線性的分類,如異或問題

    邏輯迴歸單元就是神經元的基本結構,能夠組成神經網絡


邏輯迴歸 vs 線性迴歸

深度學習

  • 對比三步曲

    • 定義一個函數集,即網絡結構的選擇
    • goodness of a function, 定義評價函數,即損失函數的選擇

      https://blog.csdn.net/soulmee...

      以識別 MNIST 爲例,對於一張圖片,計算交叉熵做爲 loss

      loss = - ln[yi], 其中 i 是正確的標籤對應的下標,即 ^yi = 1, 其餘 ^y = 0

      而後對於一個batch,計算 L = total loss = Σ loss

    • pick the best function, 挑選一個最好的函數,即如何更新權重進行學習

      選擇使 L 最小的 function (網絡參數),做爲最佳 function

      枚舉是不現實的,神經元個數太多,組合起來數量太大,須要使用梯度降低

      w = w - η ∂L/∂w,重複這個過程,直到 ∂L/∂w 很小,即 w 的更新量很小

      可是NN是非凸優化的,存在局部最小值

  • 反向傳播,用於更新模型參數,

    Backpropagation: an efficient way to compute ∂L/∂w in neural network

    To compute the gradients efficiently, we use backpropagation.

    forward pass: 計算 ∂z/∂w

    backward pass 計算 ∂l/∂z = ∂l/∂a ∂a/∂z =

    會計算梯度(偏導)

  • 正向傳播,用於預測輸出,計算loss
  • 全鏈接

    輸入層

    隱藏層

    輸出層

  • 梯度消失,梯度爆炸

    緣由:網絡太深,激活函數不合適,如sigmoid

    https://zhuanlan.zhihu.com/p/...

    只要是sigmoid函數的神經網絡都會形成梯度更新的時候極其不穩定,產生梯度消失或者爆炸問題。

    靠近輸出層的單元的梯度大,學習快,會一會兒收斂,認爲網絡已經收斂了。而靠近輸入層的單元梯度小,學習慢,且有隨機性。這樣整個網絡就好像是基於隨機狀況訓練而來的。效果很差。

    若是考慮將權重初始化成大一點的值,又可能形成梯度爆炸。

    梯度爆炸和梯度消失問題都是由於網絡太深,以及網絡權值更新不穩定形成的,本質上是由於梯度反向傳播中的連乘效應。

    解決方法,能夠用新的激活函數 ReLU

    • 解決梯度消失的問題,由於它大於0的部分是線性的。小於0時即爲0。
    • 計算量小
https://zhuanlan.zhihu.com/p/25631496

https://zhuanlan.zhihu.com/p/33006526
  • 欠擬合

    https://zhuanlan.zhihu.com/p/...

    • 調整網絡結構,增長層數、神經元數,可是越深 ≠ 越好
    • 新的激活函數
    • MiniBatch and Batch Normalization, 提升訓練速度和效果
    • 選擇合適的損失函數 loss
  • 過擬合

    • Early Stopping

      隨着在訓練數據上的損失不斷減少,在驗證集上的偏差會在達到某個最小值後反而增大,這時能夠考慮提前終止網絡的訓練,保留一個在訓練集和驗證集上效果都較好的網絡。

    • 正則化
    • dropout, 以必定的機率丟棄部分單元,簡化網絡。
    • 更多數據進行訓練
    • 創造訓練數據,好比手寫體識別,圖片角度傾斜15度又變成了新的數據
<br>

兩種特定場景的 NN

  • CNN, 卷積神經網絡

    圖像識別

    提取出圖像的不一樣特徵,再搭配全鏈接網絡和softmax進行分類

    • 圖像能夠用CNN的緣由

      • pattern具備局部性
      • 圖像的不一樣區域可能會出現的一樣的pattern
      • 對圖像進行向下採樣,對總體特徵的影響不大,
卷積層用到a和b兩個緣由,池化層用到c緣由。

    同時,利用這些原理能夠減小計算量。

    且,CNN是稀疏鏈接,且共享參數,大大減小了計算量,

    CNN能夠很好地進行特徵提取,再搭配全鏈接網絡和softmax進行圖像識別(分類)


    因爲圖像的特徵具備局部性、重複性,所以能夠經過卷積核進行特徵提取

    另外,下降圖像分辨率對圖像總體特徵的影響較小,所以經過池化進行向下取樣,減小計算量

    綜上,對比全鏈接,CNN是稀疏鏈接,且共享參數,大大減小了計算量,又有很好的識別效果

kernel/filter

*    stride

*    padding

*    超參數

    size, padding, stride, number-of-filters

    TODO:結合下面的輸入輸出尺寸,實例計算尺寸,計算特徵

*    輸入尺寸 輸出尺寸
  • TODO:CNN結構,P41


  • RNN, 循環神經網絡

    • TODO,結合上次做業
    • 什麼是序列數據?舉例說明。

      有時間維度的數據稱爲時間序列數據。如文本段落、語音輸入、視頻流、DNA序列分析等

    • RNN 特色

      當前的預測值考慮到了以前的運行結果

    • 即便只有一層的RNN模型仍可能出現梯度消失和梯度爆炸,爲何?

      https://zhuanlan.zhihu.com/p/...

      對RNN進行優化須要用到BPTT,用來表示RNN的記憶狀態,權值的偏導中存在累乘,若是每一項都小於1,那麼乘多了就變0了,若是每一項都大於1,那麼乘多了又會很大,因此RNN存在梯度消失和爆炸的緣由。

    • LSTM與通常的RNN相比,優點在哪。LSTM的結構

      • 能夠避免梯度消失(沒法消除梯度爆炸)

        在LSTM中,也有和RNN同樣的記憶單元,叫作細胞狀態(LSTM Cell)

        從上圖能夠看到,LSTM的單元狀態更新公式中是一個加法而不是乘法

        表示之前的記憶須要忘記多少,表示這一次的輸入須要添加多少

        由於是加法,因此不容易致使接近於0的狀況。

      • LSTM能夠保持長時記憶,LSTM的記憶門能夠控制記憶存放多久。不過LSTM能夠保持長時間記憶根本緣由也是由於LSTM解決了梯度消失的問題吧。
    • 訓練LSTM至關因而訓練每一個block的三個門的輸入權值
    • 對於給定問題,能判斷出是否該使用 RNN 模型

      當輸入和輸出有一個是序列數據時使用RNN模型。

      典型RNN任務:語音識別、音樂生成、語義分析、機器翻譯。

相關文章
相關標籤/搜索