plot函数_深度学习中的激活函数sigmoid,sofomax,relu

什么是激活函数

如下图,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数 Activation Function。

d1cf1eb803f3e55960d9757f6a575325.png
图1典型BP网络的连接和激活

为什么使用激活函数

如果不用激励函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合。

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

激活函数的类型

sigmoid

bbbdf0ee98d84f4e32b563c836c69fff.png

取值范围

(0, 1)

# -*- coding: utf-8 -*-
import numpy as np
from math import e
import matplotlib.pyplot as plt

z = np.arange(-10, 10, 0.05)
e_z = [e**(-z) for z in z]
sigmoid = [1/(1+z) for z in e_z]
plt.plot(z, sigmoid)
plt.show()

应用场景:

二分类的任务,多分类的任务不是特别适合。在二分类的任务中,根据特定的场景设置阈值,不一定是0.5的阈值,也可能是其他的。

softmax

# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import math

z = np.arange(-10, 10, 0.05)
exp_z = [math.exp(z) for z in z]
sum_exp_z = sum(exp_z)
softmax_z = [round(i / sum_exp_z, 6) for i in exp_z]
plt.plot(z, softmax_z)
plt.show()

取值范围

[0, 1]

f29c41c1e15795e82a912c786f32b540.png

应用场景

多分类任务,当类别数k=2时,Softmax回归退化为Logistic回归。

relu

f16cecf5799bf53f372cad5acb3ba0fa.png
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
z = np.arange(-10, 10, 0.05)
max_z = [max(0, z) for z in z]
plt.plot(z, max_z)
plt.show()

应用场景

CNN还有其他需要稀松或者防止梯度消失的模型,当然防止梯度消失还有其他的方式。

ReLU 会引起一种效果,叫单侧抑制作用, 在CNN网络中表现突出,它使得神经网络中的神经元具有了稀疏激活性,说明白点就是会让一部分神经元Dead。莫名觉得和drop方法有点像,收敛速度会比 sigmoid/tanh 快一些(注),猜测收敛速度会快是因为它比较稳定,不会因为梯度消失而让模型停滞不前。

# 这两个写法一样的
import math
print(math.exp(1))
print(math.e ** 1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值