目录
PyTorch逻辑回归总结
神经网络基础
基本结构
- 输入节点
- 隐藏节点
- 输出节点
学习路径
- 逻辑回归作为神经网络入门基础
线性回归
简单线性回归
- 模型表达式: y = β 0 + β 1 x + ϵ y = \beta_0 + \beta_1 x + \epsilon y=β0+β1x+ϵ
- 参数估计方法:最小二乘法
- 参数求解公式
- β ^ 1 = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 \hat{\beta}_1 = \frac{\sum (x_i - \bar{x})(y_i - \bar{y})}{\sum (x_i - \bar{x})^2} β^1=∑(xi−xˉ)2∑(xi−xˉ)(yi−yˉ)
- β ^ 0 = y ˉ − β ^ 1 x ˉ \hat{\beta}_0 = \bar{y} - \hat{\beta}_1 \bar{x} β^0=yˉ−β^1xˉ
多元线性回归
- 模型表达式: y = β 0 + β 1 x 1 + ⋯ + β p x p + ϵ y = \beta_0 + \beta_1 x_1 + \cdots + \beta_p x_p + \epsilon y=β0+β1x1+⋯+βpxp+ϵ
- 矩阵形式求解: β ^ = ( X T X ) − 1 X T y \hat{\beta} = (X^T X)^{-1} X^T y β^=(XTX)−1XTy
逻辑回归
核心原理
- 线性回归结果映射到概率: z = θ T x z = \theta^T x z=θTx
- Sigmoid函数: σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1
- 输出范围:[0, 1]
- 代码实现:
sigmoid(z)
损失函数
- 最大似然估计推导
- 对数损失函数:
J ( θ ) = − ∑ [ y log ( y ^ ) + ( 1 − y ) log ( 1 − y ^ ) ] J(\theta) = -\sum \left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] J(θ)=−∑[ylog(y^)+(1−y)log(1−y^)] - 防止数值溢出:添加极小值 ϵ \epsilon ϵ
梯度下降法
基本思想
- 类比下山问题
- 梯度方向:函数下降最快的方向
- 学习率(η):控制步长的超参数
关键公式
- 参数更新: θ n + 1 = θ n − η ∂ J ∂ θ \theta_{n+1} = \theta_n - \eta \frac{\partial J}{\partial \theta} θn+1=θn−η∂θ∂J
- 偏导数计算:
- 权重: ∂ J ∂ θ j = 1 m ∑ ( y i − y ^ i ) x i j \frac{\partial J}{\partial \theta_j} = \frac{1}{m} \sum (y_i - \hat{y}_i) x_{ij} ∂θj∂J=m1∑(yi−y^i)xij
- 截距: ∂ J ∂ b = 1 m ∑ ( y i − y ^ i ) \frac{\partial J}{\partial b} = \frac{1}{m} \sum (y_i - \hat{y}_i) ∂b∂J=m1∑(yi−y^i)
学习率影响
- 过小:收敛缓慢
- 过大:震荡或发散
- 优化策略:动态衰减、网格搜索
PyTorch实现
数据准备
- 使用
make_classification
生成数据 - 拆分训练集/测试集:
train_test_split
模型构建
参数初始化
- 权重:
w = torch.randn(1, 10, requires_grad=True)
- 偏置:
b = torch.randn(1, requires_grad=True)
- 权重:
前向传播
- 线性运算:
z = torch.mm(x, w.T) + b
- Sigmoid激活:
y_hat = torch.sigmoid(z)
- 线性运算:
损失计算
- 二元交叉熵:
loss = F.binary_cross_entropy(y_hat, y_true)
- 二元交叉熵:
反向传播
- 自动求导:
loss.backward()
- 梯度清零:
w.grad.zero_()
- 自动求导:
参数更新
w -= lr * w.grad
b -= lr * b.grad
代码优化
- 对比NumPy与PyTorch实现
- 利用自动求导简化梯度计算
核心概念对比
- 概率 vs 似然
- 概率:已知参数预测结果
- 似然:已知结果估计参数
- 超参数 vs 权重参数
- 超参数:手动设置(如学习率)
- 权重参数:模型自动学习