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

深度学习-逻辑回归

在这里插入图片描述

逻辑回归的目的

逻辑回归是解决二分问题,判断样本属于正类的概率是多大,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.xdnf.cn/news/14786.html

相关文章:

  • 深入理解 Redis Cluster:分片、主从与脑裂
  • Gemini CLI初体验
  • MySQL 8.0 OCP 1Z0-908 题目解析(17)
  • SciPy 安装使用教程
  • 数据结构:数组在编译器中的表示(Array Representation by Compiler)
  • NumPy-核心函数transpose()深度解析
  • MediaCrawler:强大的自媒体平台爬虫工具
  • 【python】OOP:Object-Oriented Programming
  • DHCP中继及动态分配
  • 全双工和半双工在以太网报文收发过程中的核心区别
  • 读书笔记:《DevOps实践指南》
  • GitHub 解码指南:用 AI 赋能,五步快速掌握任意开源项目
  • IOC容器讲解以及Spring依赖注入最佳实践全解析
  • LeetCode--40.组合总和II
  • Android App冷启动流程详解
  • 基于 Elasticsearch 实现地图点聚合
  • R语言初学者爬虫简单模板
  • 多种方法实现golang中实现对http的响应内容生成图片
  • Ubuntu20.04运DS-5
  • Lua 安装使用教程
  • docker-compose快速搭建redis集群
  • 容器基础5-Helm 与 K8s 的关系
  • 配置tcp的https协议证书
  • (第三篇)HMTL+CSS+JS-新手小白循序渐进案例入门
  • 【字节跳动】数据挖掘面试题0003:有一个文件,每一行是一个数字,如何用 MapReduce 进行排序和求每个用户每个页面停留时间
  • 《P4145 上帝造题的七分钟 2 / 花神游历各国》
  • Google Maps 安装使用教程
  • 客服机器人知识库怎么搭?智能客服机器人3种方案深度对比(含零售落地案例)
  • 【Linux】U-boot常用命令总结
  • 从UI设计到数字孪生实战部署:构建智慧农业的智能灌溉系统