吳恩達深度學習筆記1-神經網絡的編程基礎(Basics of Neural Network programming)
一:二分類(Binary Classification)
邏輯回歸是一個用於二分類(binary classification)的算法。在二分類問題中,我們的目標就是習得一個分類器,它以對象的特征向量作為輸入,然後預測輸出結果??為 1 還是 0。
符號定義 :
??:表示一個????維數據,為輸入數據,維度為(????,1);
??:表示輸出結果,取值為(0,1);
(??(??),??(??)):表示第??組數據,可能是訓練數據,也可能是測試數據,此處默認為訓練數
據;
?? = [??(1),??(2),...,??(??)]:表示所有的訓練數據集的輸入值,放在一個 ???? × ??的矩陣中,
?? = [??(1),??(2),...,??(??)]:對應表示所有訓練數據集的輸出值,維度為1 × ??。
二:邏輯回歸(Logistic Regression)
下圖是 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),在代碼中我們會使用????表示這個結果。
梯度下降法的細節化說明(兩個參數)
邏輯回歸的代價函數(成本函數)??(??,??)是含有兩個參數的。
吳恩達深度學習筆記1-神經網絡的編程基礎(Basics of Neural Network programming)