激活函数数学详解以及应用场景解释

文章目录

  • 激活函数
    • 1. Sigmoid 激活函数
      • 例子及推导过程
      • 代码
    • 2. ReLU 激活函数
      • 例子及推导过程
    • 3. Tanh 激活函数
      • 例子及推导过程
      • 代码
    • 4. Softmax 激活函数
      • 例子及推导过程
      • 代码
    • CNN 中的卷积层工作原理
      • 卷积计算过程
      • 卷积后的输出及 ReLU 应用

激活函数

激活函数在神经网络中扮演着至关重要的角色,主要用于引入非线性,使神经网络能够学习和表示复杂数据,如图像、声音、文本等。以下是几种常见的激活函数及其数学表达式。

1. Sigmoid 激活函数

Sigmoid 函数是一个经典的激活函数,通常用于二分类问题中。它的数学表达式为:

σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1

Sigmoid 函数的输出范围在 0 到 1 之间,适合用作输出概率。然而,它也存在梯度消失问题,特别是当 x 的值非常大或非常小的时候。

例子及推导过程

假设卷积操作的输出特征图为:
[ 0.8 − 0.9 1.2 − 1.1 ] \begin{bmatrix} 0.8 & -0.9 \\ 1.2 & -1.1 \\ \end{bmatrix} [0.81.20.91.1]

应用 Sigmoid 激活函数的计算过程是将这个特征图中的每个元素通过 Sigmoid 函数转换。Sigmoid 函数的数学表达式是 σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1

因此,Sigmoid 激活后的特征图为:
[ σ ( 0.8 ) σ ( − 0.9 ) σ ( 1.2 ) σ ( − 1.1 ) ] \begin{bmatrix} \sigma(0.8) & \sigma(-0.9) \\ \sigma(1.2) & \sigma(-1.1) \\ \end{bmatrix} [σ(0.8)σ(1.2)σ(0.9)σ(1.1)]=
[ 1 1 + e − 0.8 1 1 + e 0.9 1 1 + e − 1.2 1 1 + e 1.1 ] \begin{bmatrix} \frac{1}{1 + e^{-0.8}} & \frac{1}{1 + e^{0.9}} \\ \frac{1}{1 + e^{-1.2}} & \frac{1}{1 + e^{1.1}} \\ \end{bmatrix} [1+e0.811+e1.211+e0.911+e1.11]

代码

import numpy as np# Sigmoid 激活函数定义
def sigmoid(x):return 1 / (1 + np.exp(-x))# 假设的卷积层输出特征图
feature_map = np.array([[0.8, -0.9], [1.2, -1.1]])# 应用 Sigmoid 激活函数
activated_feature_map = sigmoid(feature_map)print("Sigmoid 激活后的特征图:\n", activated_feature_map)

2. ReLU 激活函数

ReLU(Rectified Linear Unit)函数是深度学习中最常用的激活函数之一。它的数学表达式为:

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

ReLU 函数在正数区间内保持线性,这使得计算效率非常高。但在负数区间内,它不进行激活,可能导致“死神经元”问题。

例子及推导过程

假设我们有以下输入数据和权重:

  • 输入值: ( x = [1.0, -2.0, 3.0] )
  • 权重: ( w = [0.4, 0.3, 0.5] )
  • 偏置: ( b = -0.5 )

计算加权输入 ( z ):
z = w 1 × x 1 + w 2 × x 2 + w 3 × x 3 + b z = w_1 \times x_1 + w_2 \times x_2 + w_3 \times x_3 + b z=w1×x1+w2×x2+w3×x3+b
z = 0.4 × 1.0 + 0.3 × ( − 2.0 ) + 0.5 × 3.0 − 0.5 z = 0.4 \times 1.0 + 0.3 \times (-2.0) + 0.5 \times 3.0 - 0.5 z=0.4×1.0+0.3×(2.0)+0.5×3.00.5

应用 ReLU 激活函数:
ReLU ( z ) = max ⁡ ( 0 , z ) \text{ReLU}(z) = \max(0, z) ReLU(z)=max(0,z)

在此例中,我们首先计算了加权输入 z,然后应用了 ReLU 函数。ReLU 函数的作用是将所有负值置为 0,而保留正值不变

3. Tanh 激活函数

Tanh 函数是 Sigmoid 函数的变体,输出范围在 -1 到 1 之间。其数学表达式为:

tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} tanh(x)=ex+exexex

Tanh 函数的输出是零中心的,这使得在某些情况下,它比 Sigmoid 函数表现更好。

例子及推导过程

假设卷积操作的输出特征图为:
[ 0.5 − 0.6 0.9 − 1.0 ] \begin{bmatrix} 0.5 & -0.6 \\ 0.9 & -1.0 \\ \end{bmatrix} [0.50.90.61.0]

应用 Tanh 激活函数的计算过程是将这个特征图中的每个元素通过 Tanh 函数转换。Tanh 函数的数学表达式是 tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}} tanh(x)=ex+exexex

因此,Tanh 激活后的特征图为:
[ tanh ⁡ ( 0.5 ) tanh ⁡ ( − 0.6 ) tanh ⁡ ( 0.9 ) tanh ⁡ ( − 1.0 ) ] \begin{bmatrix} \tanh(0.5) & \tanh(-0.6) \\ \tanh(0.9) & \tanh(-1.0) \\ \end{bmatrix} [tanh(0.5)tanh(0.9)tanh(0.6)tanh(1.0)]=
[ e 0.5 − e − 0.5 e 0.5 + e − 0.5 e − 0.6 − e 0.6 e − 0.6 + e 0.6 e 0.9 − e − 0.9 e 0.9 + e − 0.9 e − 1.0 − e 1.0 e − 1.0 + e 1.0 ] \begin{bmatrix} \frac{e^{0.5} - e^{-0.5}}{e^{0.5} + e^{-0.5}} & \frac{e^{-0.6} - e^{0.6}}{e^{-0.6} + e^{0.6}} \\ \frac{e^{0.9} - e^{-0.9}}{e^{0.9} + e^{-0.9}} & \frac{e^{-1.0} - e^{1.0}}{e^{-1.0} + e^{1.0}} \\ \end{bmatrix} [e0.5+e0.5e0.5e0.5e0.9+e0.9e0.9e0.9e0.6+e0.6e0.6e0.6e1.0+e1.0e1.0e1.0]

代码

import numpy as np# Tanh 激活函数定义
def tanh(x):return np.tanh(x)# 假设的卷积层输出特征图
feature_map = np.array([[0.5, -0.6], [0.9, -1.0]])# 应用 Tanh 激活函数
activated_feature_map = tanh(feature_map)print("Tanh 激活后的特征图:\n", activated_feature_map)

4. Softmax 激活函数

Softmax 函数通常用于多分类神经网络的输出层。它将输入转换为概率分布。对于给定的类别集合,Softmax 的数学表达式为:

Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} Softmax(xi)=jexjexi

其中 ( x_i ) 是一个特定输出节点的输入,分母是所有输出节点输入的指数和。这确保了所有输出概率的总和为 1。

例子及推导过程

假设一个多分类问题的输出层得到以下得分:
scores = [ 2.0 , 1.0 , 0.1 ] \text{scores} = [2.0, 1.0, 0.1] scores=[2.0,1.0,0.1]

应用 Softmax 激活函数的计算过程是将这些得分通过 Softmax 函数转换。Softmax 函数的数学表达式是:
Softmax ( x i ) = e x i ∑ j e x j \text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j} e^{x_j}} Softmax(xi)=jexjexi

其中 ( x_i ) 是特定类别的得分,分母是所有类别得分的指数和。

因此,Softmax 激活后的概率分布为:
[ e 2.0 e 2.0 + e 1.0 + e 0.1 e 1.0 e 2.0 + e 1.0 + e 0.1 e 0.1 e 2.0 + e 1.0 + e 0.1 ] \begin{bmatrix} \frac{e^{2.0}}{e^{2.0} + e^{1.0} + e^{0.1}} & \frac{e^{1.0}}{e^{2.0} + e^{1.0} + e^{0.1}} & \frac{e^{0.1}}{e^{2.0} + e^{1.0} + e^{0.1}} \\ \end{bmatrix} [e2.0+e1.0+e0.1e2.0e2.0+e1.0+e0.1e1.0e2.0+e1.0+e0.1e0.1]

代码

import numpy as np# Softmax 激活函数定义
def softmax(x):e_x = np.exp(x - np.max(x))  # 防止数值过大return e_x / e_x.sum()# 多分类问题的输出层得分
scores = np.array([2.0, 1.0, 0.1])# 应用 Softmax 激活函数
probabilities = softmax(scores)print("Softmax 激活后的概率分布:", probabilities)

