【激活函数--下】非线性函数与ReLU函数

文章目录

      • 一、非线性函数在神经网络中的重要性
      • 二、ReLU函数介绍及其实现
        • 2.1 ReLU函数概述
        • 2.2 ReLU函数的Python实现及可视化

一、非线性函数在神经网络中的重要性

在神经网络中,激活函数的选择对于网络的性能和能力至关重要。阶跃函数和Sigmoid函数除了是激活函数的具体实例外,它们还有一个共同的特性——非线性。这两种函数虽然在形式上有所不同,但都不是线性的,这使得它们在处理复杂问题时非常有用。

非线性与线性函数的区别

  • 线性函数:形式上可以表示为 h ( x ) = c x h(x) = cx h(x)=cx(其中 c c c 是常数),图形是一条直线。线性函数简单且易于计算,但它在功能上有限。
  • 非线性函数:不呈直线形态,可以是曲线或折线等。非线性函数能够处理更复杂的数据模式,是神经网络设计中不可或缺的。

神经网络为何需要非线性激活函数

在神经网络中使用非线性激活函数至关重要,原因包括:

  1. 层叠效应
    • 如果使用线性函数作为激活函数,无论网络有多少层,最终输出都是输入的线性组合。实际上,多层线性网络可以被等效为一个没有隐藏层的网络。
    • 例如,如果激活函数是线性的 h ( x ) = c x h(x) = cx h(x)=cx,那么三层网络中的操作 y ( x ) = h ( h ( h ( x ) ) ) y(x) = h(h(h(x))) y(x)=h(h(h(x))) 等同于 y ( x ) = c 3 x y(x) = c^3x y(x)=c3x。这意味着多层的效果可以被单一变换替代,从而无法利用多层结构的优势。
  2. 表达能力
    • 非线性函数使得神经网络可以学习和模拟任何形式的复杂函数,这是理解深层网络能成功解决各种难题的关键。
    • 线性函数由于其形式上的限制,不能模拟数据中的复杂模式和关系。

考虑一个使用线性激活函数的简单三层神经网络,其操作可以简化为一次线性变换。这表明,增加层数(即使是使用线性激活函数)并没有增加网络对数据的解释能力或学习能力。相反,非线性激活函数通过每一层的变换使得网络能逐层构建越来越复杂的数据表示和功能分解。

因此,在设计神经网络时,选择合适的非线性激活函数是至关重要的,它决定了网络能处理的复杂性和灵活性。常用的非线性激活函数包括Sigmoid、ReLU及其变种等,它们各有优势和应用场景,使得神经网络能在多种任务中表现出色。

二、ReLU函数介绍及其实现

2.1 ReLU函数概述

