【漫话机器学习系列】088.常见的输出层激活函数(Common Output Layer Activation Functions)

在神经网络中,输出层(Output Layer) 的激活函数(Activation Function)直接决定了模型的输出形式,并影响损失函数的选择及训练效果。不同的任务类型(如分类或回归)需要使用不同的激活函数,以确保输出结果符合问题要求。

本文将详细介绍 二元分类(Binary Classification)、多分类(Multi-class Classification)和回归(Regression)任务中常用的输出层激活函数,并提供相应的代码示例。


1. 输出层激活函数概述

根据任务类型,输出层常用的激活函数如下:

任务类型常见激活函数输出值范围
二元分类sigmoid(0,1)
多分类softmax(0,1) 且所有类别概率之和为 1
回归无激活函数(线性输出)(-∞, +∞)

接下来,我们分别介绍这些激活函数的作用、数学公式、特点及代码实现。


2. 二元分类:Sigmoid 函数

2.1 介绍

Sigmoid 函数常用于二元分类问题,其数学公式如下:

\sigma(x) = \frac{1}{1 + e^{-x}}

  • 该函数将输出值映射到 (0,1) 之间,适用于概率预测。
  • \sigma(x) > 0.5,通常预测为正类(1),否则为负类(0)

2.2 代码示例

PyTorch 实现二元分类
import torch
import torch.nn as nn
import torch.optim as optim# 定义二元分类模型
class BinaryClassifier(nn.Module):  # 二元分类模型def __init__(self):  # 初始化模型super(BinaryClassifier, self).__init__()  # 继承父类self.fc = nn.Linear(2, 1)  # 2个输入特征,1个输出(概率)def forward(self, x):  # 前向传播return torch.sigmoid(self.fc(x))  # Sigmoid 激活函数# 定义损失函数和优化器
model = BinaryClassifier()  # 创建模型
criterion = nn.BCELoss()  # 二元交叉熵损失
optimizer = optim.SGD(model.parameters(), lr=0.1)  # 优化器# 生成示例数据
inputs = torch.tensor([[1.0, 2.0], [2.0, 3.0], [3.0, 1.0]], dtype=torch.float32)  # 输入特征
labels = torch.tensor([[1.0], [0.0], [1.0]], dtype=torch.float32)  # 标签# 训练模型
for epoch in range(100):  # 训练100个周期optimizer.zero_grad()  # 清空梯度outputs = model(inputs)  # 前向传播loss = criterion(outputs, labels)  # 计算损失loss.backward()  # 反向传播optimizer.step()  # 更新参数if epoch % 10 == 0:  # 每10个周期输出一次损失print(f'Epoch [{epoch}/100], Loss: {loss.item():.4f}')  # 输出损失

运行结果

Epoch [0/100], Loss: 1.1413
Epoch [10/100], Loss: 0.5956
Epoch [20/100], Loss: 0.5529
Epoch [30/100], Loss: 0.5320
Epoch [40/100], Loss: 0.5160
Epoch [50/100], Loss: 0.5033
Epoch [60/100], Loss: 0.4927
Epoch [70/100], Loss: 0.4835
Epoch [80/100], Loss: 0.4753
Epoch [90/100], Loss: 0.4679

 

2.3 适用场景

  • 垃圾邮件检测(垃圾邮件 vs. 非垃圾邮件)
  • 疾病预测(有病 vs. 无病)
  • 金融欺诈检测(欺诈 vs. 正常交易)

3. 多分类:Softmax 函数

3.1 介绍

Softmax 函数用于多分类任务,其数学公式如下:

\text{Softmax}(x_i) = \frac{e^{x_i}}{\sum_{j=1}^{n} e^{x_j}}

  • 特点
    • 归一化所有输出值,使其总和等于 1(形成概率分布)。
    • 适用于独占类别(Mutually Exclusive Classes)的分类任务。

3.2 代码示例

PyTorch 实现多分类
import torch
import torch.nn as nn
import torch.optim as optimclass MultiClassClassifier(nn.Module):  # 多分类模型def __init__(self, input_dim, num_classes):  # 输入维度和类别数super(MultiClassClassifier, self).__init__()  # 继承父类初始化方法self.fc = nn.Linear(input_dim, num_classes)  # 线性层self.fc.weight.data.normal_(0, 0.01)  # 初始化权重def forward(self, x):  # 前向传播return torch.softmax(self.fc(x), dim=1)  # Softmax 归一化# 定义模型、损失函数和优化器
model = MultiClassClassifier(input_dim=3, num_classes=4)  # 创建模型
criterion = nn.CrossEntropyLoss()  # 交叉熵损失函数
optimizer = optim.Adam(model.parameters(), lr=0.01)  # Adam 优化器# 生成示例数据(假设有3个特征,4个类别)
inputs = torch.tensor([[1.0, 2.0, 3.0], [2.0, 1.0, 3.0]], dtype=torch.float32)  # 输入特征
labels = torch.tensor([1, 3])  # 类别索引(0-3)# 训练模型
for epoch in range(100):  # 训练100个周期optimizer.zero_grad()  # 清空梯度outputs = model(inputs)  # 前向传播loss = criterion(outputs, labels)  # 计算损失loss.backward()  # 反向传播optimizer.step()  # 更新参数if epoch % 10 == 0:  # 每10个周期打印一次损失print(f'Epoch [{epoch}/100], Loss: {loss.item():.4f}')  # 打印损失

