政安晨:【深度学习神经网络基础】(三)—— 激活函数

目录

线性激活函数

阶跃激活函数

S型激活函数

双曲正切激活函数

修正线性单元

Softmax激活函数

偏置扮演什么角色?


政安晨的个人主页政安晨

欢迎 👍点赞✍评论⭐收藏

收录专栏政安晨的机器学习笔记

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

本文目标:介绍激活函数。

在神经网络编程中,激活函数或传递函数为神经元的输出建立界限。神经网络可以使用许多不同的激活函数。我们将在本文中讨论最常见的激活函数。为神经网络选择激活函数是一个重要的考虑,因为它会影响输入数据格式化的方式。在本文中,我们将指导你选择激活函数。

线性激活函数

最基本的激活函数是线性函数,因为它根本不改变神经元输出。下面公式展示了程序通常如何实现线性激活函数:

如你所见,这个激活函数只是返回神经元输入传递给它的值。下图展示了线性激活函数的图像。

为学习提供数值的回归神经网络,通常会在其输出层使用线性激活函数。分类神经网络,即为其输入确定合适类别的神经网络,通常在其输出层使用Softmax激活函数。

阶跃激活函数

阶跃或阈值激活函数是另一种简单的激活函数。神经网络最初称为“感知机”(perceptron)。McCulloch和Pitts(1943)引入了最初的感知机,并使用了如下公式一样的阶跃激活函数:

上面公式为0.5或更高的输入值输出1,为所有其他输入值输出0。阶跃激活函数通常被称为阈值激活函数,因为它们仅对大于指定阈值的值返回1(真),如下图所示。

S型激活函数

对于仅需要输出正数的前馈神经网络,S型(Sigmoid)激活函数或逻辑激活函数是非常常见的选择。虽然它使用广泛,但双曲正切激活函数或ReLU激活函数通常是更合适的选择。我们将在后面介绍ReLU激活函数。下面公式展示了S型激活函数:

使用S型激活函数以确保值保持在相对较小的范围内,如下图所示,从图中可以看出,大于或小于0的值都会被压缩到0~1的范围内。

双曲正切激活函数

对于必须输出−1~1的值的神经网络,双曲正切(tanh)激活函数也是非常常见的激活函数,如下公式所示:

双曲正切激活函数图像的形状类似S型激活函数,图像的形状如下图所示:

双曲正切激活函数相对S型激活函数具有诸多优点。这些优点涉及神经网络训练中使用的导数,我们以后在“反向传播训练”中介绍。

修正线性单元

修正线性单元(ReLU)由Teh和Hinton在2000年引入,在过去几年中得到了迅速的应用。在ReLU激活函数之前,双曲正切激活函数通常被视为优先选择的激活函数。由于出色的训练结果,目前大多数最新研究都推荐ReLU激活函数。因此,大多数神经网络应该在隐藏层上使用ReLU激活函数,在输出层上使用Softmax或线性激活函数。

下面公式展示了非常简单的ReLU激活函数:

现在,我们将研究为什么ReLU激活函数通常比隐藏层的其他激活函数要好。性能提高的部分原因在于ReLU激活函数是线性的非饱和激活函数。与S型激活函数/逻辑激活函数或双曲正切激活函数不同,ReLU不会饱和到−1、0或1。饱和激活函数总是朝向并最终获得一个值。如双曲正切激活函数在x减小时饱和到−1,在x增大时饱和到1。

下图展示了ReLU激活函数的图像:

最新研究表明,神经网络的隐藏层应使用ReLU激活函数。

Softmax激活函数

与线性激活函数一样,通常会在神经网络的输出层中找到Softmax激活函数。Softmax激活函数用于分类神经网络。分类神经网络中,具有最高值的神经元可以宣称神经网络的输入属于它的分类。因为它是一种更好的方法,所以Softmax激活函数会强制神经网络的输出表示输入落入每个类的概率。如果没有Softmax激活函数,则神经元的输出就是数值,值最高的数表示获胜的类。

