政安晨:【深度学习神经网络基础】(二)—— 神经元与层

政安晨的个人主页政安晨

欢迎 👍点赞✍评论⭐收藏

收录专栏政安晨的机器学习笔记

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

神经元是深度学习神经网络中的基本单元,模拟了生物神经系统中的神经元。

它接收输入信号,并通过激活函数进行非线性转换,然后将转换后的信号传递给下一层神经元或输出。神经元具有一组可学习的权重,它们用于加权输入信号。

神经网络的层是由多个神经元组成的,这些神经元之间相互连接。

在神经网络中,通常有输入层、隐藏层和输出层。输入层接收外部输入数据,并将其传递给下一层。隐藏层是介于输入层和输出层之间的层,根据不同的网络结构可以有多个隐藏层。输出层则产生最终的预测结果。

神经元与层的组织方式使得神经网络可以进行复杂的非线性函数逼近和模式识别。通过对不同层的神经元的权重进行训练优化,神经网络可以学习到输入数据的复杂特征,并根据这些特征进行预测或分类。深度学习神经网络的好处之一就是能够通过增加网络的深度和神经元的数量来提高模型的表达能力和性能。


神经元

大多数神经网络结构使用某种类型的神经元。存在许多结构不同的神经网络,程序员一直在引入实验性的神经网络结构。即便如此,也不可能涵盖所有的神经网络结构。但是,神经网络实现之间存在一些共性。如果一个算法被称为神经网络,那么它通常将由单独的、相互连接的单元组成,尽管这些单元可能被称为神经元,也可能未被称为神经元。实际上,神经网络处理单元的名称在不同的文献中有所不同,它可以被称为节点、神经元或单元。

下图展示了单个人工神经元的抽象结构。

人工神经元从一个或多个来源接收输入,该来源可以是其他神经元,也可以是计算机程序提供给该网络的数据。

输入通常是浮点数或二元值。通常将真(true)和假(false)表示为1和0,从而将二元值输入编码为浮点数。有时,程序还将二元值输入编码体现为双极性系统,即将真表示为1,假表示为−1。

人工神经元将每个输入乘以权重。然后,将这些乘积相加,并将和传递给激活函数。有些神经网络不使用激活函数。

下面公式总结了神经元的计算输出:

在上面公式中,变量x和代w表神经元的输入和权重。变量i代表权重和输入的数量。输入的数量和权重的数量必须总是相同的。每个权重乘以其各自的输入,然后将这些乘积乘以一个激活函数,该函数由希腊字母φ(phi)表示。这个过程使神经元只有单个输出。

上图展示了只有一个构建块的结构。你可以将许多人工神经元链接在一起,构建人工神经网络。也可以将人工神经元视为构建块,将输入和输出圆圈视为连接块。

下图展示了由3个神经元组成的简单人工神经网络:

简单人工神经网络

上图展示了3个相互连接的神经元。这个图的本质是,上上张图中减去一些输入,重复3次然后连接。它总共有4个输入和1个输出。神经元N1和N2的输出提供给N3,以产生输出O。为计算上图的输出,我们执行3次上面列出的公式。前两次计算N1和N2,第三次使用N1和N2的输出来计算N3。

神经网络通常不会显示到如上图那样的详细程度。为了简化该图,我们可以省略激活函数和中间输出。简化的人工神经网络如下图所示:

简化的人工神经网络

在上图中,你会看到神经网络的两个附加组件。

首先,考虑输入和输出,它们显示为抽象的虚线圆。输入和输出可以是更大的神经网络的一部分。但是,输入和输出通常是特殊类型的神经元,输入神经元从使用该神经网络的计算机程序接收数据,而输出神经元会将结果返回给程序。这种类型的神经元称为输入神经元和输出神经元。

我们将在后面的文章中讨论这些神经元。

上图还展示了神经元的分层排列。

输入神经元是第一层,N1和N2神经元创建了第二层,第三层包含N3,第四层包含O。尽管大多数神经网络将神经元排列成层,但并非总是如此。Stanley(2002)引入了一种神经网络架构,称为“增强拓扑神经进化”(NeuroEvolution of Augmenting Topologies,NEAT)。NEAT神经网络可以具有非常杂乱的非分层架构。

形成一层的神经元具有几个特征。

