一、神经网络

1.神经网络

  • 定义:人工神经网络(Artificial Neural Network,ANN)也简称为神经网络(NN),是一种模仿生物神经网络结构和功能的计算模型。人脑可以看作是一个生物神经网络,由众多的神经元连接而成。各个神经元传递复杂的电信号,树突接收到输入信号,然后对信号进行处理,通过轴突输出信号。

  • 神经网络中信息只向一个方向移动,即从输入节点向前移动,通过隐藏节点,再向输出节点移动。其中基本部分是:

    • 输入层:即输入x的那一层
    • 输出层:即输出y的那一层
    • 隐藏层:输入层和输出层之间都是隐藏层
  • 特点:

    • 同一层神经网络之间没有连接
    • 第N层的每个神经元和第N-1层的所有神经元相连,这就是全连接神经网络(full connected,fc)
    • 第N-1层神经元的输出就是第N层神经元的输入
    • 每个连接都有一个权重值(w系数和b系数)

2.激活函数

  • 激活函数用于对每层的输出数据(加权和数据)进行变换,进而为整个网络注入了非线性因素。此时,神经网络就可以拟合各种曲线
    • 没有引入非线性因素的网络等价于使用一个线性模型来拟合
    • 通过给网络输出增加激活函数,实现引入非线性因素,使得网络模型可以逼近任意函数,提升网络对复杂问题的拟合能力

(1)sigmiod函数

  • 公式:f(x)=11+e−xf(x) = \frac{1}{1+e^{-x}}f(x)=1+ex1

  • 求导公式:KaTeX parse error: {equation} can be used only in display mode.

  • 缺点:当神经网络的激活处于0, 1位置时,其梯度几乎为0,容易导致梯度消失,此时网络参数将更新极其缓慢,或者无法更新

  • 一般来说,sigmoid网络在5层之类就会产生梯度消失现象。而且,该激活函数并不是以0为中心,所以在实践中很少使用这种激活函数,sigmoid函数一般只用于二分类的输出层

(2)tanh激活函数

  • 公式:f(x)=1−e−2x1+e−2xf(x) = \frac{1-e^{-2x}}{1+e^{-2x}}f(x)=1+e2x1e2x
  • 求导公式:KaTeX parse error: {equation} can be used only in display mode.
  • 其输出值域是(-1, 1),值域范围更大,使之更适合于神经网络的输入层和隐藏层
  • 与sigmoid相比,它是以0为中心的,且梯度相对于sigmoid大,使得其收敛速度要比sigmoid快,减少迭代次数,但当输入值较大时,会导致梯度消失的问题
  • 使用时:可在隐藏层使用tanh函数,在输出层使用sigmoid函数

(3)ReLU激活函数

  • 是目前使用最多的一种激活函数

  • 公式:f(x)=max(0,x)f(x)=max(0, x)f(x)=max(0,x)

  • 求导公式:KaTeX parse error: {equation} can be used only in display mode.

  • 激活函数将小于0的值映射为0,而大于0的值则保持不变,它更加重视正信号,而忽略负信号,这种激活函数运算更为简单,能够提高模型的训练效率

  • 当x<0时,ReLU导数为0,而当x>0时,则不存在饱和问题。所以,ReLU能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。然而,随着训练的推进,部分输入会落入小于0的区域,导致对应权重无法更新,这种现象被称为“神经元死亡”

  • ReLU是目前最常用的激活函数。与sigmoid相比,ReLU的优势是:采用sigmoid函数,计算量大(指数运算),反向传播球误差梯度时,计算量相对大,而采用ReLU激活函数,整个过程的计算量节省很多。sigmoid函数反向传播时,很容易出现梯度消失的情况,从而无法完成深度网络的训练。ReLU会使一部分神经元的输出为0,这样就造成了网络的稀疏性(网络变得简单),并且减少了参数的相互依存关系,缓解了过拟合问题的发生

