二元分類與 logistic 回歸從屬於筆者的deep learning specialization 課程筆記系列文章,本文主要記述了筆者學習 andrew ng deep learning specialization 系列課程的筆記與**實現。注意,本篇有大量的數學符號與表示式,部分網頁並不支援;可以前往原始檔檢視較好的排版或者在自己的編輯器中開啟。本部分將會介紹神經網格構建與訓練的基礎知識;一般來說,網路的計算過程由正向傳播(forward propagation)與反向傳播(back propagation)兩部分組成。這裡我們將會以簡單的 logistic 回歸為例,講解如何解決常見的二元分類(binary classification)問題。這裡我們將會嘗試訓練出簡單的神經網路以自動識別某個是否為貓,為貓則輸出 1,否則輸出 0。計算機中的往往表示為紅、綠、藍三個通道的畫素值;如果我們的影象是 64 64 畫素值大小,我們的單張的特徵維度即為 64 64 * 3 = 12288,即可以使用 $n_x = 12288$ 來表示特徵向量的維度。
上標 $^$ 表示第 $i$ 個訓練用例,而上標 $^$ 則表示第 $l$ 層。
在深度學習中,使用結點代表輸入、啟用函式或者資料,邊代表權重或者偏差,下圖即是兩個典型的神經網路:
在貓咪識別問題中,我們給定了未知的,可以將其表示為 $x in r^$ 的特徵向量;我們的任務就是尋找合適的演算法,來根據特徵向量推導出該是貓咪的概率。在上面的介紹中我們假設了 logistic 函式的引數為 $w in r^ $ 以及 $b in r$,則輸出的計算公式可以表示為:
$$hat = sigma(w^tx + b)
$$這裡的 $sigma$ 表示 sigmoid 函式,該函式的表示式與線型如下:
上圖中可以發現,當 $t$ 非常大時,$e^$ 趨近於 0,整體的函式值趨近於 1;反之,如果 $t$ 非常小的時候,整體的函式值趨近於 0。
我們的訓練目標是在給定訓練資料 $, y^),...,(x^,y^)}$ 的情況下使得 $hat^$ 盡可能接近 $y^$,而所謂的損失函式即是用於衡量**結果與真實值之間的誤差。最簡單的損失函式定義方式為平方差損失:
$$l(hat,y) = frac (hat - y)^2
$$不過 logistic 回歸中我們並不傾向於使用這樣的損失函式,因為其對於梯度下降並不友好,很多情況下會陷入非凸狀態而只能得到區域性最優解。這裡我們將會使用如下的損失函式:
$$l(hat,y) = -(yloghat + (1-y)log(1-hat))
$$我們的優化目標是希望損失函式值越小越好,這裡我們考慮兩個極端情況,當 $y = 1$ 時,損失函式值為 $-loghat$;此時如果 $hat = 1$,則損失函式為 0。反之如果 $hat = 0$,則損失函式值趨近於無窮大。當 $y = 0$ 時,損失函式值為 $-log(1-hat)$;如果 $hat = 1$,則損失函式值也變得無窮大。這樣我們可以將 logistic 回歸中總的代價函式定義為:
$$j(w,b) =
fracsum_^ml(hat^ - y^) =
-frac sum_^m [y^loghat^ + (1-y^)log(1-hat^)]
$$在深度學習的模型訓練中我們常常會接觸到損失函式(loss function)與代價函式(cost function)的概念,其中損失函式代指單個訓練用例的錯誤程度,而代價函式往往是整個訓練集中所有訓練用例的損失函式值的平均。
logistic分類(logistic回歸 LR)
幾乎所有的教材都是從logistic分類開始的,因為logistic分類實在太經典,而且是神經網路的基本組成部分,每個神經元 cell 都可以看做是進行了一次logistic分類。所謂logistic分類,顧名思義,邏輯分類,是一種二分類法,能將資料分成0和1兩類。logistic分類的流程比較簡單...
Softmax 回歸 vs k 個二元分類器
如果你在開發乙個 分類的應用,需要對k種型別的 進行識別,那麼是選擇使用 softmax 分類器呢,還是使用 logistic 回歸演算法建立 k 個獨立的二元分類器呢?如果你的四個類別如下 人聲 舞曲 影視原聲 流行歌曲,那麼這些類別之間並不是互斥的。例如 一首歌曲可以 於影視原聲,同時也包含人聲...
Logistic回歸,多類分類
1對其他 one vs rest,ovr 對每個類別c,訓練乙個logistic回歸分類器 對新的輸入x,選擇使得 多項分布 在概率分布中,貝努利 bernoulli 分布的輸出只有兩種取值。multinoulli分布,或稱為範疇分布 categorical distribution 輸出有k種取值...