首先,层中的每个神经元具有相同的激活函数。但是,不同的层可能具有不同的激活函数。

其次,各层完全连接到下一层。换言之,一层中的每个神经元都与上一层中的每个神经元有连接。上图所示网络不是完全连接的,有几层缺少连接,如I1和N2不连接。下图所示神经网络是上图的新版本,它已完全连接,并多了一个神经元N4。

完全连接的神经网络

在上图中,你可以看到一个完全连接的多层神经网络。神经网络总是有输入层和输出层。隐藏层的数量决定了神经网络结构的名称。上图中所示的神经网络是一个两层神经网络。大多数神经网络有0~2个隐藏层。除非你实现了深度学习策略,否则很少有具有两个以上隐藏层的神经网络。你可能还会注意到,箭头始终从输入指向输出,向下或向前。这种类型的神经网络通常称为“前馈神经网络”。在咱们这个系列文章的后面,我们将看到在神经元之间形成反向循环的循环神经网络。

神经元的类型

上面咱们简要介绍了存在不同类型的神经元的思想。现在,我们将解释文中描述的所有神经元类型。

并非每个神经网络都会使用每种类型的神经元。单个神经元也有可能扮演几种不同神经元类型的角色:

输入和输出神经元

几乎每个神经网络都有输入和输出神经元。

输入神经元接收来自程序的神经网络数据。

输出神经元将处理后的数据从神经网络返回给程序。

这些输入和输出神经元将由程序分组为单独的层,分组后的层称为输入和输出层。但是,对于某些神经网络结构,神经元可以同时充当输入和输出。霍普菲尔德神经网络就是这样的一个示例,其中神经元既是输入又是输出,以后咱们会详细介绍。

程序通常将神经网络的输入表示为数组,即向量。向量中包含的元素数量必须等于输入神经元的数量。例如,具有3个输入神经元的神经网络可以接收以下输入向量:

 神经网络通常接收浮点数向量作为其输入。同样,神经网络将输出一个向量,其长度等于输出神经元数量。输出通常是来自单个输出神经元的单个值。为了保持一致,我们将单输出神经元网络的输出表示为单个元素的向量。

请注意,输入神经元没有激活函数。如上面第一张图所示,输入神经元只不过是占位符,简单地对输入进行加权和求和。此外,如果神经网络具有既是输入,又是输出的神经元,那么神经网络的输入和输出向量的大小相同。

隐藏神经元

隐藏神经元具有两个重要特征

首先,隐藏神经元仅接收来自其他神经元的输入,例如输入神经元或其他隐藏神经元。

其次,隐藏神经元仅输出到其他神经元,例如输出神经元或其他隐藏神经元。

隐藏神经元可以帮助神经网络理解输入,并形成输出。但是,它们没有直接连接到输入数据或最终输出。隐藏神经元通常被分组为完全连接的隐藏层。

程序员面临的一个常见问题,就是神经网络中隐藏神经元的数量有多少。由于这个问题的答案很复杂,因此作者的各类文章中多少都有讨论——对隐藏神经元的数量进行相关讨论。在引入深度学习之前,通常人们建议,除了单个隐藏层以外,其他任何东西都是多余的。

研究证明,单层神经网络可以用作通用逼近器(universal approximator)。换言之,只要该神经网络在单层中具有足够的隐藏神经元,它就应该能够学会从任何输入产生(或近似产生)任何输出。

研究者过去忽视其他隐藏层的另一个原因在于,这些层会阻碍神经网络的训练。训练是指确定良好权重的过程。在研究者引入深度学习技术之前,我们根本没有一种有效的方法来训练深度神经网络,即具有大量隐藏层的神经网络。尽管理论上单隐藏层神经网络可以学习任何内容,但深度学习有助于表示数据中更复杂的模式。

偏置神经元

程序员向神经网络添加偏置神经元(bias neurons),以帮助它们学习模式。偏置神经元的功能类似于总是产生值1的输入神经元。由于偏置神经元的输出恒定为1,因此它们没有连接到上一层。值1称为偏置激活,也可以将它设置为1以外的值,但是,1是最常见的偏置激活。并非所有的神经网络都有偏置神经元。

下图展示了带有偏置神经元的单层神经网络。

从上图可以看出除输出层外,每层都包含一个偏置神经元。偏置神经元允许激活函数的输出发生偏移。在以后讨论激活函数时,我们将清楚地看到这种偏移发生的方式。