(4)Softmax函数

  • softmax用于多分类过程中,它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率形式呈现出来

  • 公式:softmax(zi)=ezi∑jejzsoftmax(z_i)=\frac{e^{z_i}}{\sum_je^z_j}softmax(zi)=jejzezi

    • ziz_izi:输出层中每个神经元加权和(logits)
  • Softmax就是将网络输出logits通过softmax函数,就映射成为(0,1)的值,而这些值的累和为1,那么我们将它理解成概率,选取概率最大(也就是值对应最大的节点),作为我们的预测目标类别

(5)激活函数的选择方法

对于隐藏层

  1. 优先选择ReLU激活函数
  2. 如果ReLU效果不好,那么尝试其他激活,如Leaky ReLU等
  3. 如果你使用了ReLU,需要注意一下Dead ReLU问题,避免出现大的梯度导致过多的神经元死亡
  4. 少使用sigmoid激活函数,可以尝试使用tanh激活函数

对于输出层

  1. 二分类问题选择sigmoid激活函数
  2. 多分类问题选择softmax激活函数
  3. 回归问题选择identity激活函数(恒等激活)

3.参数初始化

优先选择kaiming和xavier初始化方式

(1)初始化www

  • 均匀分布初始化:权重参数初始化从区间均匀随机取值。即在(−1d,1d)(-\frac{1}{\sqrt d}, \frac{1}{\sqrt d})(d1,d1)均匀分布中生成当前神经元的权重,其中d为每个神经元的输入数量
  • 正态分布初始化:随机初始化从均值为0,标准差是1的高斯分布中取样,使用一些很小的值对参数W进行初始化

(2)初始化bbb

  • 全0初始化:将神经网络中的所有权重参数初始化为0
  • 全1初始化:将神经网络中的所有权重参数初始化为1
  • 固定值初始化:将神经网络中的所有权重参数初始化为某个固定值

(3)初始化方法改进

  1. kaiming初始化,也叫做HE初始化
    • HE初始化分为正态分布的HE初始化,均匀分布的HE初始化
      • 正态分布的HE初始化:stddev=2fan_instddev = \sqrt{\frac{2}{fan\_in}}stddev=fan_in2
      • 均匀分布的HE初始化:从[-limit, limit]中的均匀分布中抽取样本,limit是6fan_in\sqrt{\frac{6}{fan\_in}}fan_in6
      • fan_infan\_infan_in输入神经元个数
  2. xavier初始化,也叫做Glorot初始化
    • Glorot初始化分为正态分布的xavier初始化,均匀分布的xavier初始化
      • 正态化的xavier初始化:stddev=2fan_in+fan_outstddev=\sqrt{\frac{2}{fan\_in+fan\_out}}stddev=fan_in+fan_out2
      • 均匀分布的Xavier初始化:从[-limit, limit]中的均匀分布中抽取样本,limit是6fan_in+fan_out\sqrt{\frac{6}{fan\_in+fan\_out}}fan_in+fan_out6
      • fan_infan\_infan_in是输入神经元个数,fan_outfan\_outfan_out是输出的神经元个数

4.神经网络搭建和参数计算

(1)模型搭建

  • 在pytorch中定义深度神经网络其实就是层堆叠的过程,继承自nn.Module,实现两个方法
    • _init\_ 方法中定义网络中的层结构,主要是全连接层,并进行初始化
    • forward方法,在实例化模型的时候,底层会自动调用该函数。该函数中可以定义学习率,为初始化定义的layer传入数据等。

(2)网络参数量的统计方法

  • 统计每一层中的权重w和偏置b的数量
from torchsummary import summary
……
summary(my_modelll, input_size=(3, ), batch_size = 8)for name, para in my_model.named_parameters():print(name)print(para)

5.神经网络优缺点

  • 优点
    • 精度高,性能优于其他机器学习方法,甚至在某些领域超过了人类
    • 可以近似任意的非线性函数随之计算机硬件的发展
    • 近年来在学界和业界受到了热捧,有大量的框架和库可调
  • 缺点
    • 黑箱,很难解释模型是怎么工作的
    • 训练时间长,需要大量的算力
    • 网络结构复杂,需要调整超参数
    • 小数据集上表现不佳,容易发生过拟合

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

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

