一:二分類(Binary Classification)算法
邏輯迴歸是一個用於二分類(binary classification)的算法。在二分類問題中,咱們的目標就是習得一個分類器,它以對象的特徵向量做爲輸入,而後預測輸出結果𝑧爲 1 仍是 0。編程
符號定義 :網絡
𝑥:表示一個𝑛𝑥維數據,爲輸入數據,維度爲(𝑛𝑥,1); 機器學習
𝑦:表示輸出結果,取值爲(0,1); 函數
(𝑥(𝑖),𝑦(𝑖)):表示第𝑖組數據,多是訓練數據,也多是測試數據,此處默認爲訓練數
據;學習
𝑋 = [𝑥(1),𝑥(2),...,𝑥(𝑚)]:表示全部的訓練數據集的輸入值,放在一個 𝑛𝑥 × 𝑚的矩陣中,
其中𝑚表示樣本數目; 測試
𝑌 = [𝑦(1),𝑦(2),...,𝑦(𝑚)]:對應表示全部訓練數據集的輸出值,維度爲1 × 𝑚。 優化
二:邏輯迴歸(Logistic Regression) 3d
下圖是 sigmoid 函數的圖像,若是我把水平軸做爲𝑧軸,那麼關於𝑧的 sigmoid 函數是這樣的,它是平滑地從 0 走向 1,讓我在這裏標記縱軸,這是 0,曲線與縱軸相交的截距是 0.5,這就是關於𝑧的 sigmoid 函數的圖像。咱們一般都使用𝑧來表示𝑤𝑇𝑥 + 𝑏的值。對象
關於 sigmoid函數的公式是這樣的,
當你實現邏輯迴歸時,你的工做就是去讓機器學習參數𝑤以及𝑏這樣才使得𝑦 ^成爲對𝑦 = 1這一狀況的機率的一個很好的估計。在符號上要注意的一點是當咱們對神經網絡進行編程時常常會讓參數𝑤和參數𝑏分開,在這裏參數𝑏對應的是一種偏置。
爲了訓練邏輯迴歸模型的參數參數𝑤和參數𝑏咱們,須要一個代價函數,經過訓練代價函數來獲得參數𝑤和參數𝑏。先看一下邏輯迴歸的輸出函數:
爲了讓模型經過學習調整參數,你須要給予一個𝑚樣本的訓練集,這會讓你在訓練集上找到參數𝑤和參數𝑏,,來獲得你的輸出。對訓練集的預測值,咱們將它寫成𝑦 ^,咱們更但願它會接近於訓練集中的𝑦值。
下面介紹損失函數,損失函數又叫作偏差函數,用來衡量算法的運行狀況,Loss function:𝐿(𝑦 ^,𝑦).
咱們經過這個𝐿稱爲的損失函數,來衡量預測輸出值和實際值有多接近。通常咱們用預
測值和實際值的平方差或者它們平方差的一半,可是一般在邏輯迴歸中咱們不這麼作,由於
當咱們在學習邏輯迴歸參數的時候,會發現咱們的優化目標不是凸優化,只能找到多個局部
最優值,梯度降低法極可能找不到全局最優值,雖然平方差是一個不錯的損失函數,可是我
們在邏輯迴歸模型中會定義另一個損失函數。咱們在邏輯迴歸中用到的損失函數是:
當𝑦 = 1時損失函數𝐿 = −log(𝑦 ^),若是想要損失函數𝐿儘量得小,那麼𝑦 ^就要儘量大,
由於 sigmoid 函數取值[0,1],因此𝑦 ^會無限接近於 1。
當𝑦 = 0時損失函數𝐿 = −log(1 − 𝑦 ^),若是想要損失函數𝐿儘量得小,那麼𝑦 ^就要儘可
能小,由於 sigmoid 函數取值[0,1],因此𝑦 ^會無限接近於 0。
在這門課中有不少的函數效果和如今這個相似,就是若是𝑦等於 1,咱們就儘量讓𝑦 ^變
大,若是𝑦等於 0,咱們就儘量讓 𝑦 ^ 變小。 損失函數是在單個訓練樣本中定義的,它衡
量的是算法在單個訓練樣本中表現如何,爲了衡量算法在所有訓練樣本上的表現如何,咱們
須要定義一個算法的代價函數,算法的代價函數是對𝑚個樣本的損失函數求和而後除以𝑚:
損失函數只適用於像這樣的單個訓練樣本,而代價函數是參數的總代價,因此在訓練邏
輯迴歸模型時候,咱們須要找到合適的𝑤和𝑏,來讓代價函數 𝐽 的總代價降到最低。 根據我
們對邏輯迴歸算法的推導及對單個樣本的損失函數的推導和針對算法所選用參數的總代價
函數的推導,結果代表邏輯迴歸能夠看作是一個很是小的神經網絡。
三:梯度降低法(Gradient Descent)
梯度降低法能夠作什麼?
在你測試集上,經過最小化代價函數(成本函數)𝐽(𝑤,𝑏)來訓練的參數𝑤和𝑏,
在上圖中,橫軸表示空間參數𝑤和𝑏,在實踐中,𝑤能夠是更高的維度,可是爲了
更好地繪圖,咱們定義𝑤和𝑏,都是單一實數,代價函數(成本函數)𝐽(𝑤,𝑏)是在水平軸𝑤和
𝑏上的曲面,所以曲面的高度就是𝐽(𝑤,𝑏)在某一點的函數值。咱們所作的就是找到使得代價
函數(成本函數)𝐽(𝑤,𝑏)函數值是最小值,對應的參數𝑤和𝑏。
假定代價函數(成本函數) 𝐽(𝑤) 只有一個參數𝑤,即用一維曲線代替多維曲線,這樣可
以更好畫出圖像。
迭代就是不斷重複作如圖的公式:
:=表示更新參數,
𝑎 表示學習率(learning rate),用來控制步長(step),即向下走一步的長度 𝑑𝐽(𝑤) 𝑑𝑤
就是函數𝐽(𝑤)對𝑤 求導(derivative),在代碼中咱們會使用𝑑𝑤表示這個結果。
梯度降低法的細節化說明(兩個參數)
邏輯迴歸的代價函數(成本函數)𝐽(𝑤,𝑏)是含有兩個參數的。