在这里插入图片描述

文章目录

    • 浅层神经网络的前向传播
      • 计算流程
        • 矩阵在运算时形状的变化
    • 激活函数的作用
      • 为什么要有激活函数
    • 反向传播
    • 深层神经网络
      • 参数
      • 超参数
      • 参数初始化
      • ·初始化权重的值选择

浅层神经网络的前向传播

计算流程

线性变换-神经元a1
线性变换-神经元a2
线性变换-神经元a3
线性变换-神经元a4
线性变换
第一层
第二层
输入特征x
激活函数(z)
sigmoid(z)激活函数
输入特征x
激活函数(z)
sigmoid(z)激活函数

第一个激活函数是为了把线性变换的各条线变成更便于拟合的,具有非线性特征的线
第二个线性变换是为了把这些具有非线性特征的线拟合成一条线
第二个激活函数是为了把结果限制在0-1之间

与单神经元相比,不同在于每个不同的神经元对相同的输入有不同权
在这里插入图片描述
n*m n为隐层神经元个数,m为输入的特征x的数目

  • 这是W权重的矩阵
输入的特征xx1x2x3xm
神经元
a1
a2
a3
a4
an

而在单神经元中www仅有一行

矩阵在运算时形状的变化

n是隐层神经元的个数,m是特征x的数目(一个样本里有m个x),M是样本数目n是隐层神经元的个数,m是特征x的数目(一个样本里有m个x),M是样本数目n是隐层神经元的个数,m是特征x的数目(一个样本里有mx),M是样本数目

  • 前向过程计算:

第一步,各神经元线性代换第一步,各神经元线性代换第一步,各神经元线性代换
z[1]=W[1]x+b[1](形状:(n,M)=(n,m)∗(m,M)+(M,1))z^{[1]} = W^{[1]}x + b^{[1]} (形状:(n,M) = (n,m) * (m,M) + (M,1))z[1]=W[1]x+b[1](形状:(n,M)=(n,m)(m,M)+(M,1))

第二步,对各神经元的代换结果进行激活函数(z)第二步,对各神经元的代换结果进行激活函数(z)第二步,对各神经元的代换结果进行激活函数(z)
a[1]=σ(z[1])(形状:(n,M))a^{[1]} = \sigma(z^{[1]}) (形状:(n,M))a[1]=σ(z[1])(形状:(n,M))

第三步,对各个神经元的激活函数(z)结果进行线性代换第三步,对各个神经元的激活函数(z)结果进行线性代换第三步,对各个神经元的激活函数(z)结果进行线性代换
z[2]=W[2]a[1]+b[2](形状:(1,M)=(1,n)∗(n,M)+(1,M))z^{[2]} = W^{[2]}a^{[1]} + b^{[2]} (形状:(1,M) = (1,n) * (n,M) + (1,M))z[2]=W[2]a[1]+b[2](形状:(1,M)=(1,n)(n,M)+(1,M))

第四步,对汇总的线性代换进行σ(z)第四步,对汇总的线性代换进行\sigma(z)第四步,对汇总的线性代换进行σ(z)
a[2]=σ(z[2])(形状:(1,M))a^{[2]} = \sigma(z^{[2]}) (形状:(1,M))a[2]=σ(z[2])(形状:(1,M))

  • 第一步的结果(n,M),一个样本占一列
输入的样本M1M2M3MM
神经元
a1线性代换的结果
an
  • 第二步的结果(n,M),一个样本占一列
输入的样本M1M2M3MM
神经元
a1σ(线性代换的结果)\sigma(线性代换的结果)σ(线性代换的结果)
an
  • 第三步的结果,一个样本占一格
输入的样本M1M2M3MM
各个神经元的σ(z)\sigma(z)σ(z)结果σ(z)\sigma(z)σ(z)线性代换的结果
  • 第四步的结果,一个样本占一格