运行结果

Epoch [0/100], Loss: 1.3481
Epoch [10/100], Loss: 1.2146
Epoch [20/100], Loss: 1.1262
Epoch [30/100], Loss: 1.0629
Epoch [40/100], Loss: 1.0134
Epoch [50/100], Loss: 0.9731
Epoch [60/100], Loss: 0.9401
Epoch [70/100], Loss: 0.9131
Epoch [80/100], Loss: 0.8909
Epoch [90/100], Loss: 0.8727

3.3 适用场景

  • 手写数字识别(MNIST,类别 0-9)
  • 图像分类(狗、猫、鸟等)
  • 情感分析(积极、中性、消极)

4. 回归:无激活函数(线性输出)

4.1 介绍

回归任务中,目标是预测连续数值,因此输出层通常不使用激活函数,保持线性输出:

y = w \cdot x + b

  • 预测值范围为(-∞, +∞),不受激活函数限制。

4.2 代码示例

PyTorch 实现回归
import torch
import torch.nn as nn
import torch.optim as optimclass RegressionModel(nn.Module):  # 线性回归模型def __init__(self):  # 初始化模型super(RegressionModel, self).__init__()  # 继承父类self.fc = nn.Linear(1, 1)  # 单输入单输出def forward(self, x):  # 前向传播return self.fc(x)  # 线性输出,无激活函数# 定义模型、损失函数和优化器
model = RegressionModel()  # 创建模型
criterion = nn.MSELoss()  # 均方误差损失
optimizer = optim.SGD(model.parameters(), lr=0.01)  # 随机梯度下降优化器# 生成示例数据
inputs = torch.tensor([[1.0], [2.0], [3.0]], dtype=torch.float32)  # 输入 x
targets = torch.tensor([[2.0], [4.0], [6.0]], dtype=torch.float32)  # 目标 y = 2x# 训练模型
for epoch in range(100):  # 训练100个周期optimizer.zero_grad()  # 梯度清零outputs = model(inputs)  # 前向传播loss = criterion(outputs, targets)  # 计算损失loss.backward()  # 反向传播optimizer.step()  # 更新参数if epoch % 10 == 0:  # 每10个周期打印一次损失print(f'Epoch [{epoch}/100], Loss: {loss.item():.4f}')  # 输出损失

运行结果 

Epoch [0/100], Loss: 18.9413
Epoch [10/100], Loss: 1.8053
Epoch [20/100], Loss: 0.1735
Epoch [30/100], Loss: 0.0181
Epoch [40/100], Loss: 0.0032
Epoch [50/100], Loss: 0.0017
Epoch [60/100], Loss: 0.0015
Epoch [70/100], Loss: 0.0014
Epoch [80/100], Loss: 0.0013
Epoch [90/100], Loss: 0.0013

4.3 适用场景

  • 房价预测
  • 股票价格预测
  • 销量预测

5. 结论

任务类型激活函数适用损失函数
二元分类Sigmoid二元交叉熵(BCELoss)
多分类Softmax交叉熵损失(CrossEntropyLoss)
回归无激活函数均方误差(MSELoss)

不同任务类型需要选择合适的激活函数,以确保神经网络能够正确学习和预测目标值。希望本文能帮助你更好地理解输出层激活函数的使用! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15428.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 鼠标轨迹 - 防止游戏检测

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

工业相机在工业生产制造过程中的视觉检测技术应用

随着技术不断发展以及工业4.0时代的到来,利用工业相机进行视觉检测技术已经成为制造业不可或缺的一部分。通过结合先进的计算机视觉、AI算法和自动化设备,工业视觉检测为生产线质量控制和效率提升提供了革命性的解决方案。 一、什么是工业视觉检测技术 …

了解网络层

目录 一、IP协议 二、地址管理 IP地址 概念 作用 格式 网段划分 三、路由选择 网络层要做的事情主要是两个方面: 地址管理:制定一系列的规则,通过地址,描述出网络上一个设备的位置。路由选择:网络环境比较复杂…

NO.11十六届蓝桥杯备战|if-else语句|嵌套if|悬空else|练习4道(C++)

if-else语句 if语句 if语句的语法形式如下: if ( 表达式 ) 语句;表达式成⽴(为真),则语句执⾏,表达式不成⽴(为假),则语句不执⾏ 0为假,⾮0表⽰真,也就是…

Json-RPC框架项目(一)

