神经网络的反向传播

梯度下降算法

🔥我们来看一下神经网络中的梯度下降算法🔥

梯度下降法是一种优化算法,用于寻找目标函数的最小值。梯度是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处变化最快的方向。在数学上,梯度就是关于输入的偏导数。

🌟η是学习率,如果学习率设置得太小,可能会导致收敛速度过慢;如果学习率太大,那就有可能直接跳过最优解,导致算法在最小值附近震荡甚至发散。所以,学习率也需要随着训练的进行而变化。 

在实际应用中,梯度下降法的初始点是随机选择的,这意味着最终找到的最小值可能取决于初始点的选择。有时候可能需要多次尝试,或者使用不同的初始点来尝试找到更好的最小值。 

🌊在进行模型训练时,Epoch、Batch 和 Iteration 是三个基础且重要的概念。🌊

  • Epoch 指的是整个数据集通过神经网络的次数。换句话说,当网络看完数据集中的所有图片、文本或其他数据类型一次,就算是完成了一个Epoch。
  • Batch 是指将大规模数据划分成小批次数据的过程。每个Batch中包含多个样本,模型会对这些样本进行前向传播和反向传播,计算出参数的梯度并进行更新。Batch的大小,也称为Batch size,决定了每次迭代更新参数的样本数量,对模型收敛速度和效果有一定影响。
  • Iteration 指的是模型在一个Batch中更新一次参数的过程。在一个Epoch中,可能需要多个Iteration来遍历完所有的数据。

梯度下降的几种方式:

批量梯度下降(BGD)在每次迭代时使用整个数据集来计算梯度,这意味着它每次更新都考虑了所有样本的信息。这种方法可以更准确地沿着优化方向前进,但是计算速度较慢,且对于大规模数据集来说可能不太实用。

随机梯度下降(SGD)是在每次迭代中随机选择一个样本来计算梯度并更新参数。这种策略使得SGD比BGD快很多,并且可以处理非常大的数据集。然而,由于它是基于单个样本的,所以可能会引入很多噪声,导致优化过程出现波动。

小批量梯度下降(MBGD)是一种折中的方法,它在每次迭代中使用一小部分随机选取的样本来计算梯度。这种方法既利用了一些样本的信息,又保持了较快的计算速度。

实际上,梯度下降的几种方式的根本区别就在于 Batch Size不同

梯度下降方式训练次数Batch SizeNumber of Batches
BGDNN1
SGDN1N
Mini - BatchNBN / B + 1

假设数据集有 50000 个训练样本,现在选择 Batch Size = 256 对模型进行训练。

每个 Epoch 要训练的图片数量:50000 训练集具有的 Batch 个数:50000/256+1=196 每个 Epoch 具有的 Iteration 个数:196 10个 Epoch 具有的 Iteration 个数:1960

import numpy as np

def gradient_descent(X, y, theta, alpha, num_iters):
    m = len(y)
    J_history = np.zeros(num_iters)

    for i in range(num_iters):
        h = np.dot(X, theta)
        loss = h - y
        gradient = np.dot(X.T, loss) / m
        theta = theta - alpha * gradient
        J_history[i] = np.sum(loss ** 2) / (2 * m)

    return theta, J_history

# 示例数据
X = np.array([[1, 2], [1, 3], [1, 4], [1, 5]])
y = np.array([3, 4, 5, 6])
theta = np.array([0, 0])
alpha = 0.01
num_iters = 1000

# 调用梯度下降函数
theta, J_history = gradient_descent(X, y, theta, alpha, num_iters)
print("Theta:", theta)
print("Loss history:", J_history)

前向和反向传播

利用反向传播算法对神经网络进行训练。与梯度下降算法相结合,对网络中所有权重(w,b)计算损失函数的梯度,并利用梯度值来更新权值以最小化损失函数。

前向传播是神经网络中用于计算预测输出的过程。在训练过程中,输入数据被送入网络,然后通过每一层进行传递,直到得到最终的预测输出。

最后一层神经元的输出作为网络的预测结果。 前向传播的目的是计算给定输入数据时网络的预测输出,以便在后续的训练过程中与实际目标值进行比较,并计算损失。

