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

神经网络激活函数

神经网络激活函数

  • 神经网络激活函数的定义
  • 为什么神经网络要用激活函数
  • 神经网络激活函数的求导
    • Sigmoid激活函数
    • Tanh激活函数
    • Softmax激活函数

神经网络激活函数的定义

所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图:

在这里插入图片描述

在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。

为什么神经网络要用激活函数

如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。

如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。

神经网络激活函数的求导

对神经网络激活函数求导有一个特性,它的导函数始终都可以用原式表示出来,下面列举常用神经网络激活函数

Sigmoid激活函数

表达式为σ(x)=11+e−x\sigma (x) = \frac{1}{1+e^{-x}}σ(x)=1+ex1
函数图像如下:

在这里插入图片描述

其导函数σ′(x)=∂∂x11+e−x=11+e−x∗(1−11+e−x)=σ(x)∗(1−σ(x))\sigma'(x) = \frac{\partial}{\partial x}\frac{1}{1+e^{-x}} = \frac{1}{1+e^{-x}}*(1-\frac{1}{1+e^{-x}})=\sigma(x)*(1-\sigma(x))σ(x)=x1+ex1=1+ex1(11+ex1)=σ(x)(1σ(x))

Tanh激活函数

表达式为tanh(x)=ex−e−xex+e−x=21+e−2x−1tanh(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}}=\frac{2}{1+e^{-2x}}-1tanh(x)=ex+exexex=1+e2x21

而我们的Sigma激活函数表达式为σ(x)=11+e−x\sigma (x) = \frac{1}{1+e^{-x}}σ(x)=1+ex1,所以Tanh激活函数可以用Sigma激活函数表示,tanh(x)=2σ(2x)−1tanh(x) = 2\sigma(2x)-1tanh(x)=2σ(2x)1

Tanh 函数可以看作是放大并平移的 Sigmoid 函数,但因为是零中心化的 (zero-centered) ,通常收敛速度快于 Sigmoid 函数,下图是二者的对比:
在这里插入图片描述
其导函数tanh′(x)=(ex+e−x)2−(ex−e−x)2(ex+e−x)2=1−(ex−e−x)2(ex+e−x)2=1−tanh(x)2tanh'(x) = \frac{(e^x+e^{-x})^2-(e^x-e^{-x})^2}{(e^x+e^{-x})^2}= 1- \frac{(e^x-e^{-x})^2}{(e^x+e^{-x})^2}=1-tanh(x)^2tanh(x)=(ex+ex)2(ex+ex)2(exex)2=1(ex+ex)2(exex)2=1tanh(x)2

Softmax激活函数

表达式yi=softmax(zi)=ezi∑j=1Cezjy_i = softmax(z_i) = \frac{e^{z_i}}{\sum_{j=1}^Ce^{zj}}yi=softmax(zi)=j=1Cezjezi

Softmax函数将多个标量映射为一个概率分布,yiy_iyi表示第i个输出值,即属于类别iii的概率,所有类别概率加起来为1,即∑i=1Cyi=1\sum_{i = 1}^Cy_i = 1i=1Cyi=1,其中z=WTxz = W^Txz=WTx,表示线性方程,图中的ziz_izi表示zzz的第i个元素的值。Softmax函数用于多分类,会对应多个方程。

在这里插入图片描述

首先求标量形式的导数,即第i个输出对于第j个输入的偏导数

在这里插入图片描述

其导函数

在这里插入图片描述

这里就不在做过多的推导了,感兴趣的小伙伴可以去翻阅书籍哦

http://www.lryc.cn/news/57921.html

相关文章:

  • 2.C 语言基本语法
  • Qt 6.5 LTS 正式发布
  • Linux权限提升—定时任务、环境变量、权限配置不当、数据库等提权
  • Python爬虫——使用requests和beautifulsoup4库来爬取指定网页的信息
  • 基于Java3D的网络三维技术的设计与实现
  • python机器学习数据建模与分析——数据预测与预测建模
  • Flink系列-6、Flink DataSet的Transformation
  • Java-类的知识进阶
  • C# | 上位机开发新手指南(六)摘要算法
  • 测试工程师:“ 这锅我不背 ” ,面对灵魂三问,如何回怼?
  • 【Java闭关修炼】SpringBoot-SpringMVC概述和入门
  • pdf转换器免费版哪种好用:Aiseesoft PDF Converter Ultimate | 无损转word转Excel转PPT转图片啥都行!!!
  • 革新市场营销,突破瓶颈:关键词采集和市场调查的秘密武器
  • 3年测试经验只会“点点点”,不会自动化即将面临公司淘汰?沉淀100天继续做测试
  • python:异常处理与文件操作(知识点详解+代码展示)
  • SpringBoot 过滤器和拦截器(三十八)
  • Memcache论文总结——Lec16
  • 父子组件传值问题
  • Redis大key问题
  • 00后卷王的自述,我难道真的很卷?
  • Redis第七讲 Redis存储模型详解
  • Python 进阶指南(编程轻松进阶):十五、面向对象编程和类
  • windows下postgresql安装timescaledb
  • Linux系统常用命令大全
  • 月报总结|Moonbeam 3月份大事一览
  • 多功能料理锅语音播放芯片——NV040C
  • vue23自定义svg图标组件
  • 相机雷达时间同步(基于ROS)
  • 素数环PrimeRing [3*]
  • mongodb 连接池配置