上下文神经元

上下文神经元用于循环神经网络。

这种类型的神经元允许神经网络保持状态,因此,给定的输入可能并不总是产生完全相同的输出。

这种不一致类似于生物大脑的运作。

请考虑当听到喇叭声时,上下文因素如何影响你的反应。如果你在过马路时听到喇叭声,则可能会感到震惊,停止行走并朝喇叭声传来的方向看。

如果你在电影院观看动作类、冒险类电影时听到喇叭声,你的反应就不会完全一样。

因此,先前的输入为你提供了处理喇叭声输入的上下文。

时间序列是上下文神经元的一种应用

你可能需要训练神经网络来学习输入信号,从而执行语音识别或预测安全价格的趋势。

上下文神经元是神经网络处理时间序列数据的一种方法。

下图展示了上下文神经元如何在神经网络中排列

这个神经网络具有单个输入和输出神经元。

在输入层和输出层之间是两个隐藏神经元和两个上下文神经元。除了两个上下文神经元,该神经网络与本文中先前的神经网络相同。

每个上下文神经元都有一个从0开始的值,并且始终从神经网络的先前使用中接收隐藏1或隐藏2的副本。上图中的两条虚线表示上下文神经元是直接副本,没有其他权重。其他线表明输出由列出的6个权重值之一加权。仍然使用上述公式以相同的方式计算输出。输出神经元的值将是所有4个输入分别乘以它们的权重后的总和,并应用激活函数的结果。

有一种神经网络名为简单循环神经网络(Simple Recurrent Neural Network,SRN),它使用了上下文神经元。若当神经网络(Jordan neural network)和埃尔曼网络(Elman neural nebwork)是两种最常见的简单循环神经网络。上图展示了埃尔曼神经网络。

以后咱们应该也会有机会探讨这两种类型的简单循环神经网络。

其他神经元名称

组成神经网络的各个单元并不总是称为神经元。研究者有时会将其称为节点或单元。在咱们这个基础系列文章的后续内容中,我们将探讨深度学习,它利用了玻尔兹曼机来替代神经元的作用。

总之,

无论神经元的类型如何,神经网络几乎总是由这些神经元之间的加权连接构成的。


咱们这一篇就到这里。

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

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

相关文章

CheatFetcher风灵月影修改器快速下载器

地址:https://github.com/MartinxMax/CheatFetcher/releases/tag/v1.0 CheatFetcher网络爬虫风灵月影作弊器快速下载器 采用翻译接口,实现输入中文转为英文搜索,并且英文结果转为中文输出你可以在此更快的下载到游戏修改器 示例 打开cmd窗口,或者其他终端运行 >CheatFe…

C++:变量和常量(3)

变量 什么是变量:变量就是一个装东西的盒子 通俗:变量是用于存放数据的容器。我们通过变量名获取数据,甚至数据可以修改 变量的作用:给指定的内存空间起名,后期通过起的名字就可以调用整个内存空间 定义变量的格式 &a…

AXI Memory Mapped to PCI Express 学习笔记(四)——仿真设计

本文包含有关Vivado Design Suite中对AXI Memory Mapped to PCI Express core进行仿真的示例设计信息。 一、仿真设计概述 在仿真设计中,事务是从Root Port模型发送到配置为Endpoint的AXI Memory Mapped to PCI Express core,并在AXI块RAM控制器设计中…

基于模糊控制算法的倒立摆控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 对倒立摆模型进行模糊控制器simulink建模,利用倒立摆的摆角角度与小车的位置来控制小车的推力,控制了倒立摆的摆角问题,使得小车最终停在稳…

SpringBoot实现RabbitMQ的WorkQueue(SpringAMQP 实现WorkQueue)

