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看做獨立的引數可能更好