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

激活函数的本质

激活函数(Activation Function)

是神经网络中的一种函数,它接受一个输入(通常是神经元的加权和)并产生一个输出作为神经元的最终输出。激活函数的作用是引入非线性性,使神经网络能够学习复杂的模式和关系。

在神经网络中,激活函数通常被用于每个神经元的输出,以便引入非线性变换。如果没有激活函数,整个神经网络将由线性变换组成,多个线性变换的组合仍然是线性的。通过引入非线性激活函数,神经网络可以学习和表示更复杂的函数关系,使其能够适应更广泛的问题。

常见的激活函数包括:

  1. Sigmoid 函数(Logistic 函数): 将输入映射到范围 (0, 1) 之间,常用于输出层的二分类问题。

    [ \text{sigmoid}(x) = \frac{1}{1 + e^{-x}} ]

  2. Tanh 函数: 类似于 Sigmoid 函数,但将输入映射到范围 (-1, 1) 之间,有时在隐藏层中使用。

    [ \text{tanh}(x) = \frac{e^{x} - e{-x}}{e{x} + e^{-x}} ]

  3. ReLU 函数(Rectified Linear Unit): 将负数映射为零,对正数保持不变。是目前最常用的激活函数之一。

    [ \text{ReLU}(x) = \max(0, x) ]

  4. Leaky ReLU 函数: 与 ReLU 类似,但对负数的输出有一个小的斜率,避免了 ReLU 的一些问题。

    [ \text{Leaky ReLU}(x) = \max(\alpha x, x) ],其中 (\alpha) 是一个小的正数。

  5. Softmax 函数: 用于多分类问题的输出层,将输入转化为概率分布。

    [ \text{Softmax}(x_i) = \frac{e{x_i}}{\sum_{j=1}{K}e^{x_j}} ],其中 (K) 是类别的数量。

不同的激活函数适用于不同类型的问题和网络结构,选择合适的激活函数对神经网络的性能和训练过程都有影响。

非线性变换

非线性变换是指输入与输出之间的关系不是线性的。在数学上,如果一个变换是线性的,它应该满足两个性质:可加性和齐次性。可加性意味着变换对两个输入的和等于两个输入分别经过变换后的和,而齐次性意味着变换对输入的缩放等于输入经过变换后的缩放。如果一个变换不满足这两个性质,那么它就是非线性的。

在神经网络中,非线性变换是通过激活函数引入的。神经元的输出经过激活函数后才成为网络的最终输出。如果没有激活函数,多层神经网络的组合将简化为单一的线性变换,因为线性函数的组合仍然是线性的。引入非线性激活函数后,神经网络能够学习和表示更加复杂的关系和模式,因为非线性函数能够捕捉数据中的非线性结构。

举例来说,假设有一个简单的神经网络层,每个神经元的输出 (y) 是输入 (x) 的线性组合和激活函数 (f) 的结果:

[ y = f(Wx + b) ]

其中,(W) 是权重矩阵,(b) 是偏置,(f) 是激活函数。如果 (f) 是一个线性函数,那么整个变换仍然是线性的。但如果 (f) 是一个非线性函数,比如 ReLU,tanh 或 sigmoid,那么整个变换就是非线性的。

引入非线性变换是为了增强神经网络的表达能力,使其能够学习和适应更为复杂的模式和关系,从而提高网络在处理各种任务上的性能。

让我们通过简单的例子来说明线性和非线性的概念。

  1. 线性关系:

    假设有一个简单的线性关系,例如 (y = 2x + 3)。这是一个线性函数,因为 (y) 和 (x) 之间的关系是直线,且满足线性方程。

(x)(y)
15
27
39

在这个例子中,当 (x) 增加1时,(y) 增加2,符合线性关系。

  1. 非线性关系:

    现在考虑一个非线性关系,例如 (y = x^2)。这是一个非线性函数,因为 (y) 和 (x) 之间的关系是二次曲线,不满足线性方程
    | (x) | (y) |
    | ----- | ----- |
    | 1 | 1 |
    | 2 | 4 |
    | 3 | 9 |

    在这个例子中,当 (x) 增加1时,(y) 不仅增加1,而是增加了原来的 (x) 的平方。

总的来说,线性关系是指两个变量之间的关系是一条直线,而非线性关系则是指关系不是直线的。在神经网络中,引入非线性变换是为了使网络能够学习和表示更为复杂的模式和关系,因为许多现实世界的问题和数据都包含非线性结构。希望这个例子能帮助你更好地理解线性和非线性的概念。

