深度学习中的一些基础函数

news/2024/11/16 12:46:21/文章来源:https://www.cnblogs.com/guoziheng/p/18332926

激活函数概念

神经网络中每个神经元节点接受上一层神经元的输出值作为本神经元的输入值,并将输入值传给下一层。在多层神经网络中,上层节点的输入在加权求和后与下层节点的输入之间具有一个函数关系,这个函数称为激活函数。

 

 

 激活函数的作用

常见激活函数

 

 

Sigmoid函数单调连续,求导容易,输出有界,网络比较容易收敛。但是我们看到,在远离中心点的位置,Sigmoid函数导数趋于0,在网络非常深的时候,越来越多反向传播的梯度会落入饱和区,从而让梯度的模越来越小。一般来说,Sigmoid网络在5层之内,就会产生梯度退化为0的现象,难以训练。这种现象称为梯度消失现象。另外,Sigmoid的输出并不是以0为中心的。
适合用:Sigmoid 函数的输出范围是 0 到 1。由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化;用于将预测概率作为输出的模型。由于概率的取值范围是 0 到 1,因此 Sigmoid 函数非常合适;梯度平滑,避免「跳跃」的输出值;函数是可微的。这意味着可以找到任意两个点的 sigmoid 曲线的斜率;明确的预测,即非常接近 1 或 0。
缺点:
容易出现梯度消失,2.函数输出并不是0均值化,3. 幂运算相对来讲比较耗时。

tanh函数:tanh也具有和Sigmoid函数类似的缺点,即远离中心的位置导数趋于0,但是因为其关于0点对称,输出的均值比Sigmoid更加接近于0,因此SGD会更接近自然梯度,然而,gradient vanishing的问题和幂运算的问题仍然存在。

Softsign函数是Tanh函数的另一个替代选择。就像Tanh函数一样,Softsign函数是反对称、去中心、可微分,并返回-1和1之间的值。其更平坦的曲线与更慢的下降导数表明它可以更高效地学习,比tTanh函数更好的解决梯度消失的问题。另一方面,Softsign函数的导数的计算比Tanh函数更麻烦。Softsign′(x)=1/(1+∣x∣)2
这个函数相比tanh函数,饱和得慢一些。
Sigmoid, tanh, softsign函数在训练深度神经网络的过程中,都无法回避梯度消失的问题,既在远离函数中心点的位置,函数导数趋于0,在网络非常深的时候,越来越多反向传播的梯度会落入饱和区,从而让梯度的模越来越小,最终趋近于0,导致权重无法更新。
一般来说,如果神经网络超出5层,就会产生梯度退化为0的现象,导致模型难以训练。

RELU线性整流函数,又称修正线性单元ReLU,是一种人工神经网络中常用的激活函数,通常指代以斜坡函数及其变种为代表的非线性函数。当输入为正时,不存在梯度饱和问题。

 

LeakyRelu用于解决Dead ReLU问题的激活函数:针对Relu函数中存在的Dead Relu Problem,Leaky Relu函数在输入为负值时,给予输入值一个很小的斜率,在解决了负输入情况下的0梯度问题的基础上,也很好的缓解了Dead Relu问题
GELU(Gaussian error linear units,高斯误差线性单元)可以看作 dropout的思想和relu的结合,,主要是为激活函数引入了随机性使得模型训练过程更加稳定

 

损失函数

反映了感知器目标输出和实际输出之间的误差。

极值:让损失函数沿着负梯度的方向进行搜索,不断迭代更新参数w,最终使得函数最小化。

解决思路:

 

 

 优化器

 

 

 

 

 正则化

正则化是机器学习中非常重要并且非常有效的减少泛化误差的技术,特别是在深度学习模型中,由于其模型参数非常多容易产生过拟合。防止过拟合,比较常用的技术包括:

 

 

在每一轮的样本输入到神经网络进行训练时,设定一个概率p,使得每个神经元有一定的概率死亡,不参与网络的训练。
其流程为:1.首先以一定的概率p随机删除掉网络隐藏层中的神经元(暂时死亡),输入输出神经元保持不变。2.然后把输入x通过修改后的网络前向传播,把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)。3.然后继续重复这一过程:恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)从隐藏层神经元中随机选择一个一半大小的子集临时删除掉(备份被删除神经元的参数)。对一小批训练样本,先前向传播然后反向传播损失并根据随机梯度下降法更新参数(w,b) (没有被删除的那一部分参数得到更新,删除的神经元参数保持被删除前的结果)。
原始输入每一个节点选择概率0.8,隐藏层选择概率为0.5。
Dropout的优点:
相比于weight decay、范数约束等,该策略更有效。
计算复杂度低,实现简单而且可以用于其他非深度学习模型。
但是当训练数据较少时,效果不好。
Dropout训练过程中的随机过程不是充分也不是必要条件,可以构造不变的屏蔽参数,也能够得到足够好的解。

 

 

