- 簡介
- 分類問題
- 線性界線
- 更高維度
- 感知器
- 為何是神經網路
- 感知器算法
- 非線性數據
- 誤差函數
- 對數損失誤差函數
- 離散型與連續型
- Softmax函數
- One-Hot編碼
- 最大似然率
- 交叉熵
- 多類別的交叉熵
- Logistic回歸
- 梯度下降
- 梯度下降算法
- 感知器和梯度下降
- 深度學習的基礎就是神經網路。
- 神經網路可以幫助我們找出數據中的最佳分割線,來區分不同的數據。
- 機器如何找出這條分割線 ?
- 這個方程式就是我們的model,也就是機器都過數據分析,學習到的最終結果。
- 一般化的表示。
- 三維數據。
- 高維數據。
- 感知器(perception): 就是將原本方程式的架構,轉化成神經元結構,有輸入神經元,運算神經元。
- 權重(weight): 輸入神經元的權重。
- 高維數據的感知器。
- 階躍函數(stpe function): 將運算神經元所輸出的數值轉化成1或0。
- perception和神經系統的對比
- Dendrites: 輸入神經元。
- Neucleus: 運算神經元。
- Axon: 也許是step function。
- 我們一開始的問題是,如何找出這條直線。
- 答案: 透過感知器算法可以讓機器找出這條直線。
- 感知器算法
-
- 一開始先隨機設定權重 w,b。(所以隨機決定一條分割線)
-
- 對於那些分錯的點:
- 如果是藍色的點分錯:
- 增加權重
- 如果是紅色的點分錯:
- 減少權重
-
- 調整完分割線後,再重複step2,直到下列條件後停止。
- 直到沒有分錯的點。
- 或者分錯的點在我們容許範圍內。
- 或者重複到K次。
-
- 針對非線性數據處理,我們需要重新定義感知器算法,使其可以支援除了直線以外的其他類型曲線。
- 要處理非線性數據的第一步,就是要借助誤差函數。
- 誤差函數: 讓我們可以了解與正確答案的差距有多大。
- 透過重新定義感知器算法,不斷的修正與計算誤差函數,想辦法降低誤差函數的大小。
- 先了解離散型跟連續型數據對誤差函數的影響:
- 離散型(Discrete): 很難透觀察到誤差函數改變。
- 連續型(Continous): 很容易觀察到誤差函數改變。
- 例子: 若把誤差函數定義成分錯的個數,那此時誤差函數是針對離散型數據設計。
- 會發生每次稍微調整直線變化,所得到誤差函數的結果都不會改變。
- 正確做法: 要想辦法誤差函數的輸出從離散型變成連續型。
- 誤差函數是一個可微分的函數。
- 接下來目標: 如何設計可微分的誤差函數。
- 從預測角度來解釋誤差函數的輸出是離散型或連續型。
- 離散型(Discrete): 就是YES,NO。
- 連續型(Continous): 就是機率。
- 再看一下,之前所舉的例子。
- 離散型(Discrete): 表示我們預測每個點不是藍色就是紅色。
- 連續型(Continous): 表示我們預測每個點是藍色或是紅色的機率。
- 要如何從離散型變成連續型 ?
- 使用了不同Activation function
- 最後,如何調整感知器算法 ?
- 使用了不同Activation function
- 多分類問題: 假設現在有多個動物特徵的輸入值,我們要來預測分別看到這三種動物的機率各是如何?
- 機率總和要為1。
- 根據特徵值給評分: 各動物的評分 / 加總評分
- 問題: 線性函數有可能遇到評分為負數的狀況。
- 解決: 不要讓評分有負數的情況。
- 使用exp函數: 保證不會有負數。
- Softmax函數: 用來處理多分類問題的機率。
- 當Softmax遇到二分類問題,其效果就等於sigmoid函數。
- 常用的資料預處理方式。
- 透過這樣的方式將不同分類標示成不同數值。
- Maximum Likelihood。
- 目標是找尋一個最佳的演算法,來幫助我們選擇那些可以正確區份數據的model。
- 透過不同的model的最大似然率來代表其model的效能。
- 假設一個模型的切割方式如下圖,那麼藍色區域的點是藍色的機率比較大,相對的紅色區域的點是紅色的機率比較大。
- 兩個不同模型的最大似然率的計算方式(獨立機率相乘)。
- 算出來的最大似然率顯然右邊的模型優於左邊。
- 模型整體的最大似然率越高,表示此模型的效能越好。
- Cross Entropy
- 是從最大似然率轉化而來的。
- 將最大似然率先取對數,在取負數。
- 是從最大似然率轉化而來的。
- 將最大似然率轉轉成Cross Entropy,可以發現錯誤的點的Cross Entropy較高。
- 目標: 模型整體的Cross Entropy越低,表示此模型的效能越好。
- 公式推導:
- P1,P2,P3: 表示不同門後有禮物的機率分別是多少。
- yi: 表示第i個門後實際是否有禮物。
- CE[(1,1,0), (0.8, 0.7, 0.1)] = 0.69
- 根據我們所知的機率,出現1,1,0這樣的實際結果,是相當大的。
- CE[(0,0,1), (0.8, 0.7, 0.1)] = 0.69
- 根據我們所知的機率,出現0,0,1這樣的實際結果,是相當小的。
- 知道不同動物出現在不同門後的機率,可以算出實際這樣動物排列出現在門後的機率。
- yij = 1, 表示動物i實際出現在門j後。
- 所以整個公式多了一個m,m表示類別數量。
- 當m=2時,公式結果會跟上面的一樣。
- 如何從Cross Entropy來推導出Error function的公式該如何寫 ?
- y=1, 實際是藍點。
- y^=0.6, 模型預測出是藍點的機率。
- error = -ln(y^), 將機率轉換成 Cross Entropy。
- Error的公式: 算出每個點的Cross Entropy。
- Error Function的公式: 加總每個每個點的Cross Entropy,再取平均。
- 將Error Function的y^,轉換成x,b。
- 多分類的Error Function。
- 目標: 要根據算出來的梯度走相反方向。
- 導入learning rate,讓我們可以控制前進的步伐。
- 隨機選取權重,針對每一個點更新權重,直到error小到一定程度。
- 跟感知器算法很類似。
- 感知器
- 只針對分類錯誤的點,進行調整。
- 讓邊界可以靠近錯誤的點。
- y^ 只能是0,1。
- 只針對分類錯誤的點,進行調整。
- 梯度下降
- 對所有的點,進行調整。
- 讓邊界可以靠近錯誤的點。(希望可以錯得越少越好)
- 讓邊界可以遠離正確的點。(希望可以越正確越好)
- y^ 可以是任何值。
- 對所有的點,進行調整。