神经网络学习笔记 - 激活函数的作用、定义和微分证明

神经网络学习笔记 - 激活函数的作用、定义和微分证明

看到知乎上对激活函数(Activation Function)的解释。
我一下子迷失了。
因此,匆匆写下我对激活函数的理解。

激活函数被用到了什么地方

目前为止,我见到使用激活函数的地方有两个。

  • 逻辑回归(Logistic Regression)
  • 神经网络(Neural Network)
    这两处,激活函数都用于计算一个线性函数的结果。

了解激活函数

激活函数的作用:就是将权值结果转化成分类结果

2类的线性分类器

先说一个简单的情况 - 一个2类的线性分类器。
了解激活函数,先要明确我们的问题是:"计算一个(矢量)数据的标签(分类)"。
以下图为例:

Logistic Regression

训练

训练的结果,是一组(w,b),和一个线性函数f(x)=wx+b

预测

我们现在仔细考虑一下,如何在预测函数中使用这个线性函数f(x)
先从几何方面理解一下,如果预测的点在分割线wx+b=0上,那么f(x)=wx+b=0
如果,在分割线的上方某处,f(x)=wx+b=8(假设是8)。
8可以认为是偏移量。

注:取决于(w, b),在分割线上方的点可以是正的,也可能是负的。
例如: y - x =0,和 x - y = 0,这两条线实际上是一样的。
但是,应用点(1, 9)的结果, 第一个是8, 第二个是 -8。

问题

然后,你该怎么办???
如何用这个偏移量来得到数据的标签

激活函数

激活函数的作用是:将8变成红色。
怎么变的呢?比如:我们使用sigmoid函数,sigmoid(8) = 0.99966464987。
sigmoid函数的结果在区间(0, 1)上。如果大于0.5,就可以认为满足条件,即是红色。

3类分类器的情况

我们再看看在一个多类分类器中,激活函数的作用。
以下图为例:

Logistic Regression 3 classes

训练

3类a,b,c分类器的训练结果是3个(w,b),三个f(x),三条分割线。
每个f(x),可以认为是针对一个分类的model。因此:

(1)fa(x)=wax+bafb(x)=wbx+bbfc(x)=wcx+bc

预测

对于预测的点x,会得到三个偏移量[fa(x),fb(x),fc(x)]
使用激活函数sigmoid:
sigmoid([fa(x),fb(x),fc(x)])
会得到一个向量, 记为:[Sa,Sb,Sc]
这时的处理方法是:再次使用激活函数(没想到吧)
一般会使用激活函数softmax。
激活函数,在这里的作用是:计算每个类别的可能性。
最后使用argmax函数得到:最大可能性的类。

注:上面差不多是Logistic Regression算法的一部分。
注:softmax也经常被使用于神经网络的输出层。

激活函数的来源

在学习神经网络的过程中,激活函数的灵感来自于生物神经网络,被认为是神经元对输入的激活程度。
最简单的输出形式是:一个开关,0,1。 要么0,要么1
也就是一个单位阶跃函数(Heaviside step function)。

这种思想主要是一种灵感来源,并不是严格的推理。

常用的激活函数有哪些

名称 公式 取值范围 微分
sigmoid - S型
(2)σ(x)=ex1+ex(3)=11+ex
(0,1)
(4)σ(x)=(1σ(x))σ(x)
sigmoid
tanh(hyperbolic tangent) - 双曲正切
(5)tanh(x)=sinh(x)/cosh(x)(6)=exexex+ex(7)=e2x1e2x+1(8)=1e2x1+e2x
(1,1)
(9)tanh(x)=1tanh(x)2
tanh
Rectified linear unit - ReLU - 修正线性单元
(10)relu(x)={0for x<0xfor x0
[0,)
(11)relu(x)={0for x<01for x0
softmax
(12)f(x)=[exik=1k=Kexk]
(0,1)
(13)softmax(zt)=ytzt={yti^(1yti^),if i=jyti^ytj^,if ij

激活函数的意义

名称 含义
sigmoid - S型
sigmoid的区间是[0, 1]。因此,可以用于表示Yes/No这样的信息。
比如:不要(0)/要(1)。
多用于过滤数据。比如:门。
tanh(hyperbolic tangent) - 双曲正切
tanh的区间是[-1, 1]。同样可以表示Yes/No的信息,而且加上了程度。
比如:
非常不可能(-1)/一般般(0)/非常可能(1)。
非常不喜欢(-1)/一般般(0)/非常喜欢(1)。
因此,tanh多用于输出数据。输出数据最终会使用softmax来计算可能性。
softmax
softmax用于输出层,计算每个分类的可能性。
Rectified linear unit - ReLU - 修正线性单元
ReLU的好处:ReLU对正值较少的数据,处理能力更强。
由于,其导数为{0, 1},可以避免梯度消失问题。

激活函数的微分的证明

sigmoid

sigmoid函数

(14)σ(x)=11+exσ(x)=(1σ(x))σ(x)

证明

(15)σ(x)x=ex(1+ex)2(16)=(1+ex11+ex)(11+ex)(17)=(1σ(x))σ(x)

tanh

tanh函数

(18)tanh(x)=e2x1e2x+1tanh(x)=1tanh(x)2

证明

(19)tanh(x)x=(12e2x+1)(20)=22e2x(e2x+1)2(21)=4e2x(e2x+1)2(22)=(e2x+1)2(e2x1)2(e2x+1)2(23)=1(e2x1e2x+1)2(24)=1tanh(x)2

softmax

激活函数softmax和损失函数会一起使用。
激活函数会根据输入的参数(一个矢量,表示每个分类的可能性),计算每个分类的概率(0, 1)。
损失函数根据softmax的计算结果y^和期望结果y,根据交叉熵方法(cross entropy loss) 可得到损失L

softmax函数

(25)softmax:yti^=softmax(oti)=eotikeotkyt^=softmax(zt)=[eotikeotk]softmax(zt)=ytzt={yti^(1yti^),if i=jyti^ytj^,if ij

证明

softmax(zt)=yt^ztif i=j(26)yti^oti=(eotikeotk)(27)=(1Skeotk) // set S=kieotk(28)=(1SS+eoti)(29)=Seoti(S+eoti)2(30)=SS+eotieotiS+eoti(31)=SS+eotieotiS+eoti(32)=(1eotiS+eoti)eotiS+eoti(33)=(1eotikeotk)eotikeotk(34)=(1yti^)yti^(35)if ij(36)ytj^oti=(eotjkeotk)(37)=(eotjS+eoti) // set S=kieotk(38)=eotjeoti(S+eoti)2(39)=eotjS+eotieotiS+eoti(40)=eotjkeotkeotikeotk(41)=ytj^yti^

参照

posted @   SNYang  阅读(14183)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示