【3.2 激活函数(上)】

3.2 激活函数(上)


深度学习中的激活函数是神经网络中非常关键的一部分,它们为模型引入了非线性,使得神经网络能够学习复杂的数据表示。下面将详细介绍sigmoid函数和阶跃函数(也称为阈值函数或单位阶跃函数),包括它们的实现、图形以及它们之间的比较。

阶跃函数(Step Function)

定义:阶跃函数是一种简单的二值函数,它根据输入是否超过某个阈值(通常是0)来输出1或0。

实现(Python代码):

import numpy as np
import matplotlib.pyplot as plt

def step_function(x):
    return np.array(x > 0, dtype=np.int)

# 绘制阶跃函数的图形
x = np.linspace(-2, 2, 100)
y = step_function(x)
plt.plot(x, y)
plt.ylim([-0.1, 1.1])  # 稍微调整y轴范围以便更清晰地显示
plt.title("Step Function")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.show()

图形:阶跃函数的图形是一个在x=0处突然跳跃的阶梯形状,x<0时y=0,x>=0时y=1。

Sigmoid函数

定义:Sigmoid函数是一种将任意实值压缩到(0, 1)区间内的平滑函数,常用于二分类问题的输出层。

实现(Python代码):

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

# 绘制Sigmoid函数的图形
x = np.linspace(-10, 10, 100)
y = sigmoid(x)
plt.plot(x, y)
plt.title("Sigmoid Function")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.show()

图形:Sigmoid函数的图形是一个S形曲线,当x趋于负无穷时,y趋于0;当x趋于正无穷时,y趋于1;在x=0时,y=0.5。

Sigmoid与阶跃函数的比较

  1. 平滑性:Sigmoid函数是平滑的,而阶跃函数在阈值处是不连续的。这种平滑性使得Sigmoid函数在反向传播算法中梯度计算更加稳定,而阶跃函数则可能导致梯度消失或爆炸问题。

  2. 输出范围:Sigmoid函数的输出范围是(0, 1),这使得它可以被解释为概率或置信度,非常适合于二分类问题的输出层。而阶跃函数的输出只有0和1,直接用于分类决策,但在训练过程中通常不作为神经网络的激活函数使用。

  3. 梯度特性:Sigmoid函数在输入接近0时梯度较大,但随着输入远离0,梯度逐渐趋近于0,这可能导致梯度消失问题。而阶跃函数在阈值处的梯度是不定义的(或者说是不存在的),这进一步限制了它在神经网络中的使用。

  4. 应用场景:由于Sigmoid函数的平滑性和输出范围特点,它经常被用作神经网络中的激活函数,尤其是在二分类问题的输出层。而阶跃函数由于其不连续性和梯度问题,在深度学习中通常不直接作为激活函数使用,但在某些特定情况下(如决策边界的直观表示)仍然有其应用价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wang151038606

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值