1. 交叉熵能干什么
在機器學習里面谷婆,解決多分類的問題(比如識別手寫字符)漠烧,一般會用one-hot的向量去表示分類的結(jié)果柴我。如下圖所示挪略,表示 0-9 十個類中一個類的 one-hot 向量历帚。
假設實際圖像上是數(shù)字 “1”,它的 one-hot 向量是 [0,1,0,0,0,0,0,0,0,0]杠娱,假設其預測向量 (y) [1.3, 33, 2, 1.2, 3.2, 0.5, 3, 9.2, 1]挽牢,繪制比較如下:
對于網(wǎng)絡產(chǎn)生的預測的輸出和真實的輸出,要計算一個cost摊求,作為評價網(wǎng)絡模型好壞的cost禽拔。這個時候,就是發(fā)揮交叉熵作用的時候了室叉。
2.什么是交叉熵
為了利用交叉熵睹栖,我們需要將 預測向量 y= [1.3, 10, 2, 1.2, 3.2, 0.5, 3, 9.2, 1] 轉(zhuǎn)換成概率分布,概率分布需要滿足如下條件 :
- 每個類的概率/分數(shù)值在 0-1 之間茧痕;
- 所以類的概率/分數(shù)和必須是 1野来;
寫一段代碼,實現(xiàn)一下softmax(注意softmax并不是交叉熵踪旷!)曼氛。將 預測向量y= [1.3, 10, 2, 1.2, 3.2, 0.5, 3, 9.2, 1] 轉(zhuǎn)換成概率分布豁辉。
import math
import matplotlib.pyplot as plt
def softmax(y):
res=[]
for i in y:
res.append(math.exp(i))
res_sum=sum(res)
softmax_res = [ i/float(res_sum) for i in res]
return softmax_res
if __name__ =="__main__":
y = [1.3, 10, 2, 1.2, 3.2, 0.5, 3, 9.2, 1]
res=softmax(y)
plt.plot(res)
plt.show()
概括一下,什么是softmax舀患?
softmax是一個針對多類分類徽级,輸出的是每一個分類的概率。
重點來了聊浅,到了交叉熵的部分啦
最后一步餐抢,就求解交叉熵:
寫一個代碼,實現(xiàn)計算一下交叉熵低匙。
計算一下 y_true = [0,1,0,0,0,0,0,0,0] 旷痕, y = [1.3, 10, 2, 1.2, 3.2, 0.5, 3, 9.2, 1]的交叉熵。
import math
import matplotlib.pyplot as plt
def softmax(y):
res=[]
for i in y:
res.append(math.exp(i))
res_sum=sum(res)
softmax_res = [ i/float(res_sum) for i in res]
return softmax_res
#tf里面有這個函數(shù)顽冶,可以很方便的計算交叉熵 tf.nn.softmax_cross_entropy_with_logits(labels=y_true, logits=y)
def cross_entroy(y_true,y):
softmax_res = softmax(y)
log_res = list(map(math.log,softmax_res))
cross_entroy =0.0
for i,j in zip(y_true,log_res):
cross_entroy=cross_entroy + i * j
return -cross_entroy
if __name__ =="__main__":
y_true = [0,1,0,0,0,0,0,0,0]
y = [1.3, 10, 2, 1.2, 3.2, 0.5, 3, 9.2, 1]
print (cross_entroy(y_true,y)) # 0.3730835485063131
tensorflow里面也有計算交叉熵的
import tensorflow as tf
y_true = [0,1,0,0,0,0,0,0,0]
y = [1.3, 10, 2, 1.2, 3.2, 0.5, 3, 9.2, 1]
sess = tf.Session()
print (sess.run(tf.nn.softmax_cross_entropy_with_logits(labels=y_true, logits=y)))
# 0.373083
so , 小結(jié)一下
- 交叉熵在機器學習里面是用來計算多分類問題的cost
- softmax是計算交叉熵的一個步驟苦蒿,和交叉熵是區(qū)別的
- softmax是將一個向量轉(zhuǎn)換成它的概率分布