链式法则是微积分中一个重要的概念,用于计算复合函数的导数。在神经网络中,链式法则用于反向传播算法(Backpropagation),该算法用于计算损失函数相对于网络权重的梯度。 

反向传播算法是利用链式法则进行梯度求解及权重更新的。对于复杂的复合函数,我们将其拆分为一系列的加减乘除或指数,对数,三角函数等初等函数,通过链式法则完成复合函数的求导。 

 

具体来说,链式法则允许我们将损失函数相对于网络输出的导数分解为多个部分,每个部分对应于网络中的一层。其参数为权重 w、b。我们需要求关于 w 和 b 的偏导,然后应用梯度下降公式就可以更新参数。 

以w为例,当 𝑥 = 1, 𝑤 = 0, 𝑏 = 0 时,可以得到f(𝑥 ) = 0.25

sigmoid函数的导数计算:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/581599.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IDEA 开发找到 java-web 发布到 tomcat 的路径

使用 IDEA 开发 java web 应用,有没有遇到需要找到 tomcat 路径的问题 为什么要找 tomcat 路径呢? 拿我的项目来举例,有统一的线上线下 logback.xml 配置,配置时业务、框架日志输出到 file,少量的启动日志输出到 con…

基于MATLAB野外观测站生态气象数据处理分析

朱老师(副教授):来自国内重点高校,长期从事野外观测站生态气象监测与评估研究,发表SCl论文多篇,主持国家与地方科研项目多个,在生态环境数据处理与分析中具有丰富的实践项目经验。 以野外观测站高频时序生态气象数据为例&#xff…

uniapp 对接facebook第三方登录

1.登录facebook开发者中心,打开我的应用页面在这里插入图片描述 2.创建应用 3.选择类型 4.填写信息 5.添加登录 6.添加平台 安卓密钥生成【需要 Java 环境!!! 和 openssl库】 Google Code Archive 的 Windows 版 openssl-for-windows OpenSSL 库 将openssl下载到…

elasticsearch 聚合查询

文章目录 前言elasticsearch 聚合查询1. 桶聚合2. 度量聚合3. 嵌套聚合4. 指标聚合 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在…

Nodejs 第六十八章(远程桌面)

远程桌面 远程桌面(Remote Desktop)是一种技术,允许用户通过网络远程连接到另一台计算机,并在本地计算机上控制远程计算机的操作。通过远程桌面,用户可以在不同地点的计算机之间共享屏幕、键盘和鼠标,就像…

购买 DDoS 高防 IP 防护哪家好?

DDoS 高防 IP 哪里买会比较好?在这场攻与守的游戏里,DDoS 高防 IP 是一种针对 DDoS 攻击的防护措施,通过将网站或应用的 IP 地址映射到高防 IP 上,实现对流量的清洗和过滤,从而有效抵御 DDoS 攻击。在选择 DDoS 高防 IP 服务提供…

应急学院物联网应急安全产教融合基地解决方案

第一章 背景 1.1物联网应急安全产教融合发展概况 物联网应急安全产教融合发展是当前社会发展的重要趋势。随着物联网技术的广泛应用,应急安全领域对人才的需求日益迫切。因此,产教融合成为培养高素质、专业化人才的关键途径。在这一背景下,…

嘉楠堪智 CanMV K230 的 CanMV-IDE 环境与 MicroPython 编程

嘉楠推出了 CanMV IDE 开发环境,可以使用 MicroPython 开发针对 CanMV K230 的各种程序,同时也提供了大量的例子程序,方便使用者学习。 嘉楠开发者社区,给出了详细的 CanMV K230 教程,可以借以快速上手。 目录 固件…

word中取消分页符或分段符前后的空格

在Word中,有时候,我们添加分页符后,从分页符后面的文字就全部掉到了下一页,那么如何避免呢? 选择word选项--高级,然后下滑到下面,将“取消分页符或分段符前后的空格”选中,如下图所…

IDEA上文件换行符、分隔符(Line Separator)LF,CR,CRLF错乱影响Git上传Github或Gitee代码