输入的样本M1M2M3MM
σ(z)\sigma(z)σ(z)线性代换的结果σ(第三步线性代换)\sigma(第三步线性代换)σ(第三步线性代换)线性代换的结果,最终的预测概率

激活函数的作用

就是非线性变换

为什么要有激活函数

线性变换1-神经元a1
线性变换1-神经元a2
线性变换1-神经元a3
线性变换1-神经元a4
线性变换2
输入特征x
激活函数(z)
sigmoid(z)激活函数

线性变换1 根据权重数据化到各个神经元,
线性变换2 将各个神经元非线性化后的结果线加上偏置后,拟合(加)成一条线,最终根据这条线σ(z)\sigma(z)σ(z)进行预测
隐层中有n神经元,最终就是n条激活函数的线拟合
在这里插入图片描述

如果不加激活函数,那么神经元就仅仅做线性变换,以AlexNet为例,这个神经网络就会成为一个线性回归模型。而一个线性回归模型对于复杂非线性任务的处理能力是十分有限的。因此,我们需要添加非线性的激活函数,在神经网络的输入输出之间形成非线性映射,让网络能力更为强大。

仅线性变化得到的,拟合(加起来)效果不如激活函数得到的非线性线的拟合
在这里插入图片描述

反向传播

是单个神经元的反向传播的叠加

单神经元梯度求法
单神经元梯度求法
单神经元梯度求法
单神经元梯度求法
单神经元梯度求法
单神经元梯度求法
单神经元梯度求法
单神经元梯度求法
输入层
输入层
输入层
输入层
输入层
最终的那个神经元

深层神经网络

与浅层神经网络相同,只是隐层部分由多层神经元构成

在这里插入图片描述

提取图片文字内容如下:

参数

参数即是我们在过程中想要模型学习到的信息(模型自己能计算出来的),例如W[l],b[l],而超参数(hyper parameters)即为控制参数的学习的一些信息(需要人经验判断)。超参数的改变会导致最终得到的参数W[l],b[l]的改变。

超参数

典型的超参数有:
学习速率:a学习速率:a学习速率:a

迭代次数:N迭代次数:N迭代次数:N

隐藏层的层数:L隐藏层的层数:L隐藏层的层数:L

每一层的神经元个数:n[1],n[2],...每一层的神经元个数:n^{[1]},n^{[2]},...每一层的神经元个数:n[1]n[2]...

激活函数g(z)的选择激活函数g(z)的选择激活函数g(z)的选择

参数初始化

· 为什么要随机初始化权重
权重初始化随机,防止因相同变化始终相同
如果在初始时将两个隐藏神经元的参数设置为相同的大小,那么两个隐藏神经元对输出单元的影响也是相同的,通过反向梯度下降去进行计算的时候,会得到同样的梯度大小,所以在经过多次迭代后,两个隐藏层单位仍然是对称的。无论设置多少个隐藏单元,其最终的影响都是相同的,那么多个隐藏神经元就没有了意义。

在初始化的时候,W参数要进行随机初始化,不可以设置为0。b因为不存在上述问题,可以设置为0。

以2个输入,2个隐藏神经元为例:
W=np⋅random⋅randn(2,2)∗0.01W=np \cdot random \cdot randn(2,2)*0.01W=nprandomrandn(2,2)0.01
b=np⋅zeros((2,1))b=np \cdot zeros((2,1))b=npzeros((2,1))

·初始化权重的值选择

在tanh中初始权重要小一点,使其在0附近,是激活函数变化敏感的区域
这里将W的值乘以0.01(或者其他的常数值)的原因是为了使得权重W初始化为较小的值,这是因为使用sigmoid函数或者tanh函数作为激活函数时,W比较小,则Z=WX+b所得的值趋近于0,梯度较大,能够提高算法的更新速度。而如果W设置的太大的话,得到的梯度较小,训练过程因此会变得很慢。

ReLU和Leaky ReLU作为激活函数时不存在这种问题,因为在大于0的时候,梯度均为1。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【vben3源码解读】【useEcharts】【VueUse】详解useEcharts这个hooks的作用与相关库的使用(VueUse)

