DeepLearningAI 学习笔记 1.2 logistic 回归

1.2 logistic 回归

视频:第二周 神经网络基础

整理:飞龙

logistic 回归属于广义线性回归。所谓广义线性回归,就是在线性回归的模型上加一些东西,使其适应不同的任务。

logitic 回归虽然名字里有回归,但是它解决的是二元分类问题。二元分类问题中,标签只有两个值。一个典型的二元分类是输入一张图片,判断是不是猫。

首先来看假设,我们的假设是这样的:

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

某个样本 $(x,y)$ 是正向分类的概率是 $x$ 乘权重 $\theta$ 再套个 sigmoid 函数,非常简单。这两个东西都是列向量。

sigmoid 函数用 $\sigma(x)$ 表示,图像是 S 型的,值域是 $(0,1)$,正好符合概率的要求。它的导数用函数值来表达更加方便,$\frac{d\sigma}{dx} = \sigma(1-\sigma)$。

image

注:

我的习惯是,把 $w$(权重)和 $b$(偏置)打包在一起,称为 $\theta$,因为这样节省很多计算。而且易于扩展,如果你需要偏置项,给 $w$ 多加一项,给 $x$ 添加一个 $1$,如果不需要,保持原样即可。

为了找出最优的 $\theta$,像通常一样,我们需要一个损失函数,然后使其最小。

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

这个函数为什么能用,需要解释一下。当 $y$ 是 $1$ 的时候,$l = -\log(a)$。如果我们要使 $l$ 最小,就是使 $a$ 最大。因为 sigmoid 函数最大值为 $1$,所以实际上,我们使 $a$ 接近 $1$。

当 $y$ 是 $0$ 的时候,$l = -\log(1-a)$。同理,我们使 $a$ 最小,因为 sigmoid 函数最小值为 $0$,就是使 $a$ 接近 $0$。

无论如何,我们都使 $a$ 尽可能接近 $y$。

我们需要一个大的损失函数,衡量模型在所有样本上的表现。我们用 $x^{(i)}$ 表示第 $i$ 个样本的特征。

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

然后我们需要求 $J$ 对 $\theta$ 的导数。

$$
\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)所有导数以及 $J$ 都需要除以 $n_{data}$,但为了简洁我省略了,下同。

(3)在机器学习(以及数值计算)中,没有必要区分导数和偏导数,导数可以看出偏导数的一元特例。所以这里我都使用了导数的符号。

我们可以看到最终的导数和线性回归一样,仍然是损失乘以特征再求和。

向量化

我的习惯是,将 $x^{(i)}$ 按行堆叠变成 $X$,也就是行是样本,列是特征,和咱们能够获得的绝大多数数据集一致。

$$
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$ 相当于对 $Z$ 的每个元素应用 sigmoid 函数,也是类似的结构:

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

接下来是损失函数 $J$:

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

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

接下来是导数:

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

这个还是比较好求的。

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

这里有一个方法,就是核对矩阵的维数。我们已经知道 $\frac{dJ}{d\theta}$ 是两个导数相乘,并且 $\frac{dJ}{dZ}$ 是n_data x 1的矩阵,$\frac{dZ}{d\theta}$ 是n_data x x_feature的矩阵,$\frac{dJ}{d\theta}$ 是n_feature x 1的矩阵。根据矩阵乘法,它只能是 $X^T(A - Y)$。

注:

严格来讲,向量化的导数应该称为梯度。这个笔记中不区分这两个术语。

梯度下降法

在代数中,如果我们需要求出一个凸函数的最值,我们可能会使导数等于 0,然后解出方程。但在机器学习中,我们使用梯度下降法来求凸函数的最值。

梯度下降法是,对于每个自变量 $x$,迭代执行以下操作:

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

其中 $\alpha$ 是学习率,一般选取 0 ~ 1 之间的值。

下面直观地解释一下。这是一个一元函数,它的形状是一个碗,或者山谷。

image

我们可以随便选一个点作为初始值。你可以选0,也可以选1或者随机值。这个无所谓,因为函数是凸的,沿任意路径下降都会达到全局最优值。

如果你的初始值在右侧,那么导数为正,减去它的一部分相当于向左移动了一小步。如果你的初始值在左侧,导数为负,减去它的一部分相当于向右移动了一小步。总之,这样会使 $x$ 向着全局最优的方向移动。

image

多元的凸函数是这样。如果你的每个自变量都减去它的导数(梯度)的一部分,那么所有自变量就相当于向着最陡的方向移动了一小步。如果你在一个山谷中,沿着最陡的方向向下走,就会到达谷底。

代码

向量化的公式很容易用 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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容