CNN 中的卷积层工作原理

卷积神经网络(CNN)中的卷积层主要用于特征提取。卷积操作涉及将卷积核(或滤波器)应用于输入数据。

卷积计算过程

考虑一个简单的例子,我们有一个 3x3 的输入矩阵和一个 2x2 的卷积核:

  • 输入矩阵:
    [ 1 2 3 4 5 6 7 8 9 ] \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ \end{bmatrix} 147258369

  • 卷积核:
    [ − 1 0 0 1 ] \begin{bmatrix} -1 & 0 \\ 0 & 1 \\ \end{bmatrix} [1001]

卷积操作包括将卷积核滑动过输入矩阵的每个区域,并计算元素的点乘,然后将结果求和。

例如,卷积核覆盖输入矩阵左上角时的计算:
[ 1 2 4 5 ] ⊙ [ − 1 0 0 1 ] = 1 × ( − 1 ) + 2 × 0 + 4 × 0 + 5 × 1 = 4 \begin{bmatrix} 1 & 2 \\ 4 & 5 \\ \end{bmatrix} \odot \begin{bmatrix} -1 & 0 \\ 0 & 1 \\ \end{bmatrix} = 1 \times (-1) + 2 \times 0 + 4 \times 0 + 5 \times 1 = 4 [1425][1001]=1×(1)+2×0+4×0+5×1=4

这个过程在整个输入矩阵上重复进行,生成输出特征图。

卷积后的输出及 ReLU 应用

假设卷积操作的输出特征图为:
[ 4 3 2 1 ] \begin{bmatrix} 4 & 3 \\ 2 & 1 \\ \end{bmatrix} [4231]

应用 ReLU 激活函数的计算过程是将这个特征图中的每个元素与 0 比较,取较大者。ReLU 函数的数学表达式是 ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)

因此,ReLU 激活后的特征图为:
[ max ⁡ ( 0 , 4 ) max ⁡ ( 0 , 3 ) max ⁡ ( 0 , 2 ) max ⁡ ( 0 , 1 ) ] \begin{bmatrix} \max(0, 4) & \max(0, 3) \\ \max(0, 2) & \max(0, 1) \\ \end{bmatrix} [max(0,4)max(0,2)max(0,3)max(0,1)]=
[ 4 3 2 1 ] \begin{bmatrix} 4 & 3 \\ 2 & 1 \\ \end{bmatrix} [4231]

在这个例子中,由于所有值都是正的,ReLU 激活后的特征图与原特征图相同。

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

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

相关文章

IPSec 协议

在 TCP/IP 协议中,对 IP 数据包没有提供任何安全保护,攻击者可以通过网络嗅探、 IP 欺骗、连接截获等方法来攻击正常的 TCP/IP 通信。因此,通信过程中会存在以下危险:数据并非来自合法的发送者、数据在传输过程中被非法篡改、信息…

前端知识(十七)——入口函数和特定函数的区别

入口函数和特定函数是编程中常见的两种函数类型,它们在功能和使用场景上有所不同。下面我将通过Python代码示例来解释它们的区别。 1.入口函数:入口函数通常是一个程序或模块的起始点,它负责接收用户输入或外部数据,并启动程序的…

DM8/达梦 数据库管理员使用手册详解

1.1DM客户端存放位置 Windows:DM数据库安装目录中tool文件夹和bin文件夹中。 Linux:DM数据库安装目录中tool目录和bin目录中。 1.2DM数据库配置助手 1.2.1Windows创建数据库 打开数据库配置助手dbca 点击创建数据库实例 选择一般用途 浏览选择数据库…

图中的最长环

说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是处于什么原因,算法学习需要持续保持,今天让我们一起来看看这一道题目————图中的最长环,图论题目中比较常见的环路…

vite+TypeScript+vue3+router4+Pinia+ElmPlus+axios+mock项目基本配置

