归一化:激活函数

激活函数.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]);
    }
}
相关推荐
AI创界者2 小时前
【Python进阶】重构经典设计模式:单例、工厂、观察者在现代 Python (3.10+) 中的最佳演进
人工智能·aigc
Rocky Ding*2 小时前
【三年面试五年模拟】阿里巴巴-千问技术部算法一面全解析
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·ai agent
蜗牛互联网2 小时前
Claude放宽生命科学限制:代价是验证、分级和30天留存
java·人工智能·后端
Dawson Zhu2 小时前
RAG 检索中的两个误区:高相似度不等于正确,向量检索也不能替代关键词检索
人工智能·语言模型·架构·aigc·agi
xx_xxxxx_2 小时前
论文阅读-REINFORCE++与Lessons of Developing PRMs
人工智能·深度学习·机器学习·强化学习
小马过河R2 小时前
开篇|3天从0到1入门AI应用开发
人工智能·语言模型·llm·agent·ai编程·deepagent
Htr_2 小时前
Creem 2.0 使用指南:面向 AI 构建时代的资金平台
android·数据库·人工智能·ui·photoshop
古希腊掌管代码的神THU2 小时前
【清华代码熊】DeepSeek-V4.1-Flash 多模态架构解析
人工智能·深度学习·机器学习·自然语言处理·面试
咬代码的兽2 小时前
Qwen3.8-Omni-Flash 发布:1M 上下文 + 原生全模态,四步跑通音视频 API
人工智能·大模型·api·qwen
论文复现现场2 小时前
ComfyUI 怎么同时调用 4 张/8 张 RTX 4090?AI 视频批量生成的多实例队列与 Python 调度方案
人工智能·python·comfyui·rtx4090