源代码 import type { EChartsOption } from echarts;import type { Ref } from vue;import type { Nullable } from vben/types;import type EchartsUI from ./echarts-ui.vue;import { computed, nextTick, watch } from vue;import { usePreferences } from vben/preference…

报错 400 和405解决方案

今天出了好多这个错误,Uncaught (in promise) AxiosError {message: Request failed with status code 400 , name: AxiosError , code: ERR_BAD_REQUEST , config: {…}, request: XMLHttpRequest, …}反正就是前后端的参数不匹配,要不就是请求方式不…

Java源码的前端编译

Java源码的前端编译 欢迎来到我的博客:TWind的博客 我的CSDN::Thanwind-CSDN博客 我的掘金:Thanwinde 的个人主页 0.前言 当一份Java代码写好时,将其进行编译,运行,并不是简单把这个Java源码从头到尾执行…

JWT6报错误 kid empty unable to lookup correct key

JWT5和jwt6在加密和解密和时候还明些区别的 ,在5中,是不需要这个kid的,加解都不需要。但6中是需要这个keyId。 所以在使用的时候要做个区别,参考下面链接: ThinkPhp5.0.24 JWT报错 ‘“kid“ empty, unable to lookup…

高效学习之一篇搞定分布式管理系统Git !

一、Git是什么1.Git是目前世界上最先进的分布式版本管理系统 2.工作原理/流程workspace:工作区 Index/Stage:暂存区 Repository:仓库区(本地仓库) Remote:远程仓库二、SVN和Git的最主…

AdsPower API 新增查询环境 Cookies 接口,自动化更进一步!

你是不是有过这样的经历?账号在 AdsPower 环境中已经成功登录,但你还要花时间手动导出 Cookies、再整理处理,过程繁琐、效率低下。 现在,我们上线了 API 查询环境 Cookies 的接口,支持通过 API 直接获取已登录环境的 …

Craftium游戏引擎中的客户端同步机制解析

Craftium游戏引擎中的客户端同步机制解析 craftium A framework for creating rich, 3D, Minecraft-like single and multi-agent environments for AI research based on Minetest 项目地址: https://gitcode.com/gh_mirrors/cr/craftium 游戏状态同步的核心问题 在分…

spring cloud负载均衡之FeignBlockingLoadBalancerClient、BlockingLoadBalancerClient

本文主要分析被 FeignClient 注解的接口类请求过程中负载均衡逻辑&#xff0c;流程分析使用的源码版本信息如下&#xff1a;<spring-boot.version>3.2.1</spring-boot.version><spring-cloud.version>2023.0.0</spring-cloud.version>背景 平常我们代码…

提示工程(Prompt Engineering)研究进展

提示工程(Prompt Engineering)研究进展 以及它如何帮助大语言模型(LLMs)和视觉语言模型(VLMs)更好地工作。用简单的话说,就是通过设计巧妙的“提示”(比如指令、例子),让模型在不修改内部参数的情况下,更精准地完成各种任务,比如回答问题、推理、生成内容等。 文档…

【ARM】AI开发板A7处理器JTAG实现指南

一、文档背景尽管开发板原厂提供了相关文档&#xff0c;但可能缺乏对 A7 处理器 JTAG 功能的详细说明。这可能会导致以下问题&#xff1a;开发人员难以理解和利用 A7 处理器的基本功能&#xff0c;阻碍调试和开发进度。在进行Uboot移植过程中&#xff0c;无法应用图形界面的调试…

FPGA(一)Quartus II 13.1及modelsim与modelsim-altera安装教程及可能遇到的相关问题

零.前言 在学习FPGA课程时&#xff0c;感觉学校机房电脑用起来不是很方便&#xff0c;想着在自己电脑上下载一个Quartus II 来进行 基于 vhdl 语言的FPGA开发。原以为是一件很简单的事情&#xff0c;没想到搜了全网文章发现几乎没有一个完整且详细的流程教学安装&#xff08;也…