加速训练收敛:Batch Normalization通过规范化每一层的输入,使得激活函数的输入值落在对输入比较敏感的区域,这有助于增大梯度,进而加快模型的训练收敛速度。
提高模型性能:由于Batch Normalization有助于优化网络的权重分布,使得模型更易于训练,因此往往能够提升模型的性能。此外,通过规范化输入数据,模型对于输入的变化变得更加鲁棒,从而提高模型的泛化能力。
减少对初始权重和学习率的依赖:Batch Normalization使得模型对于初始权重的选择不再那么敏感,因此可以简化模型初始化过程。同时,由于Batch Normalization有助于稳定训练过程,因此可以使用较大的学习率进行训练,从而进一步加速训练过程。
减少过拟合:Batch Normalization通过破坏原来的数据分布,有助于缓解过拟合问题。它通过增加模型的泛化能力,使得模型能够更好地适应不同的数据集和任务。

 

 

 

BN的第一个缺陷是依赖Batch size,第二个缺陷是对于RNN这样的动态网络效果不明显,且当推理序列长度超过训练的所有序列长度时,容易出问题。为此,提出了Layer Normalization。

向前传播

输入信号从输入层传输到输出层

对于每个神经元:

计算上层的输出值

计算激活函数值

最后输出:模型预测值

反向传播法

步骤:

将损失函数反向传播给每个计算单元。

每个计算单元根据获得的误差更新权重。

卷积神经网络

可以响应一部分覆盖范围内的单元,对于图像处理有出色表现。它包括卷积层,池化层,全连接层。

卷积;对图像(不同的数据窗口数据)和滤波矩阵(一维固定权重:因为每个神经元的权重固定,所以又可以看做一个恒定的滤波器filter(kernel))做内积(逐个元素相乘再求和)的操作就是卷积操作,也是卷积神经网络的名字来源。

核心思想:

局部感知

参数共享

 循环神经网络

通过隐藏节点周期连接,来捕捉序列化数据中动态信息的神经网络,可以对序列化的数据进行分类。

RNN可以保存上下文状态,甚至不限于传统神经网络在空间上的边界,可以在时间序列上有延拓,直观上说就是本时间的隐藏层和下一时刻的隐藏层之间的节点有边。

 

深度学习的两个难题

梯度消失:当网络层数越多时,进行反向传播求导值越小,导致梯度消失。

网络退化,网络深度增加,网络准确度应该同步增加。

当网络更深时,网络的参数空间更大,优化问题变得更难,因此简单地去增加网络的深度反而会导致更高的训练误差。

 残差结构

提出一个可以防止训练的梯度消失的结构,称为残差结构。

残差模块在输入和输出之间建立了一个直接连接,这样新增的网络层仅仅需要在原来的输出层基础上学习新的特征,即学习残差,会比较容易

 ResNet

在ResNet网络提出之前,传统的卷积神经网络都将一系列的卷积层和池化层堆叠得到的,但当网络到一定深度时,就会出现退化问题。

层数越多准确率越高

Seq2Seq

序列到序列模型,由编码器和解码器两部分组成。输入和输出都可以是一个不定长的序列。

编码器和解码器的作用:

编码器将长度可变的输入转换成长度固定的上下文向量,并且将输入序列的信息在该上下文向量中进行编码。

解码器进行相反的过程,将上下文向量进行解码,转换成长度可变的输出序列

 Attention机制

注意力机制:在解码器的每个步骤中,使用与编码器的直接连接来聚焦于源序列的特定部分。

注意力机制在输入信息中聚焦于更为关键的信息,降低对其他信息的关注度,甚至过滤掉无关信息,可以解决信息过载问题,并提高任务处理的效率和准确性。

 TransFormer

TransFormer是谷歌在2017做机器翻译任务的《attention is all you need》的论文中提出的,目前大多数大模型以Transformer为基础。

Transformer由Encode和Decode两部分组成。

输入层:

位置编码

embedding层

Encoder block,Decoder block

self-Attention

前馈网络层

残差结构

 

 

计算流程-获取输入

首先将每个输入单词通过Embedding转换为词向量,然后与每一个单词的位置Embedding相加得到每一个单词的表示向量x,最终,每个单词都被嵌入为一个512维的向量。

 工作流程-Encoder

