神经网络基础与人工神经网络

2024-04-05 20:38

本文主要是介绍神经网络基础与人工神经网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

神经网络基础与人工神经网络

神经网络方面的研究很早就已出现,今天“神经网络”已是一个相当大的、多学科交叉的学科领域。神经网络中最基本的成分是神经元模型。

神经网络

上图中每个圆圈都是一个神经元,每条线表示神经元之间的连接。我们可以看到,上面的神经元被分成了多层,层与层之间的神经元有连接,而层内之间的神经元没有连接。

感知器

为了理解神经网络,我们应该先理解神经网络的组成单元——神经元。神经元也叫做感知器。还记得之前的线性回归模型中权重的作用吗?每一个输入值与对应权重的乘积之和得到的数据或通过激活函数来进行判别。下面我们看一下感知器:

感知器

可以看到,一个感知器有如下组成部分:

  • 输入权值,一个感知器可以有多个输入x_1,x_2,x_3...x_nx​1​​,x​2​​,x​3​​...x​n​​,每个输入上有一个权值w_iw​i​​
  • 激活函数,感知器的激活函数有许多选择,以前用的是阶跃函数,sigmoid\left(\frac{1}{1+e^{w*x}}\right)sigmoid(​1+e​w∗x​​​​1​​),其中zz为权重数据积之和
  • 输出,y{=}f\left({w*x}{+}{b}\right)y=f(w∗x+b)

我们了解过sigmoid函数是这样,在之前的线性回归中它对于 二类分类 问题非常擅长。所以在后续的多分类问题中,我们会用到其它的激活函数

sigmoid

神经网络

那么我们继续往后看,神经网络是啥?

多层神经网络

神经网络其实就是按照一定规则连接起来的多个神经元。

  • 输入向量的维度和输入层神经元个数相同
  • 第N层的神经元与第N-1层的所有神经元连接,也叫 全连接
  • 上图网络中最左边的层叫做输入层,负责接收输入数据;最右边的层叫输出层,可以有多个输出层。我们可以从这层获取神经网络输出数据。输入层和输出层之间的层叫做隐藏层,因为它们对于外部来说是不可见的。
  • 而且同一层的神经元之间没有连接
  • 并且每个连接都有一个权值,

那么我们以下面的例子来看一看,图上已经标注了各种输入、权重信息。

权重神经网络

对于每一个样本来说,我们可以得到输入值x_1,x_2,x_3x​1​​,x​2​​,x​3​​,也就是节点1,2,3的输入值,那么对于隐层每一个神经元来说都对应有一个偏置项bb,它和权重一起才是一个完整的线性组合

{a_4}{=}sigmoid\left({W_{41}* x_1}{+}{W_{42}* x_2}{+}{W_{43}* x_3}{+}{W_{4b}}\right)a​4​​=sigmoid(W​41​​∗x​1​​+W​42​​∗x​2​​+W​43​​∗x​3​​+W​4b​​)

{a_5}{=}sigmoid\left({W_{51}* x_1}{+}{W_{52}* x_2}{+}{W_{53}* x_3}{+}{W_{5b}}\right)a​5​​=sigmoid(W​51​​∗x​1​​+W​52​​∗x​2​​+W​53​​∗x​3​​+W​5b​​)

{a_6}{=}sigmoid\left({W_{61}* x_1}{+}{W_{62}* x_2}{+}{W_{63}* x_3}{+}{W_{6b}}\right)a​6​​=sigmoid(W​61​​∗x​1​​+W​62​​∗x​2​​+W​63​​∗x​3​​+W​6b​​)

{a_7}{=}sigmoid\left({W_{71}* x_1}{+}{W_{72}* x_2}{+}{W_{73}* x_3}{+}{W_{7b}}\right)a​7​​=sigmoid(W​71​​∗x​1​​+W​72​​∗x​2​​+W​73​​∗x​3​​+W​7b​​)

这样得出隐层的输出,也就是输出层的输入值.

矩阵表示

矩阵表示隐层输出

同样,对于输出层来说我们已经得到了隐层的值,可以通过同样的操作得到输出层的值。那么重要的一点是,分类问题的类别个数决定了你的输出层的神经元个数

神经网络的训练

我们可以说神经网络是一个模型,那么这些权值就是模型的参数,也就是模型要学习的东西。然而,一个神经网络的连接方式、网络的层数、每层的节点数这些参数,则不是学习出来的,而是人为事先设置的。对于这些人为设置的参数,我们称之为超参数。

前向传播

神经网络的训练类似于之前线性回归中的训练优化过程。前面我们已经提到过梯度下降的意义,我们可以分为这么几步:

  • 计算结果误差

  • 通过梯度下降找到误差最小

  • 更新权重以及偏置项

这样我们可以得出每一个参数在进行一次计算结果之后,通过特定的数学理论优化误差后会得出一个变化率\alphaα

反向传播

就是说通过误差最小得到新的权重等信息,然后更新整个网络参数。通常我们会指定学习的速率\lambdaλ(超参数),通过 变化率和学习速率 率乘积,得出各个权重以及偏置项在一次训练之后变化多少,以提供给第二次训练使用

学习率

tensorflow神经网络接口的实现

tf.train.GradientDescentOptimizer

在使用梯度下降时候,一般需要指定学习速率

tf.train.GradientDescentOptimizer(0.5)

方法

init

构造一个新的梯度下降优化器

__init__(learning_rate,use_locking=False,name='GradientDescent'
)
  • learning_rate tensor或者浮点值,用于学习速率

minimize

添加操作以更新最小化loss,这种方法简单结合调用compute_gradients()和 apply_gradients()(这两个方法也是梯度下降优化器的方法)。如果要在应用它们之前处理梯度,则调用compute_gradients()和apply_gradients()显式而不是使用此函数。

minimize(loss,global_step=None,var_list=None,gate_gradients=GATE_OP,aggregation_method=None,colocate_gradients_with_ops=False,name=None,grad_loss=None
)
  • loss 损失值,变量值
  • global_step 变量,在每次更新之后加1

这篇关于神经网络基础与人工神经网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/878088

相关文章

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

Python WebSockets 库从基础到实战使用举例

《PythonWebSockets库从基础到实战使用举例》WebSocket是一种全双工、持久化的网络通信协议,适用于需要低延迟的应用,如实时聊天、股票行情推送、在线协作、多人游戏等,本文给大家介... 目录1. 引言2. 为什么使用 WebSocket?3. 安装 WebSockets 库4. 使用 We

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Python 函数详解:从基础语法到高级使用技巧

《Python函数详解:从基础语法到高级使用技巧》本文基于实例代码,全面讲解Python函数的定义、参数传递、变量作用域及类型标注等知识点,帮助初学者快速掌握函数的使用技巧,感兴趣的朋友跟随小编一起... 目录一、函数的基本概念与作用二、函数的定义与调用1. 无参函数2. 带参函数3. 带返回值的函数4.

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas