梯度消失与爆炸:深度怎样把局部导数放大成指数效应
从标量连乘到矩阵雅可比,从 sigmoid 饱和到 RNN 时间展开;用数值例子理解初始化、门控、残差、归一化和梯度裁剪分别改变哪段路径。
- 为什么几十个看似温和的 0.9 或 1.1 连乘会造成巨大差异?
- sigmoid 饱和、权重矩阵和序列长度怎样共同进入雅可比连乘?
- 梯度消失、梯度爆炸和“根本没有梯度”怎样区分?
- Xavier/He 初始化、LSTM 门控、残差、归一化和裁剪各解决什么?
- 怎样用分层激活、梯度范数与更新比率证明根因,而不是凭训练慢猜测?
- 损失在输出端产生初始梯度。
- 反向每过一层就乘局部雅可比。
- 激活饱和、权重谱和路径方向共同决定伸缩。
- 深度或时间距离让这些伸缩指数累积。
- 早期层因此几乎无更新,或全局梯度爆炸失控。
- 合适初始化先稳定起点尺度。
- 门控、残差和归一化改变长期路径与局部条件。
- 裁剪与精度管理处理极端更新和数值表示。
- 分层监控与消融证明根因,而不是凭技巧有效就倒推机制。
1输出层知道错了,早期层为什么收不到消息动机
这段内容的核心是在区分“反向传播路径存在”和“有效梯度能够到达”。计算图连通,只说明损失对早期参数的导数可以通过链式法则被计算出来;它并不保证这个导数仍有足够大的数值,能够让参数产生可观更新。
梯度每经过一个节点,都要乘上该节点的局部导数。早期层距离损失函数更远,沿途经历的乘法更多,因此深度会把局部尺度效应累积起来。若相关方向上的大多数乘数小于 1,连乘结果会随路径长度快速衰减,形成梯度消失;若大多数乘数大于 1,连乘结果会快速增大,形成梯度爆炸。关键不只是单个导数“大或小”,而是许多局部导数连续相乘后的总体尺度。
数值系统和优化过程会放大这一影响。极小梯度可能接近浮点表示或有效更新的下限,即使形式上非零,也不足以改变参数;极大梯度则可能导致更新步长失控,并使权重、激活或损失溢出为 Inf/NaN。优化器接收到的是已经被这条链路缩放后的梯度,所以不能自动恢复途中丢失的有效信号。
由此可以得到一个重要的层间诊断特征:梯度问题通常不是“整个网络一起慢”。梯度消失时,靠近输出的层由于反向路径较短,仍可能正常学习,而靠近输入的层几乎冻结,早期特征长期不变;梯度爆炸时,则可能在某一步突然出现数值失控。观察不同深度层的梯度和参数更新幅度,比只看总体损失下降速度更能揭示问题。
2链式法则怎样把深度写成连乘数学
这段内容用链式法则把“网络很深”转换成了一个可分析的数学对象:雅可比矩阵的连乘。设损失为 L,早期状态为 h_0,第 k 层状态为 h_k,则损失对早期状态的梯度需要依次通过后续各层的局部雅可比 J_k=∂ h_k/∂ h_{k-1}。因此,反向信号的尺度和方向由整串雅可比乘积共同决定,而网络层数 K 就直接表现为乘积中因子的数量。
在标量情形中,每个雅可比退化为一个普通导数。若把每层沿某个方向的典型伸缩尺度近似为 c,经过 K 层后的总尺度就约为 c^K。这揭示了深度带来的指数效应:当 c=0.5 时,10 层后约为 9.77×10^{-4},50 层后约为 8.88×10^{-16};即使 c=0.9 看起来只比 1 小一点,50 层后也只剩约 0.00515。反过来,c=1.1 在 50 层后可放大到约 117.4,c=1.5 更会达到约 6.38×10^8。所以局部尺度仅仅温和偏离 1,也会被深度累计成巨大的整体差异。
c=1 表示尺度理想化地保持不变,但真实向量网络不能由一个平均尺度完整描述。此时雅可比是矩阵,不同输入方向会受到不同程度的伸缩;矩阵乘法还会改变方向。用奇异方向来理解更准确:同一个网络的某些方向可能在连乘中持续收缩,而另一些方向同时被放大,因此梯度消失与爆炸可以并存。
这个公式的诊断价值在于,它把问题定位到“整条反向传递链的谱与方向行为”,而不只是某一层的单个导数。标量近似 c^K 提供了指数积累的第一层直觉;进一步分析时,则需要关注各层雅可比在不同方向上的伸缩以及这些方向在层间如何组合。
| 每层尺度 c | 10 层 | 50 层 | 含义 |
|---|---|---|---|
| 0.5 | 9.77×10⁻⁴ | 8.88×10⁻¹⁶ | 迅速消失 |
| 0.9 | 0.349 | 0.00515 | 温和缩小也会累积 |
| 1.0 | 1 | 1 | 理想化保持 |
| 1.1 | 2.59 | 117.4 | 逐渐爆炸 |
| 1.5 | 57.7 | 6.38×10⁸ | 极快失控 |
3激活函数为什么直接进入反向尺度饱和
这一节说明,激活函数并不只是决定前向表示的形状,它的导数还是反向传播链中的直接乘子。第 k 层前向计算为 z_k=W_kh_{k-1}、h_k=φ(z_k)。反向传播到这里时,上游梯度 ∂ L/∂ h_k 会与当前预激活处的斜率逐元素相乘:
因此,输入是预激活 z_k 和上游梯度,输出是形状不变、但被各单元局部斜率重新加权的梯度。斜率接近零,对应单元传递的信用信号就被压低;斜率为 1,则激活本身不改变该处的反向尺度。
sigmoid 最能展示这种机制。其导数为 σ'(z)=σ(z)(1-σ(z))。当输出接近 0 或 1 时,导数趋近零,这对应函数两端的饱和区;即使在最有利的 z=0 处,导数也只有 0.25。若十层都包含这一激活因子,仅激活导数连乘就会产生 0.25^{10}≈9.5×10^{-7} 的收缩。权重必须在每层沿相应方向提供约四倍放大,才可能抵消这一项,但这又会引入其他方向失控的风险。
不同激活函数改变的是局部雅可比中的激活部分。tanh 在中心处导数可达 1,但状态远离中心后仍会饱和。ReLU 在正区导数为 1,因此不会像 sigmoid 那样持续把正区梯度向下压缩;可是在负区导数为 0,单元若长期停留在负区,梯度会被完全截断,形成“死亡”单元。GELU 和 SiLU 的曲线更平滑,负区仍保留小导数,缓解了硬截断,但小导数依然会缩短信号。
完整的局部雅可比可理解为 J=D_φ W:D_φ 由各单元的激活导数组成,W 则提供线性变换。更换激活只改变前一部分,因此它能显著改善深层可训练性,却不能单独保证整体稳定。即使激活导数理想,权重矩阵仍可能在某些方向上强烈收缩或放大。
| 激活 | 局部导数特征 | 新风险 |
|---|---|---|
| sigmoid | 最大 0.25,饱和区接近 0 | 深层与长序列易消失 |
| tanh | 中心可到 1,两端仍饱和 | 状态离开中心后衰减 |
| ReLU | 正区为 1,负区为 0 | 负区长期为零的“死亡”单元 |
| GELU/SiLU | 平滑、负区仍有小导数 | 不能单独保证整体雅可比稳定 |
4权重矩阵为什么让同一层同时有收缩和放大方向矩阵
这一节把梯度的“大小”从单一数值扩展为方向相关的矩阵行为。在线性层后接激活函数时,局部雅可比可写成 J=D_\phi W。其中,权重矩阵 W 先对信号做线性变换,激活导数矩阵 D_\phi 再依据各单元当前所处位置对反向信号加权。梯度经过该层后的变化,不仅取决于一个总范数,还取决于它具体落在哪个方向上。
权重矩阵的奇异值刻画了不同方向的伸缩程度。较大的奇异值对应被放大的方向,较小的奇异值对应被压缩的方向。如果反向传播过程中,相关方向不断遇到大于 1 的最大奇异值,梯度可能连续放大并最终爆炸;如果承载任务信息的方向对应很小的奇异值,该方向的梯度就会快速衰减。因为同一个矩阵可以同时具有很大和很小的奇异值,所以同一层完全可能一边放大某些方向,一边抹去另一些方向。
激活导数会进一步改变这种方向结构。D_\phi 对不同单元赋予不同斜率,有些坐标可能被保留,有些可能被显著压缩甚至置零。它与 W 组合后,最终的有效方向未必与原始坐标轴或 W 的单独奇异方向一致。因此,仅凭权重范数或激活导数中的任一项,都不能完整判断局部雅可比是否稳定。
这也解释了为什么“平均梯度范数正常”可能产生误导。少数特别大的梯度能够把整体范数抬到看似健康的范围,同时多数层、通道或参数的梯度已经接近零。一个聚合标量会把方向不均衡和稀疏异常压扁,既可能掩盖消失,也可能掩盖局部爆炸。
更有效的诊断应保留结构:按网络层、模块、参数类型以及序列模型中的时间步分别记录梯度分布,查看中位数、多个分位数、极值和接近零的比例;同时比较参数更新量与参数自身尺度的比率。这样才能判断哪些位置仍在学习、哪些方向已经冻结,以及总体范数是否只是被少量异常值支撑。
5RNN 怎样把“深度”换成时间距离序列
这一节说明,循环神经网络虽然在结构图上只有少数参数层,但沿时间展开后会形成一条很深的计算链。普通 RNN 的状态更新为
同一组状态转换参数在每个时间步重复使用。若第 T 步的损失需要把信用信号传回第 t 步,梯度就必须依次穿过 T-t 个状态转移雅可比。因此,序列中的时间距离承担了前馈网络中层数的角色:相隔越远,有效深度越大。
每个时间步的局部雅可比都包含循环权重 W_h 和当前激活导数。反向传播会把这些雅可比连续相乘。即使单步的伸缩只是略小于或略大于 1,重复几十次后也会产生指数级衰减或放大。参数共享只表示每一步使用同一个矩阵,并不会缩短从损失到早期状态的计算路径;相反,同一矩阵反复相乘仍会持续累积其方向性伸缩效应。
长距离依赖面临两个相互关联但不同的困难。前向过程中,早期输入留下的状态信息可能被后续状态更新不断覆盖,使 h_T 已经不再保留足够线索;反向过程中,即便早期信息曾影响状态,来自后期损失的梯度也可能在长路径上衰减,无法把“应当如何修改早期处理”传回去。前者是记忆内容的保存问题,后者是信用分配信号的传递问题。
因此,RNN 难以学习几十步以前的信息,不是因为可训练参数的种类很多,而是因为信息和梯度都要穿过很长的时间链。分析这类问题时,应把序列长度视为网络深度,并按时间距离观察状态敏感性和反向梯度,而不能只按模型代码中显式声明的层数判断深浅。
6LSTM/GRU 门控怎样建立更稳定的状态通道门控
这一节的核心是:LSTM 和 GRU 通过门控构造了一条接近“恒等传递”的状态路径,使长期信息和梯度不必在每个时间步都经过循环权重与饱和激活的完整乘积。
LSTM 除隐藏状态外,还维护细胞状态 c_t:
遗忘门 f_t 决定旧状态保留多少,输入门 i_t 决定候选内容 \tilde c_t 写入多少。这个更新具有近似加法结构。沿细胞状态通道反向传播时,相邻时间步之间的主要局部乘数是 f_t,而不是普通 RNN 中反复出现的“循环权重谱乘以非线性导数”。模型因而可以学习让需要长期保存的维度对应的 f_t 接近 1。
门值接近 1 对长路径非常关键。跨越 100 步时,若每步有效乘数为 0.99,连乘结果 0.99^{100}\approx0.366,仍保留可用尺度;若为 0.9,则 0.9^{100}\approx2.66\times10^{-5},信号依旧几乎消失。这说明门控的优势不是取消连乘,而是让连乘因子可由数据驱动地接近 1。
GRU 没有独立细胞状态,而采用
当更新门 z_t 接近 0 时,旧状态几乎被原样复制,有效保留乘数 1-z_t 接近 1,也能形成较稳定的长程通道。与 LSTM 相比,GRU 用同一个门把保留旧信息和写入新信息绑定为凸组合;LSTM 的遗忘门和输入门相对独立,因此对“保留多少”和“写入多少”的控制更分离。
两种结构的共同机制,是把普通 RNN 中难以控制的“权重矩阵伸缩 × 激活导数”转换成可学习的门值,让模型能够为重要状态维度建立接近恒等映射的路径。但这并不保证无限记忆:门值长期偏离 1 仍会指数衰减,有限状态容量、优化难度和序列噪声也会损害信息保存。门控提供的是更容易学习的长期通道,而不是自动获得永久记忆。
7初始化怎样让第一步信号尺度不立即失控起点
这一节说明,初始化的目标不是简单地让权重“尽量小”,而是让信号在网络起点处穿过多层时,前向激活和反向梯度的尺度都尽可能稳定。若每层都轻微缩小方差,深度会把这种收缩累积成消失;若每层都放大方差,则可能造成爆炸,还可能把 sigmoid 或 tanh 等激活推入饱和区,使导数进一步接近零。因此,过小和过大都不是安全选择。
Xavier/Glorot 初始化依据输入宽度和输出宽度设置权重方差,典型尺度约为 2/(\mathrm{fan\_in}+\mathrm{fan\_out})。它在前向与反向的方差保持之间做折中,适用于线性附近或近似对称的激活,例如 tanh。He/Kaiming 初始化典型方差约为 2/\mathrm{fan\_in},针对 ReLU 类激活会让约一半单元输出为零这一事实,用更大的初始方差补偿能量损失。
这两类方法主要约束统计意义上的平均方差。正交初始化则从方向角度处理问题:正交矩阵的列彼此垂直且长度为 1,所有奇异值均为 1,因此它只旋转向量,不放大或压缩任何方向。将其作为权重起点时,局部雅可比 J=D_\phi W 中的 W 初始在各方向上都具有接近 1 的伸缩尺度,深层线性路径的范数因而更稳定。这比只保证平均方差,更直接地对应了奇异值视角。
正交权重通常还会乘以增益 gain,以预先补偿后续激活带来的能量变化。ReLU 平均会截去约一半能量,因此常配合 \sqrt{2}\approx1.414 的增益;tanh 可使用略大于 1 的经验增益。若增益与激活不匹配,激活导数仍会破坏原先的保尺度性质。
初始化解决的是训练开始时的条件,而不是整个训练过程的永久稳定性。参数更新会逐渐改变权重谱,数据和参数变化也会改变激活分布,初始时健康的雅可比可能在训练后偏离稳定区。因此,合理初始化需要与残差通路、归一化、学习率调度以及对梯度和激活的持续监控共同使用。
| 方法 | 典型方差尺度 | 主要假设 |
|---|---|---|
| Xavier/Glorot | 约 2/(fan_in+fan_out) | 前后向方差折中,tanh/线性附近 |
| He/Kaiming | 约 2/fan_in | ReLU 类激活的门控比例 |
| 正交初始化 | 方向范数初始更稳定 | 形状允许且增益选得合适 |
8残差、归一化和裁剪为什么不能互相替代机制映射
这一节把多种“稳定训练”技巧放回雅可比连乘链中比较,关键结论是:它们作用的位置和解决的问题不同,因此不能因为都能减少训练崩溃,就把它们视为可互换方案。
残差连接把模块写成 y=x+F(x),其雅可比为
单位矩阵 I 对应一条无需经过分支变换的恒等路径。即使分支 F 在某些方向上的导数很小,梯度仍可通过恒等项传递,从而改善深层信用分配。但残差并不自动限制分支尺度;若 ∂F/∂x 很大,整体雅可比 I+∂F/∂x 仍可能放大梯度。
归一化在这里用于调节中间激活的数值尺度;标准化后的值还可通过可学习参数 γ,β 重新缩放和平移。把中间值维持在较稳定的范围,能减少预激活漂入 sigmoid、tanh 饱和区的机会,并改善局部优化条件。但统一整体尺度不等于把权重矩阵的每个奇异值都变为 1;不同方向之间原有的强弱差异仍可能保留。
梯度裁剪发生在完整反向传播之后。若全局梯度范数 ‖g‖ 超过阈值 τ,就将梯度整体乘以 τ/‖g‖,保持方向不变而限制长度。它适合处理梯度爆炸或异常批次造成的尖峰,却不能修复消失梯度,因为当梯度本来只有 10^{-8} 时,裁剪根本不会触发。
损失缩放是低精度训练中的数值保护。FP16 反向前先把损失乘以较大系数 S,使微小梯度落入可表示范围,参数更新前再除回 S。它能防止本来非零的梯度因浮点下溢被舍入成零,但不能改变数学上真实梯度已经很小的事实。
门控则通过可学习的保留与写入系数建立长期状态通路,主要针对时间维度上的信用传播,也不等于无限记忆。由此可见:残差改变雅可比结构,归一化调节激活尺度与局部条件,门控控制状态传递,裁剪限制最终大梯度,损失缩放保护数值表示。稳定系统往往需要组合使用这些机制,并依据诊断出的具体失效位置选择工具。
| 方法 | 直接改变 | 主要帮助 | 不能单独解决 |
|---|---|---|---|
| 残差连接 | 雅可比加入恒等短路径 | 深层信用传播、退化问题 | 分支尺度失控、错误目标 |
| 归一化 | 激活尺度和局部条件 | 数值范围、可优化性 | 所有方向谱保持 1 |
| 门控 | 学习状态保留/写入系数 | 长时间依赖 | 无限序列记忆 |
| 梯度裁剪 | 过大梯度的最终范数 | 爆炸与异常批次 | 消失梯度 |
| 损失缩放 | 低精度反向数值范围 | 防浮点下溢 | 真实数学梯度过小 |
9运行示例:怎样证明是梯度消失而不是泛泛的“训练慢”诊断
这一节给出的是一套“证据链”式诊断方法:损失停滞只是表面现象,只有把任务可学性、前向状态、反向梯度、参数更新和路径长度联系起来,才能把根因定位为梯度消失。
第一步是建立可学性基线。让小模型或浅模型在一小批数据上过拟合。如果连这个最小实验都失败,更应先检查数据、标签、损失函数和实现;如果浅模型能学而同任务的深模型不能学,深度相关的反向路径就成为重点嫌疑。
第二步是同时记录分层激活和分层梯度。激活侧应观察均值、方差、饱和比例以及 ReLU 的零值比例,判断信号是否随深度缩小或进入饱和区。梯度侧不能只记一个全局范数,而应按层记录范数、中位数、最大值和 finite 比例,并比较靠近输入和输出的层。若靠近输入的层梯度系统性远小于靠近输出的层,这与长路径上的连乘衰减一致。
第三步是把梯度与实际更新连接起来。记录“参数更新量/参数量”的比率,可判断小梯度经过优化器后是否仍产生可见更新。若梯度看起来正常而参数完全不变,应检查学习率、优化器参数组、参数冻结或缩放设置,而不是直接归因于梯度消失。
深度消融能提供更强的因果证据:在保持任务和主要设置不变时,将 50 层缩短为 5 层。如果浅版本恢复学习,说明路径长度与失败高度相关。随后每次只替换一个机制,例如初始化、激活函数或残差连接,观察分层梯度剖面是否恢复;单变量干预比同时堆叠多个技巧更能确定原因。
不同观测对应不同故障:所有层梯度都是 None 或零,更像计算图被切断、参数被冻结或损失不依赖这些参数;偶发巨大尖峰和 NaN 指向爆炸、异常批次或精度溢出;梯度正常但参数不变则指向优化器配置。FP16 中的零梯度还可能是浮点下溢,需要通过数值精度检查与数学上的连乘衰减区分。最终,只有“深度依赖的梯度剖面 + 可学基线 + 单变量干预恢复”共同成立,才能较有力地证明问题确实来自梯度消失。
| 观测 | 更可能的问题 |
|---|---|
| 浅层梯度系统性远小于深层 | 长路径消失 |
| 所有层梯度均为 None/零 | 计算图切断、冻结或损失无依赖 |
| 偶发巨大尖峰与 NaN | 爆炸、异常批次或精度溢出 |
| 梯度正常但参数不变 | 学习率、优化器参数组或缩放问题 |
10把整条因果链连起来综合
这一节把梯度消失与爆炸组织成一条完整的因果链。起点是输出端的标量损失产生梯度;随后反向传播每经过一层,都要乘上该层的局部雅可比。局部雅可比由当前激活导数、权重矩阵的方向性伸缩以及梯度实际经过的路径共同决定,因此每一步都可能对信号进行压缩、放大或旋转。
单层中的轻微尺度偏差并不一定立刻造成明显异常,但深度或时间距离会让它重复出现。连续雅可比相乘后,小于 1 的有效尺度会指数衰减,大于 1 的有效尺度会指数放大。激活进入饱和区会让局部导数接近零;权重谱则可能使不同方向同时发生收缩和放大。最终结果表现为靠近输入的早期层几乎没有有效更新,或者全局梯度突然失控并产生极端更新与数值异常。
各种稳定技术应按照它们在因果链中的作用位置理解。合适的初始化首先让训练起点处的前向和反向尺度不过早漂移。门控为长时间依赖建立可学习的状态保留通道;残差连接加入恒等短路径;归一化控制激活尺度并改善局部条件。这些机制直接改变长期传播路径或局部雅可比的环境。梯度裁剪则在反向计算完成后限制过大的最终更新,精度管理用于避免低精度表示中的下溢或溢出,它们处理的是链条后端的极端值和数值表示问题。
因果链也决定了诊断方式。不能因为加入某个技巧后训练恢复,就反向断言原问题一定是该技巧通常针对的机制;多个变化可能同时影响结果。更可靠的方法是按层监控激活、梯度和更新幅度,再通过深度消融和单变量干预观察异常是否随路径长度出现、是否在特定位置恢复。
因此,训练成败不是由某个孤立局部导数决定的,而是由“初始梯度—局部雅可比—路径长度—参数更新—数值表示”整条链共同形成。理解每种机制插入链条的位置,才能选择针对性的修复手段,并用观测证据验证真正根因。
13概念依赖与延伸学习路线
这一节给出了一张围绕梯度传播问题的概念依赖图,核心脉络是从数学来源、结构性改造、数值条件和优化保护四个层面继续深入。
“反向传播”是理解雅可比连乘的基础。计算图中的每个节点只提供局部导数,反向传播通过链式法则复用这些局部雅可比,最终组成从损失到早期状态或参数的长乘积。掌握这一层后,梯度消失与爆炸就不再只是经验现象,而能被定位到具体路径、具体局部变换和具体伸缩方向。
“残差连接”对应缩短有效反向路径。恒等分支在前向中直接保留输入,在反向中让模块雅可比包含单位矩阵项,因此深层信号不必完全依赖复杂分支逐层传递。它解释了结构设计如何直接改变雅可比链,而不只是调整参数的初始数值。
“归一化”和“批归一化”对应激活尺度与局部条件的稳定。它们减少激活分布随层和训练过程的漂移,避免预激活频繁进入不利区域。但激活尺度稳定与梯度谱稳定是不同问题:统一整体统计尺度,并不意味着各个方向的奇异值都接近 1。这个区别把统计视角与矩阵方向视角连接起来。
“循环神经网络”把问题扩展到序列。门控通过可学习的保留系数构造较稳定的时间状态通道,而更一般的结构目标,是减少或绕开跨越很长时间距离的反向路径。由此可以把长期依赖问题理解为时间维度上的有效深度问题。
“优化器与学习率调度”属于优化层面的保护。梯度裁剪限制异常大的更新,预热控制训练早期的步长冲击,精度管理防止低精度表示中的下溢与溢出。这些机制需要协同,但它们并不替代对雅可比链本身的结构性改善。
整张依赖图最终形成一套统一映射:反向传播解释连乘来源;初始化控制起点尺度;门控和残差改变长路径;归一化改善激活尺度与局部条件;裁剪、调度和精度管理保护最终更新与数值表示。把这些概念放到同一条因果链中,才能区分每种方法真正改变的环节。
| 方向 | 接下来读 | 关键问题 |
|---|---|---|
| 连乘从哪里来 | 反向传播 | 局部雅可比如何在计算图上复用? |
| 怎样建立短路径 | 残差连接 | 恒等项怎样进入前向和反向? |
| 怎样稳定激活尺度 | 归一化、批归一化 | 尺度稳定与梯度谱有什么区别? |
| 序列中的门控 | 循环神经网络 | LSTM/GRU 如何控制状态保留? |
| 优化层面的保护 | 优化器与学习率调度 | 裁剪、预热和精度管理怎样配合? |
- Understanding the difficulty of training deep feedforward neural networks:饱和、信号方差与 Xavier 初始化。
- Delving Deep into Rectifiers:ReLU 网络与 He 初始化。
- Long Short-Term Memory:门控状态与长期依赖。
- Deep Residual Learning for Image Recognition:残差学习与极深网络优化。
连乘表、激活与时间展开图、诊断流程均为本项目原创组织。