将得到的单词表示向量矩阵传入到Encoder中,经过6个Encoder block后可以得到句子所有的单词的编码信息矩阵库c,每一个Encoder block输出的矩阵维度与输入完全一致。

工作流程Decoder

将Encoder输出的编码信息矩阵C传递到Decoder中,Decoder依次会根据当前翻译过的单词来翻译下一个单词

 

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

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

相关文章

windows下jdk版本切换(bat)

1.jdk下载Oracle官网 https://www.oracle.com/cn/ 资源->下载->Java下载jdk当前最新版本 jdk22版本jdk8版本 当前页面向下拉2.脚本如下: 点击查看代码 @echo off chcp 65001 >nul echo ****************jdk change util************************* echo 此操作需要管理…

MPT树是如何回滚的

1,mpt树优于hash表,在区块连网络中,需要确认世界状态相同 ,hash表需要校验所有的hash 2.使用序列表会导致插入过程麻烦,插入一条数据,整个链路都要更新 MPT树是如何恢复的?(世界状态中的mpt树) mpt树的恢复与mpt树的更新是有关系的,在以太坊的生命周期中,世界状态的mp…

【YashanDB知识库】使用select * 创建的物化视图无法进行查询重写

问题现象 使用如下语句准备测试数据: alter system set query_rewrite_enabled=force scope=both; drop table test; create table test(tid number, tname varchar2(30)); beginfor i in 1..100000 loopinsert into test values(i, i||abcd);end loop; end; / commit; drop m…

[RoarCTF 2019]Easy Java

[RoarCTF 2019]Easy Java Step 1 点击help按钮后发现: URL变成: url/Download?filename=help.docx 而回显: java.io.FileNotFoundException:{help.docx}而当我尝试尝试POST,发现文件成功下载:Step 2 发现可能的漏洞点后,结合WEB-INF相关知识(见文末) 可以下载WEB-INF/…

elasticsearch单机版—安装详细教程

一、ES介绍Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作: (1).分布式实时文件存储,并将每一个字段都编入…

人工智能水平测试七级实操——智能环境检测系统

人工智能水平测试七级实操——智能环境检测系统 1 摄像头识别 自动检测摄像头前方是否出现运动的【红色】物体,如果出现显示与物体颜色相近的灯并保持长亮,并持续发出特定的报警声音;若物体停止运动,则灯保持长亮,报警声停止;无题离开视野范围内,则灯熄灭,报警停止; 2…

OI特殊性质总结——笔记(持续更新)

1.交换序列中\(x,y\), 逆序对奇偶性变换 交换 \(x,y\) 首先 $ k \leq x$ 部分的逆序对不变,\(k \geq y\) 部分不变 唯有 \(x \leq k \leq y\) 会变化 那么怎么变呢? 如图:原来逆序对 \(a + c\) ,现在逆序对: \(a + b + b + c + 1 = a + 2b + c + 1\) 那么我们换完会奇偶性…

[rCore学习笔记 019]在main中测试本章实现

写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 批处理操作系统的启动和运行流程 要想把本章实现的那些模块全部都串联在一起以实现运行一个批处理操作系统,回顾本章内容,思考批…

MySQL 学习笔记 进阶(存储过程 下,存储函数,触发器,锁 上)

存储过程存储过程-if判断语法IF 条件1 THEN...... ELSEIF 条件2 THEN...... ELSE...... END IF; 存储过程-参数 用法CREATE PROCEDURE 存储过程名称([ IN/OUT/INOUT 参数名 参数类型 ]) BEGIN-- SQL语句 END; 存储过程-case语法一CASE case_valueWHEN when_value1 THEN state…

TFA-收集日志及分析

下载https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=272133523880062&id=1513912.1&_afrWindowMode=0&_adf.ctrl-state=fghvcgapa_617a 安装[root@rhel75 ~]# ./ahf_setup AHF Installer for Platform Linux Architecture x86_64AHF Installa…

C# 文件操作

本篇主要记录C#操作文件 相对路径在项目文件...\bin\Debug 目录下 一、写入读取文件写入/// <summary>/// initial 文件写入/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private vo…

Python 环境配置(二)安装jupyter、matplotlib、numpy库

Python 环境配置(二)安装jupyter、matplotlib、numpy库 一、numpypip install numpy二、matplotlibpip install matplotlib 三、jupyter 1、anaconda自带Jupyter 2、pycharm 插件只有 Pycharm 的 Professional 版才支持 Jupyter Notebook,请注意版本3、新建文件#%%import nu…