神经网络激活函数的作用是什么?

卷积神经网络中的激活函数sigmoid、tanh、relu 目录 1、什么是激活函数? 2、为什么要在卷积层后面添加激活函数? 3、激活函数的性质 3.1 sigmoid 激活函数 3.2 tanh 激活函数 3.3 ReLU 激活函数 4、如何选择激活函数? 5、神经网络中的隐藏层是什么? 1、什么是激活函数? 一个神经元会同时接收多个信号,然后将这些信号乘以一定权重求和,再用函数处理后再输出新的信号。对神经元的输入进行处理,以获得输出的函数称为激活函数。 2、为什么要在卷积层后面添加激活函数? 如果只有线性变换,那无论多少层神经元,. 阅读详情
AI摘要

本文通过解决线性不可分问题,探讨了激活函数在神经网络中的作用。文中对比了使用与未使用激活函数的神经网络表现,并通过实例展示了激活函数如何帮助模型克服线性限制。

这周本来想写一篇个人笔记,关于神经网络中反向传播算法识别手写字符的实现。但是,在整理自己的思路的时候,发现本人把之前看的许多神经网络的东西都给忘了,内心很是着急啊!在看到激活函数的时候,突然不知道激活函数是干嘛用的!立马翻遍手里的纸质资料,都说的模糊不清。无奈,赶紧来网上看看!下面,我就把在网上看到的知识点,总结一下,形成读书笔记,方便大家学习!由于本人知识有限,文章有少部分参考网上,如有侵权,请告知!我会及时修改、删除!

一、 激活函数出现的原因

思考这么一个问题:
现在有一个二分类问题,我们要将下面的三角形和圆点进行正确的分类,如图1所示。我们试着用神经网络解决这个问题。跟大家说明一下,这是一个线性不可分的问题,就是你在这个平面里,找不到一条直线可以把图中的三角形和圆点完全分开。如果你能找到,算你厉害!


图1:二分类问题

解决思路:
(1)用不带激活函数的单层感知机来解决。

首先我们想到利用最简单的单层感知机来解决,单层感知机可以画出一条直线,把平面分开,如图2所示。

图2:单层感知机分割平面

我来简单的解释一下图2。在图2中,左图是一个单层的感知机结构,其中W1、W2是网络上权重,b是偏置量。左图是一个没有激活函数单层感知机,它的工作原理是:输入特征X1和特征X2,如果y>0,证明是正类;如果y<0,证明是负类。我们这里不讨论y=0的特殊情况。根据单层感知机的工作原理,我们画出右边的坐标图。

总结:不带激活函数的单层感知机是一个线性分类器,不能解决线性不可分的问题。

(2)用不带激活函数的多个感知机来解决。
不带激活函数的单层感知机解决不了问题,那我们就会想到用多个感知机进行组合,获得更强的分类能力,看看能不能解决我们的线性不可分问题。如图3所示。

图3 多个感知器

图3中,我们已经得到了多感知器分类器了,那么它的分类能力能否解决我们的线性不可分的问题呢?我们来分析一下,来对y进行一个合并同类项,整理后的公式如下:
y=X1(W1-11W2-1+W1-12W2-2+W1-13W2-3)+X2(W1-21W2-1+W1-22W2-2+W1-23W2-3)+W2-1b1-1+W2-2b1-2+W2-3b1-3

大家看一下,合并后的式子,还是一个关于X1和X2的线性表达式,合并后的多个感知器本质上还是一个线性分类器,还是解决不了非线性的问题。
不管是单层感知机还是多个感知器,只要不带激活函数,都只能解决线性可分的问题。解决不了我们的线性不可分问题。不信,那我们就在平面中画几条直线试试,结果发现这几条直线无论在平面中如何旋转,都不能完全正确的分开三角形和圆点。结果如图4所示。

图4:线性分类器解决不了问题

