DeepLearningAI 學(xué)習(xí)筆記 1.2 logistic 回歸

1.2 logistic 回歸

視頻:第二周 神經(jīng)網(wǎng)絡(luò)基礎(chǔ)

整理:飛龍

logistic 回歸屬于廣義線性回歸贾铝。所謂廣義線性回歸只恨,就是在線性回歸的模型上加一些東西滤钱,使其適應(yīng)不同的任務(wù)幢踏。

logitic 回歸雖然名字里有回歸,但是它解決的是二元分類問題玻褪。二元分類問題中肉渴,標(biāo)簽只有兩個值。一個典型的二元分類是輸入一張圖片带射,判斷是不是貓同规。

首先來看假設(shè),我們的假設(shè)是這樣的:

$$
P(y=1 | x) = \sigma(\theta^T x)
$$

某個樣本 $(x,y)$ 是正向分類的概率是 $x$ 乘權(quán)重 $\theta$ 再套個 sigmoid 函數(shù),非常簡單券勺。這兩個東西都是列向量绪钥。

sigmoid 函數(shù)用 $\sigma(x)$ 表示,圖像是 S 型的朱灿,值域是 $(0,1)$,正好符合概率的要求钠四。它的導(dǎo)數(shù)用函數(shù)值來表達(dá)更加方便盗扒,$\frac{d\sigma}{dx} = \sigma(1-\sigma)$。

image

注:

我的習(xí)慣是缀去,把 $w$(權(quán)重)和 $b$(偏置)打包在一起侣灶,稱為 $\theta$,因?yàn)檫@樣節(jié)省很多計(jì)算缕碎。而且易于擴(kuò)展褥影,如果你需要偏置項(xiàng),給 $w$ 多加一項(xiàng)咏雌,給 $x$ 添加一個 $1$凡怎,如果不需要,保持原樣即可赊抖。

為了找出最優(yōu)的 $\theta$统倒,像通常一樣,我們需要一個損失函數(shù)氛雪,然后使其最小房匆。

$$
z = \theta^T x \\
a = \sigma(z) \\
l = - y \log(a) - (1-y) \log(1-a)
$$

這個函數(shù)為什么能用,需要解釋一下报亩。當(dāng) $y$ 是 $1$ 的時候浴鸿,$l = -\log(a)$。如果我們要使 $l$ 最小弦追,就是使 $a$ 最大岳链。因?yàn)?sigmoid 函數(shù)最大值為 $1$,所以實(shí)際上劲件,我們使 $a$ 接近 $1$宠页。

當(dāng) $y$ 是 $0$ 的時候,$l = -\log(1-a)$寇仓。同理举户,我們使 $a$ 最小,因?yàn)?sigmoid 函數(shù)最小值為 $0$遍烦,就是使 $a$ 接近 $0$俭嘁。

無論如何,我們都使 $a$ 盡可能接近 $y$服猪。

我們需要一個大的損失函數(shù)供填,衡量模型在所有樣本上的表現(xiàn)拐云。我們用 $x^{(i)}$ 表示第 $i$ 個樣本的特征。

$$
J = - \sum_i(y^{(i)} \log(a^{(i)}) + (1-y^{(i)}) \log(1-a^{(i)}))
$$

然后我們需要求 $J$ 對 $\theta$ 的導(dǎo)數(shù)近她。

$$
\frac{dJ}{da^{(i)}} = \frac{1-y{(i)}}{1-a{(i)}} - \frac{y{(i)}}{a{(i)}} \\
\frac{da{(i)}}{dz{(i)}} = a{(i)}(1-a{(i)})\\
\frac{dz^{(i)}}{d\theta} = x^{(i)} \\
\frac{dJ}{dz^{(i)}} = a^{(i)} - y^{(i)} \\
\frac{dJ}{d\theta} = \sum_i((a^{(i)} - y^{(i)}) x^{(i)})
$$

注:

(1)如果你拆成了 $w$ 和 $b$叉瘩,那么 $\frac{dJ}{db}$ 就是 $\sum_i \frac{dJ}{dz^{(i)}}$,$\frac{dJ}{dw}$ 和 $\frac{dJ}{d\theta}$ 一樣粘捎。

(2)所有導(dǎo)數(shù)以及 $J$ 都需要除以 $n_{data}$薇缅,但為了簡潔我省略了,下同攒磨。

(3)在機(jī)器學(xué)習(xí)(以及數(shù)值計(jì)算)中泳桦,沒有必要區(qū)分導(dǎo)數(shù)和偏導(dǎo)數(shù),導(dǎo)數(shù)可以看出偏導(dǎo)數(shù)的一元特例娩缰。所以這里我都使用了導(dǎo)數(shù)的符號灸撰。

我們可以看到最終的導(dǎo)數(shù)和線性回歸一樣,仍然是損失乘以特征再求和拼坎。

向量化

我的習(xí)慣是浮毯,將 $x^{(i)}$ 按行堆疊變成 $X$,也就是行是樣本泰鸡,列是特征亲轨,和咱們能夠獲得的絕大多數(shù)數(shù)據(jù)集一致。

$$
X = \begin{bmatrix} \vdots \\ - \ x^{(i)} \ - \\ \vdots \end{bmatrix} \\
= \begin{bmatrix} & | & \\ \cdots & x_j & \cdots \\ & | & \end{bmatrix}
$$

由于 $X$ 按行堆疊鸟顺,我們需要把它放在矩陣乘法的左邊惦蚊。這樣出來的 $Z$ 也是按行堆疊的。