IDEA上文件换行符、分隔符(Line Separator)LF,CR,CRLF错乱影响Git上传Github或Gitee代码 指定目录 然后就可以上传了 OK 一定注意更改Line Separator的文件目录 如果是target目录下的文件,是不能修改为LF的,把target文件删除,再重载一次main文件,就…

手机空号过滤,提高工作效率

手机空号过滤在多个方面都具有重要的作用。 首先,它对于短信群发商和电话营销商来说至关重要。通过空号过滤,他们可以确保手机号码数据库的准确性和有效性。由于每天都有大量人群因各种原因更换手机号码,导致每个号段中的空号率和手机状态都…

详解进程控制

目录 一、进程创建 fork() 写时拷贝 fork的应用场景 二、进程退出 什么是进程退出码? 退出码的含义 进程退出方法 三、进程等待 进程等待的必要性 进程等待的方法 wait waitpid status 阻塞与非阻塞 四、进程替换 替换原理 替换函数 命名理解 简…

CMake使用

一、CMake 是什么 CMake 是一个跨平台的自动化构建系统,它使用配置文件 CMakeLists.txt 来管理软件构建过程。CMake 基于 Makefile 做了二次开发。 二、单个文件目录 # CMake 最低版本号要求 cmake_minimum_required(VERSION 3.16.3)# 工程名 project(CMakeSingle)…

Spring Boot整合Redisson的两种方式

项目场景 Spring Boot整合Redisson的两种方式,方式一直接使用yml配置,方式二创建RedissonConfig配置类。 前言 redisson和redis区别: Redis是一个开源的内存数据库,支持多种数据类型,如字符串、哈希、列表、集合和有序…

ZooKeeper 环境搭建详细教程之三(真集群)

ZooKeeper 搭建详细步骤之三(真集群) ZooKeeper 搭建详细步骤之二(伪集群模式) ZooKeeper 搭建详细步骤之一(单机模式) ZooKeeper 及相关概念简介 真集群搭建 搭建 ZooKeeper 真集群涉及多个步骤,包括准备环境、配置文件设置、启动服务以及验证集群状态。 以下是一个简…

java实现模板填充word,word转pdf,pdf转图片

Java实现Word转PDF及PDF转图片 在日常开发中,我们经常需要将文件操作,比如: 根据模板填充wordword文档中插入图片Word文档转换为PDF格式将PDF文件转换为图片。 这些转换可以帮助我们在不同的场景下展示或处理文档内容。下面,我将…

大型零售企业,适合什么样的企业邮箱大文件解决方案?

大型零售企业通常指的是在全球或特定地区内具有显著市场影响力和知名度的零售商。这些企业不仅在零售业务收入上达到了惊人的规模,而且在全球范围内拥有广泛的销售网络和实体店铺。它们在快速变化的零售行业中持续创新,通过实体店、电商平台等多种渠道吸…

JavaScript全套检验系统(LIS)源码C# + MVC + SQLserver + Redis 云LIS系统源码 区域医疗云LIS系统源码

JavaScript全套检验系统(LIS)源码C# MVC SQLserver Redis 云LIS系统源码 区域医疗云LIS系统源码 实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件。这套系统通常与其他信…

Dockerfile 镜像创建扩展

一、构建SSH镜像 创建dockerfile步骤&#xff1a; 1. 建立工作目录 mkdir /opt/sshd cd /opt/sshd/2.编辑Dockerfile vim Dockerfile #第一行必须指明基于的基础镜像 FROM centos:7 #作者信息 MAINTAINER this is ssh image <wwk> #镜像的操作指令 RUN yum -y update R…

微软如何打造数字零售力航母系列科普03 - Mendix是谁?作为致力于企业低代码服务平台的领头羊,它解决了哪些问题?

一、Mendix 成立的背景 Mendix的成立是为了解决软件开发中最大的问题&#xff1a;业务和IT之间的脱节。这一挑战在各个行业和地区都很普遍&#xff0c;很简单&#xff1a;业务需求通常被描述为IT无法正确解释并转化为软件。业务和IT之间缺乏协作的原因是传统的代码将开发过程限…
最新文章