文章目录 1. 前言2. 思路3. 消息发送4. 消息接收4.1 能者多劳 总结 1. 前言 上一篇文章,实现了用 SpringBoot实现RabbitMQ的简单队列, 篇文章 操作 用SpringBoot实现RabbitMQ的WorkQueue(SpringAMQP 实现WorkQueue) Work queues,也被称为(Task queues&…

Python Flask-Mail实现邮件发送

一、邮件发送的扩展 关于如何找到flask发送邮件的插件?,上一篇已经分享了如何找到第三方插件,也找到了插件flask-mail的使用文档,那我们就来实战吧 二、根据文档,总结发送邮件的流程 从文档中可以总结出发送邮件的步…

springboot-vue前后端分离项目实例

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【C语言】Infiniband驱动pci_pcie_cap

一、注释 //include\linux\compat-2.6.h #define LINUX_BACKPORT(__sym) backport_ ##__sym//include\linux\compat-2.6.33.h #define pci_pcie_cap LINUX_BACKPORT(pci_pcie_cap)/*** pci_pcie_cap - 获取保存的PCIe能力偏移* dev: PCI 设备** PCIe能力偏移在PCI设备初始化时…

实例、构造函数、原型、原型对象、prototype、__proto__、原型链……

学习原型链和原型对象,不需要说太多话,只需要给你看看几张图,你自然就懂了。 prototype 表示原型对象__proto__ 表示原型 实例、构造函数和原型对象 以 error 举例 图中的 error 表示 axios 抛出的一个错误对象(实例&#xff0…

基于springboot的车辆充电桩管理系统

开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven…

【Postman如何进行接口测试简单详细操作实例】

1、下载Postman postman下载地址:Download Postman | Get Started for Free 2、安装Postman (1)双击下载好的postman-setup.exe文件,进行安装postman工具 (2)安装完成后,在桌面找到并打开postman软件,输入邮箱和密码进行登录&a…

【前端面试3+1】03深拷贝浅拷贝、let和var、css盒模型、【有效括号】

一、深拷贝浅拷贝 深拷贝和浅拷贝都是用于复制对象或数组的概念,但它们之间有着重要的区别: 1. 浅拷贝: 浅拷贝是指在拷贝对象或数组时,只会复制一层对象的属性或元素,而不会递归地复制嵌套的对象或数组。因此&#xf…

只用一部手机,为你的吉利车机安装第三方软件(支持大部分车型)

💡 文中使用的方法为DNS重定向,需要你具备一定的动手能力,否则将无法达到最终目的。 💡 阅读本文,视为你有一定电脑基础,难以理解时,请寻求百度帮助,百度就是最好的老师!…

Redis命令-String命令

4.3 Redis命令-String命令 String类型,也就是字符串类型,是Redis中最简单的存储类型。 其value是字符串,不过根据字符串的格式不同,又可以分为3类: string:普通字符串int:整数类型&#xff0…

小米HyperOS 澎湃os机型免答题 免社区等级 秒接bl锁操作步骤解析

小米机型解锁bl 绕过社区等级5才可以解锁的限制的教程_没有五级社区怎么解锁bl-CSDN博客 上次解析了小米有些出厂不是HyperOS系统的机型绕社区等级接bl锁的操作。目前有更新出厂为HyperOS系统的机型免社区登录等级限制 免答题解锁bl的操作。而且有网友在米14 平板6sp k70这些新…

【MySQL】5.2MySQL高级语句与sql语句

模板 test、class、class0 mysql> select * from test; -------------------------------- | idcard | name | age | hobbid | -------------------------------- | 01 | lizi | 18 | guangjie | | 02 | monor | 22 | zhaijia | | 03 | sansan | …

【Java程序设计】【C00388】基于(JavaWeb)Springboot的校园竞赛管理系统(有论文)

Springboot的校园竞赛管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,博客…

Fastjson配置消息转换器(时间格式问题)

问题: 我们可以看见,日期的格式有点问题。 由于ArticleListVO类的createTime成员变量是Date类型,默认是由java的Jackson来处理,使用 ISO-8601 规范来处理日期时间格式。ISO-8601 是一种国际标准的日期时间表示法,例如&…

pt-archiver的实践分享,及为何要用 ob-archiver 归档数据的探讨

作者简介:肖杨,软件开发工程师 在数据密集型业务场景中,数据管理策略是否有效至关重要,它直接关系到系统性能与存储效率的提升。数据归档作为该策略的关键环节,不仅有助于优化数据库性能,还能有效降低存储成…

HarmonyOS实战开发-为应用添加运行时权限

介绍 通过AbilityAccessCtrl动态向用户申请“允许不同设备间的数据交换”的权限,使用设备管理实例获取周边不可信设备列表。 说明: 查询周边不可信设备之前,请确保本设备与周边设备未进行配对。如果已配对,则恢复出厂设置之后重新…