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

深度学习-逻辑回归

在这里插入图片描述

逻辑回归的目的

逻辑回归是解决二分问题,判断样本属于正类的概率是多大,0-1之间

找到一组最佳的权重(w1,w2,w3,…) ,b,使得模型预测的概率 P(Y=1) 尽可能接近样本的真实标签(1 或 0)。

计算过程

前向传播过程如下:

假设有一个简单的神经网络层,包括输入 ( x )、权重 ( w )、偏置 ( b ) 和激活函数( σ),输出为 ( a )。损失函数为 ( L ),我们希望计算损失函数对权重 ( w ) 的梯度。

输入特征x
线性变换:z=w*x+b
激活函数:a=σ(z)
输出预测概率a

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

损失函数,也就是误差

损失计算:L=Loss(a,y),其中 y 是真实标签,a是预测值

L ( y ^ , y ) = − y log ⁡ ( y ^ ) − ( 1 − y ) log ⁡ ( 1 − y ^ ) L(\hat{y}, y) = - y \log(\hat{y}) - (1 - y) \log(1 - \hat{y}) L(y^,y)=ylog(y^)(1y)log(1y^)
训练的目的是把L(y^,y)趋近0,让损失最小,就是趋向于最低点
其有w与b两个变量
在这里插入图片描述

减小损失,进行优化

在这里插入图片描述
这里的 α是△w的意思,w的优化就是通过减去w的偏导数来达成的

J和L是一样的含义,都是损失函数

偏导数如何求(计算梯度)

反向传播中的梯度计算

  1. 计算损失函数 L L L 对激活值 a a a 的梯度:
    ∂ L ∂ a \frac{\partial L}{\partial a} aL
    在这里插入图片描述

  2. 计算激活函数 σ \sigma σ z z z 的梯度:
    ∂ a ∂ z = σ ′ ( z ) \frac{\partial a}{\partial z} = \sigma'(z) za=σ(z)
    在这里插入图片描述

  3. 计算 z z z 对权重 w w w 的梯度:
    ∂ z ∂ w = x \frac{\partial z}{\partial w} = x wz=x
    就是w

  4. 使用链式法则计算损失函数 L L L 对权重 w w w 的梯度:
    ∂ L ∂ w = ∂ L ∂ a ⋅ ∂ a ∂ z ⋅ ∂ z ∂ w \frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial w} wL=aLzawz
    4中就是w关于L的偏导数

这是L
L ( y ^ , y ) = − y log ⁡ ( y ^ ) − ( 1 − y ) log ⁡ ( 1 − y ^ ) L(\hat{y}, y) = - y \log(\hat{y}) - (1 - y) \log(1 - \hat{y}) L(y^,y)=ylog(y^)(1y)log(1y^)
这是a
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+ez1
这是z
z = w ∗ x + b z=w*x+b z=wx+b

计算梯度代码现

import numpy as np# 激活函数及其导数
def sigmoid(x):return 1 / (1 + np.exp(-x))
#倒数
def sigmoid_derivative(x):return sigmoid(x) * (1 - sigmoid(x))# 假设数据
x = np.array([0.5])  # 输入
w = np.array([0.2])  # 权重
b = 0.1  # 偏置
y = np.array([0.7])  # 实际目标# 前向传播
z = w * x + b
a = sigmoid(z)# 计算损失(均方误差)
loss = 0.5 * (a - y) ** 2
print(f'损失对权重的梯度: {loss}')# 反向传播(链式法则)
dL_da = a - y  # 损失函数对激活值的梯度
da_dz = sigmoid_derivative(z)  # 激活函数对 z 的梯度
dz_dw = x  # z 对权重 w 的梯度# 使用链式法则计算损失函数对权重的梯度
dL_dw = dL_da * da_dz * dz_dwprint(f'损失对权重的梯度: {dL_dw}')
#这个就是J对w的梯度,就是那个偏导数

总的来说

逻辑回归只会给出 0 1的判断,而我们优化的就是减小这个0 1判断的误差

http://www.dtcms.com/a/266159.html

相关文章:

  • RJ45 连接器(水晶头)的引脚定义
  • 从0到1解锁Element-Plus组件二次封装El-Dialog动态调用
  • Gemini CLI初体验
  • 二叉树题解——二叉树的层序遍历【LeetCode】队列实现
  • Java中Stream流的使用
  • Web攻防-文件上传黑白名单MIMEJS前端执行权限编码解析OSS存储分域名应用场景
  • 设计模式(九)
  • 魔术方法__call__
  • Redis缓存架构实战
  • Selenium Base全新升级版:新一代自动化框架实战解析
  • Python 的内置函数 range
  • 高边驱动 低边驱动
  • 黑暗中的爆破(船讯网Ais爬虫暨爬虫实战js逆向学习经验分享)
  • 车载以太网-IP 掩码 vlan 端口
  • SciPy 安装使用教程
  • [特殊字符] 电子机械制动(EMB)产业全景分析:从技术演进到千亿市场爆发
  • 高通QCS8550部署YOLO-NAS模型与性能测试
  • 使用excel中的MATCH函数进行匹配数据
  • Python数据库软件:查询与预测功能集成系统
  • Linux常见指令以及权限理解
  • 使用 Flask 构建基于 Dify 的企业资金投向与客户分类评估系统
  • HTTP详细介绍
  • Windows 10 2016 长期服务版
  • 仿小红书交流社区(微服务架构)
  • day 58 python打卡
  • AppInventor2 标签内容过多,如何做到可上下滑动?
  • 【WRFDA教程第一期】运行观测预处理程序(OBSPROC)
  • 数据结构:数组在编译器中的表示(Array Representation by Compiler)
  • oracle锁表,oracle解锁表,oracle用户连接数
  • ArcGISPro应用指南:ArcGISPro制图全流程详解