全连接神经网络算法原理(激活函数、前向传播、梯度下降法、损失函数、反向传播)

本文主要是介绍全连接神经网络算法原理(激活函数、前向传播、梯度下降法、损失函数、反向传播),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

        • 前言
        • 1、全连接神经网络的整体结构:
          • 全连接神经网络模型是由输入层、隐藏层、输出层所组成,全连接神经网络结构如下图所示:
          • 全连接神经网络的每一层都是由一个一个的神经元所组成的,因此只要搞清楚神经元的本质就可以搞清楚全连接神经网络了。如图下所示,这是一个全连接神经网络神经元的模型图:
        • 2、激活函数
          • 2.1、Sigmoid函数
          • 2.2、Tanh函数
          • 2.3、ReLU函数
          • 2.4、Leaky ReLU函数
          • 2.5、SoftMax激活函数
        • 3、前向传播
        • 4、损失函数:
        • 5、梯度下降法:
        • 6、反向传播:

前言

全连接神经网络是学习深度学习的基础,其中最重要的原因是,全连接神经网络利用了反向传播算法进行参数更新,使得神经网络可以通过不断喂给数据进行参数更新达到不断学习的目的,反向传播算法是梯度下降法在深度神经网络上的具体实现方式。反向传播算法其原理就是利用梯度下降法来不断更新神经网络的参数,目前几乎所有的神经网络参数的更新的方式都是利用的梯度下降法或者经过优化的梯度下降法。
  
神经网络可以帮助我们做什么呢?目前可以解决两类任务,分类任务和回归任务:

  • 分类任务就是对输入的数据特征进行学习,输出是对应输入数据预测类别,比如输入一些猫和狗的数据并对其进行学习,现在输入一张新的图片,判断图中的图片是否是猫还是狗;
  • 回归任务就是对输入的数据特征进行学习,输出是对应输入数据的预测值,比如输入历史的天气数据相关特征进行学习,现在输入一段历史的天气数据相关特征数据,输出第二日的温度预测值;
1、全连接神经网络的整体结构:
全连接神经网络模型是由输入层、隐藏层、输出层所组成,全连接神经网络结构如下图所示:

请添加图片描述

全连接神经网络的每一层都是由一个一个的神经元所组成的,因此只要搞清楚神经元的本质就可以搞清楚全连接神经网络了。如图下所示,这是一个全连接神经网络神经元的模型图:

请添加图片描述
该神经元的数学表达式:a = h( w∗x + b )

  • b为偏置,用于控制神经元被激活的容易程度;
  • w表示各个信号的权重,用于控制各个信号的重要性;
  • h()为激活函数,是一种非线性函数;

为什么神经网络都要加上激活函数,同时该激活函数为什么要一定是非线性的呢?

如果神经网络中没有使用非线性激活函数,无论堆叠多少层神经元,整个网络的输出都将是输入的线性组合,这样多层神经网络将等同于单层神经网络,无法发挥多层网络带来的优势;

2、激活函数

在神经网络中比较常用的激活函数有Sigmoid函数、Tanh函数、ReLU函数、Leaky ReLU函数、softmax函数;

2.1、Sigmoid函数

Sigmoid函数最早是在逻辑回归中提到的,它作为解决二分类的问题出场。其值域是在[0,1]之间,输出的值可以作为分类的概率。

Sigmoid函数的公式和导数如下式所示:
请添加图片描述
Sigmoid函数优点:
  1、简单、非常适用分类任务;
Sigmoid函数缺点:
  1、反向传播训练时有梯度消失的问题;
  2、输出值区间为(0,1),关于0不对称;
  3、梯度更新在不同方向走得太远,使得优化难度增大,训练耗时;

2.2、Tanh函数

函数表达式和其对应的导数表达式如下式所示:

Tanh函数,其输出值在区间 [-1, 1]
请添加图片描述

Tanh函数优点:
1、解决了Sigmoid函数输出值非0对称的问题;
2、训练比Sigmoid函数快,更容易收敛;
Tanh函数缺点:
1、反向传播训练时有梯度消失的问题;
2、Tanh函数和Sigmoid函数非常相似;

2.3、ReLU函数

ReLU函数是目前在神经网络使用最流行的激活函数。其函数表达式和其对应的导数非常简单:
请添加图片描述

ReLU函数优点:
  1、解决了梯度消失的问题;
  2、计算更为简单,没有Sigmoid函数和Tanh函数的指数运算;
ReLU函数缺点:
  1、训练时可能出现神经元死亡;

2.4、Leaky ReLU函数

Leaky ReLU函数是ReLU函数的变体。其函数和对应导数的表达式为:
请添加图片描述
Leaky ReLU函数优点:
  1、解决了ReLU的神经元死亡问题;
Leaky ReLU函数缺点:
  1、无法为正负输入值提供一致的关系预测(不同区间函数不同);

2.5、SoftMax激活函数

SoftMax函数通常被用在多分类网络模型中,其表达式如下:
请添加图片描述
SoftMax函数的值域是在[0,1]之间的,并且存在多个输出,例如是一个5分类的任务,那么SoftMax函数最终的输出是对应每个类别的的概率,同时这5个类别对应的概率相加最终的结果为1。因此在多分类任务的场景下,神经网络的最后一层一般都是使用SoftMax函数来作为激活函数。

3、前向传播

神经网络的输出是通过前向传播最后输出的,前向传播是将数据特征作为输入,输入到隐藏层,将数据特征和对应的权重相乘同时再和偏置进行求和,将计算的结果通过激活函数进行激活,将激活函数输出值作为下一层神经网络层的输入再和对应的权重相乘同时和对应的偏置求和,再将计算的结果通过激活函数进行激活,不断重复上述的过程直到神经网络的输出层,最终得到神经网络的输出值。
请添加图片描述

4、损失函数:

损失函数:我们要计算所有数据真实值和输出值之间的误差和并计算出平均值,这个函数称为均方误差函数,也是线性回归模型的损失函数;
请添加图片描述

5、梯度下降法:

场景:在一个漆黑的夜晚,一个人要下山,但是他完全看不到周围的环境,只能通过手去感知。因此这个人就想到一个办法,朝着自己的四周去摸山体的坡度,如果摸到一个方法的坡度是向下的并且也是最陡峭的,那么就走到这个手摸到的位置,就是通过这样的方法不断一步一步的走,这个人终于走到了山底。具体可以想象成右图,那个黑点就是人。
请添加图片描述

6、反向传播:

神经网络的反向传播不断更新神经网络的w和b,从而使得神经网络的输出和真实label不断的逼近,损失函数也不断的逼近0,所以我们常常将模型的训练轮次和损失值变化画图,显示出来,如果损失值在一定的轮次后趋于平缓不再下降,那么就认为模型的训练已经收敛了;

反向传播的作用,就是用来不断更新神经网络的w和b,从提高神经网络的预测准确率;

模型的训练轮次和损失值变化画图:
请添加图片描述

这篇关于全连接神经网络算法原理(激活函数、前向传播、梯度下降法、损失函数、反向传播)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2