深度学习|激活函数:网络表达增强

引言

在前文对 M-P 神经元结构的介绍以及「深度学习|模型推理:端到端任务处理」的推理过程演示中,我们反复提到了激活函数 σ ( ) \sigma() σ() 的概念,它决定了神经元的输出,在神经网络中起着至关重要的作用。激活函数的选择直接影响模型的性能和学习能力。

激活函数是一种用于引入非线性特性的数学函数,用于将加权和转换为更复杂的输出,使神经网络能够学习复杂的模式。通过引入非线性特性,可以解决非线性问题(否则神经网络的输出只是输入的线性组合,无法处理复杂的非线性问题),同时增强网络的表达能力,让其可以处理更复杂的问题。

在这里插入图片描述

激活函数对梯度的传播也很重要,一些激活函数(如 ReLU)具有稀疏激活性质,可以避免梯度消失问题,有利于更好的传播误差和加快收敛速度等作用。这些好的性质我们都将在后文对深度学习的进一步探讨中呈现给大家。

常见的激活函数

激活函数的选择往往根据求解问题的性质决定,一般回归问题可以使用恒等函数,二分类问题可以使用 sigmoid 函数,多分类问题可以使用 softmax 函数。

前文的手写数字识别任务中,输出层与隐层所用的激活函数 σ \sigma σ() 就有所不同。隐层使用了 ReLU 函数,输出层使用了 softmax 函数,我们将这些激活函数一一展开介绍。

依赖模块

我们会演示实现激活函数的单个数据运算的版本和批量数据运算的版本,其中批量计算将采用对矩阵运算有底层(甚至硬件层面)优化的 numpy 模块来实现;同时我们会使用 matplotlib 模块绘制各个激活函数的图形。

此处表示全局引入 numpy 与 matplotlib 这两个模块,后文将不再提及。

import numpy as np
import matplotlib.pyplot as plt

激活函数图形绘制

我们将统一使用如下的 draw 函数来绘制激活函数的图形:

def draw(X, activation_func, title, color='orange'):
    """
    绘制激活函数图形
    :param X: 输入数据
    :param activation_func: 激活函数
    :param title: 图形标题
    :param color: 图形颜色
    """

    # 创建一个新的图形,figsize 参数指定图形的大小为 6 x 3
    plt.figure(figsize=(6, 3))

    Y = activation_func(X)
    plt.plot(X, Y, label=title, color=color)
    plt.title(title)
    plt.grid()
    plt.xlabel('Input')
    plt.ylabel('Output')

绘图数据准备

创建一批激活函数的输入数据 X,我们可以用它们进行激活函数的功能验证,同时将 X 的元素与对应的输出 Y 的元素构成的点描绘到坐标轴上,即可绘制出激活函数的图形。

# 创建一个从 -10 到 10 的线性空间,共 400 个数据点
X = np.linspace(-10, 10, 400)

阶跃函数

阶跃函数以阈值为界,输入超过阈值则切换输出。如式 1 所示就是阶跃函数,它以 0 为界,小于 0 时输出 0,超过 0 时输出 1。

σ ( x ) = { 0 ( x ≤ 0 ) 1 ( x > 0 ) (1) \sigma(x) = \begin{cases} 0 & (x \leq 0) \\ 1 & (x > 0) \end{cases} \tag{1} σ(x)={ 01(x0)(x>0)(1)

式 1 的 Python 代码实现如下:

def step_single(x):
    """阶跃函数(单个数据计算)"""
    return 1 if x > 0 else 0

def step(x):
    """阶跃函数(批量数据计算)"""
    return np.array(x > 0, dtype=np.int32)

绘制式 1 的图像:

draw(X, step, 'Step Function')

在这里插入图片描述

可以看到,阶跃函数是一条由 0 突变到 1 的曲线,其输出值只有 0 和 1 两种情况,这种函数在神经网络中的应用受到了限制,因为它不是连续的,也不可导。<

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

三余知行

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

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

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

打赏作者

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

抵扣说明:

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

余额充值