归一化:激活函数

激活函数.h

cpp 复制代码
// 激活函数.h ------ 激活函数(SiLU/Sigmoid/Softplus)声明
// 用途:门控 RMSNorm 与 SwiGLU 等算子依赖的标量激活函数,以及逐元素向量版本

#pragma once

// 引入基础类型(浮点别名)
#include "公共/基础定义.h"

// 激活SiLU:Sigmoid Linear Unit(Swish 的 β=1 特例)
// 公式:$$ \mathrm{SiLU}(x) = \frac{x}{1 + e^{-x}} $$
// 纯文本:SiLU(x) = x / (1 + e^(-x))
// 含义:x 接近 0 时非线性过渡,负值渐近于 0(非饱和),正值近似恒等;
//       用于 SwiGLU 的门控分支与门控 RMSNorm 的门控因子
浮点 激活SiLU(浮点 x);

// 激活Sigmoid:逻辑斯蒂函数
// 公式:$$ \sigma(x) = \frac{1}{1 + e^{-x}} $$
// 纯文本:Sigmoid(x) = 1 / (1 + e^(-x))
// 含义:输出压缩到 (0,1),用于概率与门控信号的平滑映射
浮点 激活Sigmoid(浮点 x);

// 激活Softplus:平滑 ReLU(ReLU 的可微近似)
// 公式:$$ \mathrm{softplus}(x) = \ln(1 + e^{x}) $$
// 纯文本:Softplus(x) = ln(1 + e^x)
// 数值稳定实现:x > 20 ? x : log1p(exp(x)),避免大 x 时 exp(x) 上溢
浮点 激活Softplus(浮点 x);

// 激活SiLU向量:对一段向量逐元素施加 激活SiLU
// 参数:输入 = 源向量起点;输出 = 目标向量起点(可与 输入 相同实现就地,调用方传独立缓冲即可)
//       数量 = 要处理的元素个数
void 激活SiLU向量(const float* 输入, float* 输出, size_t 数量);

激活函数.cpp

cpp 复制代码
// 激活函数.cpp ------ 激活函数(SiLU/Sigmoid/Softplus)实现
// 用途:为归一化算子与后续 SwiGLU 提供标量与向量激活函数

#include "内核/归一化/激活函数.h"

// 引入标准头:指数 exp 与对数 log1p(数值稳定 Softplus)
#include <cmath>

// 激活SiLU:Sigmoid Linear Unit
// 公式:SiLU(x) = x / (1 + e^(-x))
// 实现:直接按公式用 exp 计算,x 为负值时 exp(-x) 增大但仍在浮点范围内
浮点 激活SiLU(浮点 x) {
    return x / (1.0f + std::exp(-x));
}

// 激活Sigmoid:逻辑斯蒂函数
// 公式:Sigmoid(x) = 1 / (1 + e^(-x))
浮点 激活Sigmoid(浮点 x) {
    return 1.0f / (1.0f + std::exp(-x));
}

// 激活Softplus:平滑 ReLU
// 公式:Softplus(x) = ln(1 + e^x)
// 数值稳定:x > 20 时 e^x 已远超浮点精度,直接返回 x(ln(e^x)=x),避免上溢
浮点 激活Softplus(浮点 x) {
    if (x > 20.0f) {
        return x;
    }
    // log1p(y) = ln(1+y),比 log(1+y) 更精确(避免 1+e^x 灾难性消减)
    return static_cast<浮点>(std::log1p(std::exp(x)));
}

// 激活SiLU向量:逐元素施加 激活SiLU
void 激活SiLU向量(const float* 输入, float* 输出, size_t 数量) {
    for (size_t i = 0; i < 数量; ++i) {
        输出[i] = 激活SiLU(输入[i]);
    }
}
相关推荐
阳明山水2 分钟前
Mamba与两阶段XGBoost的融合架构:面向间歇性需求的双路径预测框架
人工智能·深度学习·算法·机器学习·架构
海盗12345 分钟前
AI新闻日报_2026-08-27—— Qwen4/GLM-5.3-Flash 开源、OpenAI Agent 越狱事件、世界人形机器人运动会
人工智能·机器人·开源
zzzll11119 分钟前
Hermes Agent:轻量级 AI 智能体框架实战指南
人工智能
水上冰石9 分钟前
【MuJoCo从入门到精通】第2章 第一个 MuJoCo 仿真
前端·人工智能·算法
wenyq711 分钟前
LeetCode 2904. Shortest and Lexicographically Smallest Beautiful String
算法·leetcode
AI浩13 分钟前
关于 Qwen3.8-Next 架构的设计:评估、效率与训练稳定性
人工智能·计算机视觉·自然语言处理
裕晟资质规划14 分钟前
西安档案数字化企业申报涉密档案数字化加工资质:业务准入、数据链路管控与审查要点
大数据·人工智能
DO_Community17 分钟前
面向 AI 工作负载,单核性能提升 30%:DigitalOcean v5 Droplets 云服务器正式上线
运维·服务器·人工智能
CRMEB17 分钟前
不懂设计也能有精美商城?CRMEB 主题广场与可视化装修的“千店千面“实操
人工智能·ai·小程序·开源·php
维克兜率天23 分钟前
【维克】技术指标是什么:从均线到MACD的数学原理
人工智能·笔记·python·算法·量化