为了了解如何使用Softmax激活函数,我们来研究一个常见的神经网络分类问题。

鸢尾花数据集包含针对150种不同鸢尾花的4个测量值。这些花中的每一种都属于3个鸢尾花物种之一。当你提供花朵的测量值时,Softmax激活函数允许神经网络为你提供这些测量值属于这3个物种的概率。如神经网络可能会告诉你,该鸢尾花有80%的概率是setosa,有15%的概率是virginica,只有5%的概率是versicolour。因为这些是概率,所以它们的总和必须是100%。不可能同时有80%的概率是setosa、75%的概率是virginica、20%的概率是versicolour——这种结果是毫无意义的。

要将输入数据分为3个鸢尾花物种之一,则对于这3个物种中的每一个,你都需要一个输出神经元。输出神经元并不指定这3个物种各自的概率。因此,我们期望提供的这些概率总和为100%。而神经网络将告诉你,花朵属于这3个物种中每一个的概率。

要获得概率,请使用下面公式中的Softmax函数:

Softmax激活函数的计算方法与咱们前面介绍的其他激活函数不同。在使用Softmax作为激活函数时,单个神经元的输出取决于其他输出神经元。

下面是用伪代码实现了Softmax激活函数:

def softmax(neuron_output):sum = 0for v in neuron_output:sum = sum + vsum = math.exp(sum)proba = [ ]for i in range(len(neuron_output)):proba[i] = math.exp(neuron_output[i])/sum return proba

请考虑一个训练好的神经网络,它将数据分为三类,如3个鸢尾花物种。在这种情况下,你将为每个目标分类使用一个输出神经元。请考虑神经网络要输出以下内容:

Neuron 1: setosa: 0.9

Neuron 2: versicolour: 0.2

Neuron 3: virginica: 0.4

从上面的输出中我们可以清楚地看到,神经网络认为数据代表了setosa鸢尾花。但是,这些值不是概率。值0.9不表示数据有90%的概率代表setosa。这些值的总和为1.5。要将它们视为概率,它们的总和必须为1。

该神经网络的输出向量如下:

[0.9, 0.2, 0.4]

如果将此向量提供给Softmax激活函数,则返回以下向量:

[0.47548495534876745, 0.2361188410001125, 0.28839620365112]

以上3个值的总和为1,可以视为概率。由于向量中的第一个值四舍五入为0.48(48%),因此数据表示setosa的概率为48%。你可以通过以下方式计算该值:

sum=exp(0.9)+exp(0.2)+exp(0.4)=5.17283056695839 j0=exp(0.9)/sum=0.47548495534876745 j1=exp(0.2)/sum=0.2361188410001125 j2=exp(0.4)/sum=0.28839620365112

偏置扮演什么角色?

在上文中看到的激活函数指定了单个神经元的输出。神经元的权重和偏置(bias)共同决定了激活的输出,以产生期望的输出。要查看这个过程如何发生,请考虑下面公式。它表示了单输入的S型激活神经网络:

变量x表示神经网络的单个输入。w和b变量指定了神经网络的权重和偏置。上面公式是一种组合,包含了指定神经网络的公式和指定S型激活函数的公式。

通过调整神经元的权重可以调整激活函数的斜率或形状。下图展示了权重变化对S型激活函数输出的影响:

下图展示了使用以下参数的多个S型曲线:

f(x, 0.5, 0.0)

f(x, 1.0, 0.0)

f(x, 1.5, 0.0)

f(x, 2.0, 0.0)

为了生成这些曲线,我们没有使用偏置,这很显然,因为每种情况下第3个参数都是0。使用4个权重值会在上图中产生4条不同的S型曲线。无论权重如何,当x为0时我们总是得到相同的值0.5,因为当x为0时所有曲线都到达同一点。当输入接近0.5时,我们可能需要神经网络产生其他值。

调整偏置会使S型曲线发生移动,这使得当x接近0时,该函数取值不为0.5。下图展示了权重为1.0时,偏置变化对S型激活函数输出的影响。

下图展示了具有以下参数的多条S型曲线:

f(x, 1.0, 1.0)

f(x, 1.0, 0.5)

f(x, 1.0, 1.5)

f(x, 1.0, 2.0)

这些函数的权重均为1.0。当我们调整不同的偏置时,S型曲线向左或向右移动。由于所有曲线在右上角或左下角发生合并,因此并不是完全的移位。当我们将偏置和权重放在一起时,它们生成了一条曲线,该曲线创建了神经元所需的输出。

以上曲线仅是一个神经元的输出。在一个完整的神经网络中,许多不同神经元的输出将合并,以产生复杂的输出模式。


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

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

相关文章

【完全背包求方案数问题】AcWing1023.买书(赋练习题目)

【题目链接】活动 - AcWing 输入样例1&#xff1a; 20输出样例1&#xff1a; 2输入样例2&#xff1a; 15输出样例2&#xff1a; 0输入样例3&#xff1a; 0输出样例3&#xff1a; 1 【代码】 //1023.买书——完全背包问题#include<bits/stdc.h>using namespace st…

IP定位的原理及应用场景

IP定位&#xff0c;即通过IP地址来确定一个设备或用户所在的大致地理位置&#xff0c;是一项在现代网络时代中愈发重要的技术。它广泛应用于网络安全、数据分析、广告投放等多个领域&#xff0c;为人们的生活和工作带来了极大的便利。本文将从IP定位的原理、实现方式、应用场景…

基于springboot的大型商场应急预案管理系统源码数据库

摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了大型商场应急预案管理系统的开发全过程。通过分析大型商场应急预案管理系统管理的不足&#xff0c;创建了一个计算机管理大型商场应急预案管理系统的方案。文章…

百度Create AI开发者大会剧透丨用好三大AI神器 ,人人都是开发者

程序员会消失&#xff0c;真的吗&#xff1f;大模型的下一站是什么&#xff1f;开发者的机会在哪里&#xff1f;什么才是最好用的AI应用开发工具&#xff1f;在4月16日举办的2024百度Create AI开发者大会上&#xff0c;百度创始人、董事长兼首席执行官李彦宏将就这些备受瞩目的…

算法刷题day45

目录 引言一、母亲的牛奶二、奶牛回家三、扫雷 引言 今天主要复习了图论里的最短路、 B F S 、 D F S 、 F l o o d F i l l BFS、DFS、Flood\ Fill BFS、DFS、Flood Fill 算法&#xff0c;其实到现在感觉暴搜其实还挺好写的&#xff0c;现在刚好反过来了&#xff0c;不喜欢写…

Vue的学习之旅-part4

Vue的学习之旅-part1 vue的自带指令v-if v-else-if v-else虚拟DOM的复用v-show 与 v-if 的不同之处&#xff1a;v-if v-show各自合适的使用位置&#xff1a; v-for 循环v-for 循环遍历 :key"item" 绑定key&#xff0c;区分循环的内容循环的应用&#xff1a; 前几篇博…

257.二叉树的所有路径

