5分钟了解神经网络激活函数(二)

简介: 5分钟了解神经网络激活函数(二)
  1. 双曲正切函数(Tanh)

双曲正切函数是深度学习中使用的另一种激活函数,并且在深度学习应用程序中具有某些变体。被称为tanh函数的双曲正切函数是一个更平滑的零中心函数,范围在-1到1之间,因此tanh函数的输出由下式给出:

image.png

与sigmoid函数相比,tanh函数更好,因为它为多层神经网络提供了更好的训练性能。但是,tanh函数也无法解决S形函数所遭受的消失梯度问题。该函数提供的主要优点是,它可以产生零中心输出,从而有助于反向传播过程。tanh函数的一个特性是,仅当输入值为0时,即x为零时,它才能达到1的梯度。这使得tanh函数在计算过程中产生一些死亡的神经元。死神经元是激活权重很少被归因于零梯度的结果的情况。

image.png

tanh函数的这种局限性促使人们进一步研究激活函数从而解决这个问题,最终诞生了整流线性单元(ReLU)激活函数。tanh函数主要用于自然语言处理和语音识别任务的递归神经网络中。

  1. 整流线性单元(ReLU)功能

整流线性单元(ReLU)激活函数由Nair和Hinton在2010提出,从那时起,它一直是深度学习应用程序中使用最广泛的激活函数,具有迄今为止最先进的结果。ReLU是一种快速学习的激活函数,已被证明是最成功且使用最广泛的函数。与Sigmoid和tanh激活函数相比,它在深度学习中具有更好的性能和通用性。ReLU表示几乎是线性的函数,因此保留了线性模型的属性,这些属性使它们易于使用梯度下降法进行优化。ReLU激活功能对每个输入元素执行阈值操作,其中小于零的值设置为零,因此ReLU的计算公式为:

image.png

此函数可对输入值进行校正,使其小于零,从而将其强制为零,并消除了在早期激活函数类型中观察到的梯度消失问题。

ReLU函数已在深层神经网络的隐藏单元中与另一个激活函数一起使用,在网络的输出层中是对象分类和语音识别应用程序中的典型示例。在计算中使用Relu的主要优点在于,由于它们不计算指数和除法,因此它们保证了更快的计算速度,从而提高了总体计算速度。ReLU的另一个特性是,当它压缩介于0到最大值之间的值时,会在隐藏的单位中引入稀疏性。

然而,尽管已经采用了dropout技术来减少ReLU的过拟合效应,并且网络改善了深层神经网络的性能,但ReLU的局限性仍然在于与S型函数相比它容易过拟合。

ReLu的另一个问题是,某些梯度在训练过程中可能会很脆弱,甚至会消失。它可能导致权重停止更新,从而使其永远不会再在任何数据点上激活。简而言之,ReLu可能导致神经元死亡。

为了解决这个问题,引入了另一种名为Leaky ReLu的修改来解决死亡的神经元问题。它引入了一个小偏置以使更新保持活动状态。

  1. Softmax函数

Softmax函数是计算中使用的另一种激活函数。它用于根据实数向量计算概率分布。Softmax函数产生的输出范围是0到1之间的值,且概率之和等于1。

Softmax函数的计算公式如下:

image.png

Softmax函数用于多分类模型中,在该模型中,它返回每个类的概率,而目标类的概率最高。Softmax函数主要出现在使用它们的深度学习架构的几乎所有输出层中。Sigmoid和Softmax激活函数之间的主要区别在于,Sigmoid用于二分类,而Softmax用于多分类任务。

理论上足够了对吗?我认为现在是时候检查不同的激活函数并比较它们的性能,然后选择对我们更合适的函数。因此,让我们从选择一个数据集开始。

作为该领域的新手,您可能遇到过MNIST这个词。它是一个Digit Recognizer数据集,非常适合入门。

https://www.kaggle.com/c/digit-recognizer/data

数据文件train.csv和test.csv包含从零到九的手绘数字的灰度图像。

每个图像的高度为28像素,宽度为28像素,总计784像素。每个像素都有一个与之关联的像素值,表示该像素的亮度或暗度,数字越高表示像素越暗。此像素值是0到255之间的整数(含)。

训练数据集(train.csv)有785列。第一列称为“标签”,是用户绘制的数字。其余列包含关联图像的像素值。

训练集中的每个像素列都有一个类似pixelx的名称,其中x是0到783之间(包括0和783)的整数。

测试数据集(test.csv)与训练集相同,除了它不包含“标签”列。

在开始编写代码之前,我建议您使用Google Collaboratory,因为它既快速又易于使用。

imports

# This Python 3 environment comes with many helpful analytics libraries installed, here's several helpful packages to load in
import pandas as pd
import numpy as np
import keras
import matplotlib.pyplot as plt
from keras.utils import to_categorical
from keras.models import Sequential, load_model
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.layers.normalization import BatchNormalization
from keras.layers.advanced_activations import LeakyReLU
from sklearn.model_selection import train_test_split

b.png

目录
相关文章
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
|
1月前
|
机器学习/深度学习 编解码
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
本文介绍了九种常用的神经网络激活函数:Sigmoid、tanh、ReLU、ReLU6、Leaky ReLU、ELU、Swish、Mish和Softmax,包括它们的定义、图像、优缺点以及在深度学习中的应用和代码实现。
109 0
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
|
1月前
|
机器学习/深度学习 数据可视化 算法
激活函数与神经网络------带你迅速了解sigmoid,tanh,ReLU等激活函数!!!
激活函数与神经网络------带你迅速了解sigmoid,tanh,ReLU等激活函数!!!
|
3月前
|
机器学习/深度学习 算法
神经网络中激活函数的重要性
【8月更文挑战第23天】
26 0
|
3月前
|
监控
【网络编程】poll函数
【网络编程】poll函数
27 0
|
3月前
|
监控
【网络编程】select函数
【网络编程】select函数
58 0
|
3月前
|
机器学习/深度学习 Shell 计算机视觉
一文搞懂 卷积神经网络 卷积算子应用举例 池化 激活函数
这篇文章通过案例详细解释了卷积神经网络中的卷积算子应用、池化操作和激活函数,包括如何使用卷积算子进行边缘检测和图像模糊,以及ReLU激活函数如何解决梯度消失问题。
|
4月前
|
机器学习/深度学习
神经网络可能不再需要激活函数?Layer Normalization也具有非线性表达!
【7月更文挑战第14天】研究表明,层归一化(LayerNorm)可能具备非线性表达能力,挑战了神经网络对激活函数的依赖。在LN-Net结构中,仅使用线性层与LayerNorm就能实现复杂分类,其VC维度下界证明了非线性表达。尽管如此,是否能完全替代激活函数及如何有效利用这一特性仍需更多研究。[arXiv:2406.01255]
56 5
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于负相关误差函数的4集成BP神经网络matlab建模与仿真
**算法预览:** 图像显示无水印的2022a版MATLAB运行结果 **软件版本:** MATLAB 2022a **核心代码片段:** 省略展示 **理论概述:** NCL集成BP网络利用负相关提升泛化,结合多个弱模型减少错误关联。通过λ参数控制模型间负相关程度,λ>0增强集成效果,提高预测准确性和系统稳健性。
|
4月前
|
存储 Java Unix
(八)Java网络编程之IO模型篇-内核Select、Poll、Epoll多路复用函数源码深度历险!
select/poll、epoll这些词汇相信诸位都不陌生,因为在Redis/Nginx/Netty等一些高性能技术栈的底层原理中,大家应该都见过它们的身影,接下来重点讲解这块内容。
下一篇
无影云桌面