一、二分类
任务定义
- 输入:一个特征向量 x ∈ R n x \in \mathbb{R}^n x∈Rn
- 输出:预测 y ∈ { 0 , 1 } y\in\{0,1\} y∈{0,1}
- 目标是构建一个模型,使得对于正样本 y = 1 y=1 y=1 和负样本 y = 0 y=0 y=0 能输出概率值 0 ≤ y ^ ≤ 1 0 \le \hat y \le 1 0≤y^≤1。
二、逻辑回归
1. 为什么逻辑回归?
线性回归适合连续预测,而逻辑回归用 Sigmoid 函数 建模二分类概率输出:
y
^
=
σ
(
z
)
=
1
1
+
e
−
z
,
z
=
θ
T
x
\hat y = \sigma(z) = \frac{1}{1 + e^{-z}} ,\quad z = \theta^T x
y^=σ(z)=1+e−z1,z=θTx
其中:
- z = θ T x z=\theta^T x z=θTx 可看成 “线性得分”
- σ ( z ) σ(z) σ(z) 映射到 [0,1] 作为概率
2. 原理解析
逻辑回归背后是假设:
P
(
y
=
1
∣
x
)
=
σ
(
θ
T
x
)
P(y=1|x) = σ(\theta^T x)
P(y=1∣x)=σ(θTx)
这个模型可以被看成对输入特征做线性判别,再用 Sigmoid 转换为概率输出。
三、逻辑回归的代价函数
1. 目标
构建一个 “代价(loss)函数” 衡量预测值 y ^ \hat y y^ 与真实标签 y y y 的差距。
2. 使用逻辑损失
L ( y ^ , y ) = − ( y log ( y ^ ) + ( 1 − y ) log ( 1 − y ^ ) ) \mathcal{L}(\hat y, y) = - (y \log(\hat y) + (1-y) \log(1-\hat y)) L(y^,y)=−(ylog(y^)+(1−y)log(1−y^))
该损失函数理由:
- 当 y = 1 y=1 y=1,损失为 − log ( y ^ ) -\log(\hat y) −log(y^),若模型预测概率低,则损失大。
- 当 y = 0 y=0 y=0,损失为 − log ( 1 − y ^ ) -\log(1-\hat y) −log(1−y^),若模型预测概率高,则损失大。
- 有良好的凸性(globally convex),便于优化。
四、梯度下降
1. 目标
最小化代价函数:
J
(
θ
)
=
1
m
∑
i
=
1
m
L
(
y
^
(
i
)
,
y
(
i
)
)
J(\theta)=\frac{1}{m}\sum_{i=1}^m \mathcal{L}(\hat y^{(i)}, y^{(i)})
J(θ)=m1i=1∑mL(y^(i),y(i))
2. 梯度下降规则
θ : = θ − α ∇ θ J ( θ ) \theta := \theta - \alpha \nabla_\theta J(\theta) θ:=θ−α∇θJ(θ)
其中 α \alpha α 是学习率。
五、导数
1. 为什么需要导数?
导数告诉我们 函数变化最快的方向,有助于沿最陡下降方向更新参数。
2. Sigmoid 导数技巧
σ ′ ( z ) = σ ( z ) ( 1 − σ ( z ) ) σ'(z) = σ(z)(1-σ(z)) σ′(z)=σ(z)(1−σ(z))
这是 Sigmoid 函数导数的重要结论,后续反向传播中广泛使用。
六、更多导数例子
1. 常见例子
- f ( z ) = z 2 f(z)=z^2 f(z)=z2 的导数是 2 z 2z 2z
- f ( z ) = log ( z ) f(z)=\log(z) f(z)=log(z) 的导数是 1 / z 1/z 1/z
理解这些导数有助于推导梯度公式。
七、计算图
1. 什么时候用?
计算图是将复杂的函数分解为多个节点(运算单元)并按顺序串联的图结构,便于求 正向计算 和 反向求导。
2. 原理说明
通过链式法则(chain rule),计算图能分步求导:
如果
J
=
f
(
g
(
h
(
w
)
)
)
J=f(g(h(w)))
J=f(g(h(w))),则:
d
J
d
w
=
d
J
d
g
⋅
d
g
d
h
⋅
d
h
d
w
\frac{dJ}{dw} = \frac{dJ}{dg}\cdot \frac{dg}{dh}\cdot \frac{dh}{dw}
dwdJ=dgdJ⋅dhdg⋅dwdh
八、计算图导数
步骤
- 从输入到输出逐层计算
- 从输出向输入沿边求导
- 每步使用链式法则
九、逻辑回归的梯度下降
对参数求导:
∂
J
∂
θ
=
1
m
X
T
(
y
^
−
y
)
\frac{\partial J}{\partial \theta} = \frac{1}{m}X^T(\hat y - y)
∂θ∂J=m1XT(y^−y)
其中:
- X ∈ R m × n X\in\mathbb{R}^{m\times n} X∈Rm×n
- y ^ = σ ( X θ ) \hat y = σ(X\theta) y^=σ(Xθ)
这个表达式其实就是向量化后的梯度公式。
十、多样本梯度下降例子
在 mmm 个样本中一次计算整个梯度(Batch GD),适合中等规模数据;见后一节向量化。
十一、向量化
1. 为什么要向量化?
向量化能利用线性代数库(BLAS/LAPACK)的优化,极大加速计算,避免 Python/Octave 中的显式循环。
十二、更多向量化例子
示例:
- 所有样本前向传播:
Z = W T X + b Z = W^T X + b Z=WTX+b
代替循环求每个 x ( i ) x^{(i)} x(i) 的 z ( i ) z^{(i)} z(i)
十三、向量化逻辑回归
1. 正向传播
输入矩阵
X
∈
R
n
×
m
X\in\mathbb{R}^{n\times m}
X∈Rn×m
Z
=
W
T
X
+
b
Z = W^T X + b
Z=WTX+b
A = σ ( Z ) A = σ(Z) A=σ(Z)
2. 反向传播(向量化)
d Z = A − Y dZ = A - Y dZ=A−Y
d W = 1 m X d Z T dW = \frac{1}{m}X dZ^T dW=m1XdZT
d b = 1 m ∑ d Z db = \frac{1}{m}\sum dZ db=m1∑dZ
十四、向量化逻辑回归的梯度计算
完整推导:
- d Z = A − Y dZ = A-Y dZ=A−Y(损失对线性输出导数)
- d W = 1 m X d Z T dW = \frac{1}{m} X dZ^T dW=m1XdZT
- d b = 1 m ∑ d Z db = \frac{1}{m}\sum dZ db=m1∑dZ
十五、Python 中的广播机制
1. 广播是啥?
当两个不同形状的 numpy 数组进行运算时,NumPy 会自动扩展(broadcast)较小的数组,使得形状匹配。
2. 原理解释
广播机制是通过 对齐轴 并在必要时 重复元素 来匹配维度,从而避免手动重复 reshape。
十六、Python/NumPy 向量使用注意点
- 使用
np.dot()做矩阵乘法,不要使用*(表示元素乘) - 保证维度匹配
- 小心形状
(n,)vs(n,1)
十七、逻辑回归损失函数
为什么损失函数这样定义?
- 对数损失对应的是 最大似然估计(MLE) 的对数似然(log-likelihood)最小化问题,这使得逻辑回归与统计学中的概率解释紧密相关。
- 对数损失相比平方误差不会导致 “饱和区梯度过小” 的问题,提升训练稳定性。
918

被折叠的 条评论
为什么被折叠?