非线性的好处

就是让线/面更容易拟合点

引入非线性变换的好处在于增强神经网络的表达能力,使其能够学习和适应更为复杂的模式和关系。以下是一些非线性变换的好处:

  1. 学习非线性关系: 现实世界中的许多问题和数据包含复杂的非线性结构。通过使用非线性激活函数,神经网络能够更灵活地拟合和学习这些非线性关系,从而提高模型的性能。

  2. 表示层次特征: 非线性激活函数允许神经网络在不同层次上学习抽象和高级的特征。多层非线性变换可以逐渐构建复杂的特征表示,从而更好地捕捉数据的结构和模式。

  3. 解决分类问题: 对于分类问题,非线性变换可以使神经网络学习非线性决策边界,从而更好地区分不同类别。这对于处理复杂的分类任务非常重要。

  4. 防止信息损失: 在深度神经网络中,经过多次线性变换后,输出仍然是输入的线性组合。这样可能导致信息的丢失,因为多次线性变换等效于一次线性变换。通过引入非线性激活函数,可以防止信息在网络中的线性传递,从而保留更多的信息。

  5. 梯度下降的非线性优化: 非线性激活函数引入了非线性性质,这对优化算法(如梯度下降)的收敛至关重要。线性函数的组合仍然是线性的,容易导致梯度消失或爆炸的问题,而非线性激活函数有助于缓解这些问题。

总的来说,非线性变换使神经网络更具灵活性,能够处理更为复杂的任务和数据。这是深度学习成功的一个关键因素,因为它使神经网络能够适应各种不同的模式和结构,提高了模型的泛化能力。

相关文章:

激活函数的本质

激活函数(Activation Function) 是神经网络中的一种函数,它接受一个输入(通常是神经元的加权和)并产生一个输出作为神经元的最终输出。激活函数的作用是引入非线性性,使神经网络能够学习复杂的模式和关系。…...

[工业自动化-18]:西门子S7-15xxx编程 - 软件编程 - PLC用于工业领域的嵌入式系统:硬件原理图、指令系统、系统软件架构、开发架构等

