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

news2024/11/15 22:32:40

激活函数大汇总(二十一)(BReLU附代码和详细公式)

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

一、引言

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

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

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

二、BReLU

BReLU(Bipolar Rectified Linear Unit) 激活函数具有以下特性:

1. 数学定义

BReLU定义为:

f ( x i ) = { ReLU ⁡ ( x i )  if  i   m o d   2 = 0 − ReLU ⁡ ( − x i )  if  i   m o d   2 ≠ 0 f\left(x_i\right)= \begin{cases}\operatorname{ReLU}\left(x_i\right) & \text { if } i \bmod 2=0 \\ -\operatorname{ReLU}\left(-x_i\right) & \text { if } i \bmod 2 \neq 0\end{cases} f(xi)={ReLU(xi)ReLU(xi) if imod2=0 if imod2=0
其中, x i x_i xi是输入向量中的第 i i i个元素, ReLU ⁡ ( x ) = max ⁡ ( 0 , x ) \operatorname{ReLU}(x)=\max (0, x) ReLU(x)=max(0,x)是标准的线性整流函数。这个定义意味着对于输入向量的偶数索引元素,BReLU表现为标准的ReLU,而对于奇数索引的元素,BReLU将输入先取负,应用ReLU后再取负。
在这里插入图片描述

2. 函数特性

  • 双极性:BReLU的输出可以为正或负,这与传统的ReLU(只输出非负值)形成对比。
  • 索引依赖性:BReLU的行为取决于输入元素的索引(奇数或偶数),这是其他激活函数不具备的特性。
  • 平均激活值向零偏移:通过对一半的输入元素应用取反操作,BReLU有助于将网络激活的平均值向零偏移,这可能有助于改善梯度流和网络训练。

3. 导数

BReLU的导数为:

f ′ ( x i ) = { 1  if  i   m o d   2 = 0  and  x i > 0 − 1  if  i   m o d   2 ≠ 0  and  x i < 0 0  otherwise  f^{\prime}\left(x_i\right)= \begin{cases}1 & \text { if } i \bmod 2=0 \text { and } x_i>0 \\ -1 & \text { if } i \bmod 2 \neq 0 \text { and } x_i<0 \\ 0 & \text { otherwise }\end{cases} f(xi)= 110 if imod2=0 and xi>0 if imod2=0 and xi<0 otherwise 

4. 使用场景与局限性

使用场景

  • 非线性变换:对于偶数索引的输入,Bipolar ReLU表现出线性变换的性质,有助于网络学习和适应性特征提取,增强模型对复杂数据结构的理解能力。
  • 有效的特征抑制:对于奇数索引的输入,Bipolar ReLU能将输出置为零,这为网络提供了一种机制,以有效抑制不希望强调的特征或模式,可能在处理特定任务时特别有用。
  • 激活多样性:Bipolar ReLU通过在不同输入索引上应用不同的处理方式,引入了激活模式的多样性,增加了网络的表达能力,这在某些情况下可能为模型带来性能上的优势。

局限性

  • 梯度不连续性:由于在奇数索引的输入下输出为零,Bipolar ReLU可能引起激活函数在这些点处的不连续性,这有可能对梯度计算和反向传播过程的稳定性和效率造成负面影响。
  • 潜在的信息损失:在奇数索引的输入被完全抑制时,Bipolar ReLU可能导致一部分重要信息的丢失,进而影响模型的整体表现和泛化能力。
  • 参数调整挑战:Bipolar ReLU的性能可能受到其参数配置的显著影响。找到最适合特定任务和数据集的参数设置可能需要进行大量的实验和调整,增加了模型训练的复杂度。

5.代码实现

import numpy as np

def brelu(x):
    """
    实现Bipolar Rectified Linear Unit (BReLU) 激活函数。
    
    根据元素的索引,应用不同的ReLU变换:
    - 偶数索引的元素使用标准的ReLU。
    - 奇数索引的元素使用反向的ReLU,然后取负。
    
    参数:
    x -- 输入的数值或NumPy数组。
    
    返回:
    经过BReLU激活的输出。
    """
    # 分别处理偶数和奇数索引的元素
    output = np.array([np.maximum(0, x[i]) if i % 2 == 0 else -np.maximum(0, -x[i]) for i in range(len(x))])
    
    return output

# 示例输入
x = np.array([1, -2, 3, -4, 5, -6, 7, -8])

# 应用BReLU激活函数
output = brelu(x)

print("BReLU Output:", output)
详细解读

Bipolar Rectified Linear Unit (BReLU) 激活函数是一种创新的激活函数,它根据输入元素的索引位置来决定使用标准ReLU还是其变体。具体地说:

  • 对偶数索引的元素,BReLU直接应用标准的ReLU函数。这意味着如果输入值是正数,则保留该值;如果是负数,则将其置为0。这部分处理与常规的ReLU激活函数一致。

  • 对奇数索引的元素,BReLU首先对输入值取反,然后应用ReLU函数,最后再将结果取反。这实质上意味着如果输入值是负数,则保留该负数值;如果是正数,则将其置为0。这种处理方式相当于在奇数索引上应用了一个“反向”的ReLU变体。

使用场景和潜在优势

BReLU通过在偶数和奇数索引上应用不同的处理,为深度学习模型提供了一种新的激活机制。这种机制可能特别适用于需要处理不对称数据或在模型中寻求更复杂非线性关系的应用场景。此外,BReLU的这种特性可能对于增强模型在特定任务中的泛化能力和学习复杂数据表示具有潜在优势。然而,BReLU的实用性和效果可能高度依赖于具体任务和数据集的特点,因此在广泛采用之前需要进一步的实验和验证。

三、参考文献

  • Lars Eidnes, Arild Nøkland. Shifting Mean Activation Towards Zero with Bipolar Activation Functions. arXiv:1709.04054, 2018.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习面经-part3(RNN、LSTM)

3.RNN 核心思想&#xff1a;像人一样拥有记忆能力。用以往的记忆和当前的输入&#xff0c;生成输出。 RNN 和 传统神经网络 最大的区别:在于每次都会将前一次的输出结果&#xff0c;带到下一次的隐藏层中&#xff0c;一起训练。 RNN应用场景: 1.文本生成 2.语音识别 3.机器翻…

【DataWhale学习笔记-蝴蝶书共读】大语言模型背后

从图灵测试到ChatGPT 1950年&#xff0c;艾伦•图灵(Alan Turing)发表论文《计算机器与智能》&#xff08; Computing Machinery and Intelligence&#xff09;&#xff0c;提出并尝试回答“机器能否思考”这一关键问题。在论文中&#xff0c;图灵提出了“模仿游戏”&#xff…

RabbitMQ介绍及搭建

架构 RabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件&#xff0c;使用erlang语言编写&#xff0c;依赖Erlang环境运行。 Broker&#xff1a;运行消息队列服务进程的节点&#xff0c;包含Exchange、Queue&#xff1b; Producer&#xff1a;消…

自学Python第二十九天-feapder框架创建爬虫

自学Python第二十九天-feapder框架创建爬虫 安装feapder 的设计架构feapder 框架的简单使用简单创建爬虫简单爬取数据简单的数据保存 中间件校验浏览器渲染使用浏览器渲染获取接口数据 feapder是一款上手简单&#xff0c;功能强大的 Python爬虫框架&#xff0c;内置 AirSpide…

Games101笔记-模型、视图、投影

在旋转点&#xff0c;旋转矩阵的逆等于矩阵的转置 视图变换和投影变换 三维变换 左边3*3是线性变换&#xff0c;右边一列是仿射变换(平移) 先线性再平移 缩放、旋转、平移 x叉乘y得到z&#xff0c;y叉乘z得到x&#xff0c; xyz给任何两个可以得到另一个 (循环对称) z叉乘x得…

EDI在汽车主机厂配送流程中的应用

汽车主机厂的汽车配送流程始于汽车 “生产结束 ” &#xff0c;止于 “交付给经销商 ” 。在这个流程中&#xff0c;企业作为主机厂的下游供应商&#xff0c;与主机厂的物流服务供应商之间的信息交换将会变得十分重要。 配送流程&#xff1a;运输订单以及报告 汽车主机厂提供预…

6-高维空间:机器如何面对越来越复杂的问题

声明 本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享&#xff0c;严禁他用&#xff01;&#xff01;如有侵权&#xff0c;请联系删除 目录 一、知识引入 &#xff08;一&#xff09;二维输入数据 &#xff08;二&#xff09;数据特征维度 …

Java-JVM 虚拟机原理调优实战

一、基础 栈帧&#xff08;Stack Frame&#xff09;栈空间的 基本元素&#xff0c;用于 方法的调用和方法的执行的数据结构 堆内存用来存放由new创建的对象和数组。在堆中分配的内存&#xff0c;由Java虚拟机的自动垃圾回收器来管理。在堆中产生了一个数组或对象后&#xff0c…

小白向-使用git实现不同服务器改动的同步

背景 深度学习项目&#xff0c;已有可运行的backbone&#xff0c;已将此项目在github建库。 需要使用不同分支进行不同改动的测试&#xff1b;有两台服务器可供程序运行&#xff1b; 项目需求 以github云端仓库为媒介&#xff0c;实现不同服务器改动无痛关联。维护项目代码…

MS14_064 漏洞利用与安全加固

文章目录 环境说明1 MS14_064 简介2 MS14_064 复现过程3 MS14_064 安全加固 环境说明 渗透机操作系统&#xff1a;kali-linux-2024.1-installer-amd64漏洞复现操作系统: sc_winxp_pro_with_sp2 1 MS14_064 简介 要利用此漏洞则需要进行用户交互。通过发送电子邮件信息给本地登…

【云开发笔记No.4】DevOps的起源,定义和基本原则

DevOps&#xff0c;作为一组过程、方法与系统的统称&#xff0c;它的出现并不是偶然的&#xff0c;而是源于软件开发与运维领域长期以来所面临的挑战和痛点。其诞生背景可以追溯到敏捷开发模式的兴起以及持续开发所带来的运维问题。随着软件行业的飞速发展&#xff0c;传统的软…

Godot 学习笔记(3):IOC容器注入,以NlogServices为例

文章目录 前言环境注意事项Ioc注入文件夹设置Service服务搭建Nlog.configNlogService配置ButtonTest1Service控制反转Program主入口ButtonTest1从Ioc中获取服务 输出生命周期问题 总结 前言 Godot.Net中使用IOC之后&#xff0c;Godot的代码将会被极大的解耦。这里不不展开说明…

【大模型】直接在VS Code(Visual Studio Code)上安装CodeGeeX插件的过程

文章目录 一、什么是CodeGeeX&#xff08;一&#xff09;我理解的CodeGeeX&#xff08;二&#xff09;优缺点 二、CodeGeex下载、安装、注册&#xff08;一&#xff09;安装VS Code(Visual Studio Code)&#xff08;二&#xff09;下载安装CodeGeeX&#xff08;三&#xff09;注…

SpringBoot中使用验证码easy-captcha

easy-captcha使用的大概逻辑: 当一个请求发送到后端服务器请求验证,服务器使用easy-captcha生成一个验证码图片,并通过session将验证信息保存在服务器,当用户登录校验时候,会从ession中取出对比是否一致 但是前后端分离之后 由于跨域问题 以上就无法实现了 下面这种情况没…

Trait与生命周期

原文链接&#xff1a;(*∇&#xff40;*) 咦,又好了~ Rust – xiaocr_bloghttp://www.xiaocr.fun/index.php/2024/03/18/trait%E4%B8%8E%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F/ 目录 Trait 定义trait 默认实现 trait作为参数 Trait Bound语法 通过指定多个 trait bound …

B003-springcloud alibaba 服务治理 nacos discovery ribbon feign

目录 服务治理服务治理介绍什么是服务治理相关方案 nacos实战入门搭建nacos环境安装nacos启动nacos访问nacos 将商品微服务注册进nacos将订单微服务注册进nacos订单服务通过nacos调用商品服务 实现服务调用的负载均衡什么是负载均衡代码实现负载均衡增加一个服务提供者自定义实…

【CKA模拟题】掌握Pod日志输出的秘密

题干 For this question, please set this context (In exam, diff cluster name) 对于这个问题&#xff0c;请设置这个上下文(在考试中&#xff0c;diff cluster name) kubectl config use-context kubernetes-adminkubernetes product pod is running. when you access log…

flask之ssti [WesternCTF2018]shrine1

打开题目 整理一下&#xff0c;代码: import flask import osapp flask.Flask(__name__) app.config[FLAG] os.environ.pop(FLAG) app.route(/)def index():return open(__file__).read()app.route(/shrine/)def shrine(shrine):def safe_jinja(s):s s.replace((, ).replac…

无人机三维建模过程中注意事项

无人机三维建模是指利用无人机技术进行三维建模&#xff0c;该方法通过无人机搭载的多种传感器&#xff0c;如摄像头、激光扫描仪等&#xff0c;获取建筑物的多角度影像数据&#xff0c;然后利用计算机视觉技术和三维重建算法&#xff0c;将这些影像数据转化为高精度的三维模型…

微服务技术栈SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式(五):分布式搜索 ES-下

文章目录 一、数据聚合1.1 聚合种类1.2 DSL实现聚合1.3 RestAPI实现聚合1.4 演示&#xff1a;多条件聚合 二、自动补全2.1 拼音分词器2.2 自定义分词器2.3 DSL自动补全查询2.5 实现酒店搜索框自动补全2.5.1 修改酒店索引库数据结构2.5.2 RestAPI实现自动补全查询2.5.3 实战 三、…