在上面的线性方程的组合过程中,我们其实类似的在做三条直线的线性组合,如图5所示。图5描述了,当我们直接用没有激活函数的分类器时,其实我们还是线性组合,最多也就是更复杂的线性组合罢了。有人在这里又要抖机灵了!我数学学的好,我记得学高等数学的时候,在不定积分那一块,有个画曲为直思想来近似求解。那么,我们可以来借鉴一下,用无数条直线去近似接近一条曲线,你很聪明啊!但是比着用非线性的激活函数来说,你这解决办法还是太低端了一些。

图5:没有激活函数的分类器

思考一个问题:抛开神经网络中神经元需不需要激活函数这点不说,如果没有激活函数,仅仅是线性函数的组合解决的问题太有限了,碰到非线性问题就束手无策了.那么加入激活函数是否能够解决呢?

二、激活函数作用

我们再设计一个神经网络,在所有的隐层和输出层加一个激活函数,这里激活函数我们就用Sigmoid函数,如图6所示。这样y输出的就是一个非线性函数了,y的输出更复杂,有了这样的非线性激活函数以后,神经网络的表达能力更加强大了。能不能解决我们一开始提出的线性不可分问题呢?我们接着来验证吧!

图6:带有非线性激活函数的感知机

我们把图6中的带有激活函数的单层感知机扩展到带有激活函数的多个神经元的情况。那么神经网络的表达能力更强,具体如图7所示。

图7:带有激活函数的多个神经元组成的神经网络


图8:带激活函数的非线性组合

和图7相对应的非线性组合是图8所示的样子。这样看起来,似乎已经能解决我们线性不可分的问题了。最后,我们通过最优化损失函数的做法,通过不断的学习,能够学到正确分类三角形和圆点的曲线。具体学到什么曲线,我们不知道,或许是图9所示的曲线,也可能是其他曲线。

图9:学习到的分类曲线

总结:激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。

三、激活函数的实践

我们都知道异或问题是线性不可分的问题,那么我们可以用今天学的激活函数解决这个问题。我在之前学习周志华老师西瓜书时候,已经用RBF神经网络实现过,感兴趣的小伙伴可以参考一下。这是地址:http://blog.youkuaiyun.com/program_developer/article/details/72716316


本文参考:
以上图片大部分来自于@颜沁睿的知乎回答。非常感谢!
知乎话题:https://www.zhihu.com/question/22334626
神经网络激励函数的作用是什么?有没有形象的解释? - 忆臻的回答 - 知乎https://www.zhihu.com/question/22334626/answer/147543436
神经网络激励函数的作用是什么?有没有形象的解释? - 颜沁睿的回答 - 知乎https://www.zhihu.com/question/22334626/answer/103835591
神经网络激励函数的作用是什么?有没有形象的解释? - lee philip的回答 - 知乎https://www.zhihu.com/question/22334626/answer/21036590
机器学习周志华西瓜书。第五章:神经网络。

关注微信公众号【Microstrong】,我写过4年Android代码,了解前端、熟悉后台,现在研究方向是机器学习、深度学习!一起来学习,一起来进步,一起来交流吧!欢迎扫描下方二维码关注交流!


笔记 - 卷积神经网络:激活函数 与 网络性能之间的关系 参考 改变网络激活函数观察网络性能的变化 全连接层一直是线性输出层(Linear) Loss 训练集 测试集 准确率 训练集 测试集 sigmod函数表现为啥这么糟糕 ... 阅读详情

相关推荐

【激活函数】Activation Function——在卷积神经网络中的激活函数是一个什么样的角色??

【激活函数】学习笔记!

985小水博的摸鱼日常 1864

卷积神经网络(一):常见的激活函数以及其意义

激活函数的意义: 在生物意义上的神经元中,只有前面...

qwioer的博客 2173

自制电吉他效果器 DIY PCB(二)电路图分析

自制DIY电吉他效果器 PCB(二)电路图分析 要自制一款效果器,看懂电路图是必须的,即使你已经有了完整的设计电路图,在电路的绘制已久焊接的时候电路知识都会用到。 在效果器电路中,比较简单的是过载失真类效果器的电路。混响延迟等与声相有关的由于电路比较复杂本人也没有尝试过。其他的例如EQ、哇音等等效果器复杂程度依设计各不相同,在能做出过载失真类效果器后,可以自行尝试。 我这里主要为大家介绍失真效果器...

