神經元
hW,b(x)=f(WTx)=f(i=1∑3wixi+b)
- W 表示權重, 是一個向量
- w 表示 W中的元素
- x 表示特徵
- f() 表示激活函數
- b 是偏置, (如果沒有b, 那麼分類線或者分類面都必須經過原點), b 可以看作 W 中的 w0, 與圖中的 +1 相乘
二分類
把激活函數應用到神經元上, 就可以得到一個二分類邏輯斯蒂迴歸模型
如果激活函數是 sigmoid, 即f(x)=1+e−x1, 則
hW(x)=f(WTx)=1+e−WTx1
P(Y=0∣x)=hW(x)=1+e−WTx1P(Y=1∣x)=1−hW(x)=1+e−WTxe−WTx
這兩個式子可以看做是 1 和 e−WTx 做歸一化,
那麼多分類就是 1, e−W1Tx, e−W2Tx … e−WkTx 做歸一化
多分類
再加一個神經元, 就可以做三分類(兩個神經元各一類, 1減去兩類爲第三類)
也就是把 W 從向量擴展爲矩陣, Wn表示矩陣中的第n個向量,
輸出 W∗x 則變爲向量
如果分爲 K 類
P(Y=k∣x)=1+∑1k−1e−WkTxe−WkTxk=1,2,...K−1P(Y=k∣x)=1+∑1k−1e−WkTx1k=K
舉例:
X=[3,1,2]
W=[[0.4,0.6,0.5],[0.3,0.2,0.1]]
W∗X 得 Y=[y0,y1]=[2.8,1.3]
e−Y=[e−2.8,e−1.3]=[0.006,0.27]
Sum=1+0.06+0.27=1.33
則
P(Y=0∣x)=0.06/1.33=0.045
P(Y=1∣x)=0.27/1.33=0.203
P(Y=2∣x)=1.00/1.33=0.752
目標函數
平方差損失
n1x,y∑21(y−Model(x))2
- 21 是爲了求導方便
- y 需要做 one hot 編碼
交叉熵損失
n1x,y∑yln(Model(x))
梯度下降
xt+1=xt−α▽f(xt)
- ▽f(x) 對 x 求偏導
- α 學習率
動量梯度下降
vt+1=ρvt+▽f(xt)xt+1=xt−αvt+1
- vt 爲之前梯度的積累值
- vt+1 爲之前梯度的積累值加上當前梯度的新的積累值
- 由於梯度是矢量, 所以他們的加法包括大小和方向
- 訓練開始時, 動量積累得快, 可以加速訓練
- 在局部極值附加震盪時, 可以藉助動量跳出來
- 如果梯度方向發生變化, 動量能夠緩解震盪