LeakyRelu链式法则

python 复制代码
# 分解版
class LeakyRelu:
    # 初始化
    def __init__(self, slope=0.1):
        # α是一个在训练时从一个均匀分布中随机选择的参数,用于控制负数区域的斜率
        self.slope = slope
        self.mask = None
    def forward(self, x):
        self.mask = (x <= 0)
        y = x.copy() # 复制输入数据,避免修改原数据
        y[self.mask] = self.slope * x[self.mask]
        return y
    def backward(self, dy):
        dx = dy.copy()
        # 将x<=0的值都赋为slope * x[self.mask]
        dx[self.mask] = self.slope * dx[self.mask]
        return dx
# np版
class LeakyRelu:
    # 初始化
    def __init__(self, slope=0.1):
        # α是一个在训练时从一个均匀分布中随机选择的参数,用于控制负数区域的斜率
        self.slope = slope
        self.mask = None
    
    def forward(self, x):
        self.mask = (x <= 0)
        # 使用np.where更高效,避免复制整个数组后再修改
        return np.where(self.mask, self.slope * x, x)
    
    def backward(self, dy):
        # 使用np.where更高效,LeakyReLU的导数是:正数区域为1,负数区域为slope
        return np.where(self.mask, self.slope * dy, dy)

链式法则

假设网络结构是:x → LeakyReLU → y → Loss

前向传播

复制代码
x = -2
y = LeakyReLU(-2) = slope * (-2) = -0.2
Loss = (y - 1)² = 1.44

反向传播要求什么?

我们要计算 ∂Loss/∂x,也就是"当 x 变化一点点时,Loss 会变化多少"。

链式法则的应用

复制代码
∂Loss/∂x = ∂Loss/∂y × ∂y/∂x
           ↑           ↑
        上游梯度    当前层的局部梯度

具体计算

  1. 上游传来的梯度(从 Loss 传来):

    复制代码
    ∂Loss/∂y = 2(y - 1) = 2(-0.2 - 1) = -2.4
  2. LeakyReLU 的局部梯度(导数):

    复制代码
    ∂y/∂x = slope = 0.1  (因为 x <= 0)
  3. 最终得到

    复制代码
    ∂Loss/∂x = (-2.4) × 0.1 = -0.24

代码对应关系

python 复制代码
def backward(self, dy):        # dy 就是上游传来的 ∂Loss/∂y = -2.4
    dx = dy.copy()             # 先复制上游梯度
    dx[self.mask] = self.slope * dx[self.mask]  # 乘以局部梯度
    return dx                  # 返回 ∂Loss/∂x

所以dx(返回值)才是真正的"导数"(∂Loss/∂x),dy(输入)只是上游传过来的梯度,两者不是同一个东西。

相关推荐
m0_695251498 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
星核0penstarry8 小时前
试一试用gr.Workflow把AI多步骤串联变成可视化画布
人工智能·python·ai作画·api·ai编程·工作流·api聚合平台
taller_20009 小时前
【005】PiE 与传统 VBA 的核心区别
python·vba·pie·py
海兰9 小时前
【应用】基于 Next.js 16 + Python mplfinance的金融K线图与技术指标可视化平台(一)
javascript·python·金融
大衛說9 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
小猴子爱上树9 小时前
跨境电商翻译工具推荐:批量图片翻译、视频字幕翻译、智能抠图一站式搞定
人工智能·python·音视频
林澈在路上10 小时前
AI翻唱软件哪个好 2026国产AI写歌工具对比推荐
大数据·人工智能·深度学习·github·aigc·音视频·音频
咖啡星人k10 小时前
2026 MCP 模型上下文协议:让 AI 自己动手接工具,告别手写接口(MonkeyCode 实战)
人工智能·深度学习·机器学习·语言模型·自然语言处理
丈剑走天涯10 小时前
基于 Python 3 语法的 PyCharm 练习示例,涵盖列表操作、类型判断及数据清洗等核心知识点
windows·python·pycharm
————A10 小时前
Agent 接收用户上传文件
人工智能·笔记·python·状态模式