1.viteTSVue3 npm create vite Project name:... yourProjectName Select a framework:>>Vue Select a variant:>>Typescrit2. 修改vite基本配置 配置 Vite {#configuring-vite} | Vite中文网 (vitejs.cn) vite.config.ts import { defineConfig } from vite …

C语言笔试例题_指针专练30题(附答案解析)

C语言笔试例题_指针专练30题(附答案解析) 指针一直是C语言的灵魂所在,是掌握C语言的必经之路,收集30道C语言指针题目分享给大家,测试环境位64位ubuntu18.04环境,如有错误,恳请指出,文明讨论!&am…

基于SSM+JSP网上订餐管理系统(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

Flask笔记三之连接使用数据库

本文首发于公众号:Hunter后端 原文链接:Flask笔记三之连接使用数据库 这一节介绍 Flask 与数据库的连接,以及接口里查询数据的操作。 这里使用的是 SQLAlchemy pymysql 实现与数据库的连接,SQLAlchemy 的详细介绍见之前的笔记有…

蓝桥杯2021年5月青少组Python程序设计国赛真题

30 个人在一条船上,超载,需要 15 人下船于是人们排成一队,排队的位置即为他们的编号。报数,从1开始,数到9的人下船。如此循环,直到船上仅剩15 人为止,问都有哪些编号的人下船了呢? 2】判断101-200之间有多少个素数,并输出所有素数…

Maven上传Jar到Nexus远程仓库的两种方式

Maven上传Jar到Nexus远程仓库的两种方式 文章目录 前言通过mvn clean deploy指令上传第一步 配置maven的setting.xml文件第二步 配置pom文件第三步 执行打包指令 手动上传 jar到远程仓库第一步 配置setting文件第二步 执行上传命令 前言 各个公司在开发项目时,一般…

Linux C/C++并发编程实战(8)CAS机制的ABA问题

文章目录 无锁队列中的ABA问题ABA问题解决方案 ABA问题:CAS在操作的时候会检查变量的值是否被更改过,如果没有则更新值,但是带来一个问题,最开始的值是A,接着变成B,最后又变成了A。经过检查这个值确实没有修…

Leetcode每日一题

https://leetcode.cn/problems/binary-tree-preorder-traversal/ 这道题目需要我们自行进行创建一个数组,题目也给出我们需要自己malloc一个数组来存放,这样能达到我们遍历的效果,我们来看看他的接口函数给的是什么。 可以看到的是这个接口函…

说说webpack中常见的loader?解决了什么问题?

在Webpack中,Loader是用于处理各种文件类型的模块加载器,它们用于对文件进行转换、处理和加载。常见的Loader解决了以下问题: 处理 JavaScript 文件:Babel Loader用于将最新的JavaScript语法转译为浏览器兼容的版本,以…

5_CSS三大特性盒子模型

第5章-盒子模型【比屋教育】 本课目标(Objective) 掌握CSS三大特性理解什么是盒子模型掌握内边距padding的用法掌握外边距margin的用法 1. CSS的层叠,继承,优先级 1.1 CSS层叠 层叠:是指多个CSS样式叠加到同一个元…

Web(8)SQL注入

Web网站(对外门户) 原理:not>and>or(优先级) 一.低级注入 order by的作用是对字段进行排序,如order by 5,根据第五个字段 进行排序,如果一共有4个字段,输入order by 5系统就会报错不 …

详细介绍开源固件-TF-A

什么是TF-A? TF-A(Trusted Firmware-A)是一种用于嵌入式系统的开源固件,而不是Linux的一部分。TF-A主要用于ARM架构的处理器和设备,它提供了一组安全和可信任的软件组件,用于引导和初始化系统。 如下是其…

GD32F30X-RT-Thread学习-线程管理

1. 软硬件平台 GD32F307E-START Board开发板MDK-ARM Keil 2.RT-Thread Nano 3.RT-Thread 内核学习-线程管理 ​ 在多线程操作系统中,可以把一个复杂的应用分解成多个小的、可调度的、序列化的程序单元,当合理地划分任务并正确地执行时,这…

qt可以详细写的项目或技术

1.QT 图形视图框架 2.QT 模型视图结构 3.QT列表显示大量信息 4.QT播放器 5.QT 编解码 6.QT opencv

Linux--RedHat--安装和配置C++环境

百度下载,安装包: 链接:https://pan.baidu.com/s/1IgBfCCRxGYZ_PPiedad0xQ 提取码:ffff 下载后,建个目录,先解压好安装包! (两种方法)执行如下命令: 参考…

Bypass open_basedir

讲解 open_basedir是php.ini中的一个配置选项,可用于将用户访问文件的活动范围限制在指定的区域。 假设open_basedir/var/www/html/web1/:/tmp/,那么通过web1访问服务器的用户就无法获取服务器上除了/var/www/html/web1/和/tmp/这两个目录以外的文件。…