相关文章

ipmitool 使用简介(ipmitool sel list ipmitool sensor list)

常用IPMI命令扩展使用ipmitool查看传感器信息ipmitool是一个用于管理IPMI&#xff08;Intelligent Platform Management Interface&#xff09;设备的命令行工具&#xff0c;可用于监控服务器硬件状态&#xff0c;包括传感器数据。运行以下命令可以列出所有传感器信息&#xff…

小米YU7预售现象深度解析:智能电动汽车的下一个范式革命

小米YU7预售现象深度解析&#xff1a;智能电动汽车的下一个范式革命一、预售数据创造三项行业新纪录 2025年6月26日的小米YU7发布会&#xff0c;不仅刷新了智能汽车预售速度&#xff0c;更揭示了新时代的消费心理变迁&#xff1a; &#xff08;1&#xff09;订单爆发速度史无前…

xlog-Android15适配之16KB对齐

背景 前两天查看Google play控制台突然发现有告警&#xff0c;一看原来是要求必须尽快适配Android15。 过程 先看了一下网上的资料&#xff0c;Android15适配 发现对我的apk基本上没有什么影响&#xff0c;除了 动态库必须16KB对齐这一项。 最简单查看apk是否16KB对齐的方法…

Crazyflie支持MATLAB/Simulink控制 基于NOKOV度量动捕系统实现

Crazyflie支持MATLABSimulink控制 基于NOKOV度量动捕系统实现 一、动捕软件VRPN配置 以动捕软件版本XINGYING 4.2.0.5495为例&#xff0c;其他版本同理。打开动捕软件&#xff0c;连接上镜头。单击菜单栏下的视图->数据广播。在数据广播中的VRPN流下&#xff0c;将单位下拉…

Windows 系统安装与使用 Claude Code 全攻略

Claude Code 作为一款高效的 AI 编程辅助工具&#xff0c;深受开发者青睐&#xff0c;但由于其本身不支持 Windows 文件系统&#xff0c;在 Windows 系统上使用需要借助 WSL&#xff08;适用于 Linux 的 Windows 子系统&#xff09;。下面为你详细介绍在 Windows 系统上安装和使…

如何用Python编程计算权重?

1. 加权平均中的权重计算&#xff08;已知权重值&#xff09; 如果已知各元素的权重&#xff0c;直接用权重乘以对应值后求和。 # 示例&#xff1a;计算加权平均分&#xff08;权重之和为1&#xff09; scores [80, 90, 70] # 各项分数 weights [0.3, 0.5, 0.2] # 对应权重…

WinUI3入门16:Order自定义排序

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

Java 面向对象三大特性详解:封装、继承与多态,掌握OOP核心思想

作为一名Java开发工程师&#xff0c;你一定知道&#xff0c;封装&#xff08;Encapsulation&#xff09;、继承&#xff08;Inheritance&#xff09;和多态&#xff08;Polymorphism&#xff09; 是面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;的三大…

WPS中配置MathType教程

项目场景&#xff1a;在WPS中使用MathType问题描述&#xff1a;MathPage.wll或MathType.dll文件找不到问题原因分析&#xff1a;在C盘wps中的startup中有mathpage.wll,但配置不可用而我的WPS安装在E盘&#xff0c;并且桌面图标启动路径也是E盘路径下的WPS路径&#xff0c;所以不…

基于模板设计模式开发优惠券推送功能以及对过期优惠卷进行定时清理

1.模板设计模式&#xff1a;模板设计模式是一种常见的设计模式&#xff0c;主要作用是对 具体操作的 共有代码块进行提取&#xff0c;提升代码复用性。那么说道代码复用性&#xff0c;首先想到的是抽象类而不是接口。因为抽象类的本质就是为了代码复用&#xff0c;抽象类既可以…

对象的finalization机制Test1