ReLU(修正线性单元)函数是神经网络中广泛使用的激活函数之一,尤其是在深度学习模型中。相较于早期常用的Sigmoid函数,ReLU因其简单性和在训练深层网络时表现出的效率而受到青睐。ReLU函数的定义如下:
h ( x ) = { x if  x > 0 0 if  x ≤ 0 h(x) = \begin{cases} x & \text{if } x > 0 \\ 0 & \text{if } x \leq 0 \end{cases} h(x)={x0if x>0if x0
ReLU函数的特点

  • 非线性:尽管ReLU在正数部分是线性的,但整体上它是一个非线性函数,因为它在零点处引入了一个非线性变化(从0变到正值)。
  • 计算简单:ReLU函数只需判断输入是否大于0,这使得它在计算上比Sigmoid或tanh等传统激活函数要简单得多。
  • 缓解梯度消失问题:在正数区间,ReLU的导数是常数(1),这有助于缓解深度网络中的梯度消失问题。
2.2 ReLU函数的Python实现及可视化

在Python中,使用NumPy库可以非常容易地实现ReLU函数。这里我们使用np.maximum函数来实现,np.maximum用于比较两个数组并返回各元素的最大值:

import numpy as npdef relu(x):return np.maximum(0, x)

这种实现方法允许输入是一个数字、一个列表或一个NumPy数组,输出将是相同形状的数组,其中每个元素都是应用了ReLU函数的结果。

使用Matplotlib库,我们可以绘制ReLU函数的图形,以更好地理解其行为:

import matplotlib.pyplot as plt
import numpy as np# 定义ReLU函数
def relu(x):return np.maximum(0, x)# 生成数据
x = np.arange(-6, 7, 0.1)
y = relu(x)# 绘图
plt.plot(x, y)
plt.title("ReLU Function")
plt.xlabel("x")
plt.ylabel("h(x)")
plt.ylim(-1, 5)  # 设置y轴的范围
plt.show()

绘制出的图形清晰地展示了ReLU函数在 x = 0 x=0 x=0时的突变,这是由0转变到正值的关键特性。

在这里插入图片描述

ReLU由于其在正区间内保持恒定的梯度和在实际应用中的高效性,已成为许多深度学习模型的首选激活函数。然而,它也有缺点,例如在输入小于等于0时梯度为0,这可能导致某些神经元在训练过程中“死亡”,即不再对任何数据产生变化。尽管如此,ReLU仍是现代神经网络架构中不可或缺的组成部分。

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

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

相关文章

stable-diffusion-webui配置

源码地址 https://github.com/AUTOMATIC1111/stable-diffusion-webui.git报错Fresh install fail to load AttributeError: NoneType object has no attribute _id pydantic降级 pip uninstall pydantic pip install pydantic1.10.11记得要把clip-vit-large-patch14放在opena…

业务逻辑攻击是什么,如何有效进行防护

想象一下:您的开发团队刚推出了一款令人惊叹的全新应用程序,它具有顶级的API安全性,通过客户端保护对其进行了强化,甚至还设置了针对机器人攻击的防御措施。你感到这款产品很有安全保障,自己的团队出色地完成了工作。 …

服务器通的远程桌面连接不上,关于服务器通畅但远程桌面连接不上问题的专业分析

在日常的企业IT管理中,服务器远程桌面连接是一个重要的操作功能。然而,有时会出现服务器网络通畅,但远程桌面无法连接的情况。 问题分析 1. 防火墙或安全组设置问题:服务器的防火墙或安全组可能阻止了远程桌面连接的端口&#xf…

adobe安装“Error:SyntaxError:JSON Parse error:Unexpec

mac电脑安装Adobe时,会提示错误“Error:SyntaxError:JSON Parse error:Unexpected EOF”,这是怎么回事儿的,不管您是安装AI、PS、PR还是LR,如果也遇到相同的问题,可以参考一下方法解决: 「adobe安装提示错误…

Java RMI反序列化总结篇-01

1.java rmi反序列化 RMI 允许一个应用程序访问另外一个服务器或虚拟机上的对象,方法和服务,它使远程方法调用就像在本地调用一样简单。它为用户屏蔽了底层的网络传输细节,使用的时候只需适当处理异常即可。所以 RMI 是非常容易使用的&#x…

哪款骨传导耳机最值得入手?精选5款顶尖配置的骨传导耳机,闭眼入也不踩雷!

作为一名有着多年工作经验的数码博主,我见证了无数因盲目追求新颖而引发的听力问题。在此,我必须郑重提醒大家,虽然市面上充斥着众多声称能提供卓越音质和佩戴舒适度的骨传导耳机品牌,但它们之间存在大量劣质产品,这类…

centos7安装zabbix-server

zabbixan-server安装 环境安装zabbix安装zabbix配置apachezabbix-UI前端配置修改zabbix为中文语言 环境 准备: centos7系统、mysql数据库/MariaDB数据库 mysql数据库可参照:https://blog.csdn.net/weixin_61367575/article/details/138774428?spm1001.…

算法-卡尔曼滤波之卡尔曼滤波的第二个方程:预测方程(状态外推方程)

在上一节中,使用了静态模型,我们推导出了卡尔曼滤波的状态更新方程,但是在实际情况下,系统都是动态,预测阶段,前后时刻的状态是改变的,此时我们引入预测方程,也叫状态外推方程&#…

企业为什么进行大数据迁移以及注意事项

在当今数字化时代,数据的迁移成为了企业优化其数据架构、提高数据处理能力、确保业务连续性和数据安全的关键步骤。企业可能出于多种原因,如成本效益、性能提升、系统升级、数据集中管理或云服务集成等,选择将数据从一个存储系统迁移到另一个…

Spring Boot 整合讯飞星火3.5通过接口Api接口实现聊天功能(首发)复制粘贴即可使用,后续更新WebSocket实现聊天功能

程序员必备网站&#xff1a; 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 1.pom.xml <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.72</version></dependency><depen…

轻松拿下指针(5)

文章目录 一、回调函数是什么二、qsort使用举例三、qsort函数的模拟实现 一、回调函数是什么 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针&#xff08;地址&#xff09;作为参数传递给另⼀个函数&#xff0c;当这个指针被⽤来调⽤其所指向的函数 时&#x…

肺部营养“救星”,让每次呼吸更自由

​#肺科营养#朗格力#班古营养#复合营养素#肺部营养# 正常的健康人,每天自由幸福的呼吸。但是对于肺病患者来说,特别是慢阻肺人群,每一次呼吸都可能是一场挑战,每一口气都显得弥足珍贵。 肺病患者号称沉默的“呼吸杀手”,它虽然沉默,但不代表它没能力,除了引起肺功能下降,氧气…

云商店如何让更多企业摘到技术普惠的“果实”?

文 | 智能相对论 作者 | 沈浪 现阶段&#xff0c;越是工业体系发达的地区&#xff0c;越需要加速技术普惠的步伐。比如&#xff0c;在苏州&#xff0c;华为云就在联合当地政府、企业伙伴打造以华为云云商店为重要链接的智能化商业增长底座。 华为云云商店以“电商式”的购物…

OpenAI春季发布会-免费多模态GPT4O-简介

前言 2024.5.14&#xff0c;OpenAI宣布即将发布一款性能更为强大的大模型GPT4o&#xff0c;虽然没有爆出些超级酷炫无敌吊炸天的新玩意&#xff0c;但是这次的多模态模型&#xff0c;大家可以免费用了~~&#xff08;但是&#xff09; 虽然是免费使用&#xff0c;但官方发布会上…

鸿蒙 DevEcoStudio:用户名密码获取保存

【使用首选项实现用户名密码保存获取】 打开src/main/ets/entryability路径下的EntryAbility.ts文件 在 export default class EntryAbility extends UIAbility {onCreate(want, launchParam) {hilog.info(0x0000, testTag, %{public}s, Ability onCreate);下边添加内容&…

分析 vs2019 c++ 中的 decltype 与 declval

&#xff08;1&#xff09; decltype 可以让推断其参数的类型。按住 ctrl 点击 decltype &#xff0c;会发现无法查阅 其定义 &#xff1a; &#xff08;2&#xff09; 但 STL 库里咱们可以查阅函数 declval 的 定义&#xff0c;很短&#xff0c;摘抄如下&#xff1a; templat…

【氮化镓】高温GaN HEMTs大信号模型——ASM-HEMT

这篇文章的标题是《An ASM-HEMT for Large-Signal Modeling of GaN HEMTs in High-Temperature Applications》&#xff0c;由Nicholas C. Miller等人撰写&#xff0c;发表于2023年9月29日。文章的主要内容是关于一种适用于高温应用的GaN HEMTs&#xff08;高电子迁移率晶体管&…

使用System.Drawing绘制基本几何图形

1.使用System.Drawing绘制一个正方形 using System; using System.Drawing; using System.Windows.Forms;public partial class MyForm : Form {public MyForm(){// 你可以在这里设置Form的双缓冲&#xff0c;以避免绘制时出现的闪烁 this.DoubleBuffered true;}protected o…

Linux——缓冲区

一、问题引入 我们先来看看下面的代码&#xff1a;我们使用了C语言接口和系统调用接口来进行文件操作。在代码的最后&#xff0c;我们还使用fork函数创建了一个子进程。 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<sys/wait.h&…

将jar打包成exe可安装程序,并在html页面唤醒

一、exe4j将jar打包成exe 1.exe4j下载 下载地址&#xff1a;https://www.ej-technologies.com/download/exe4j/files 2.exe4j打包jar 2.1. welcome 可以选择历史配置&#xff0c;新增则直接下一步 2.2. project type选择“jar in exe” mode 2.3. application info设置应用…