【DL经典回顾】激活函数大汇总(二十七)(Bent Identity附代码和详细公式)

本文主要是介绍【DL经典回顾】激活函数大汇总(二十七)(Bent Identity附代码和详细公式),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

激活函数大汇总(二十七)(Bent Identity附代码和详细公式)

更多激活函数见激活函数大汇总列表

一、引言

欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里,激活函数扮演着不可或缺的角色,它们决定着神经元的输出,并且影响着网络的学习能力与表现力。鉴于激活函数的重要性和多样性,我们将通过几篇文章的形式,本篇详细介绍两种激活函数,旨在帮助读者深入了解各种激活函数的特点、应用场景及其对模型性能的影响。

在接下来的文章中,我们将逐一探讨各种激活函数,从经典到最新的研究成果。

限于笔者水平,对于本博客存在的纰漏和错误,欢迎大家留言指正,我将不断更新。

二、Bent Identity

Bent Identity激活函数是一种非线性激活函数,它在神经网络中引入轻微的非线性,同时保留了接近恒等函数(Identity function)的特性。这使得它可以用于在模型中引入非线性,而不会过度扭曲数据。

1. 数学定义

Bent Identity激活函数定义为:

f ( x ) = x 2 + 1 − 1 2 + x f(x)=\frac{\sqrt{x^2+1}-1}{2}+x f(x)=2x2+1 1+x
其中, x x x是输入信号。
在这里插入图片描述

2. 函数特性

  • 轻微的非线性:Bent Identity函数在原点附近提供了轻微的非线性变形,随着输入值 x x x的增加,函数趋近于线性。
  • 连续可导:该函数在整个实数域内都是连续且可导的,这一点对于使用基于梯度的优化算法训练神经网络是非常重要的。
  • 非饱和性:与Sigmoid或Tanh激活函数不同,Bent Identity函数不会在输入值很大时饱和,这有助于减少梯度消失问题。

3. 导数

Bent Identity函数的导数为:

f ′ ( x ) = x 2 x 2 + 1 + 1 f^{\prime}(x)=\frac{x}{2 \sqrt{x^2+1}}+1 f(x)=2x2+1 x+1
导数显示了在原点附近,随着 x x x的增大,函数变化率从大于1渐渐趋近于1,这有助于保持梯度的传播。

4. 使用场景与局限性

使用场景

  • 轻度非线性引入:在需要在模型中引入非线性,但又不希望非线性太强时,Bent Identity是一个合适的选择。
  • 改善梯度流:用于减轻梯度消失问题,特别是在深层网络中,可以作为一种补充激活函数来使用。

局限性

  • 计算复杂性:与简单的ReLU或者线性激活函数相比,Bent Identity函数的计算更为复杂,可能会增加模型训练的计算成本。
  • 轻微的非线性可能不足:对于需要强烈非线性以捕捉复杂模式的任务,Bent Identity激活函数可能不足以提供所需的模型复杂度。

总体而言,Bent Identity激活函数提供了一种介于线性和非线性之间的激活机制,适合于那些需要轻微非线性而不希望引入太强非线性效果的应用场景。然而,设计神经网络时需要权衡其带来的计算成本和所需的非线性程度。

5.代码实现

这段代码定义了Bent Identity激活函数:

import numpy as npdef bent_identity(x):"""实现Bent Identity激活函数。参数:x -- 输入的数值或NumPy数组。返回:经过Bent Identity激活的输出。"""return (np.sqrt(x**2 + 1) - 1) / 2 + x# 示例输入
x = np.array([-3, -1, 0, 1, 3])# 应用Bent Identity激活函数
output = bent_identity(x)print("Bent Identity Activation Output:", output)
解释
  • 函数定义bent_identity函数接收一个输入x,可以是单个数值或一个NumPy数组。该函数的目的是对x中的每个元素应用Bent Identity激活函数,产生一个经过非线性变换的输出。

  • Bent Identity激活:Bent Identity函数通过np.sqrt(x**2 + 1) - 1) / 2 + x实现,其中x**2 + 1先确保了表达式在整个实数范围内都是正的,从而可以安全地应用平方根。计算平方根之后,减去1、除以2、并加上原始的x值,这样在x接近0时引入轻微的非线性,而当x的绝对值很大时,函数接近于线性。

  • 示例应用和输出:对于示例输入x = [-3, -1, 0, 1, 3],Bent Identity激活函数的输出显示了在原点附近的轻微非线性变化,以及在远离原点时的接近线性行为。特别是,对于0输入,输出恰好是0,证明了在原点附近的非线性特性。

三、参考文献

  • 鉴于Bent Identity函数相对直观的特性,专门聚焦于它的研究论文或文章可能较少,就不给了。
  • 《深度学习》一书(作者:Ian Goodfellow, Yoshua Bengio, 和 Aaron Courville)提供了对激活函数在神经网络中作用的基础性理解。

这篇关于【DL经典回顾】激活函数大汇总(二十七)(Bent Identity附代码和详细公式)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

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

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

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

Springboot 中使用Sentinel的详细步骤

《Springboot中使用Sentinel的详细步骤》文章介绍了如何在SpringBoot中使用Sentinel进行限流和熔断降级,首先添加依赖,配置Sentinel控制台地址,定义受保护的资源,... 目录步骤 1: 添加 Sentinel 依赖步骤 2: 配置 Sentinel步骤 3: 定义受保护的