当前位置: 首页 > news >正文

激活函数为何能增强神经网络的非线性表达能力?

神经网络的威力有多强?现在的大模型可以写诗作画、图像识别可以识人识猫,这背后都是神经网络的功劳。而激活函数在其中扮演着重要的角色,如果神经网络中没有“激活函数”,再深的网络其实也没啥用。本质上,它只是一堆线性函数的叠加,无法处理真正复杂的任务。本文分享一个关键问题:

激活函数为什么能增强神经网络的“非线性表达能力”?


1. 什么是“线性表达”?什么是“非线性表达”?

在进入神经网络之前,先明确两个关键词:线性非线性

1.1 线性表达:像直线一样简单

我们常见的公式:
y = 3 x + 5 y=3x+5 y=3x+5
这就是线性表达。输入 x增加一倍,输出 yyy 也按比例增加——关系可预测、简单直白

再比如:

  • 工资 = 每小时薪水 × 工时
  • 商品总价 = 单价 × 数量

这些都是线性表达。

1.2 非线性表达:像迷宫一样复杂

但现实生活中,很多事情并不是线性的:

  • 学习时间和成绩之间,不是简单的“学得多就考得高”;
  • 一张图像的像素变化,与“是不是猫”之间关系远非线性;
  • 大脑如何理解一段文字,涉及到层层抽象和语义联想。

这类“非线性表达”往往表现为:

  • 曲线
  • 拐点
  • 变化速率不恒定
  • 多个因素之间交互影响

比如:
y = x 2 y = s i n ⁡ ( x ) y = l o g ⁡ ( x ) y=x^2 \\ y=sin⁡(x) \\ y=log⁡(x) \\ y=x2y=sin(x)y=log(x)

2. 神经网络想要“聪明”,就必须非线性

即时神经网络叠几十层,也很难解决复杂问题!
因为如果没有激活函数,这些网络做再多层,也不过是一个“超级线性函数”。

来看个例子
o u t p u t = W 2 ( W 1 x + b 1 ) + b 2 output = W_2 (W_1 x + b_1) + b_2 output=W2(W1x+b1)+b2
这是两层线性变换,数学上可以简化成一层:
o u t p u t = W ⋅ x + b output=W⋅x+b output=Wx+b
还是线性。

这就像你用 100 根尺子堆在一起,还是只能画直线。

3. 激活函数对神经网络的作用

常见激活函数:深度学习之激活函数

那么,怎么让网络学会“弯曲”、“跳跃”、“识别复杂模式”呢?

关键就在这里——激活函数(activation function)

激活函数是神经网络中的“魔法变换器”,它的本质是一个非线性函数。例如:

激活函数公式特点
ReLU f ( x ) = m a x ⁡ ( 0 , x ) f(x)=max⁡(0,x) f(x)=max(0,x)截断负值,保留正值
Sigmoid f ( x ) = 1 1 + e − x f(x)=\frac{1}{1 + e^{-x}} f(x)=1+ex1S型曲线
Tanh f ( x ) = t a n h ⁡ ( x ) f(x)=tanh⁡(x) f(x)=tanh(x)-1 到 1 的平滑曲线

这些函数对输出进行了“弯曲处理”,一旦加入网络,每一层就不再只是单纯的线性组合。

例如 ReLU:

  • 输入负值:输出 0(斩断)
  • 输入正值:原样输出(线性)

把 ReLU 放到网络层之间,网络就拥有了“非线性能力”,可以画曲线、识别边缘、理解复杂模式。

4. 现实中的例子:为什么非线性才“聪明”?

4.1 图像识别

判断图片里是不是猫:

  • 猫耳朵是三角形
  • 猫眼睛是椭圆形
  • 毛发边缘有纹理

这些不是线性叠加能搞定的——得学会看“形状”、“边缘”、“组合模式”——全是非线性特征。

4.2 自然语言处理

一句话“我不讨厌你”,和“我讨厌你”只差一个“不”,意思却完全相反。

这不是线性加减能理解的,而是需要通过多层抽象、非线性表达捕捉语义。

5. 数学理论支持:通用逼近定理

不仅直觉上合理,数学上也有“通用逼近定理”支持这一观点:

只要神经网络有一层隐藏层,并使用非线性激活函数,它就可以逼近任意连续函数。

这意味着,只要网络足够大、结构合理,有了激活函数,它理论上可以学习任何你想要的映射关系

六、总结

关键词内容
线性表达输入和输出之间是直线关系,简单可预测
非线性表达输入输出之间有复杂变化,需更强表达力
激活函数作用引入非线性,使神经网络能处理复杂问题
现实意义图像识别、语言处理等任务都需要非线性能力
http://www.lryc.cn/news/573603.html

相关文章:

  • 【node】Mac m1 安装nvm 和node
  • WEB3合约开发以太坊中货币单位科普
  • 【数据结构与算法】数据结构核心概念系统梳理
  • go excel解析库xuri/excelize中的SAX
  • 【人工智能基础】初识神经网络
  • 2.jupyter切换使用conda虚拟环境的最佳方法
  • Flink SQL Connector Kafka 核心参数全解析与实战指南
  • Windows防火墙指南大全:安全红线与科学替代方案
  • 通俗理解物联网中的APN
  • Vmware WorkStation 17.5 安装 Ubuntu 24.04-LTS Server 版本
  • 【机器学习】数学基础——张量(进阶篇)
  • 九联UNT403G/UNT413G-国科GK6323V100C-2+8G/4+16G-安卓9.0-优盘短接强刷固件包
  • 抖音小程序开发:ttml和传统html的区别
  • 深入解析C#数组协变与克隆机制
  • Android NDK—JNI基础
  • Linux(3)
  • Kafka 原理与核心机制全解析
  • Vite 原理深入剖析
  • 【PyTorch革命】机器学习系统编程模型的演进之路
  • 从C++编程入手设计模式——命令模式
  • 【机器学习四大核心任务类型详解】分类、回归、聚类、降维智能决策指南
  • 8.特征提取与直方图
  • MATLAB GUI界面设计 第二章——APP Designer操作正式入门
  • Linux 下的 socket
  • Node.js爬虫 CheerioJS ‌轻量级解析、操作和渲染HTML及XML文档
  • 【机器学习的五大核心步骤】从零构建一个智能系统
  • STM32-GPIO-推挽输出详解
  • 深入解析Flink Local模式启动流程源码:揭开作业初始化的神秘面纱
  • Ubuntu20 搭建 Java、Redis、Nginx
  • GO 语言学习 之 helloWorld