归一化:激活函数

激活函数.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]);
    }
}
相关推荐
fthux1 小时前
装闭 RenoPit 源码解析(02):AI装修闭坑系统数据库与模型设计
人工智能·ai·开源·github·open source·renopit
2601_956456341 小时前
AI巡检机器人实战评测:3款室外产品算法自研能力与真实场景表现横评(2026)
大数据·人工智能·机器人
smartfish_liu2 小时前
apl_LLM_agent_harness架构设计
llm·agent
mtouch3332 小时前
全球水面海面动态仿真规划生成数字沙盘电子沙盘系统
人工智能·机器人·无人机·虚拟现实·电子沙盘·数字沙盘
小影译片2 小时前
什么是克隆配音(AI 语音克隆)
人工智能·自然语言处理·语音识别
hhzz2 小时前
《深度学习框架PyTorch入门与实践》系列:03-autograd自动微分:反向传播的引擎
人工智能·pytorch·深度学习
过期的秋刀鱼!2 小时前
倾斜数据集的错误指标-混淆矩阵
人工智能·python·深度学习·机器学习·概率论·模型评估
math_hongfan2 小时前
鸿蒙企业级数据存储高级架构:从读写分离到冷热数据分层/归档策略/数据生命周期管理最佳实践
人工智能·学习·华为·架构·harmonyos·鸿蒙
南方程序猴2 小时前
Windows一键安装Codex所有环境
人工智能·gpt·ai·chatgpt·ai编程