神经网络的反向传播

news2024/11/17 19:34:08

梯度下降算法

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

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

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

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

🌊在进行模型训练时,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.coloradmin.cn/o/1630070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sublime Vim模式配置:q关闭当前标签页

在Sublime安装目录下的->Packages文件夹下新建User文件夹创建文件Vintage.sublime-commands 路径为Sublime安装目录->Packages->User->Vintage.sublime-commands文件内容如下[{"caption": ":w - Save","command": "save"}…

【Model 3芯片】双层PCB设计,打造高性价比HMI控制器

产品高性能和可靠性的需求日益增长,特别是在工业应用领域中,这些要求更是严苛。为了满足这些不断升级的需求,启明智显推出了全新的Model 3芯片。这款芯片以其卓越的性能和强大的功能,被设计用作人机界面(HMI&#xff0…

RKNN Toolkit2 工具的使用

RKNN Toolkit2 是由瑞芯微电子 (Rockchip) 开发的一套用于深度学习模型优化和推理的工具。它主要面向在瑞芯微SoC上进行AI应用开发,但也可以用于PC平台进行模型的转换、量化、推理等操作。它支持将多种深度学习框架的模型(如Caffe, TensorFlow, PyTorch等…

一键呼叫,服务到家——同城跑腿小程序引领新生活方式

在忙碌的现代生活中,时间变得尤为珍贵。我们常常被琐事所困扰,无法尽情享受生活的美好。然而,同城跑腿小程序的出现,以其一键呼叫、服务到家的便捷特性,为我们打开了一扇通往新生活方式的大门。 同城跑腿小程序&#x…

如何解决pycharm创建项目报错 Error occurred when installing package ‘requests‘. Details.

🐯 如何解决PyCharm创建项目时的包安装错误:‘requests’ 🛠️ 文章目录 🐯 如何解决PyCharm创建项目时的包安装错误:requests 🛠️摘要引言正文📘 **问题分析**🚀 **更换Python版本…

《软件设计师教程:数据库系统基础知识大总结》

​ 个人主页:李仙桎 🔥 个人专栏: 《软件设计师》 ⛺️生活的理想,就是为了理想的生活! ​ ⛺️前言:各位铁汁们好啊!!!今天继续正式学习中级软件设计师考试相关的内容,后续不断更新…

【数据结构6--图】

目录 1 图2 图的定义和基本概念(在简单图范围内)3 图的类型定义4 图的存储结构4.1 邻接矩阵 表示法4.2 邻接表 表示法4.3 十字链表 表示法4.4 邻接多重表 表示法 5 图的遍历5.1 深度优先搜索-DFS 及 广度优先遍历-BFS 6 图的应用6.1 最小生成树6.1.1 克鲁…

黑马面试篇

课程地址:新版Java面试专题视频教程,java八股文面试全套真题深度详解(含大厂高频面试真题)_哔哩哔哩_bilibili 课程名称:新版Java面试专题视频教程,java八股文面试全套真题深度详解(含大厂高频…

类和对象【下】

本节博客主要围绕构造函数、static成员、友元、内部类、匿名对象等待关于“类和对象”这些细节性知识进行收尾,有需要借鉴即可 类和对象_下目录 1.再谈构造函数1.1初始化列表1.2意义 2.static成员2.1概念2.2特性2.3习题 3.友元3.1友元函数概念3.2友元函数的特性 4.内…

物联网应用技术综合实训室解决方案

一、背景 随着物联网技术的快速发展和广泛应用,物联网产业已经成为新的经济增长点,对于推动产业升级、提高社会信息化水平具有重要意义。因此,培养具备物联网技术应用能力的高素质人才成为了迫切需求。 传统的教育模式往往注重理论教学&…

mPEG-VE,Methoxy-PEG-Vitamin E广泛应用于纳米新材料研究以及细胞培养等领域

【试剂详情】 英文名称 mPEG-Vitamin E,mPEG-VE, Methoxy-PEG-Vitamin E,Methoxy-PEG-VE 中文名称 甲氧基-聚乙二醇-维生素E 外观性状 由分子量决定,液体或者固体 分子量 0.4k,0.6k,1k,2…

LeetCode---394周赛

题目列表 3120. 统计特殊字母的数量 I 3121. 统计特殊字母的数量 II 3122. 使矩阵满足条件的最少操作次数 3123. 最短路径中的边 一、统计特殊字母的数量I 分别统计小写字母和大写字母是否出现,然后求交集即可,这里我们可以用数组统计,但…

PotatoPie 4.0 实验教程(30) —— FPGA实现摄像头图像中值滤波

中值滤波是什么? 图像的中值滤波是一种非线性图像滤波方法,它用于去除图像中的椒盐噪声或其他类型的噪声。中值滤波的原理是用每个像素周围的邻域中的中值来替代该像素的值。与均值滤波不同,中值滤波不会受到极端值的影响,因此在处…

pytest教程-27-分布式执行用例插件-pytest-xdist

上一小节我们学习了pytest随机执行用例插件-pytest-random-order,本小节我们讲解一下pytest分布式执行用例插件pytest-xdist。 前言 平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟。如果一个测试人员执行需要10…

Bert基础(十八)--Bert实战:NER命名实体识别

1、命名实体识别介绍 1.1 简介 命名实体识别(NER)是自然语言处理(NLP)中的一项关键技术,它的目标是从文本中识别出具有特定意义或指代性强的实体,并对这些实体进行分类。这些实体通常包括人名、地名、组织…

【Linux】make 和 makefile

进度条 #pragma once#include <stdio.h>#define NUM 102 #define BODY #define TOP 100 #define RIGHT >extern void processbar(int rate);#include "processBar.h" #include <string.h> #include <unistd.h>const char lable[] "|/-\…

排序试题解析(二)

8.4.3 01.在以下排序算法中&#xff0c;每次从未排序的记录中选取最小关键字的记录&#xff0c;加入已排序记录的 末尾&#xff0c;该排序算法是( A ). A.简单选择排序 B.冒泡排序 C.堆排序 D.直接插入排序 02&#xff0e;简单选择排序算法的比较次数和移动次数分别为( C )。…

苹果可能将OpenAI技术集成至iOS/iPadOS 18

&#x1f989; AI新闻 &#x1f680; 苹果可能将OpenAI技术集成至iOS/iPadOS 18 摘要&#xff1a;苹果正在与OpenAI就将GPT技术部署在iOS/iPadOS 18中进行谈判。这项技术被视为可能增强的Siri功能&#xff0c;即“AI聊天机器人”。除Siri外&#xff0c;新技术还可能改善Spotl…

RFC 6071: IP Security (IPsec) and Internet Key Exchange (IKE) Document Roadmap

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/96882d1fb67b4383bc77c4dd421f7b

LeetCode 面试题 17.08 —— 马戏团人塔

阅读目录 1. 题目2. 解题思路3. 代码实现 1. 题目 2. 解题思路 首先&#xff0c;我们对人的身高按照从小到大排序&#xff0c;特别注意&#xff0c;对于身高相等的人&#xff0c;要按照体重从高到低排序。这时候&#xff0c;序列已经满足了在上面的人要比下面的人矮一点&#…