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

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

文章目录

        • 前言
        • 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

相关文章

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

java连接opcua的常见问题及解决方法

《java连接opcua的常见问题及解决方法》本文将使用EclipseMilo作为示例库,演示如何在Java中使用匿名、用户名密码以及证书加密三种方式连接到OPCUA服务器,若需要使用其他SDK,原理... 目录一、前言二、准备工作三、匿名方式连接3.1 匿名方式简介3.2 示例代码四、用户名密码方式连接4

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

MySQL 表的内外连接案例详解

《MySQL表的内外连接案例详解》本文给大家介绍MySQL表的内外连接,结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录表的内外连接(重点)内连接外连接表的内外连接(重点)内连接内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以