给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 class Solution{public List<String> binaryTreePaths(TreeNode root){List<String> paths new ArrayList<>():c…

单片机蓝牙数据传输刚开始正常然后乱码什么原因

单片机蓝牙数据传输在开始时正常&#xff0c;但随后出现乱码的情况可能由多种原因引起。以下是一些可能的原因及解决方法&#xff1a; 波特率不匹配&#xff1a;单片机与蓝牙模块之间的波特率设置不一致可能导致数据传输错误。确保两者使用的波特率相同&#xff0c;并检查是否…

宏观认知第一篇--AI 是否就是第四次工业革命?

今年春节期间李一舟老师突然爆火&#xff0c;成功晋升为能与 ChatGPT 公司 CEO 齐名的中国 AI 大佬&#xff0c;赚到几个小目标后又火速被封&#xff0c;于是想着有空写篇小文章讲一讲跟普通人切身相关的话题-- AI 是否就是第四次工业革命&#xff1f; “AI 是否就是第四次工业…

【Java核心技术】第4章 对象与类

1 面向对象 2 自定义类 形式&#xff1a; class ClassName { field // 字段 constructor // 构造器&#xff08;构造函数&#xff09; method // 方法 } 如&#xff1a; class Employee {private String name;private double salary;private LocalDate hireDay;public Emp…

“桃花庵主”是我国哪位古代名人的称号?2024年4月12日蚂蚁庄园今日答案

原文来源&#xff1a;蚂蚁庄园今日答案 - 词令 蚂蚁庄园是一款爱心公益游戏&#xff0c;用户可以通过喂养小鸡&#xff0c;产生鸡蛋&#xff0c;并通过捐赠鸡蛋参与公益项目。用户每日完成答题就可以领取鸡饲料&#xff0c;使用鸡饲料喂鸡之后&#xff0c;会可以获得鸡蛋&…

.a和.so库文件是什么?

我们在编译开源代码后&#xff0c;通常会生成.a和.so这两个库文件&#xff0c;这两个文件有什么区别&#xff1f;又如何使用&#xff1f; 在 Linux 中&#xff0c;.a 和 .so 文件都是库文件&#xff0c;但它们有一些区别&#xff1a; 静态库文件&#xff08;.a&#xff09;&am…

全量知识系统 程序详细设计之 原型库(QA百度搜索)

Q1. 今天聊聊全知系统中的原型库设计 全知系统中的原型库设计是一个关键环节&#xff0c;它涉及到系统的整体架构、功能需求、用户体验等多个方面。以下是一些关于全知系统中原型库设计的讨论&#xff1a; 明确设计目标&#xff1a;在设计原型库之前&#xff0c;需要明确设计…

fixed固定定位transofrm失效的解决

<div class"container"><div class"fixed"></div><div class"content"><div class"centered">Centered Content</div></div></div> 固定定位&#xff08;position: fixed&#xff0…

docker安装Neo4j

1、创建文件夹用作目录映射 mkdir -p /mydata/neo4j/{conf,data,import,logs,plugins} chmod -R 777 /mydata/neo4j/{conf,data,import,logs,plugins}2、拉去镜像 docker pull neo4j3、启动容器 docker run \ -d --name neo4j \ -p 7474:7474 -p 7687:7687 \ -v /mydata/neo…

pygame第7课——实现简单一个打砖块游戏

目录 专栏导读之前的课程1、小球类设计2、挡板类的设计3、砖块类4、砖块与小球的边界碰撞检测5、检测到碰撞&#xff0c;删除砖块&#xff0c;改变运动方向完整版代码总结 专栏导读 &#x1f338; 欢迎来到Python办公自动化专栏—Python处理办公问题&#xff0c;解放您的双手 …

简单的架构模板

大纲 现状 业务背景技术背景 需求 业务需求业务痛点性能需求 方案描述 方案1 概述详细说明性能目标性能评估方案优缺点 方案2方案对比 线上方案 架构图关键设计点和设计折衷业务流程模块划分异常边界&#xff08;重要&#xff09;统计&#xff0c;监控灰度&#xff0c;回滚策略…

SSH远程登陆系统(RedHat9)

ssh的基本用法 ssh hostname/IP # 如果没有指定用什么用户进行连接&#xff0c;默认使用当前用户登录 ssh –l username hostname/IP ssh usernamehostname ssh usernameIP在第一次连接到服务器时&#xff0c;会自动记录服务器的公钥指纹信息 如果出现密钥变更导致错误可以…

L2-2 巴音布鲁克永远的土(二分+并查集)

思路&#xff1a;我们可以二分答案&#xff0c;然后判断当前答案合不合理。 对于判断答案合理&#xff0c;可以用并查集&#xff0c;看mid能否把所有检查点连进一个集合中&#xff0c;枚举每个结点&#xff0c;如何当前结点周围的四个方向可以连的话&#xff0c;就加进同一个集…

贪心算法|435.无重叠区间

力扣题目链接 class Solution { public:// 按照区间右边界排序static bool cmp (const vector<int>& a, const vector<int>& b) {return a[1] < b[1];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.siz…