激活函数是深度学习、神经网络和人工智能中非常基础的一个术语。它用来描述人工神经元在完成加权求和之后如何把线性结果转换成输出信号。换句话说激活函数是在回答神经元算出一个分数之后应该怎样响应。如果说权重与偏置决定神经元“怎样综合输入”那么激活函数决定神经元“怎样输出结果”。没有激活函数神经网络即使堆叠很多层本质上仍然难以表达复杂非线性关系。因此激活函数常用于感知器、多层感知器、卷积神经网络、循环神经网络、Transformer 和深度学习模型训练是理解神经网络表达能力的核心概念之一。一、基本概念什么是激活函数激活函数Activation Function是作用在神经元线性输出上的函数。图 1人工神经元中的激活函数的作用一个人工神经元通常先计算也可以写成向量形式其中• x₁, x₂, …, xₙ 表示输入特征• w₁, w₂, …, wₙ 表示权重• b 表示偏置• z 表示线性输入或加权得分然后神经元通过激活函数得到输出其中• f 表示激活函数• a 表示神经元输出从通俗角度看激活函数就是神经元的“响应规则”。它决定• z 很大时输出应该有多大• z 很小时输出是否应该被抑制• z 为负时是否仍然允许输出• 输出是否应该压缩到某个范围内例如ReLU 激活函数定义为它表示• 如果 z 0输出 z• 如果 z ≤ 0输出 0从通俗角度看ReLU 像一个简单开关有正向信号就通过没有正向信号就关闭。二、为什么需要激活函数激活函数之所以重要是因为神经网络需要表达非线性关系。如果一个神经网络没有激活函数那么每一层都只是线性变换把它们合在一起本质上仍然是一个线性变换也就是这说明多个线性层堆叠起来如果没有非线性激活整体仍然只是线性模型。从通俗角度看没有激活函数的深层网络只是把一条直线变换来变换去仍然学不会真正复杂的弯曲关系。而现实中的问题往往不是线性的。例如• 图像中的物体形状复杂• 文本语义依赖上下文• 用户行为存在复杂组合关系• 医学指标之间可能相互作用• 分类边界可能是弯曲的、多段的或交错的激活函数的作用就是给神经网络引入非线性使模型能够学习复杂函数。这也是深度学习比简单线性模型更强的重要原因之一。三、激活函数的基本作用激活函数主要有三个作用。1、引入非线性这是激活函数最核心的作用。例如ReLU、Sigmoid、Tanh 都会把线性输入 z 转换成非线性输出。有了非线性激活函数多层神经网络才能逐层组合出复杂模式。从通俗角度看激活函数让神经网络不再只能画直线而可以组合出复杂边界。2、控制输出范围不同激活函数会把输出限制在不同范围内。例如Sigmoid 函数输出范围是Tanh 函数输出范围是Softmax 函数可以把一组输出转换成概率分布。因此激活函数也常用于让输出符合任务要求。例如• 二分类输出层常用 Sigmoid• 多分类输出层常用 Softmax• 隐藏层常用 ReLU 或其变体图 2常见激活函数图像对比3、影响训练稳定性激活函数不仅影响模型表达能力也影响训练效果。如果激活函数选择不当可能出现• 梯度消失• 梯度爆炸• 神经元不再更新• 收敛速度慢• 模型训练不稳定因此激活函数不是随便选择的。不同网络结构和任务适合不同激活函数。四、Sigmoid 函数Sigmoid 函数是早期神经网络中非常经典的激活函数。它的公式为它的输出范围是其中• z 表示神经元线性输入• e 表示自然常数• σ(z) 表示 Sigmoid 输出从通俗角度看Sigmoid 会把任意实数压缩到 0 和 1 之间。例如• z 很大时σ(z) 接近 1• z 0 时σ(z) 0.5• z 很小时σ(z) 接近 0因此Sigmoid 很适合表示概率。在二分类任务中输出层常用 Sigmoid其中• p̂ 表示模型预测为正类的概率如果通常预测为正类否则预测为负类。Sigmoid 的局限是当 z 很大或很小时函数会进入饱和区梯度变得很小容易导致梯度消失。从通俗角度看Sigmoid 适合输出概率但不太适合作为深层网络隐藏层的默认选择。五、Tanh 函数Tanh 函数也是一种经典激活函数全称是双曲正切函数。它的公式为它的输出范围是与 Sigmoid 相比Tanh 的输出以 0 为中心。例如• z 很大时tanh(z) 接近 1• z 0 时tanh(z) 0• z 很小时tanh(z) 接近 -1从通俗角度看Tanh 可以输出正信号、负信号和接近 0 的信号。这使它在某些场景中比 Sigmoid 更适合作为隐藏层激活函数因为它的输出更加对称。不过Tanh 也有饱和问题。当 z 很大或很小时梯度同样会变得很小也可能导致梯度消失。因此在现代深度学习中Tanh 仍然有使用场景但在许多前馈网络和卷积网络中ReLU 及其变体更常见。六、ReLU 函数ReLU 是现代深度学习中最常用的激活函数之一。它的全称是 Rectified Linear Unit通常翻译为线性整流单元。公式为也可以写成从通俗角度看ReLU 对正数直接放行对负数直接截断为 0。它有几个重要优点• 计算简单• 收敛速度通常较快• 在正区间梯度不容易消失• 适合深层网络例如z 3 → ReLU(z) 3z -2 → ReLU(z) 0ReLU 的局限是可能出现“死亡 ReLU”问题。如果某个神经元长期输出 0它对应的参数可能很难继续更新。这种神经元就像“失活”了一样。从通俗角度看ReLU 简单高效但如果神经元长期被压到负区间可能就不再工作。为缓解这个问题人们提出了 Leaky ReLU、PReLU、ELU、GELU 等变体。七、Softmax 函数Softmax 函数常用于多分类任务的输出层。它的作用是把一组原始分数转换成概率分布。假设模型对 K 个类别输出原始分数Softmax 将第 k 类的概率计算为其中• zₖ 表示第 k 个类别的原始分数• pₖ 表示第 k 个类别的预测概率• K 表示类别数量Softmax 的输出满足并且从通俗角度看Softmax 会把多个类别的得分转换成“谁更可能”的概率分布。例如模型对三个类别输出分数猫2.0狗1.0鸟0.1经过 Softmax 后得分较高的“猫”会获得更高概率但其他类别也会有一定概率。需要注意Softmax 常用于输出层而不是普通隐藏层。在多分类任务中它通常与交叉熵损失一起使用。八、常见激活函数如何选择不同激活函数适合不同位置和任务。1、隐藏层常用 ReLU 及其变体在许多前馈神经网络、卷积神经网络中隐藏层常用 ReLU。原因是• 计算简单• 训练效率高• 梯度传播较稳定• 工程上表现良好如果担心死亡 ReLU可以考虑• Leaky ReLU• PReLU• ELU• GELU其中GELU 在一些 Transformer 模型中较常见。2、二分类输出层常用 Sigmoid如果任务是二分类并且希望输出正类概率常用 Sigmoid输出 p̂ 可以解释为样本属于正类的概率。3、多分类输出层常用 Softmax如果任务是互斥多分类例如识别图片属于猫、狗还是鸟常用 Softmax 输出每个类别的概率。4、回归输出层常不用激活函数如果任务是预测连续数值例如房价、温度、销量输出层通常不使用 Sigmoid 或 Softmax而是直接输出实数。这时输出层可以看作线性输出从通俗角度看隐藏层激活函数负责增强表达能力输出层激活函数要根据任务目标选择。九、激活函数的优势、局限与使用注意事项1、激活函数的主要优势激活函数最大的优势是引入非线性。它让神经网络能够学习复杂函数而不是局限在线性关系中。其次激活函数可以控制输出范围。例如 Sigmoid 输出 0 到 1Softmax 输出概率分布。再次合适的激活函数可以改善训练效率。例如 ReLU 在深层网络中通常比 Sigmoid 更容易训练。从通俗角度看激活函数的优势在于它让神经元从简单加权求和变成能够表达复杂模式的非线性计算单元。2、激活函数的主要局限不同激活函数都有局限。Sigmoid 和 Tanh 容易在输入很大或很小时进入饱和区导致梯度变小。ReLU 虽然简单高效但可能出现死亡 ReLU。Softmax 适合多分类输出但不适合作为普通隐藏层激活函数。此外激活函数不能单独解决所有训练问题。模型训练还受到• 权重初始化• 学习率• 优化器• 归一化方法• 网络深度• 数据质量等因素影响。3、使用激活函数时需要注意的问题使用激活函数时可以遵循以下经验• 隐藏层默认可优先考虑 ReLU 或其变体• 二分类输出层常用 Sigmoid• 多分类输出层常用 Softmax• 回归输出层通常保持线性输出• 深层网络中要注意梯度消失和训练稳定性• 不要把输出层激活函数和隐藏层激活函数混为一谈从实践角度看激活函数选择不是孤立问题而要结合任务类型、网络结构和损失函数一起考虑。十、Python 示例下面给出几个简单示例用来帮助理解激活函数的计算方式。示例 1手动实现 Sigmoid、Tanh 和 ReLUimport numpy as np def sigmoid(z): Sigmoid激活函数将输入压缩到(0,1)区间 return 1 / (1 np.exp(-z)) def tanh(z): 双曲正切激活函数将输入压缩到(-1,1)区间 return np.tanh(z) def relu(z): ReLU激活函数负数取0正数保持不变 return np.maximum(0, z) z np.array([-3, -1, 0, 1, 3]) # 测试输入数组 print(输入, z)print(Sigmoid, sigmoid(z)) # 输出范围(0,1)print(Tanh, tanh(z)) # 输出范围(-1,1)print(ReLU, relu(z)) # 输出非负部分这个例子可以观察• Sigmoid 输出在 0 到 1 之间• Tanh 输出在 -1 到 1 之间• ReLU 会把负数变成 0正数保持不变示例 2手动实现 Softmaximport numpy as np def softmax(z): Softmax激活函数将分数向量转换为概率分布 # 减去最大值是为了防止指数运算溢出数值稳定性 z z - np.max(z) exp_z np.exp(z) return exp_z / np.sum(exp_z) scores np.array([2.0, 1.0, 0.1]) # 三个类别的原始分数probabilities softmax(scores) # 转换为概率 print(原始分数, scores)print(Softmax 概率, probabilities) # 输出和为1的概率分布print(概率总和, probabilities.sum()) # 验证和为1这个例子中Softmax 把三个类别得分转换成概率分布并且概率之和为 1。示例 3人工神经元中的激活函数import numpy as np # 输入向量3个特征x np.array([1.0, 2.0, 3.0]) # 权重向量与输入对应w np.array([0.2, -0.5, 1.0]) # 偏置项b 0.1 def relu(z): ReLU激活函数 return np.maximum(0, z) # 线性加权求和z w·x bz np.dot(w, x) b # ReLU激活输出a relu(z) print(线性输入 z, z)print(激活输出 a, a)这个例子展示了神经元的基本流程输入 → 加权求和 → 加偏置 → 激活函数 → 输出其中激活函数决定线性得分 z 如何变成最终输出 a。示例 4在 Scikit-learn 的 MLP 中指定激活函数from sklearn.datasets import load_wine # 加载葡萄酒数据集from sklearn.model_selection import train_test_split # 数据集划分from sklearn.preprocessing import StandardScaler # 标准化from sklearn.neural_network import MLPClassifier # 多层感知机分类器from sklearn.metrics import classification_report # 分类报告 # 加载葡萄酒数据集178样本13特征3类别wine load_wine()X wine.data # 特征y wine.target # 标签 # 划分训练集和测试集测试集30%分层采样X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.3, random_state42, stratifyy) # 标准化使特征均值为0方差为1scaler StandardScaler()X_train_scaled scaler.fit_transform(X_train) # 拟合并转换训练集X_test_scaled scaler.transform(X_test) # 仅转换测试集 # 多层感知机分类器两个隐藏层16和8个神经元ReLU激活函数model MLPClassifier( hidden_layer_sizes(16, 8), # 隐藏层结构 activationrelu, # ReLU激活函数 max_iter2000, # 最大迭代次数 random_state42) model.fit(X_train_scaled, y_train) # 训练模型y_pred model.predict(X_test_scaled) # 预测测试集 print(测试集准确率, model.score(X_test_scaled, y_test))print(分类报告)print(classification_report(y_test, y_pred, target_nameswine.target_names))这个例子中• activationrelu 表示隐藏层使用 ReLU 激活函数• MLPClassifier 的输出层会根据分类任务自动处理多分类输出• 标准化有助于神经网络训练更稳定 小结激活函数是神经网络中作用在线性输入 z 上的非线性函数。它决定神经元如何响应输入是神经网络表达复杂非线性关系的关键。Sigmoid 常用于二分类输出Softmax 常用于多分类输出ReLU 及其变体常用于隐藏层。对初学者而言可以把激活函数理解为神经元算出一个加权得分后用什么规则把这个得分转换成输出信号。“点赞有美意赞赏是鼓励”
AI 术语通俗词典:激活函数
发布时间:2026/5/17 6:48:12
激活函数是深度学习、神经网络和人工智能中非常基础的一个术语。它用来描述人工神经元在完成加权求和之后如何把线性结果转换成输出信号。换句话说激活函数是在回答神经元算出一个分数之后应该怎样响应。如果说权重与偏置决定神经元“怎样综合输入”那么激活函数决定神经元“怎样输出结果”。没有激活函数神经网络即使堆叠很多层本质上仍然难以表达复杂非线性关系。因此激活函数常用于感知器、多层感知器、卷积神经网络、循环神经网络、Transformer 和深度学习模型训练是理解神经网络表达能力的核心概念之一。一、基本概念什么是激活函数激活函数Activation Function是作用在神经元线性输出上的函数。图 1人工神经元中的激活函数的作用一个人工神经元通常先计算也可以写成向量形式其中• x₁, x₂, …, xₙ 表示输入特征• w₁, w₂, …, wₙ 表示权重• b 表示偏置• z 表示线性输入或加权得分然后神经元通过激活函数得到输出其中• f 表示激活函数• a 表示神经元输出从通俗角度看激活函数就是神经元的“响应规则”。它决定• z 很大时输出应该有多大• z 很小时输出是否应该被抑制• z 为负时是否仍然允许输出• 输出是否应该压缩到某个范围内例如ReLU 激活函数定义为它表示• 如果 z 0输出 z• 如果 z ≤ 0输出 0从通俗角度看ReLU 像一个简单开关有正向信号就通过没有正向信号就关闭。二、为什么需要激活函数激活函数之所以重要是因为神经网络需要表达非线性关系。如果一个神经网络没有激活函数那么每一层都只是线性变换把它们合在一起本质上仍然是一个线性变换也就是这说明多个线性层堆叠起来如果没有非线性激活整体仍然只是线性模型。从通俗角度看没有激活函数的深层网络只是把一条直线变换来变换去仍然学不会真正复杂的弯曲关系。而现实中的问题往往不是线性的。例如• 图像中的物体形状复杂• 文本语义依赖上下文• 用户行为存在复杂组合关系• 医学指标之间可能相互作用• 分类边界可能是弯曲的、多段的或交错的激活函数的作用就是给神经网络引入非线性使模型能够学习复杂函数。这也是深度学习比简单线性模型更强的重要原因之一。三、激活函数的基本作用激活函数主要有三个作用。1、引入非线性这是激活函数最核心的作用。例如ReLU、Sigmoid、Tanh 都会把线性输入 z 转换成非线性输出。有了非线性激活函数多层神经网络才能逐层组合出复杂模式。从通俗角度看激活函数让神经网络不再只能画直线而可以组合出复杂边界。2、控制输出范围不同激活函数会把输出限制在不同范围内。例如Sigmoid 函数输出范围是Tanh 函数输出范围是Softmax 函数可以把一组输出转换成概率分布。因此激活函数也常用于让输出符合任务要求。例如• 二分类输出层常用 Sigmoid• 多分类输出层常用 Softmax• 隐藏层常用 ReLU 或其变体图 2常见激活函数图像对比3、影响训练稳定性激活函数不仅影响模型表达能力也影响训练效果。如果激活函数选择不当可能出现• 梯度消失• 梯度爆炸• 神经元不再更新• 收敛速度慢• 模型训练不稳定因此激活函数不是随便选择的。不同网络结构和任务适合不同激活函数。四、Sigmoid 函数Sigmoid 函数是早期神经网络中非常经典的激活函数。它的公式为它的输出范围是其中• z 表示神经元线性输入• e 表示自然常数• σ(z) 表示 Sigmoid 输出从通俗角度看Sigmoid 会把任意实数压缩到 0 和 1 之间。例如• z 很大时σ(z) 接近 1• z 0 时σ(z) 0.5• z 很小时σ(z) 接近 0因此Sigmoid 很适合表示概率。在二分类任务中输出层常用 Sigmoid其中• p̂ 表示模型预测为正类的概率如果通常预测为正类否则预测为负类。Sigmoid 的局限是当 z 很大或很小时函数会进入饱和区梯度变得很小容易导致梯度消失。从通俗角度看Sigmoid 适合输出概率但不太适合作为深层网络隐藏层的默认选择。五、Tanh 函数Tanh 函数也是一种经典激活函数全称是双曲正切函数。它的公式为它的输出范围是与 Sigmoid 相比Tanh 的输出以 0 为中心。例如• z 很大时tanh(z) 接近 1• z 0 时tanh(z) 0• z 很小时tanh(z) 接近 -1从通俗角度看Tanh 可以输出正信号、负信号和接近 0 的信号。这使它在某些场景中比 Sigmoid 更适合作为隐藏层激活函数因为它的输出更加对称。不过Tanh 也有饱和问题。当 z 很大或很小时梯度同样会变得很小也可能导致梯度消失。因此在现代深度学习中Tanh 仍然有使用场景但在许多前馈网络和卷积网络中ReLU 及其变体更常见。六、ReLU 函数ReLU 是现代深度学习中最常用的激活函数之一。它的全称是 Rectified Linear Unit通常翻译为线性整流单元。公式为也可以写成从通俗角度看ReLU 对正数直接放行对负数直接截断为 0。它有几个重要优点• 计算简单• 收敛速度通常较快• 在正区间梯度不容易消失• 适合深层网络例如z 3 → ReLU(z) 3z -2 → ReLU(z) 0ReLU 的局限是可能出现“死亡 ReLU”问题。如果某个神经元长期输出 0它对应的参数可能很难继续更新。这种神经元就像“失活”了一样。从通俗角度看ReLU 简单高效但如果神经元长期被压到负区间可能就不再工作。为缓解这个问题人们提出了 Leaky ReLU、PReLU、ELU、GELU 等变体。七、Softmax 函数Softmax 函数常用于多分类任务的输出层。它的作用是把一组原始分数转换成概率分布。假设模型对 K 个类别输出原始分数Softmax 将第 k 类的概率计算为其中• zₖ 表示第 k 个类别的原始分数• pₖ 表示第 k 个类别的预测概率• K 表示类别数量Softmax 的输出满足并且从通俗角度看Softmax 会把多个类别的得分转换成“谁更可能”的概率分布。例如模型对三个类别输出分数猫2.0狗1.0鸟0.1经过 Softmax 后得分较高的“猫”会获得更高概率但其他类别也会有一定概率。需要注意Softmax 常用于输出层而不是普通隐藏层。在多分类任务中它通常与交叉熵损失一起使用。八、常见激活函数如何选择不同激活函数适合不同位置和任务。1、隐藏层常用 ReLU 及其变体在许多前馈神经网络、卷积神经网络中隐藏层常用 ReLU。原因是• 计算简单• 训练效率高• 梯度传播较稳定• 工程上表现良好如果担心死亡 ReLU可以考虑• Leaky ReLU• PReLU• ELU• GELU其中GELU 在一些 Transformer 模型中较常见。2、二分类输出层常用 Sigmoid如果任务是二分类并且希望输出正类概率常用 Sigmoid输出 p̂ 可以解释为样本属于正类的概率。3、多分类输出层常用 Softmax如果任务是互斥多分类例如识别图片属于猫、狗还是鸟常用 Softmax 输出每个类别的概率。4、回归输出层常不用激活函数如果任务是预测连续数值例如房价、温度、销量输出层通常不使用 Sigmoid 或 Softmax而是直接输出实数。这时输出层可以看作线性输出从通俗角度看隐藏层激活函数负责增强表达能力输出层激活函数要根据任务目标选择。九、激活函数的优势、局限与使用注意事项1、激活函数的主要优势激活函数最大的优势是引入非线性。它让神经网络能够学习复杂函数而不是局限在线性关系中。其次激活函数可以控制输出范围。例如 Sigmoid 输出 0 到 1Softmax 输出概率分布。再次合适的激活函数可以改善训练效率。例如 ReLU 在深层网络中通常比 Sigmoid 更容易训练。从通俗角度看激活函数的优势在于它让神经元从简单加权求和变成能够表达复杂模式的非线性计算单元。2、激活函数的主要局限不同激活函数都有局限。Sigmoid 和 Tanh 容易在输入很大或很小时进入饱和区导致梯度变小。ReLU 虽然简单高效但可能出现死亡 ReLU。Softmax 适合多分类输出但不适合作为普通隐藏层激活函数。此外激活函数不能单独解决所有训练问题。模型训练还受到• 权重初始化• 学习率• 优化器• 归一化方法• 网络深度• 数据质量等因素影响。3、使用激活函数时需要注意的问题使用激活函数时可以遵循以下经验• 隐藏层默认可优先考虑 ReLU 或其变体• 二分类输出层常用 Sigmoid• 多分类输出层常用 Softmax• 回归输出层通常保持线性输出• 深层网络中要注意梯度消失和训练稳定性• 不要把输出层激活函数和隐藏层激活函数混为一谈从实践角度看激活函数选择不是孤立问题而要结合任务类型、网络结构和损失函数一起考虑。十、Python 示例下面给出几个简单示例用来帮助理解激活函数的计算方式。示例 1手动实现 Sigmoid、Tanh 和 ReLUimport numpy as np def sigmoid(z): Sigmoid激活函数将输入压缩到(0,1)区间 return 1 / (1 np.exp(-z)) def tanh(z): 双曲正切激活函数将输入压缩到(-1,1)区间 return np.tanh(z) def relu(z): ReLU激活函数负数取0正数保持不变 return np.maximum(0, z) z np.array([-3, -1, 0, 1, 3]) # 测试输入数组 print(输入, z)print(Sigmoid, sigmoid(z)) # 输出范围(0,1)print(Tanh, tanh(z)) # 输出范围(-1,1)print(ReLU, relu(z)) # 输出非负部分这个例子可以观察• Sigmoid 输出在 0 到 1 之间• Tanh 输出在 -1 到 1 之间• ReLU 会把负数变成 0正数保持不变示例 2手动实现 Softmaximport numpy as np def softmax(z): Softmax激活函数将分数向量转换为概率分布 # 减去最大值是为了防止指数运算溢出数值稳定性 z z - np.max(z) exp_z np.exp(z) return exp_z / np.sum(exp_z) scores np.array([2.0, 1.0, 0.1]) # 三个类别的原始分数probabilities softmax(scores) # 转换为概率 print(原始分数, scores)print(Softmax 概率, probabilities) # 输出和为1的概率分布print(概率总和, probabilities.sum()) # 验证和为1这个例子中Softmax 把三个类别得分转换成概率分布并且概率之和为 1。示例 3人工神经元中的激活函数import numpy as np # 输入向量3个特征x np.array([1.0, 2.0, 3.0]) # 权重向量与输入对应w np.array([0.2, -0.5, 1.0]) # 偏置项b 0.1 def relu(z): ReLU激活函数 return np.maximum(0, z) # 线性加权求和z w·x bz np.dot(w, x) b # ReLU激活输出a relu(z) print(线性输入 z, z)print(激活输出 a, a)这个例子展示了神经元的基本流程输入 → 加权求和 → 加偏置 → 激活函数 → 输出其中激活函数决定线性得分 z 如何变成最终输出 a。示例 4在 Scikit-learn 的 MLP 中指定激活函数from sklearn.datasets import load_wine # 加载葡萄酒数据集from sklearn.model_selection import train_test_split # 数据集划分from sklearn.preprocessing import StandardScaler # 标准化from sklearn.neural_network import MLPClassifier # 多层感知机分类器from sklearn.metrics import classification_report # 分类报告 # 加载葡萄酒数据集178样本13特征3类别wine load_wine()X wine.data # 特征y wine.target # 标签 # 划分训练集和测试集测试集30%分层采样X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.3, random_state42, stratifyy) # 标准化使特征均值为0方差为1scaler StandardScaler()X_train_scaled scaler.fit_transform(X_train) # 拟合并转换训练集X_test_scaled scaler.transform(X_test) # 仅转换测试集 # 多层感知机分类器两个隐藏层16和8个神经元ReLU激活函数model MLPClassifier( hidden_layer_sizes(16, 8), # 隐藏层结构 activationrelu, # ReLU激活函数 max_iter2000, # 最大迭代次数 random_state42) model.fit(X_train_scaled, y_train) # 训练模型y_pred model.predict(X_test_scaled) # 预测测试集 print(测试集准确率, model.score(X_test_scaled, y_test))print(分类报告)print(classification_report(y_test, y_pred, target_nameswine.target_names))这个例子中• activationrelu 表示隐藏层使用 ReLU 激活函数• MLPClassifier 的输出层会根据分类任务自动处理多分类输出• 标准化有助于神经网络训练更稳定 小结激活函数是神经网络中作用在线性输入 z 上的非线性函数。它决定神经元如何响应输入是神经网络表达复杂非线性关系的关键。Sigmoid 常用于二分类输出Softmax 常用于多分类输出ReLU 及其变体常用于隐藏层。对初学者而言可以把激活函数理解为神经元算出一个加权得分后用什么规则把这个得分转换成输出信号。“点赞有美意赞赏是鼓励”