1. 程式人生 > >1.2.2 神經網路是如何進行預測的?

1.2.2 神經網路是如何進行預測的?

總目錄(新手請點選總目錄從序言看起,否則你可能看不懂本篇文章)

上一篇文章介紹瞭如何將待預測資料輸入到神經網路中。那麼,神經網路是如何給出預測結果的呢?我們輸入一個圖片,神經網路是如何預測這是個有貓的圖片還是沒有貓的圖片呢?

本篇文章給大家介紹一種用於預測的演算法——邏輯迴歸(logistic regression)。 這裡寫圖片描述 這裡寫圖片描述 看到上面的公式,不少同學可能被嚇得小雞雞都萎縮了一截。不用怕,看完我下面的解說後,你就會覺得其實它們的原理很簡單。就像玻璃棧道一樣,只是看起來可怕而已。 這裡寫圖片描述 給定一個輸入特徵向量x(例如你想要識別的影象——是否有貓),你需要一個能輸出預測結果的演算法(在這裡我們用的是邏輯迴歸演算法)。這個被輸出的預測結果我們稱為y

^\hat{y},假設y是1,如果預測得很準的話y^\hat{y}可能會是0.99)。

上面第一個公式中的x是個(n,1)維的矩陣,表示一個訓練樣本,裡面的n表示一個訓練樣本中的特徵數量,例如一張圖片就是一個訓練樣本,圖片中每個顏色強度值就是一個特徵;w也是一個(n,1)維的矩陣,它表示權重(weight),它一一對應於每個輸入的特徵,也可以說它指示了某個特徵的重要程度;b是一個實數,在這裡可以將其看作為一個閥值。

如何理解w和b呢?我舉個例子來幫助大家理解。可以把上面的演算法過程看作是一種通過權衡輸入然後再做出決定的一個過程。假設週末即將到來,你聽說在你的城市將會有一個音樂節。你要決定是否去參加這個節日。你需要通過權衡3個因素(3個特徵)來做出決定:1,天氣好嗎? 2,你的女友是否願意陪你去?3,舉辦地點離地鐵近嗎?這3個因素就對應著上圖中的x1、x2,x3(它們是x這個訓練樣本中的3個特徵)。我們可以給它們賦個值,如果天氣好,那麼x1為1,否則為0,x2和x3雷同。假設你很討厭壞天氣,如果天氣不好,你就不會去參加這個節日。對其它兩個因素要求不高(這裡假設你是個老司機,女人多得是,不怕冷落了女友)。那麼我們分別給3個權重賦值為7,2,2。w1的值大很多,這表明天氣對你來說很重要,比你的女友是否願意去,以及交通的便利性更重要。而b我們可以看作一個閥值,假設我們給b賦值為-5,那麼也就是說,只要天氣好,即使女友不陪你去、交通也不方便,你也會去參加這個節日——x1 * w1 + x2 * w2 + x3 * w3 = 1 * 7 + 0 * 2 + 0 * 2 = 7(這裡的*代表乘法)(我們這裡先不考慮σ函式),而7 +(-5)> 0,結果是你會去那個音樂節。如果我們選擇不同的w和b值,那麼對於同一個輸入x,會有不同的結果輸出。例如有些苦逼,非常在意女友的感受,女友不去,他不敢去,那麼w可能就變成了2,7,2。訓練神經網路的目的就是通過訓練過程來得到這些w和b值(後面會教大家如何來訓練得到它們)。這些w和b值可以讓神經網路得到一項判斷能力,一項預測能力——輸入一張圖片,神經網路根據訓練好的w和b,通過上面的公式根據每個畫素的值以及與其對應的權重值以及閾值來判定這張圖裡是否有貓。神經網路就是這樣來進行預測的。它和我們人類的思考方式是一樣的。雖然我們人可以做出非常複雜的判斷,但是基本原理是很簡單的。人為什麼能輕鬆分辨出一個圖片中是否有貓?因為我們人就是一個巨型的神經網路,這個神經網路裡面包含了數億甚至更多的神經元(上圖藍色的圓圈就表示一個神經元),每個神經元都可以接受多個輸入,在日常生活中,小孩子通過大人的教導,不斷的看見貓,我們的神經元對於這個輸入就形成了很多特定的w(權重),所以當再次看見一個貓時,這個輸入(這個貓)與相應的w聯合起來進行運算後,其結果就指示了這個輸入是一個貓。 這裡寫圖片描述

這裡寫圖片描述

下面再來說一下σ,它代表了sigmoid函式,上面是它的定義公式以及圖形。我們為什麼需要它?在上面我們舉的去參加節日的例子中,我們得出的結果為2,其實對於不同的x和w值,結果可能會更大。所以這並不適用於二元分類問題,因為在二元分類問題中你想要得到的y^\hat{y}應該表示一個概率,一個輸入是否等於它真實標籤的概率(例如輸入的影象裡面是否有貓)。所以y^\hat{y}的值應該在0和1之間。sigmoid函式的作用就是把計算結果轉換為0和1之間的值。通過看它的圖形就可以明白,往sigmoid函式裡輸入的值z越大,那麼y^\hat{y}就越靠近1,也就是裡面有貓的概率就越大。