【机器学习】 - 激活函数与交叉熵Sigmoid, Softmax, binary_crossentropy, categorican_crossentropy区别
?
Content:
- Sigmoid
- Softmax
4. 交叉熵損失函數(shù)
- Binary cross-entropy
- Categorican cross-entropy
為什么需要激活函數(shù):
Ans: 為了引入非線性變換。
如下圖所示的紅線和藍線,在這個二維空間中,我們不能用一條線完整的將這兩個區(qū)域分割開。但如果我們將這個二維空間扭曲變換,那么在高維空間中,就可以用一條線完整的分割出紅色和藍色區(qū)域。(這也就是打破線性變換的局限性,通過非線性變換在高維空間解決分類問題,也是神經(jīng)網(wǎng)絡(luò)要做的事情)
Fig 1. A neural network can distort the input space to make the classes of data (blue and red regions) linearly separable [1].
Fig.2. The hidden layer learns a representation so that the data is linearly separable [1]
一個基本的神經(jīng)元在做什么:
y:神經(jīng)元的輸出;
W*x: 就像我之前說的,神經(jīng)網(wǎng)絡(luò)目的就是將低維空間映射到高維空間從而實現(xiàn)線性可分。所以這一項的目的就是空間變換(實現(xiàn)升維或者降維, 空間的放大或者縮小, 旋轉(zhuǎn))的目的;
b: bias, 實現(xiàn)空間平移的目的;
a: 空間的彎曲;
基本神經(jīng)元各個部分的解釋
激活函數(shù):
sigmoid, softmax主要用于神經(jīng)網(wǎng)絡(luò)輸出層的輸出。
總結(jié):激活函數(shù)給神經(jīng)元引入了非線性因素,使得神經(jīng)網(wǎng)絡(luò)可以任意逼近任何非線性函數(shù),這樣神經(jīng)網(wǎng)絡(luò)就可以應(yīng)用到眾多的非線性模型中。
1. Sigmoid
Sigmoid 將一個實數(shù)映射到 (0,1) 的區(qū)間,可以用來做二分類。Sigmoid 在特征相差比較復(fù)雜或是相差不是特別大時效果比較好。Sigmoid不適合用在神經(jīng)網(wǎng)絡(luò)的中間層,因為對于深層網(wǎng)絡(luò),sigmoid 函數(shù)反向傳播時,很容易就會出現(xiàn)梯度消失的情況(在 sigmoid 接近飽和區(qū)時,變換太緩慢,導(dǎo)數(shù)趨于 0,這種情況會造成信息丟失),從而無法完成深層網(wǎng)絡(luò)的訓(xùn)練。所以Sigmoid主要用于對神經(jīng)網(wǎng)絡(luò)輸出層的激活。
2. Softmax
可以看作是Sigmoid的一般情況,用于多分類問題。
Softmax函數(shù)將K維的實數(shù)向量壓縮(映射)成另一個K維的實數(shù)向量,其中向量中的每個元素取值都介于 (0,1) 之間。常用于多分類問題。
?
交叉熵損失函數(shù):
交叉熵可在神經(jīng)網(wǎng)絡(luò)(機器學(xué)習(xí))中作為損失函數(shù)。 如下公式所示:y表示真實標記的分布,a則為訓(xùn)練后的模型的預(yù)測標記分布,交叉熵損失函數(shù)可以衡量y與a的相似性。交叉熵作為損失函數(shù)還有一個好處是使用sigmoid函數(shù)在梯度下降時能避免均方誤差損失函數(shù)學(xué)習(xí)速率降低的問題,因為學(xué)習(xí)速率可以被輸出的誤差所控制。
常用于二分類問題,當然也可以用于多分類問題,通常需要在網(wǎng)絡(luò)的最后一層添加sigmoid進行配合使用,其期望輸出值(target)需要進行one hot編碼,另外BCELoss還可以用于多分類問題Multi-label classification.
定義:For brevity, let x = output, z = target. The binary cross entropy loss is
loss(x, z) = - sum_i (x[i] * log(z[i]) + (1 - x[i]) * log(1 - z[i]))
對應(yīng)的代碼為:
def binary_crossentropy(t,o):return -(t*tf.log(o+eps) + (1.0-t)*tf.log(1.0-o+eps))2. Categorical cross-entropy
p are the predictions, t are the targets, i denotes the data point and j denotes the class.適用于多分類問題,并使用softmax作為輸出層的激活函數(shù)的情況。
This is the loss function of choice for multi-class classification problems and softmax output units. For hard targets, i.e., targets that assign all of the probability to a single class per data point, providing a vector of int for the targets is usually slightly more efficient than providing a matrix with a single 1.0 per row.
References:
[1] Neural Networks, Manifolds, and Topology
?
鏈接:https://www.zhihu.com/question/36307214/answer/364963552
貼幾個不錯的鏈接:
?用sigmoid作為激活函數(shù),為什么往往損失函數(shù)選用binary_crossentropy 而不用mse
各大損失函數(shù)的定義:MSE,MAE,MAPE,hinge,squad_hinge,binary_crossentropy等?
【機器學(xué)習(xí)】 - 關(guān)于合適用均方誤差(MSE)何時用交叉熵(cross-entropy)
https://www.cnblogs.com/lijie-blog/p/10166002.html
?
?
sigmoid和softmax是神經(jīng)網(wǎng)絡(luò)輸出層使用的激活函數(shù),分別用于兩類判別和多類判別。
binary cross-entropy和categorical cross-entropy是相對應(yīng)的損失函數(shù)。
對應(yīng)的激活函數(shù)和損失函數(shù)相匹配,可以使得error propagation的時候,每個輸出神經(jīng)元的“誤差”(損失函數(shù)對輸入的導(dǎo)數(shù))恰等于其輸出與ground truth之差。
(詳見Pattern Recognition and Machine Learning一書5.3章)
鏈接:https://www.zhihu.com/question/36307214/answer/66899792
總結(jié)
以上是生活随笔為你收集整理的【机器学习】 - 激活函数与交叉熵Sigmoid, Softmax, binary_crossentropy, categorican_crossentropy区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 更新错误1062_mysql
- 下一篇: 【LeetCode 2】两数相加(链表)