深度学习(2):逻辑回归 md版本

逻辑回归 (Logistic Regression)

核心思想

逻辑回归用于二分类问题 ,输出一个概率值 p∈(0,1)p \in (0, 1)p∈(0,1),表示样本属于正类的概率。


核心公式

1. Sigmoid 函数

将线性组合映射到 (0,1)(0, 1)(0,1):

σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}σ(z)=1+e−z1

2. 预测概率

y^=σ(wTx+b)=11+e−(wTx+b)\hat{y} = \sigma(w^T x + b) = \frac{1}{1 + e^{-(w^T x + b)}}y^=σ(wTx+b)=1+e−(wTx+b)1

  • xxx:输入特征向量
  • www:权重向量
  • bbb:偏置项
  • y^\hat{y}y^:预测为正类的概率

3. 决策规则

预测类别={1y^≥0.50y^<0.5 \text{预测类别} = \begin{cases} 1 & \hat{y} \geq 0.5 \\ 0 & \hat{y} < 0.5 \end{cases} 预测类别={10y^≥0.5y^<0.5


简单例子

问题:根据学习时长(小时)预测是否通过考试(1=通过,0=不通过)

学习时长 xxx 是否通过 yyy
1 0
2 0
4 1
5 1

假设训练后得到参数:w=2w = 2w=2,b=−6b = -6b=−6

预测学习 3 小时的结果:

z=2×3+(−6)=0z = 2 \times 3 + (-6) = 0z=2×3+(−6)=0

y^=11+e0=12=0.5\hat{y} = \frac{1}{1 + e^{0}} = \frac{1}{2} = 0.5y^=1+e01=21=0.5

边界情况,刚好 0.5,预测为通过。

预测学习 1 小时的结果:

z=2×1−6=−4z = 2 \times 1 - 6 = -4z=2×1−6=−4

y^=11+e4≈0.018\hat{y} = \frac{1}{1 + e^{4}} \approx 0.018y^=1+e41≈0.018

概率极低,预测为不通过


训练过程

第一步:定义损失函数(对数损失)

对单个样本:

L(y^,y)=−ylog⁡(y\^)+(1−y)log⁡(1−y\^)L(\hat{y}, y) = -\left y \\log(\\hat{y}) + (1 - y) \\log(1 - \\hat{y}) \\rightL(y^,y)=−ylog(y\^)+(1−y)log(1−y\^)

对整个数据集(nnn 个样本)取平均:

J(w,b)=−1n∑i=1ny(i)log⁡(y\^(i))+(1−y(i))log⁡(1−y\^(i))J(w, b) = -\frac{1}{n} \sum_{i=1}^{n} \left y\^{(i)} \\log(\\hat{y}\^{(i)}) + (1 - y\^{(i)}) \\log(1 - \\hat{y}\^{(i)}) \\rightJ(w,b)=−n1i=1∑ny(i)log(y\^(i))+(1−y(i))log(1−y\^(i))

为什么用对数损失而不用均方误差?

均方误差在 sigmoid 输出上会导致梯度消失,对数损失是凸函数,保证梯度下降收敛。

第二步:梯度下降更新参数

计算梯度:

∂J∂w=1n∑i=1n(y^(i)−y(i))x(i)\frac{\partial J}{\partial w} = \frac{1}{n} \sum_{i=1}^{n} (\hat{y}^{(i)} - y^{(i)}) x^{(i)}∂w∂J=n1i=1∑n(y^(i)−y(i))x(i)

∂J∂b=1n∑i=1n(y^(i)−y(i))\frac{\partial J}{\partial b} = \frac{1}{n} \sum_{i=1}^{n} (\hat{y}^{(i)} - y^{(i)})∂b∂J=n1i=1∑n(y^(i)−y(i))

更新规则(α\alphaα 为学习率):

w←w−α⋅∂J∂ww \leftarrow w - \alpha \cdot \frac{\partial J}{\partial w}w←w−α⋅∂w∂J

b←b−α⋅∂J∂bb \leftarrow b - \alpha \cdot \frac{\partial J}{\partial b}b←b−α⋅∂b∂J

第三步:迭代直到收敛

复制代码
初始化 w = 0, b = 0
repeat:
    计算所有样本的 ŷ
    计算损失 J
    计算梯度 ∂J/∂w, ∂J/∂b
    更新 w, b
until 损失不再明显下降

整体流程图

复制代码
输入特征 x
    ↓
线性计算: z = wᵀx + b
    ↓
Sigmoid: ŷ = 1/(1+e⁻ᶻ)
    ↓
对比标签 y → 计算损失 J
    ↓
反向传播 → 计算梯度
    ↓
梯度下降 → 更新 w, b
    ↓
重复迭代直到收敛

关键要点总结

要素 内容
输出 概率值 (0,1)(0, 1)(0,1)
激活函数 Sigmoid
损失函数 对数损失(Binary Cross-Entropy)
优化方法 梯度下降
适用场景 二分类(垃圾邮件、疾病诊断等)
相关推荐
空中湖3 小时前
Spring AI Agent 编排:ReAct 模式 + 多 Agent 协作实战
人工智能·spring·react.js
only-qi3 小时前
RAG 工作机制详解:构建高质量知识库的技术全流程
网络·人工智能·rag
John_ToDebug3 小时前
Git Stash 完全指南:临时保存工作区的艺术
人工智能·git·agent
feibaoqq3 小时前
Atlas边端板卡AI识别:部署方法、技术实现、优劣及应用场景
人工智能·低空经济·低空安防
小保CPP3 小时前
OpenCV C++将多张图像合并为webp动图
c++·人工智能·opencv·计算机视觉
Xzaveir3 小时前
企业号码展示不可观测怎么办:状态机、拨测事件与异常回放
android·人工智能
FII工业富联科技服务3 小时前
从灯塔工厂到AI Factory新模式:AI正在重构制造业的四大核心能力
大数据·运维·人工智能·重构·ar·制造
前端开发江鸟3 小时前
从一个最小 Runtime Demo 看懂:陌生的 599 为什么不能重试
人工智能
AI小白Lin3 小时前
33 个 AI 专家全票通过?那问题才刚开始
人工智能·架构
Spey_Events3 小时前
【核心议题发布】聚焦深度维修与 AI 智慧革新!2026中国民用航空维修智造展——议题重磅发布!
大数据·人工智能