qq_41342525的博客 2万+

神经网络的各种激活函数的优缺点对比分析

主要对比分析了神经网络各种激活函数的优缺点。

zhan867791458的博客 2316

无线网卡选购指南:哪些型号支持Kali Linux的监听模式?附免驱动网卡推荐

本文详细解析了如何在Kali Linux下选购支持监听模式的无线网卡。核心在于选择兼容的芯片组,如Atheros AR9271和Ralink RT3070等经典型号,并提供了免驱动网卡推荐与实战配置指南,帮助安全研究人员和爱好者快速搭建无线测试环境。

wind6的博客 1563

【Unity游戏开发】SDK接入与集成——小白入门篇

一、简介   通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成,对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里,而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感,太尼玛无聊了(Android渠道一弄就十几个,直接吐血)。其实通常情况下接入SDK都是很简单的一个过程,本系列博客就让马三和大家从小白开始,从零基础开始学习如何接入SDK以及一些常见的SDK的...

weixin_34195142的博客 5763

【神经网络】激活函数的作用及常用激活函数

【神经网络】激活函数的作用及常用激活函数ReLu、Sigmoid

See_Star的博客 1万+

YOLOv11模型改进全攻略:利用轻量化模块实现精度与速度双跃升

如果你在实操中遇到模块替换导致的精度骤降或部署报错,不妨尝试调整轻量化模块的替换比例,或针对性地保留关键层的原始结构。记住,轻量化的核心是“在精度损失可接受的范围内最大化提升效率”,只要结合业务场景灵活取舍,你也能让YOLOv11在资源受限的环境中大放异彩。接下来,我们从模块选型到代码集成,一步步带你打造“轻量且能打”的YOLOv11,真正帮你解决工业落地中的效率与精度痛点。训练过程中关注模型的mAP和推理速度,若精度下降过多,可调整模块替换的比例(如仅替换Backbone的部分卷积层)。

m0_64661770的博客 502

神经网络激活函数的作用是什么

神经网络激活函数的作用是什么

qq_44995210的博客 448

Vue - 在纯 HTML 普通项目中实现组件化,让原生 html 项目支持引入 *.vue 组件 / 组件与组件间的互相引用等,完美解决了引入组件出现的跨域问题(保姆级详细教程,完整示例源码及插件)

html中使用vue组件,在HTML页面中引入vue组件,HTML界面利用http-vue-loader.js以组件方式引入vue文件,使用http-vue-loader引入组件出现报错,在html页面使用http-vue-loader插件引入组件报跨域错误,如何解决http-vue-loader引用组件时出现跨域问题,纯html原生web项目引入vue后如何实现组件引入,使用http-vue-loader插件控制台报错跨域,http-vue-loader跨域怎么办官方文档,html页面如何引入.vu

🏆 前端领域优质创作者 3909

【ODX介绍】-5-用于Flash刷写的ODX-F文件概述

用于Flash刷写的ODX-F文件概述

「汽车电子助手」的博客 2531

激活函数篇 01 —— 激活函数在神经网络的作用

欢迎来到我的主页:【本篇文章收录于专栏【以下是激活函数系列的相关的所有内容。

do better. 1820

第0章 《机器人工程师带你入门SLAM》专栏所有文章目录汇总(截止目前115篇文章),方便大家查看阅读

《机器人工程师带你入门SLAM》专栏文章汇总:优快云热销专栏已更新100+篇优质内容,涵盖SLAM技术全栈知识体系。文章分为三大类:1)基础工具与环境配置,包括Ubuntu、Git等必备技能;2)C++编程从入门到进阶,详解变量、类、模板等核心概念;3)SLAM核心库实战,深入解析ROS、Eigen、PCL等关键库的应用。专栏提供从计算机基础到项目实战的系统学习路径,并附代码实例。点击专栏主页可订阅查看全部内容,后续将保持更新。

行知SLAM 1071
上一篇: 机器学习的采样
下一篇: Python 中的 if __name__ == '__main__'理解
Microstrong0305
Microstrong0305 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄12年 6405粉丝 312原创
评论 32
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值