目录 1. 项目介绍: 2. 技术选择; 3. 第三方库介绍; 4. 项目功能; 5. 模块功能; 6. 项目实现: 1. 项目介绍: RPC是远程过程调用, 像调用本地接口一样调用远程接口, 进行完成业务处理, 计算任务等, 一个完整的RPC包括: 序列化协议, 通信协议, 连接复用, 服务注册, 服务发…

Discourse 创建和配置用户自定义字段

用户自定义字段能够让你在用户注册的是要求用户提供更多的信息。这些用户提供的信息可以在用户名片,用户摘要页面下显示,甚至还可以通过 Data Explorer plugin 插件进行查询。 本文能够帮助你对这些字段进行配置和设置。 添加一个用户字段 进入 Admin…

从零到一:我的元宵灯谜小程序诞生记

缘起:一碗汤圆引发的灵感 去年元宵节,我正捧着热腾腾的汤圆刷朋友圈,满屏都是"转发锦鲤求灯谜答案"的动态。看着大家对着手机手忙脚乱地切换浏览器查答案,我突然拍案而起:为什么不做一个能即时猜灯谜的微信…

【C++11】lambda和包装器

1.新的类功能 1.1默认的移动构造和移动赋值 原来C类中,有6个默认成员函数:构造函数/析构函数/拷⻉构造函数/拷⻉赋值重载/取地址重 载/const 取地址重载,最后重要的是前4个,后两个⽤处不⼤,默认成员函数就是我们不写…

Java企业电子招投标系统:Spring Cloud微服务架构-强化企业招采竞争力:电子化招投标平台助力效率与成本控制-支持二次开发

​在当今激烈的市场竞争环境下,企业规模的持续扩大使得招采管理变得日益重要,已成为企业提升核心竞争力的关键一环。为了实现更高效、更高质量的招采成果,我们设计了一套基于电子化平台的解决方案,旨在通过电子化招投标系统&#…

计算机毕业设计Spark+大模型知网文献论文推荐系统 知识图谱 知网爬虫 知网数据分析 知网大数据 知网可视化 预测系统 大数据毕业设计 机器学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

打家劫舍3

今天和打家讲一下打家劫舍3 题目: 题目链接:337. 打家劫舍 III - 力扣(LeetCode) 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。 除了 root 之外,每栋房子有且只有一个“父“…

指定路径安装Ollama

通过鼠标双击安装,默认会安装到C盘下,如果需要更换默认路径则可以通过命令的方式将Ollama安装到其他盘的某个目录下。 OllamaSetup.exe /DIR"D:\Ollama" #DIR指定安装路径 执行上述命令后,会弹出OllamaSetup.exe安装窗体界面&…

Linux:库

目录 静态库 动态库 目标文件 ELF文件 ELF形成可执行 ELF可执行加载 ELF加载 全局偏移量表GOT(global offset table) 库是写好的,成熟的,可以复用的代码 现实中每个程序都要依赖很多的基础的底层库,不可能都是从零开始的 库有两种…

心脏滴血漏洞复现(CVE-2014-0160)

漏洞范围: OpenSSL 1.0.1版本 漏洞成因: Heartbleed漏洞是由于未能在memcpy()调用受害用户输入内容作为长度参数之前正确进 行边界检查。攻击者可以追踪OpenSSL所分配的64KB缓存、将超出必要范围的字节信息复 制到缓存当中再返回缓存内容,…

一文学会:用DeepSeek R1/V3 + AnythingLLM + Ollama 打造本地化部署的个人/企业知识库,无须担心数据上传云端的泄露问题

文章目录 前言一、AnythingLLM 简介&基础应用1.主要特性2.下载与安装3.配置 LLM 提供商4.AnythingLLM 工作区&对话 二、AnythingLLM 进阶应用:知识增强使用三、AnythingLLM 的 API 访问四、小结1.聊天模式2.本地存储&向量数据库 前言 如果你不知道Olla…

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 0基础…

探秘AES加密算法:多种Transformation全解析

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

html文件怎么转换成pdf文件,2025最新教程

将HTML文件转换成PDF文件,可以采取以下几种方法: 一、使用浏览器内置功能 打开HTML文件:在Chrome、Firefox、IE等浏览器中打开需要转换的HTML文件。打印对话框:按下CtrlP(Windows)或CommandP(M…

DFS+回溯+剪枝(深度优先搜索)——搜索算法

DFS也就是深度优先搜索,比如二叉树的前,中,后序遍历都属于DFS。其本质是递归,要学好DFS首先需要掌握递归。接下来咱们就一起来学习DFS涉及的算法。 一、递归 1.什么是递归? 递归可以这样理解把它拆分出来&#xff0…

DeepSeek从入门到精通教程PDF清华大学出版

DeepSeek爆火以来,各种应用方式层出不穷,对于很多人来说,还是特别模糊,有种雾里看花水中望月的感觉。 最近,清华大学新闻与传播学院新媒体研究中心,推出了一篇DeepSeek的使用教程,从最基础的是…