1. 程式人生 > >2.2 這裡有一份logistic迴歸教程,請查收

2.2 這裡有一份logistic迴歸教程,請查收

歡迎分享本文,轉載請保留出處

點選關注,獲取最新AI乾貨吐舌頭

本節課,我們講講logistic迴歸。

這是一個學習演算法,用在監督學習問題中。

輸出y標籤是0或1時,這是一個二元分類問題。

已知的輸入特徵向量x可能是一張圖。你希望把識別出,這是不是貓圖。你需要一個演算法,可以給出一個預測值。我們說預測值y帽,就是你對y的預測。更正式的說,你希望y帽是一個概率。

當輸入特徵x滿足條件時,y就是1。所以換句話說,如果x是圖片你希望y帽能告訴你,這是一張貓圖的概率,所以x是一個n_x維向量。

已知logistic迴歸的引數是w,也是一個n_x維向量。而b就是一個實數。

所以已知輸入x和引數w和b,我們如何計算輸出預測y帽?

你可以這麼試試,但其實不靠譜,就是y^=w^Tx+b,輸入x的線性函式。

事實上,如果你做線性迴歸,就是這麼計算的。

但這不是一個非常好的二元分類演算法。

因為你希望y^是y=1的概率,所以y^應該介於0和1之間。

但實際上這很難實現。因為w^Tx+b可能比1大很多,或者甚至是負值。這樣的概率是沒有意義的。

你希望概率介於0和1之間,所以在logistic迴歸中,我們輸出變成,y^等於sigmoid函式作用到這個量上,這就是sigmoid函式的影象。橫軸是z,那麼sigmoid(z)就是從0到1的光滑函式。

如下圖所示:

我們用z來表示w^Tx+b,sigmoid(z)其中z是實數。如果z非常大,那麼e^-z就很接近0,那麼sigmoid(z)就是大約等於1/(1+某個很接近0的量)。因為e^-z在z很大時就很接近0。

事實上,z很大時,sigmoid(z)就很接近1。

相反,如果z很小,或者是非常大的負數,那麼sigmoid(z)就變成1/(1+e^-2),就會變成很大的數字。

當你看到z變成非常大的負值時。sigmoid(z)就很接近0。

所以,當你實現logistic迴歸時,你要做的是學習引數w和b,所以y^就變成了比較好的估計,對y=1概率的比較好的估計。

當我們對神經網路程式設計時,我們通常會把w和引數b分開。這裡b對應一個攔截器。

在一些符號約定中,你定義一個額外的特徵向量,叫x_0=0

在這另一種符號約定中,你有一個向量引數θ_0、θ_1還有θ_2,一直到θ_nx

所以,θ_0扮演的b的角色,是一個實數。而θ_1直到θ_nx的作用和w一樣。

事實上,當你實現你的神經網路時,將b和w看做獨立的引數可能更好