1. 程式人生 > >人工智慧入門1.交叉熵 - loss函式在Tensorflow中的定義

人工智慧入門1.交叉熵 - loss函式在Tensorflow中的定義

1.交叉熵

要懂得交叉熵,先要懂得資訊量

資訊量的定義

夏農(C. E. Shannon)資訊理論應用概率來描述不確定性。資訊是用不確定性的量度定義的.一個訊息的可能性愈小,其資訊愈多;而訊息的可能性愈大,則其資訊愈少.事件出現的概率小,不確定性越多,資訊量就大,反之則少。

其中

標識x0 事件出現的概率。

 

通俗的講,資訊量,就是某個事件能給你帶來多大的震撼,越震撼資訊量就越大。我們來舉個例子

拋硬幣是人們經常用來舉例的,假設

x1 表示硬幣正面 x2表示硬幣反面,另外x3表示硬幣豎起來。(x3事件我們現在只是用來舉例不必深究)

則這個三者的概率(p)

p(x1) 0.49995

p(x2) 0.49995

p(x3) 0.0001

 

則這個三個事件能帶給我們的資訊量(I)是多少呢?

I(x1) = -log(0.49995) = 1.000144277

I(x2) = -log(0.49995) = 1.000144277

I(x3) = -log(0.0001) = 13.28771238

這邊的log是

所以你拋一枚硬幣,如果它立起來了,你會說臥槽---表示資訊量很大。 實際上x3 的概率還會更小,我這邊只是為了舉例子。

 

熵的定義

n表示幾個可能的概率事件。

這個熵,怎麼理解能,我們如果不求和,單個的看就是概率和資訊量的乘積。把所有的事件的這個乘積加起來就是熵。

定義是這樣定義的,但是怎麼理解,就看個人的理解了。

我們計算下上面拋硬幣的熵:

0.49995*1.000144277 + 0.49995*1.000144277 + 0.0001*13.28771238 = 1.001373034

 

相對熵的定義

再提出相對熵之前我們先講一個出老千的例子:比如還是上述拋硬幣,我和另外一個同學A再用這個拋硬幣來賭博,如果正面朝上我贏,如果反面朝上同學A贏,如果立起來誰也不算贏。但是啊,上面我們算過了p(x1) 的概率 是0.49995 ,但是有一天,同學A出老千,使用磁鐵等不正規手段,把p(x1) 正面的概率降低到了0.33333以下,我們記q(x1) = 0.33333 導致我輸了很多錢。

那麼,這邊x1 正面朝上的概率,相對兩個場景就有了兩個不同的概率分佈。我們如何去描述這兩個場景資訊差異。就是用相對熵。

 

我們看相對熵D,如果p 場景下的概率和q場景下的概率都是一樣的,意思是q場景下我的同學沒有出老千,那麼p和q的比例就是1。那麼

就等於0,那麼相對熵就是為零。就是表示這兩個場景的資訊沒有差異。

 

將D進行變換一下,

 

那麼好了,由於p場景下x事件是恆定已知的,因為沒有人做手腳。所有H函式是確定的,不確定的就是後面的部分。

 

我們定義H(p,q)叫做交叉熵。

2.loss函式在Tensorflow中的定義

loss = tf.reduce_mean(tf.square(y - y_))

cross = -tf.reduce_sum(y_ * tf.log(y + 1e-10))

 

在Tensorflow中常常有,以上兩種定義loss函式。

第一個是均方差第二個就是交叉熵。

 

為什麼使用交叉熵,理論上我沒有去證明,大概想一想。

在梯度求極限的情況下,使用均方差是比較好的

但是如果是資訊分類,大多反應的是各種場景的資訊量,所有估計交叉熵會好。實踐表明就是如此。

 

學的比較淺,有錯誤的地方歡迎批評指正。

相關文章《人工智慧入門2.線性迴歸-理解TensorFlow中wb引數的含義》

更多文章關注https://www.shennongblog.com