激活函数以零为中心的问题

收敛速度

  这里首先需要给收敛速度做一个诠释。模型的最优解即是模型参数的最优解。通过逐轮迭代,模型参数会被更新到接近其最优解。这一过程中,迭代轮次多,则们说模型收敛速度慢;反之,迭代轮次少,则们说模型收敛速度快。

参数更新

  深度学习一般的学习方法是反向传播。简单来说,就是通过链式法则,求解全局损失函数 $L(\vec x)$ 对某一参数 $w$ 的偏导数(梯度);而后辅以学习率 $\eta$,向梯度的反方向更新参数 $w$。

    $w \gets w - \eta\cdot\frac{\partial w}.$

  考虑学习率 $\eta$ 是全局设置的超参数,参数更新的核心步骤即是计算 $\frac{\partial L}{\partial w}$ 。再考虑到对于某个神经元来说,其输入与输出的关系是
    $f(\vec x; \vec w, b) = f(z) = f\Bigl(\sum_iw_ix_i + b\Bigr).$
  因此,对于参数$w_i$来说
    $\frac{\partial L}{\partial w_i} = \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}\frac{\partial z}{\partial w_i} = x_i \cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}.$
  因此,参数的更新步骤变为
    $w_i \gets w_i - \eta x_i\cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}.$

更新方向

  由于 $w_i$ 是上一轮迭代的结果,此处可视为常数,而 $\eta$ 是模型超参数,参数 $w_i$ 的更新方向实际上由 $x_i\cdot \frac{\partial L}{\partial f}\frac{\partial f}{\partial z}$ 决定。
  又考虑到 $\frac{\partial L}{\partial f}\frac{\partial f}{\partial z}$ 对于所有的 $w_i$ 来说是常数,因此各个 $w_i$ 更新方向之间的差异,完全由对应的输入值$x_i$的符号决定。

以零为中心的影响

  至此,为了描述方便,们以二维的情况为例。亦即,神经元描述为
    $f(\vec x; \vec w, b) = f\bigl(w_0x_0 + w_1x_1 + b\bigr).$
  现在假设,参数 $w_0$, $w_1$的最优解$w_0^$ , $w_1^$ 满足条件
    $\begin{cases}w_0 < w_0^{*}, \\ w_1\geqslant w_1^{*}.\end{cases}$
  这也就是说,们希望适当增大,但希望 $w_1$ 适当减小。考虑到上一小节提到的更新方向的问题,这就必然要求 $x_0$ 和 $x_1$ 符号相反。
  但在 Sigmoid 函数中,输出值恒为正。这也就是说,如果上一级神经元采用 Sigmoid 函数作为激活函数,那么们无法做到 $x_0$ 和 $x_1$符号相反。此时,模型为了收敛,不得不向逆风前行的风助力帆船一样,走 Z 字形逼近最优解。

    

  之所以是类似与红色这样的折线图,是因为每一小段折线都是一次参数更新,经过很多次更新才能到达最优解 $w_0^{*}$\、$w_1^{*}$,但每一次更新 $w_i$ 的式子中,下面式子
    $\frac{\partial f} \frac{\partial f}{\partial z}$
  对于所有的 $w_i$ 都是相同的:
  损失函数相同,则
    $\frac{\partial f}$
  相同,激活函数相同,则
    $\frac{\partial z}$
  相同,在同一层更新的参数肯定是相同的损失函数和激活函数。也就是说在同一次更新的过程中,如果 $x_i$ 是同号的,那么 $w_i$ 就是往同一个方向变化的,所以会看见图中每一段红色的折线上,$w_0 , w_1 $ 都是要么同变大,要么同变小的。

原文创作:希望每天涨粉

原文链接:https://www.cnblogs.com/BlairGrowing/p/15085674.html

更多推荐

更多
  • Azure数据工程指南-二十四、数据治理的权限 创建 azure 预览帐户,探索 azure 预览,探索词汇表,浏览资产,以编程方式使用预览,摘要,管理凭证和访问,创建扫描, 许多组织需要建立数据治理流程、标准和方法,并且已经能够使用内部 SQL Server 工具(如 Master
    Apache CN

  • Azure数据工程指南-二十二、Synapse 分析工作区 创建 Synapse 分析工作区,使用 Spark 探索样本数据,用 SQL 查询数据,用 SQL 创建外部表,摘要, 微软 Azure 数据平台的众多新增功能已经围绕许多类似的产品及其在现代 Azure 数据平台中的用途产生了兴奋和困
    Apache CN

  • Azure数据工程指南-二十三、数据块中的机器学习 创建 MLflow 实验,安装 MLflow 库,创建笔记本,选择性测井,自动记录,摘要, 寻求利用机器学习(ML)和人工智能能力的组织和开发人员花费大量时间构建 ML 模型,并寻求一种方法来简化他们的机器学习开发生命周期,以跟踪实验,
    Apache CN

  • Azure数据工程指南-二十一、将 Apache Spark 的 GraphFrame API 用于图形分析 安装 JAR 库,加载新数据表,将数据加载到数据块笔记本中,用顶点和边构建一个图,查询图表,寻找有图案的图案,用 PageRank 发现重要性,探索入度和出度度量,摘要,进行广度优先搜索,查找连接的组件, 图形技术使用户能够以图形的形式
    Apache CN

  • Azure数据工程指南-20 二十、部署 SQL 数据库先决条件,创建 Visual Studio SQL 数据库项目,安装 Visual Studio GitHub 扩展,导入 AdventureWorks 数据库,连接到 GitHub Repo 源代码控制,将
    Apache CN

  • Azure数据工程指南-十九、部署数据工厂更改 先决条件,创建 DevOps 持续集成构建管道,创建 DevOps 持续部署发布渠道,验证部署的数据工厂资源,摘要,Azure PowerShell 任务停止触发器,ARM 模板部署任务,Azure PowerShell 任务启动触发器
    Apache CN

  • Azure数据工程指南-十八、用于 Cosmos DB 的 Azure Synapse 链接 创建一个 Azure Cosmos DB 帐户,启用 Azure Synapse 链接,创建一个 Cosmos DB 容器和数据库,将数据导入 Azure Cosmos DB,在 Azure Synapse Analytics 中创建
    Apache CN

  • Azure数据工程指南-十六、流分析异常检测 先决条件,创建流分析输入和输出,创建实时电源 BI 仪表板,监控实时电源 BI 流,摘要,创建 Azure 流分析作业,创建物联网中心,创建 Power BI 服务,下载设备模拟器,添加流输入,添加流输出,编写流分析查询,启动流分析作业
    Apache CN

  • Azure数据工程指南-十七、使用 Apache Spark 的实时物联网分析 先决条件,创建物联网中心,创建数据块集群,安装 Maven 库,创建笔记本并运行结构化流查询,摘要,配置笔记本连接,开始结构化流,启动物联网设备模拟器,显示实时流数据,创建 Spark SQL 表,将流写入增量表, 实时物联网分析、高级
    Apache CN

  • Azure数据工程指南-十五、DeltaLake 为什么是酸性 DeltaLake,先决条件,创建并插入 DeltaLake,更新 DeltaLake,从 DeltaLake 删除,浏览增量日志,摘要,插入,更新,删除, 在使用 Azure Data Lake Storage Gen2
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多