深度學習筆記(3):啟動函數、損失函數、梯度下降、特徵處理、資料集、批次與週期

神經網路如果沒有使用Activation Function,其上層之神經層輸出是張量的點積運算,其建立的函數都是一種線性函數,只能處理線性問題

Activation Function是一種非線性函數,打破線性關係,可以處理非線性問題。

常用的函數如下:

隱藏層:ReLU
輸出層:Sigmoid(二元分類)、Tanh(二元分類)、Softmax(多元分類)

Sigmoid函數

import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
return 1/(1+(np.e**(-x)))
x = np.arange(-6, 6, 0.1)plt.plot(x, sigmoid(x))
plt.show()

由於Sigmoid函數在微分最大值只有1/4,只需再多幾次的值相乘,就會很接近0,所以無法反向傳播至整個神經網路,只能傳遞淺淺幾層。此問題稱為「梯度消失」。為了避免此問題造成無法訓練,多採用Sigmoid作為輸出層

ReLU函數

函數小於0時,輸出0;大於0時則為線性函數,輸出值等於輸入值

公式:f(x)=max(0,x)

def relu(x):
return np.maximum(0, x)
x = np.arange(-6, 6, 0.1)
plt.plot(x ,relu(x))
plt.title('relu')
plt.show()

Tanh函數

輸出範圍介於-1~1之間,更容易處理負值(Sigmoid和ReLU函數都沒有負值)

f(x) = sinh(x)/cosh(x)

def tanh(x):
return np.tanh(x) #等同於return np.sinh(x)/np.cosh(x)
x = np.arange(-6, 6, 0.1)
plt.plot(x, tanh(x))
plt.title('tanh')
plt.show()

Softmax函數

將輸入值轉換成0~1之間的實數

def softmax(x):
return np.exp(x)/sum(np.exp(x))
x = np.array([1, 2, 3, 4, 1, 2, 3])y = softmax(x)
print(y)
#[1, 2, 3, 4, 1, 2, 3]變成以下數值:
[0.02364054 0.06426166 0.1746813 0.474833 0.02364054 0.06426166
0.1746813 ]

損失函數

評估預測值與真實值間的差異,非負實數。
迴歸問題用均方誤差;分類問題用交叉熵

均方誤差(Mean Square Error)

def MSE(y, t):
return 0.5*np.sum((y-t)**2)

交叉熵(Cross-Entropy)

熵用來測量混亂程度。數值表示混亂度低;數值表示混亂度高

資訊確定混亂度低,資訊不確定混亂度高

梯度下降

找到一個相對最佳解(局部最佳),不一定能夠找到全域最佳。學習率為梯度下降時的重要參數。

學習率小,較花費步數與時間;學習率大,可能錯過全域最小值

特徵處理

正規化:資料縮放置0~1之間(無極端值)

Xnorm = XXmin / XmaxXmin

標準化:資料平均值0、標準差1(有極端值)

X_zscore = X  —  平均值 / 標準差

Training dataset, Validation dataset, Testing dataset

Training dataset: 用來訓練神經網路
Validation dataset: 評估訓練好的模型
Testing dataset: 評估最終狀態,只會使用一次

Batches, Batch Size, Epochs, Iterations

Bathes: 將訓練資料切成較小單位的批次。
Batch Size: 每一個批次的樣本數。
Epochs: 整個資料集從前向傳播至反向傳播通過整個神經網路「」次,稱為一個「訓練週期」。
Iterations: 需要多少批次來完成一個Epoch。例如:樣本數有2000筆,批次尺寸500,需要4次Iterations來完成一個訓練週期。

Written by

Machine Learning / Deep Learning / Python / Flutter cakeresume.com/yanwei-liu

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store