归一化:激活函数

激活函数.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电子合同4 分钟前
电子合同全维度实测与选型指南
大数据·人工智能
AI办公探索者10 分钟前
从SaaS到本地部署:大模型推理成本优化与8888元私有化方案的技术解析
大数据·人工智能
吕布辕门13 分钟前
DeepSeek 大模型落地应用与价值实现指南
人工智能·机器学习
武子康14 分钟前
手机加语音配件,断开连接后谁来保住这段话?
人工智能·后端·agent
迪菲赫尔曼18 分钟前
【基础篇 12】把环境与源码接起来:检查 GPU,再安装服务器上的项目
运维·服务器·开发语言·人工智能·python·yolo·目标检测
技灵AI19 分钟前
MiniMax H3 能做哪些视频?商品广告、人物表演与运镜怎么选
人工智能·prompt·aigc·音视频
j7~1 小时前
【穷举、深搜与回溯算法】一棵决策树讲透全排列与子集
数据结构·c++·算法·leetcode·回溯·递归
ZzT1 小时前
AI 时代吃香的三种人:有想法的懒人、替别人着想的人、不被 AI 带偏的人
人工智能·ai编程
龙腾AI白云1 小时前
大模型检索增强生成(RAG)的技术原理与架构设计
数据库·python·机器学习·知识图谱
姚瑞南1 小时前
【PRD】招投标商机雷达爬虫系统
人工智能·经验分享·笔记·爬虫·产品运营·产品经理