当前位置: 首页 > news >正文

【深度学习_TensorFlow】激活函数

写在前面

上篇文章我们了解到感知机使用的阶跃函数和符号函数,它们都是非连续,导数为0的函数:

在这里插入图片描述

建议回顾上篇文章,本篇文章将介绍神经网络中的常见激活函数,这些函数都是平滑可导的,适合于梯度下降算法。


写在中间

激活函数是做什么的?


激活函数(Activation Function)是神经网络中的一个重要组成部分,主要用于将神经元的输入信息进行非线性变换,从而引入非线性特性。

为什么要使用激活函数?


如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是线性组合,这种情况就是最原始的感知机。将来归纳出的方程就如图a所示,要实现图b的效果就只能将线性模型嵌套非线性函数转换为非线性函数。

在这里插入图片描述

我们把这个非线性函数称为激活函数(Activation Function),用𝜎表示:

o = σ ( W x + b ) o=\sigma{(Wx + b)} o=σ(Wx+b)

这里的𝜎代表了某个具体的非线性激活函数,如 Sigmoid 函数、ReLU 函数

在这里插入图片描述

表达能力


模型的表达能力偏弱,就可以通过堆叠多次变换来增加其表达能力

把第一层神经元的输出值 h 1 h_1 h1作为第二层神经元模型的输入,把第二层神经元的输出 h 2 h_2 h2作为第三层神经元的输入,最后一层神经元的输出作为模型的输出,使用ReLU激活函数举例

h 1 = R e L U ( W x 1 + b 1 ) h_1=ReLU(Wx_1 + b_1) h1=ReLU(Wx1+b1)
h 2 = R e L U ( W 2 h 1 + b 2 ) h_2 = ReLU(W_2h_1 + b_2) h2=ReLU(W2h1+b2)
o = W 3 h 2 + b 3 o = W_3h_2 + b_3 o=W3h2+b3


激活函数介绍

一、Sigmoid

( 1 )简单介绍

此函数的定义如下

S i g m o i d ( x ) ≜ 1 1 + e − x \mathrm{Sigmoid}(x)\triangleq\frac1{1+\mathrm{e}^{-x}} Sigmoid(x)1+ex1

在这里插入图片描述

在深度学习中的优点如下:

  • 它的值域为(0, 1),能够把𝑥 ∈ 𝑅的输入“压缩”到𝑥 ∈ (0,1)区间,和概率的分布范围[0,1]契合,可以通过 Sigmoid 函数将输出转译为概率输出

  • Sigmoid 函数连续可导,可以直接利用梯度下降算法优化网络参数


( 2 )简单实现

如何在TensorFlow中使用这个函数呢,其实一行代码就可以搞定了

tf.nn.sigmoid(x) # 通过 Sigmoid 函数

二、ReLU

( 1 )简单介绍

在 ReLU激活函数提出之前,Sigmoid 函数通常是神经网络的激活函数首选。但是 Sigmoid 函数在输入值较大或较小时容易出现梯度值接近于 0 的现象,网络参数长时间得不到更新,导致训练不收敛或停滞不动的现象发生。

此函数的定义如下:

ReLU ⁡ ( x ) ≜ max ⁡ ( 0 , x ) \operatorname{ReLU}(x)\triangleq\max(0,x) ReLU(x)max(0,x)

在这里插入图片描述

可以看到,ReLU 对小于 0 的值全部抑制为 0;对于正数则直接输出


( 2 )函数实现

函数的调用同样简单

tf.nn.relu(x)

三、LeakyReLU

( 1 )简单介绍

ReLU 函数在𝑥 < 0时导数值恒为 0,也可能会造成梯度弥散现象,为了克服这个问题,LeakyReLU 函数被提出,此函数的定义为:

