深度学习笔记【Week2】

一、二分类

任务定义

  • 输入:一个特征向量 x ∈ R n x \in \mathbb{R}^n xRn
  • 输出:预测 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 0y^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+ez1,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^)+(1y)log(1y^))

该损失函数理由:

  • 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(1y^),若模型预测概率高,则损失大。
  • 有良好的凸性(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=1mL(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=dgdJdhdgdwdh

八、计算图导数

步骤

  1. 从输入到输出逐层计算
  2. 从输出向输入沿边求导
  3. 每步使用链式法则

九、逻辑回归的梯度下降

对参数求导:
∂ 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} XRm×n
  • y ^ = σ ( X θ ) \hat y = σ(X\theta) y^=σ()

这个表达式其实就是向量化后的梯度公式。

十、多样本梯度下降例子

在 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} XRn×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=AY

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=m1dZ

十四、向量化逻辑回归的梯度计算

完整推导:

  1. d Z = A − Y dZ = A-Y dZ=AY(损失对线性输出导数)
  2. d W = 1 m X d Z T dW = \frac{1}{m} X dZ^T dW=m1XdZT
  3. d b = 1 m ∑ d Z db = \frac{1}{m}\sum dZ db=m1dZ

十五、Python 中的广播机制

1. 广播是啥?

当两个不同形状的 numpy 数组进行运算时,NumPy 会自动扩展(broadcast)较小的数组,使得形状匹配。

2. 原理解释

广播机制是通过 对齐轴 并在必要时 重复元素 来匹配维度,从而避免手动重复 reshape。

十六、Python/NumPy 向量使用注意点

  • 使用 np.dot() 做矩阵乘法,不要使用 *(表示元素乘)
  • 保证维度匹配
  • 小心形状 (n,) vs (n,1)

十七、逻辑回归损失函数

为什么损失函数这样定义?

  • 对数损失对应的是 最大似然估计(MLE) 的对数似然(log-likelihood)最小化问题,这使得逻辑回归与统计学中的概率解释紧密相关。
  • 对数损失相比平方误差不会导致 “饱和区梯度过小” 的问题,提升训练稳定性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值