$$
Z = X \theta \\
= \begin{bmatrix} \vdots \\ z^{(i)} \\ \vdots \end{bmatrix}
$$

$A$ 相當(dāng)于對 $Z$ 的每個元素應(yīng)用 sigmoid 函數(shù)讯嫂,也是類似的結(jié)構(gòu):

$$
A = \sigma(Z) \\
= \begin{bmatrix} \vdots \\ a^{(i)} \\ \vdots \end{bmatrix}
$$

接下來是損失函數(shù) $J$:

$$
J = - Sum(Y \ast \log(A) + (1 - Y) \ast \log(1 - A))
$$

其中 $\ast$ 表示逐元素相乘蹦锋。

接下來是導(dǎo)數(shù):

$$
\frac{dJ}{dZ} = A - Y
$$

這個還是比較好求的。

$$
\frac{dZ}{d\theta} = X \\
\frac{dJ}{d\theta} = X^T(A - Y)
$$

這里有一個方法欧芽,就是核對矩陣的維數(shù)莉掂。我們已經(jīng)知道 $\frac{dJ}{d\theta}$ 是兩個導(dǎo)數(shù)相乘,并且 $\frac{dJ}{dZ}$ 是n_data x 1的矩陣千扔,$\frac{dZ}{d\theta}$ 是n_data x x_feature的矩陣憎妙,$\frac{dJ}{d\theta}$ 是n_feature x 1的矩陣。根據(jù)矩陣乘法曲楚,它只能是 $X^T(A - Y)$厘唾。

注:

嚴(yán)格來講,向量化的導(dǎo)數(shù)應(yīng)該稱為梯度龙誊。這個筆記中不區(qū)分這兩個術(shù)語抚垃。

梯度下降法

在代數(shù)中,如果我們需要求出一個凸函數(shù)的最值,我們可能會使導(dǎo)數(shù)等于 0鹤树,然后解出方程铣焊。但在機(jī)器學(xué)習(xí)中,我們使用梯度下降法來求凸函數(shù)的最值罕伯。

梯度下降法是曲伊,對于每個自變量 $x$,迭代執(zhí)行以下操作:

$$
x := x - \alpha \frac{dy}{dx}
$$

其中 $\alpha$ 是學(xué)習(xí)率追他,一般選取 0 ~ 1 之間的值坟募。

下面直觀地解釋一下。這是一個一元函數(shù)湿酸,它的形狀是一個碗婿屹,或者山谷灭美。

image

我們可以隨便選一個點(diǎn)作為初始值推溃。你可以選0,也可以選1或者隨機(jī)值届腐。這個無所謂铁坎,因?yàn)楹瘮?shù)是凸的,沿任意路徑下降都會達(dá)到全局最優(yōu)值犁苏。

如果你的初始值在右側(cè)硬萍,那么導(dǎo)數(shù)為正,減去它的一部分相當(dāng)于向左移動了一小步围详。如果你的初始值在左側(cè)朴乖,導(dǎo)數(shù)為負(fù),減去它的一部分相當(dāng)于向右移動了一小步助赞÷蛐撸總之,這樣會使 $x$ 向著全局最優(yōu)的方向移動雹食。

image

多元的凸函數(shù)是這樣。如果你的每個自變量都減去它的導(dǎo)數(shù)(梯度)的一部分,那么所有自變量就相當(dāng)于向著最陡的方向移動了一小步挂捻。如果你在一個山谷中储耐,沿著最陡的方向向下走,就會到達(dá)谷底街立。

代碼

向量化的公式很容易用 NumPy 代碼來表示舶衬。

theta = np.random.rand(n_features, 1)

for _ in range(max_iter):
    Z = np.dot(X, theta)
    A = sigmoid(Z)
    dJ_dZ = (A - Y) / n_data
    dJ_dtheta = np.dot(X.T, dJ_dZ)
    theta -= alpha * dJ_dtheta
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赎离,隨后出現(xiàn)的幾起案子约炎,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件圾浅,死亡現(xiàn)場離奇詭異掠手,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)狸捕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門喷鸽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灸拍,你說我怎么就攤上這事做祝。” “怎么了鸡岗?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵混槐,是天一觀的道長。 經(jīng)常有香客問我轩性,道長声登,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任揣苏,我火速辦了婚禮悯嗓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘卸察。我一直安慰自己脯厨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布坑质。 她就那樣靜靜地躺著合武,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涡扼。 梳的紋絲不亂的頭發(fā)上稼跳,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音壳澳,去河邊找鬼岂贩。 笑死,一個胖子當(dāng)著我的面吹牛巷波,可吹牛的內(nèi)容都是我干的萎津。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼抹镊,長吁一口氣:“原來是場噩夢啊……” “哼锉屈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起垮耳,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤颈渊,失蹤者是張志新(化名)和其女友劉穎遂黍,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體俊嗽,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡雾家,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绍豁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芯咧。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖竹揍,靈堂內(nèi)的尸體忽然破棺而出敬飒,到底是詐尸還是另有隱情,我是刑警寧澤芬位,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布无拗,位于F島的核電站,受9級特大地震影響昧碉,放射性物質(zhì)發(fā)生泄漏英染。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一晌纫、第九天 我趴在偏房一處隱蔽的房頂上張望税迷。 院中可真熱鬧永丝,春花似錦锹漱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至喝检,卻和暖如春嗅辣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挠说。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工澡谭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人损俭。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓蛙奖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杆兵。 傳聞我的和親對象是個殘疾皇子雁仲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容