目录 前言: 一、PLC的硬件电路原理 1.1 硬件框图 1.2 硬件模块详解 (1)CPU (2)存储器 (3)输入/输出(I/O)模块 (4)编程器 (5&a…...

【C++】——运算符重载

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…...

怎么理解独立机器和虚拟机

独立服务器:顾名思义,就是一个放在机房的实实在在的物理服务器,一个单独的主机(具有性能高,处理速度快等优点,但 也有价格高,可扩展性不强等缺点) vps:虚拟专用服务器,一…...

以太网和局域网

计算机网络的定义 计算机网络是一个将分散的、具有独立功能的计算机,通过通信设备与线路连接起来,由根据协议编写的软件来实现的资源共享和信息传递的系统 计算机网络的分类 广域网是互联网的核心部分 局域网 常见的局域网拓扑结构有4大类&#xff1a…...

【Git】第三篇:基本操作(配置本地仓库)

初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,git默认使用配置邮箱以及用户名登入,但会要求你手动输入密码。 配置本地仓库:git con…...

JS中sort排序

在我们JS排序中,有许多排序的方法,比如冒泡排序、选择排序等等。这次我为大家介绍一下sort排序! sort 按照 Unicode code 位置排序,默认升序 默认情况下,sort()会按照升序重新排序数组,即最小值在前最大值…...

【现场问题】datax中write部分为Oracle的时候插入clolb类型字段,插入的数据为string且长度过场问题

datax的Oraclewriter 报错显示查询报错展示查找datax中的数据插入模块 报错显示 occurred during batching: ORA-01704: string literal too long 查询报错展示 基本上查到的都是这样的,所以锁定是clob的字段类型的问题,而且是只有Oracle出问题&#…...

ASK、PSK、FSK的调制与解调

ASK、PSK、FSK的调制与解调 本文主要涉及数字信号的调制与解调,内容包括:2ASK、2PSK、2FSK的调制与解调以及频谱分析 关于通信原理还有其他文章可参考: 1、信息量、码元、比特、码元速率、信息速率详细解析——实例分析 2、模拟系统的AM信号的…...

基于XML的声明式事务

场景模拟 参考基于注解的声明式事务 修改Spring的配置文件 将Spring配置文件中去掉tx:annotation-driven标签&#xff0c;并添加配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org…...

力扣labuladong一刷day9滑动窗口共4题

力扣labuladong一刷day9滑动窗口共4题 文章目录 力扣labuladong一刷day9滑动窗口共4题一、76. 最小覆盖子串二、567. 字符串的排列三、438. 找到字符串中所有字母异位词四、3. 无重复字符的最长子串 一、76. 最小覆盖子串 题目链接&#xff1a;https://leetcode.cn/problems/m…...

ubuntu开机系统出错且无法恢复。请联系系统管理员。

背景&#xff1a; ubuntu22.04.2命令行&#xff0c;执行自动安装系统推荐显卡驱动命令&#xff0c;字体变大&#xff0c;重启后出现如下图错误&#xff0c;无法进入系统&#xff0c;无法通过CTRLALTF1-F3进入TTY模式。 解决办法&#xff1a; 1.首先要想办法进入系统&#xff…...

Transformer详解一:transformer的由来和先导知识

目录 参考资料前言一、预训练二、神经网络语言模型&#xff08;NNLM&#xff09;&#xff1a;预测下一个词one-hot编码的缺陷词向量&#xff08;word embedding&#xff09; 三、Word2Vec模型&#xff1a;得到词向量CBOWSkip-gramWord2Vec和NNLM的区别Word2Vec的缺陷 四、ELMO模…...

数字化产品经理的金字塔能力模型

在企业数字化转型的浪潮下&#xff0c;要求IT团队更加主动的服务业务、赋能业务&#xff0c;而数字化产品经理正是IT、业务融合的桥梁&#xff0c;该岗位需要具备业务、技术、商业的复合知识结构&#xff0c;并且拥有很强的自驱力。那么数字化产品经理在企业如何产生价值、赋能…...

这 11 个 for 循环优化你得会

日常开发中&#xff0c;经常会遇到一些循环耗时计算的操作&#xff0c;一般也都会采用 for 循环来处理&#xff0c;for 作为编程入门基础&#xff0c;主要是处理重复的计算操作&#xff0c;虽然简单好用&#xff0c;但在写法上也有很多的考究&#xff0c;如果处理不好&#xff…...

JVM字符串常量池StringTable

目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前&#xff0c;hotspot对于方法区的实现是永久代&#xff…...

【华为OD题库-010】寻找矿堆的最大价值-Java

题目 给你一个由0(空地)、1(银矿)、2(金矿)组成的的地图&#xff0c;矿堆只能由上下左右相邻的金矿或银矿连接形成。超出地图范围可以认为是空地。 假设银矿价值1&#xff0c;金矿价值2&#xff0c;请你找出地图中最大价值的矿堆并输出该矿堆的价值 输入描述 地图元素信息如: 2…...

在PyTorch中使用CUDA, pytorch与cuda不同版本对应安装指南,查看CUDA版本,安装对应版本pytorch

目录 1 查看本机CUDA版本 2 查看对应CUDA的对应pytorch版本安装 3 用pip 安装 4 用conda安装 5 验证安装 在PyTorch中使用CUDA&#xff0c;根据你的具体环境和需求调整版本号&#xff0c;确保安装的PyTorch版本与你的CUDA版本兼容。 在PyTorch中使用CUDA&#xff0c;你需…...

copilot 产生 python工具函数并生成单元测试

stock.py 这个文件&#xff0c;我只写了注释&#xff08;的开头&#xff09;&#xff0c;大部分注释内容和函数都是copilot # split a string and extract the environment variable from it # input can be , pathabc, pathabc;pathdef, pathabc;pathdef;pathghi # output i…...

缓存与数据库双写一致性几种策略分析

一、背景 在高并发场景中&#xff0c;为防止大量请求直接访问数据库&#xff0c;缓解数据库压力&#xff0c;常用的方式一般会增加缓存层起到缓冲作用&#xff0c;减少数据库压力。引入缓存&#xff0c;就会涉及到缓存与数据库中数据如何保持一致性问题&#xff0c;本文将对几…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

AI书签管理工具开发全记录(十九):嵌入资源处理

1.前言 &#x1f4dd; 在上一篇文章中&#xff0c;我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源&#xff0c;方便后续将资源打包到一个可执行文件中。 2.embed介绍 &#x1f3af; Go 1.16 引入了革命性的 embed 包&#xff0c;彻底改变了静态资源管理的…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列&#xff1f;2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代&#xff0c;运营商作为信息通信网络的核心枢纽&#xff0c;承载着海量用户数据与关键业务传输&#xff0c;其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级&#xff0c;传统安全防护体系逐渐暴露出局限性&a…...