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

news2024/9/30 7:23:57

政安晨的个人主页政安晨

欢迎 👍点赞✍评论⭐收藏

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

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

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

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

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

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

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


神经元

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

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

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

输入通常是浮点数或二元值。通常将真(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.coloradmin.cn/o/1550294.html

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

相关文章

淘宝详情数据采集(商品上货,数据分析,属性详情,价格监控),海量数据值得get

淘宝详情数据采集涉及多个环节,包括商品上货、数据分析、属性详情以及价格监控等。在采集这些数据时,尤其是面对海量数据时,需要采取有效的方法和技术来确保数据的准确性和完整性。以下是一些关于淘宝详情数据采集的建议: 请求示…

DevSecOps平台架构系列-互联网企业私有化DevSecOps平台典型架构

目录 一、概述 二、私有化DevSecOps平台建设思路 2.1 采用GitOps公有云建设 2.2 采用GitOps私有云建设 2.3 总结 三、GitOps及其生态组件 3.1 采用GitOps的好处 3.1.1 周边生态系统齐全 3.1.2 便于自动化的实现 3.1.3 开发人员属性GitOps 3.2 GitOps部分生态组件介绍…

红黑树的Java实现

红黑树的Java实现 文章目录 红黑树的Java实现一、概述二、添加元素三、删除元素四、完整代码总结 一、概述 红黑树也是一种二叉平衡搜索树,向比与AVL树,是一种弱平衡树。因为AVL树是通过平衡因子,左右树的高度相差不能大于1来保证平衡&#…

实测梳理一下kafka分区分组的作用

清空topickafka-topics.sh --bootstrap-server localhost:9092 --delete --topic second创建分区kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 3 --topic second发kafka-console-producer.sh --bootstrap-server localhos…

ospf实验

基础配置 如上图所示,按照上图所示的配置,俩个路由器之间按照12.12.12.X/30网段配置,左端的路由器和交换机之间按照192.168.1.X网段配置,右端的路由器和交换机之间按照192.168.2.X网段配置,下面的两个pc机按照所对应的…

Java 学习和实践笔记(48):怎样用二维数组来存储表格数据?

怎样用数组的方式,来存储下面这个表格的数据? 示例代码如下: import java.util.Arrays;public class Test001 {public static void main(String[] args) {/*object类对象是类层次结构的根。每个类都有Object作为超类。所有对象,包…

使用llamafile 构建本地大模型运用

安装 https://github.com/Mozilla-Ocho/llamafile 下载 大模型文件,选择列表中任意一个 wget https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4.llamafile?downloadtrue https://github.com/Mozilla-Ocho/llamafile?tabre…

软件部署资源计算工具:精确评估资源需求

软件部署资源计算工具:精确评估资源需求 在当今快速发展的信息技术时代,软件部署已成为企业运营不可或缺的一部分。然而,一个常见的挑战是如何精确评估软件部署所需的资源。资源评估不仅关系到软件的性能和稳定性,还直接影响到成…

区块链食品溯源案例实现(二)

引言 随着前端界面的完成,我们接下来需要编写后端代码来与区块链网络进行交互。后端将负责处理前端发送的请求,调用智能合约的方法获取食品溯源信息,并将结果返回给前端。 通过前后端的整合,我们可以构建一个食品溯源系统&#xf…

【第三方登录】Twitter

创建应用 APPID 和 相关回调配置 重新设置api key 和 api secret 设置回调和网址 还有 APP的类型 拿到ClientID 和 Client Secret 源码实现 获取Twitter 的登录地址 public function twitterUrl() {global $db,$request,$comId;require "inc/twitter_client/twitte…

2018年亚马逊云科技推出基于Arm的定制芯片实例

2018年,亚马逊云技术推出了基于Arm的定制芯片。 据相关数据显示,基于Arm的性价比比基于x86的同类实例高出40%。 这打破了对 x86 的依赖,开创了架构的新时代,现在能够支持多种配置的密集计算任务。 这些举措为亚马逊云技术的其他创…

《数据结构学习笔记---第三篇》---单链表具体实现

目录 1.链表 1.1 链表的概念及结构 2.不带头单链表的实现 2.1创建头文件“SList.h” 2.2 创建具体接口实现文件SList.c 2.2.1打印 2.2.2申请链表结点 2.2.3创建一个长度为n的链表 2.2.4尾插尾删 2.2.5头插头删 2.2.6寻找x元素,返回pos 2.2.7插入和删除pos…

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

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

【Linux】Ubuntu20.04解决网卡、显卡驱动不正确的问题

文章目录 1、概述2、问题描述2.1、快捷栏无无线设置2.2、设置中无Wifi设置专栏2.3、接入外接屏幕无作用 3、网卡驱动解决方案3.1、在18.04的旧方法3.1.1、安装源更换3.1.1.1、备份原始安装源3.1.1.2、修改安装源地址3.1.1.3、更新源地址 3.1.2、安装依赖3.1.3、安装编译器3.1.3…

大模型精准度提升调研

如何让ChatGPT更靠谱 1. 预训练大模型概述 关于预训练 预训练(Pre-training)是深度学习中一种常见的技术,特别是在自然语言处理(NLP)和计算机视觉(CV)等领域中。它通常指在一个大型的、通常是…

智能小程序有哪些重要能力?

概念 小程序能力是模块化的,它以kit的形式提供给业务(开发者)。通过kit可以实现快速接入涂鸦生态,获得互联互通的能力。 能力分包 能力分类包名基础能力BaseKit小程序容器能力MiniKit涂鸦内部基础能力以及细粒度通用业务能力Biz…

服务器监控软件夜莺采集监控(三)

文章目录 一、采集器插件1. exec插件2. rabbitmq插件3. elasticsearch插件 二、监控仪表盘1. 系统信息2. 数据服务3. NginxMQ4. Docker5. 业务日志 一、采集器插件 1. exec插件 input.exec/exec.toml [[instances]] commands ["/home/monitor/categraf/scripts/*.sh&q…

区块链食品溯源案例实现(一)

引言: 食品安全问题一直是社会关注的热点,而食品溯源作为解决食品安全问题的重要手段,其重要性不言而喻。传统的食品溯源系统往往存在数据易被篡改、信息不透明等问题,而区块链技术的引入,为食品溯源带来了革命性的变革…

第十篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操作Excel

传奇开心果博文系列 系列博文目录Python自动化办公库技术点案例示例系列博文目录 前言一、重要作用解说二、Python操作Excel的常用库介绍三、数据处理和分析示例代码四、自动化报表生成示例代码五、数据导入和导出示例代码六、数据可视化示例代码八、数据校验和清洗示例代码九、…

数据结构——第5章 树和二叉树

1 二叉树 二叉树和树都属于树形结构,但两者互不包含。即二叉树不是特殊的树。 1.1 二叉树的基本概念 1.2 二叉树的顺序存储 仅适用于完全二叉树 #define MaxSize 100 typedef int ElemType; typedef struct TreeNode{ElemType value;//结点中的数据元素bool isE…