深度学习|表示学习|为什么要有激活函数?|03

如是我闻: 激活函数赋予神经网络非线性能力,从而使其能够处理复杂的任务。以下是我们为什么需要激活函数:


1. 引入非线性

  • 问题
    • 如果没有激活函数,神经网络的每一层实际上只是线性变换(矩阵乘法和加法)。
    • 线性变换的组合仍然是线性,因此无论网络有多少层,最终输出仍然是输入的线性函数。
  • 解决
    • 激活函数引入非线性,使神经网络能够近似复杂的非线性函数。
    • 这使得神经网络可以学习更复杂的映射,比如图像分类、语音识别等。

2. 增强表达能力

  • 神经网络的目标是通过学习参数来逼近输入和输出之间的映射。
  • 激活函数帮助网络捕获数据的复杂模式,例如分类边界或特征关系。
  • 线性网络 无法表示非线性边界,而非线性网络(通过激活函数)可以轻松表示复杂边界。

3. 提供梯度流

  • 在神经网络训练过程中,需要通过反向传播算法计算梯度以更新参数。
  • 激活函数决定了梯度流的特性:
    • 非饱和激活函数(如 ReLU)可以缓解梯度消失问题。
    • 平滑激活函数(如 sigmoid 或 tanh)可以帮助梯度变化更平滑,但可能导致梯度消失。

4. 类型多样化以适应不同任务

不同的激活函数适用于不同任务和场景:

  • Sigmoid
    • 将输出映射到 (0, 1),适合二分类任务。
  • Tanh
    • 输出范围为 (-1, 1),适合对称的数据分布。
  • ReLU
    • 简单高效,广泛用于深层网络,能缓解梯度消失问题。
  • Leaky ReLU / Parametric ReLU
    • 解决了 ReLU 的"死亡神经元"问题。
  • Softmax
    • 用于多分类任务,将输出转化为概率分布。

5. 控制输出范围

  • 激活函数可以对网络的输出进行约束,使其更易于解释或适配特定任务:
    • Sigmoid 和 Softmax 输出概率值(0 到 1)。
    • Tanh 输出在 -1 到 1 范围内,适合正负对称的数据。

例子对比:没有激活函数 vs. 有激活函数

  • 没有激活函数的网络
    f ( x ) = W 2 ( W 1 x + b 1 ) + b 2 f(x) = W_2(W_1x + b_1) + b_2 f(x)=W2(W1x+b1)+b2

    是一个简单的线性函数,无法解决复杂的分类或回归问题。

  • 有激活函数的网络
    f ( x ) = W 2 σ ( W 1 x + b 1 ) + b 2 f(x) = W_2\sigma(W_1x + b_1) + b_2 f(x)=W2σ(W1x+b1)+b2

    其中 σ \sigma σ 是激活函数(如 ReLU 或 sigmoid),可以通过分段非线性实现复杂映射。


激活函数的存在赋予神经网络非线性能力,使其可以建模复杂的关系。它增强了网络的表达能力,控制了输出范围,并确保了梯度流动,最终使深度学习成为解决现实问题的强大工具。

以上

相关推荐
小圣贤君6 小时前
在 Electron 里造一个「搜书 + 下载」:从 so-novel 到 51mazi 的爬虫实践
前端·人工智能·爬虫·electron·ai写作·小说下载·网文下载
AC赳赳老秦6 小时前
智能协同新纪元:DeepSeek驱动的跨岗位、跨工具多智能体实操体系展望(2026)
大数据·运维·人工智能·深度学习·机器学习·ai-native·deepseek
小江的记录本6 小时前
【MacOS】MacBook Pro 键盘全解析 + macOS 快捷键大全
java·经验分享·学习·macos·计算机外设·键盘·敏捷开发
艾莉丝努力练剑6 小时前
【MYSQL】MYSQL学习的一大重点:MYSQL数据类型
android·linux·数据库·人工智能·学习·mysql·网络安全
fanxianshi6 小时前
2026 年 3 月行业动态与开源生态全景报告
人工智能·深度学习·神经网络·机器学习·计算机视觉·开源·语音识别
CoderJia程序员甲6 小时前
GitHub 热榜项目 - 日榜(2026-03-14)
人工智能·ai·大模型·github·ai教程
冬奇Lab6 小时前
ClaudeCode武装三件套:Ghostty + Yazi + Lazygit 打造高效开发环境
人工智能·ai编程
妄汐霜6 小时前
小白学习笔记(vue3和axios)
笔记·学习
wubba lubba dub dub7506 小时前
第三十八周 学习周边
学习
weixin_443478516 小时前
flutter学习之状态管理相关组件
javascript·学习·flutter