LeakyReLU ≜ { x x ≥ 0 p x x < 0 \text{LeakyReLU}\triangleq\left\{\begin{matrix}x&x\geq0\\px&x<0\end{matrix}\right. LeakyReLU{xpxx0x<0

在这里插入图片描述

其中𝑝为用户自行设置的某较小数值的超参数,如 0.02 等。当𝑝 = 0时,LeayReLU 函数退化为ReLU 函数;当𝑝 ≠ 0时,𝑥 < 0处能够获得较小的导数值𝑝,从而避免出现梯度弥散现象。

( 2 )函数实现

tf.nn.leaky_relu(x, alpha=0.02) 

四、Tanh

( 1 )简单介绍

Tanh 函数能够将𝑥 ∈ 𝑅的输入“压缩”到(−1,1)区间,其函数的定义为

tanh ⁡ ( x ) = ( e x − e − x ) ( e x + e − x ) = 2 ⋅ s i g m o i d ( 2 x ) − 1 \begin{aligned}\tanh(x)&=\frac{(\mathrm{e}^x-\mathrm{e}^{-x})}{(\mathrm{e}^x+\mathrm{e}^{-x})}=2\cdot\mathrm{sigmoid}(2x)-1\end{aligned} tanh(x)=(ex+ex)(exex)=2sigmoid(2x)1

在这里插入图片描述


( 2 )代码实现

tf.nn.tanh(x) 

激活函数输出范围

了解了上面的函数之后,不知你是否有这样的疑问,这么多种函数,在进行网络构建的时候究竟如何选择?

其实这其中还是有些门道的,主要根据数据的范围和构建网络的目的来选择,具体情况还要结合实际问题试验:

例如:

  • 输出区间为[0, 1],在网络模型主要进行二分类(猫狗识别分类)、图片生成(像素归一化),就可以使用类似Sigmoid()一类的函数。

  • 输出区间为[0, 1],且所有数据的概率和为1,网络模型主要进行多分类问题(mnist手写数字识别),就可以使用类似Softmax()一类的函数。

  • 输出区间为[-1, 1],就可以使用Tanh() 函数。

  • 输出区间在某个段内,网络模型进行年龄预测、股票走势的预测,更倾向于回归问题,ReLU函数可能效果较好。


写在最后

👍🏻点赞,你的认可是我创作的动力!
⭐收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!

相关文章:

【深度学习_TensorFlow】激活函数

写在前面 上篇文章我们了解到感知机使用的阶跃函数和符号函数&#xff0c;它们都是非连续&#xff0c;导数为0的函数&#xff1a; 建议回顾上篇文章&#xff0c;本篇文章将介绍神经网络中的常见激活函数&#xff0c;这些函数都是平滑可导的&#xff0c;适合于梯度下降算法。 写…...

机器学习笔记之优化算法(七)线搜索方法(步长角度;非精确搜索;Wolfe Condition)

机器学习笔记之优化算法——线搜索方法[步长角度&#xff0c;非精确搜索&#xff0c;Wolfe Condition] 引言回顾&#xff1a; Armijo \text{Armijo} Armijo准则及其弊端 Glodstein \text{Glodstein} Glodstein准则及其弊端 Wolfe Condition \text{Wolfe Condition} Wolfe Condi…...

十四.redis哨兵模式

redis哨兵模式 1.概述2.测试3.哨兵模式优缺点 redis哨兵模式基础是主从复制 1.概述 主从切换的技术方法&#xff1a;当主节点服务器宕机后&#xff0c;需要手动把一台从服务器切换为主服务器&#xff0c;这就需要人工干预&#xff0c;费时费力&#xff0c;还会造成一段时间内服…...

采用UWB技术开发的智慧工厂人员定位系统源码【UWB定位基站、卡牌】

UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术&#xff0c;它不采用正弦载波&#xff0c;而是利用纳秒级的非正弦波窄脉冲传输数据&#xff0c;因此其所占的频谱范围很宽。UWB定位系统依托在移动通信&#xff0c;雷达&#xff0c;微波电路&#xff0c;云计算与大数据…...

当你软件测试遇上加密接口,是不是就不能测了?

相信大家在工作中做接口测试的时候&#xff0c;肯定会遇到一个场景&#xff0c;那就是你们的软件&#xff0c;密码是加密存储的。 那么这样的话&#xff0c;我们在执行接口的时候&#xff0c;对于密码的处理就开始头疼了。 所以&#xff0c;本文将使用jmeter这款java开源的接…...

Flink

Flink&#xff08;Apache Flink&#xff09;是一个开源的分布式流处理引擎和批处理框架。它是由 Apache 软件基金会维护的项目&#xff0c;旨在处理大规模数据的实时流式处理和批处理任务。Flink 提供了强大的流处理和批处理功能&#xff0c;具有低延迟、高吞吐量和高容错性&am…...

python入门常用操作

python常用操作 1、ndarry数组的切片2、print用法2.1格式化输出format2.2字符串格式化输出 3、均值滤波函数 1、ndarry数组的切片 例如一个5列的ndarry数组&#xff0c;想要获取第2列和第3列数据&#xff0c;可以用 #&#xff08;1&#xff09;用法1 data[:,1:3]&#xff0c;…...

SpringBoot复习:(21)自定义ImportBeanDefinitionRegistrar

要达到的目的&#xff1a;将某个包下使用了某个自定义注解&#xff08;比如MyClassMapper)的类注册到Spring 容器。 一、自定义注解&#xff1a; package com.example.demo.service;import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy;Rete…...

小黑子—JavaWeb:第五章 - JSP与会话跟踪技术

JavaWeb入门5.0 1. JSP1.1 JSP快速入门1.2 JSP原理1.3 JSP脚本1.3.1 JSP缺点 1.4 EL 表达式1.5 JSTL 标签1.5.1 JSTL 快速入门1.5.1 - I JSTL标签if1.5.1 - II JSTL标签forEach 1.6 MVC模式1.7 三层架构1.8 实现案例1.8.1 环境准备1.8.2 查询所有1.8.3 添加数据1.8.4 修改1.8.4…...

Python - 【socket】 客户端client重连处理简单示例Demo(一)

一. 前言 在Python中&#xff0c;使用socket进行网络通信时&#xff0c;如果连接断开&#xff0c;可以通过以下步骤实现重连处理 二. 示例代码 1. 定义一个函数&#xff0c;用于建立socket连接 import socketdef connect_socket(host, port):while True:try:# 建立socket连…...

Redis 基础

1.定义 Redis 是一个高性能的key-value数据库&#xff0c;key是字符串类型。 2.核心特点&#xff1a; 单进程&#xff1a; Redis的服务器程序采用的是单进程模型来处理客户端的请求。对读写时间的响 应是通过对epoll函数的包装来做到的。 3.数据类型&#xff1a; 键的类型…...

【0805作业】Linux中 AB终端通过两根有名管道进行通信聊天(半双工)

作业一&#xff1a;打开两个终端&#xff0c;要求实现AB进程对话【两根管道】 打开两个终端&#xff0c;要求实现AB进程对话 A进程先发送一句话给B进程&#xff0c;B进程接收后打印B进程再回复一句话给A进程&#xff0c;A进程接收后打印重复1.2步骤&#xff0c;当收到quit后&am…...

ruby - ckeditor 设置编辑器高度

参考&#xff1a;Blogs <% f.cktext_area :zh_content, ckeditor: { height: 1000} %>...

WMS仓库管理系统研发规划说明

01 产品背景 1.1 背景概述 aboss WMS东南亚仓库管理系统是一个基于BigSeller系统的使用基础上&#xff0c;加上多仓库的解决思路&#xff0c;解决入库业务、出库业务、仓库调拨、库存调拨和虚仓管理等功能&#xff0c;对批次管理、物料对应、库存盘点、质检管理、虚仓管理和即…...

JavaScript |(六)DOM事件 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 &#x1f4da;事件对象&#x1f4da;事件的冒泡&#x1f4da;事件的委派&#x1f4da;事件的绑定&#x1f407;赋值绑定&#x1f407;addEventListener()&#x1f407;attachEvent()&…...

实验心得,包括代码复现工作的体会

实践是检验真理的唯一标准 resnet20,cifar100. Direct training&#xff1a; 和原论文一样的参数 64.45 time step 1, Accuracy 0.5918 time step 2, Accuracy 0.6320 time step 4, Accuracy 0.6446 time step 8, Accuracy 0.6531 time step 16, Accuracy 0.6608 time ste…...

RabbitMQ(二)

二、高级特性、应用问题以及集群搭建 高级特性 1.消息的可靠性投递 在使用RabbitMQ的时候&#xff0c;作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。 rabbitMQ整个消息投递的路径为&#xff1a; produ…...

Linux软件实操

systemctl命令 Linux系统的很多内置或第三方的软件均支持使用systemctl命令控制软件(服务)的启动、停止、开机自启 systemctl start(启动) 或 stop(关闭) 或 status(查看状态) 或 enable(开启开机自启) disable(关闭开机自启) 服务名: 控制服务的状态 系统内置的服务: Netwo…...

kagNet:对常识推理的知识感知图网络 8.4+8.5

这里写目录标题 摘要介绍概述问题陈述推理流程 模式图基础概念识别模式图构造概念网通过寻找路径来匹配子图基于KG嵌入的路径修剪 知识感知图网络图卷积网络&#xff08;GCN&#xff09;关系路径编码分层注意机制 实验数据集和使用步骤比较方法KAGNET是实施细节性能比较和分析I…...

Jmeter 压测工具使用手册[详细]

1. jemter 简介 jmeter 是 apache 公司基于 java 开发的一款开源压力测试工具&#xff0c;体积小&#xff0c;功能全&#xff0c;使用方便&#xff0c;是一个比较轻量级的测试工具&#xff0c;使用起来非常简 单。因为 jmeter 是 java 开发的&#xff0c;所以运行的时候必须先…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Angular微前端架构:Module Federation + ngx-build-plus (Webpack)

以下是一个完整的 Angular 微前端示例&#xff0c;其中使用的是 Module Federation 和 npx-build-plus 实现了主应用&#xff08;Shell&#xff09;与子应用&#xff08;Remote&#xff09;的集成。 &#x1f6e0;️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...