软考(软件设计师)存储管理—存储空间管理,文件共享保护

一、文件存取方法 1. 顺序存取&#xff08;Sequential Access&#xff09; 原理&#xff1a;按记录写入顺序依次访问特点&#xff1a; 读操作&#xff1a;读取当前位置&#xff0c;指针自动前移写操作&#xff1a;追加到文件末尾 适用场景&#xff1a;磁带设备、日志文件 #merm…

Thinkphp6中如何将macro方法集成到Request类中

在学习crmeb的时候发现他使用了一个macro的方法用在中间件中&#xff0c;于对macro进行了简单的研究&#xff0c;发现这个方法可以在中间件中进行定义一些方法&#xff0c;然后让后面的控制器进行使用。 如&#xff1a; 在授权的中间件中&#xff0c;定义了$request->macro…

Java List 使用详解:从入门到精通

一、List 基础概念1.1 什么是 List&#xff1f;List 就像是一个智能书架&#xff1a;可以按顺序存放书籍&#xff08;元素&#xff09;每本书都有固定位置&#xff08;索引&#xff09;可以随时添加、取出或重新排列书籍// 创建一个书架&#xff08;List&#xff09; List<S…

Java零基础笔记06(数组:一维数组、二维数组)

明确: 程序是用来处理数据的, 因此要掌握数据处理的数据结构数组是编程中常用的数据结构之一&#xff0c;用于存储一系列相同类型的元素。在Java中&#xff0c;数组是一种对象&#xff0c;可以存储固定大小的相同类型元素的集合。1.一维数组数组是一个数据容器,可用来存储一批同…

10倍处理效率提升!阿里云大数据AI平台发布智能驾驶数据预处理解决方案

阿里云大数据AI平台重磅发布智能驾驶数据预处理解决方案&#xff0c;可帮助汽车行业客户实现构建高效、稳定的数据预处理产线流程&#xff0c;数据包处理效率相比自建可提升10倍以上&#xff0c;数据处理推理任务优化提速1倍以上&#xff0c;相同资源产能提升1倍[1]&#xff0c…

SAP HANA内存数据库解析:特性、优势与应用场景 | 技术指南

SAP HANA 是一款列式内存关系数据库&#xff0c;集 OLAP 和 OLTP 操作于一体。相较于同类产品&#xff0c;SAP HANA 需要的磁盘空间更少&#xff0c;并且可扩展性高。SAP HANA 可以部署在本地、公有云或私有云以及混合场景中。该数据库适用于各种数据类型的高级分析和事务处理。…

Openharmony4.0 rk3566上面rknn的完美调用

一 背景&#xff1a; 我们都知道如果要在android上面使用rknn推理模型需要按照如下的步骤&#xff1a; 详细请参考笔者的文章&#xff1a;Android11-rk3566平台上采用NCNN&#xff0c;RKNN框架推理yolo11官方模型的具体步骤以及性能比较-CSDN博客 简而言之就是 模型转换&#…

Java多线程知识小结:Synchronized

在Java中&#xff0c;synchronized 关键字是实现线程同步的核心工具&#xff0c;用于保证同一时刻只有一个线程可以执行被修饰的代码块或方法。以下从基本原理、锁升级过程、应用场景及优化建议四个维度详细解析&#xff1a; 一、基本原理 1. 同步的对象 synchronized 锁的是对…

MTK项目wifi.cfg文件如何配置的Tput和功耗参数

下面的MTK参数主要与无线网络(Wi-Fi)配置相关,特别是与WMM(Wi-Fi Multimedia)和功率控制相关的设置 WMM相关参数: WmmParamCwMax/WmmParamCwMin:定义竞争窗口的最大/最小值,这里设置为10/4,用于控制信道访问的退避机制13 WmmParamAifsN:仲裁帧间间隔数,设置为3影响不同…