当前位置: 首页 > news >正文

PyTorch逻辑回归总结

目录

  • PyTorch逻辑回归总结
    • 神经网络基础
      • 基本结构
      • 学习路径
    • 线性回归
      • 简单线性回归
      • 多元线性回归
    • 逻辑回归
      • 核心原理
      • 损失函数
    • 梯度下降法
      • 基本思想
      • 关键公式
      • 学习率影响
    • PyTorch实现
      • 数据准备
      • 模型构建
      • 代码优化
    • 核心概念对比

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=(xixˉ)2(xixˉ)(yiyˉ)
    • β ^ 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+ez1
    • 输出范围:[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^)+(1y)log(1y^)]
  • 防止数值溢出:添加极小值 ϵ \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} θjJ=m1(yiy^i)xij
    • 截距: ∂ J ∂ b = 1 m ∑ ( y i − y ^ i ) \frac{\partial J}{\partial b} = \frac{1}{m} \sum (y_i - \hat{y}_i) bJ=m1(yiy^i)

学习率影响

  • 过小:收敛缓慢
  • 过大:震荡或发散
  • 优化策略:动态衰减、网格搜索

PyTorch实现

数据准备

  • 使用make_classification生成数据
  • 拆分训练集/测试集:train_test_split

模型构建

  1. 参数初始化

    • 权重:w = torch.randn(1, 10, requires_grad=True)
    • 偏置:b = torch.randn(1, requires_grad=True)
  2. 前向传播

    • 线性运算:z = torch.mm(x, w.T) + b
    • Sigmoid激活:y_hat = torch.sigmoid(z)
  3. 损失计算

    • 二元交叉熵:loss = F.binary_cross_entropy(y_hat, y_true)
  4. 反向传播

    • 自动求导:loss.backward()
    • 梯度清零:w.grad.zero_()
  5. 参数更新

    • w -= lr * w.grad
    • b -= lr * b.grad

代码优化

  • 对比NumPy与PyTorch实现
  • 利用自动求导简化梯度计算

核心概念对比

  • 概率 vs 似然
    • 概率:已知参数预测结果
    • 似然:已知结果估计参数
  • 超参数 vs 权重参数
    • 超参数:手动设置(如学习率)
    • 权重参数:模型自动学习

相关文章:

  • Linux中设置文件开机自启
  • HarmonyOS-ArkUI V2工具类:AppStorageV2:应用全局UI状态存储
  • 程序化广告行业(87/89):创意审核要求与广告法合规要点
  • __progname宏的用途(摘自DeepSeek)
  • java基础课程-springmvc课程
  • Spring如何动态修改bean属性对应的配置key
  • Git 学习笔记
  • 2025年计算机领域重大技术突破与行业动态综述
  • Python入门到精通6:CSS网页美化入门1
  • 考研单词笔记 2025.04.15
  • React 更新 state 中的数组
  • ARM Cortex汇编伪指令
  • 深入理解 Java 内存区域与内存溢出异常
  • 研发效率破局之道阅读总结(2)流程优化
  • 【论文阅读】Orion: Online Backdoor Sample Detection via Evolution Deviance
  • 鸿蒙应用开发—鸿蒙app一键安装脚本
  • Vue3监听数据变化方法详解
  • 详解LeetCode中用字符串实现整数相加,字符串转整数及其溢出处理详解
  • 网络编程(UDP)
  • Flutter 应用在真机上调试的流程
  • 中公教育薪酬透视:董监高合计涨薪122万,员工精简近三成
  • 第152次中老缅泰湄公河联合巡逻执法行动圆满结束
  • 游戏论|迟来的忍者与武士:从《刺客信条:影》论多元话语的争议
  • 观察|上海算力生态蓬勃发展,如何助力千行百业数智化转型升级
  • 俄总统助理:普京与美特使讨论了恢复俄乌直接谈判的可能性
  • 今年一季度全国结婚登记181万对,较去年同期减少15.9万对