感知機相關知識

感知機

  • 給定輸入x, 權重w, 偏移b, 感知機輸出:
\[o=\sigma(<w,x>+b){\quad \quad} \sigma(x)=\begin{cases} 1& \text{if x>0}\\ 1& \text{others} \end{cases}
\]

相當於給所有樣本點畫一條線,將不同類別儘可能劃分開,是一個二分類問題

  • 二分類:-1或1
    • 線性回歸輸出一個實數,感知機輸出離散的兩個值
    • softmax可以輸出多分類,感知機只能做二分類

訓練感知機

  • 訓練偽代碼
    \(\quad\)initialize \(w=0\) and \(b=0\)
    \(\quad\)\(\quad\)repeat:
    \(\quad\)\(\quad\)\(\quad\)if \(y_i[<w,x_i>+b]\leq0\) then //異號說明預測錯誤
    \(\quad\)\(\quad\)\(\quad\)\(\quad\)\(w\leftarrow w+y_ix_i\) and \(b\leftarrow b+y_i\)
    \(\quad\)\(\quad\)end if
    \(\quad\)until all classified correctly

  • 等價於使用批量大小為1的梯度下降,並使用如下損失函數

\[\zeta(y,x,w)=max(0,-y<w,x>)
\]

如果上述Loss是一個0,說明\(y<w,x>\)大於零,預測正確,損失為0;反之則預測錯誤,返回損失。

收斂定理

  • 假設
    • 數據在半徑\(r\)內,相當於數據量大小。
    • 餘量\(\rho\)分類兩類 \(\quad \quad y(x^Tw+b)\geq\rho\)
      對於\({||x||}^2+b^2\leq 1\)
    • 感知機保證在\(\frac{r^2+1}{{\rho}^2}\)步後收斂。

多層感知機

XOR問題

  • 單層的感知機只能對數據做一個線性分割(類似於切一刀),因此對於異或這類問題無法被感知機擬合,這個問題造成了第一次AI寒冬。

多層感知機

  • 一層的感知機模型無法擬合XOR問題,但如果增加感知機層數,就可以擬合異或問題了,比如:

    • A感知機對於x軸做切分:等於0返回1,等於1返回-1
    • B感知機對於y軸做切分:等於1返回1,等於0返回-1
    • 結果為兩個感知機輸出的乘積(0,0)返回-1;(0,1)返回1,(1,0)返回1;(1,1)返回0.
      上述兩個感知機模型便可以解決異或的問題,相當於在數據集上切了兩刀。
  • 一個多層感知機由輸入層、隱藏層(hidden)、輸出層構成,輸入輸出層的大小由具體問題的輸入輸出類別決定,隱藏層大小由我們自定義,是一個超參數。

單隱藏層

  • 輸入\(x\in R^n\)
  • 隱藏層\(W_1\in R^{m\times n}\),\(b_1\in R^m\)
  • 輸出層\(w_2\in R^m\),\(b_2\in R\)
\[h = \sigma({W_1x+b_1})
\]

\[o=w_2^Th+b_2
\]

\(\sigma\)是按元素的激活函數。

為什麼要激活函數(非線性)?

  • 如果激活函數還是線性的話,我們的多層感知機模型只能擬合一個線性的問題,如果引入一個非線性的激活函數,可以使我們的模型增加一些非線性的特點,能夠更好的擬合現實世界中的各種問題。

Sigmoid激活函數

\[sigmoid(x)=\frac{1}{1+exp(-x)}
\]

它將輸入投影到(0,1)區間。是一個軟的\(\sigma(x)=\begin{cases} 1& \text{if x>0}\\ 1& \text{others} \end{cases}\)

  • 優勢:更好求導。

Tanh激活函數

\[tanh(x)=\frac{1-exp(-2x)}{1+exp(-2x)}
\]

它將輸入投影到(-1,1)區間。相當於Sigmoid的放縮平移。

ReLU激活函數

\[ReLU(x)=max(x,0)
\]

  • 求導更簡單,無指數運算,避免梯度消失

多類分類

  • 輸入\(x\in R^n\)
  • 隱藏層\(W_1\in R^{m\times n}\),\(b_1\in R^m\)
  • 輸出層\(W_2\in R^{m\times k}\),\(b_2\in R^k\)
\[h = \sigma({W_1x+b_1})
\]

\[o=W_2^Th+b_2
\]

\[y=softmax(o)
\]

多隱藏層

\[h_1 = \sigma({W_1x+b_1})
\]

\[h_2 = \sigma({W_2x+b_2})
\]

\[h_3 = \sigma({W_3x+b_3})
\]

\[o = W_4h_3+b_4
\]

  • 超參數
    • 隱藏層數
    • 每層隱藏層大小
      一般來說,將第一層設置的較大一點,之後隨着層數慢慢減少。

總結

  • 多層感知機使用隱藏層和激活函數來得到一個非線性的模型
  • 常用激活函數:Sigmoid,Tanh,ReLU
  • 使用softmax來處理多分類
  • 超參數為隱藏層層數,和各個隱藏層的大小。

——————覺得有用給筆者點個贊呀o( ̄︶ ̄)o