Java语言提供了对象终止(finalization)机制来允许开发人员自定义对象被销毁之前的处理逻辑。当垃圾回收器发现没有引用指向一个对象时&#xff0c;通常接下来要做的就是垃圾回收&#xff0c;即清除该对象&#xff0c;而finalization机制使得在清除此对象之前&#xff0c;总会先…

RJ45 连接器(水晶头)的引脚定义

RJ45连接器核心定义 【】物理结构 8个金属触点&#xff08;Pin 1至Pin 8&#xff09;的透明塑料插头&#xff0c;带塑料卡榫。 引脚编号规则 卡榫朝下&#xff0c;金属触点面向自己时&#xff1a; 最左侧为 Pin 1 最右侧为 Pin 8 顺序&#xff1a;Pin 1 → Pin 2 → Pin 3 → P…

小架构step系列08:logback.xml的配置

1 概述 logback.xml配置文件的详细配置&#xff0c;很多地方都说得比较细&#xff0c;本文主要从几个重点来看一下原理&#xff0c;了解原理能够帮助确定哪些应该配置&#xff0c;以及如何配置。 logback.xml是为打印日志服务的&#xff0c;打印的内容一般打印到控制台(Conso…

STM32中SPI协议详解

前言 在嵌入式系统中&#xff0c;设备间的数据传输协议多种多样&#xff0c;SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外设接口&#xff09;凭借其高速、全双工、易用性等特点&#xff0c;成为连接STM32与高速外设&#xff08;如OLED屏、Flash芯片、AD转换器…

TypeScript 接口全解析:从基础到高级应用

TypeScript 接口全解析&#xff1a;从基础到高级应用在 TypeScript 中&#xff0c;接口是定义数据结构和行为规范的强大工具&#xff0c;它能够显著提升代码的可读性、可维护性和类型安全性。本文将全面讲解 TypeScript 接口的相关知识点&#xff0c;从基础语法到高级特性&…

主存(DRAM)是什么?

主存&#xff08;DRAM&#xff09;是什么&#xff1f; 主存&#xff08;DRAM&#xff09;详解 主存&#xff08;Main Memory&#xff09; 通常由 DRAM&#xff08;Dynamic Random Access Memory&#xff0c;动态随机存取存储器&#xff09; 构成&#xff0c;是计算机系统中用于…

Python 机器学习核心入门与实战进阶 Day 6 - 模型保存与加载(joblib / pickle)

✅ 今日目标 掌握如何将训练好的模型持久化保存到文件熟悉两种主流保存方式&#xff1a;joblib 和 pickle加载模型并应用于新数据预测实现完整的“训练 → 保存 → 加载 → 预测”流程为后续部署做准备&#xff08;如 Flask、FastAPI&#xff09;&#x1f9f0; 一、模型保存工具…

【SigNoz部署安装】Ubuntu环境部署SigNoz:Docker容器化监控的全流程指南

文章目录前言1.关于SigNoz2.本地部署SigNoz3.SigNoz简单使用4. 安装内网穿透5.配置SigNoz公网地址6. 配置固定公网地址前言 在分布式架构主导的现代运维体系中&#xff0c;系统性能监控正面临范式变革的关键转折。当微服务架构遭遇服务雪崩、无服务器架构出现冷启动延迟等复杂…

NV298NV312美光固态闪存NW639NW640

美光固态闪存技术全景解析&#xff1a;从NV298到NW640的深度探索近年来&#xff0c;美光科技凭借其在3D NAND闪存技术上的持续突破&#xff0c;推出了多款备受市场关注的固态硬盘产品。本文将从技术评测、产品对比、市场趋势、用户反馈及应用场景等多个维度&#xff0c;深入剖析…

2025.07.04【服务器】|使用万兆网卡提升服务器间互联速度,实现快速数据传输

文章目录1. **万兆网卡概述**2. **为什么选择万兆网卡**3. **万兆网卡配置与安装**3.1 **安装网卡**3.2 **安装驱动程序**3.3 **检查网卡状态**4. **配置网络接口**4.1 **Linux 系统配置**4.2 **Windows 系统配置**5. **优化性能**5.1 **使用多线程传输**5.2 **开启 TCP/UDP 窗…