D10:网络深度与损失减半时间
结论
已测网络并非越深就越慢。本页比较不同深度的 SiLU 网络,记录训练损失降到初值一半所需的步数,并检查能否从初始化时的导数预测这个时间。分别估计各参数组单独更新所需的时间,再取最慢者,会把实际时间高估到两倍之外;合并所有参数组的导数信息来预测,达到了事前判据,但宽度16仍有反例。这些结果只涉及早期训练速度,没有检验测试误差或泛化表现。
实验使用固定目标 $x_0+.5x_0x_1$、三维输入(d3)、32个样本(n32)、隐藏宽度16/32和深度1/2/4/6。网络使用 SiLU 激活函数,不含偏置、层归一化或残差连接。每步用全部训练样本做梯度更新,无动量、无权重衰减,学习率为 .005/.02/.04。三个初始化只检查结果是否随初始参数改变。下文 width、depth、eta、seed 分别指隐藏宽度、隐藏层数、学习率和初始化种子;cell 是一个深度与初始化的实验单元,recipe 是固定深度、宽度、学习率等条件的一组配置。
- 实测推翻了“最慢参数组能在两倍内描述实际半损失时间”的预测。半损失时间指训练损失降至初值一半所需的更新步数。最慢组候选指只更新各参数组的冻结切线模型(把网络在初始化处线性化,并固定导数)的半损失时间最大值,含输出 head(最后的标量输出层)。width16 在 eta=.02/.005 下,候选/实际比值分别为4.727273–2053.176796和5.097561–2067.454798,各12/12高估超过两倍。width32 对应比值为16.6–73和18.333333–60.562500,也各12/12高估超过两倍。后续“仍高估”的预测通过,不撤销原拟合预测的失败。
- 实测全核候选达到各自注册判据,仍保留 width16 的反例。核指输出对参数的导数形成的矩阵;全核是各参数组核的和。width16、eta=.02/.005 的全核候选/实际比值分别为.333333–3.320442和.328638–3.339360,各10/12在[.5,2]内。width32 对应 eta=.005/.02/.04 的比值分别为 .666667–1.052632、.75–1 和 .75–1,三个学习率族均12/12在[.5,2]内。核求和是已知解析关系;这些结果未单独证明层间耦合或核漂移(训练中核发生变化)的机制。
- 实测时间不随深度单调增加。width16、eta=.02 下,初始化1129的相邻深度步数差为−7/50/127。eta=.005 下,width32相对width16有10/12加快、2/12变慢;宽度改变同时改变参数形状、参数量和初始函数,不能单独归因宽度机制。
- 实测学习率配对保留了候选的通过率边界。width16从eta=.02降至.005,实际时间增长2.000000–4.000000倍,全核仍10/12在两倍内。width32从eta=.005升至.02,固定全部初始参数,全核仍12/12在两倍内;实际新/旧时间比值为.166667–.294118。再将 eta 从 .02 升至 .04,width32 全核仍12/12在两倍内,最慢组仍12/12超过两倍;实际新/旧时间比值为 .4–1,depth6_seed1151 为 1→1 步。结论只覆盖已测学习率,不外推任意学习率。
公式与符号
\[ r_t=f_{\theta_t}(X)-y,\quad L_t=\frac{\|r_t\|^2}{2n},\quad J_{\ell,0}=\frac{\partial f_{\theta_0}(X)}{\partial\theta_\ell},\quad K_{\ell,0}=J_{\ell,0}J_{\ell,0}^{\top}/n,\quad K_0=\sum_{\ell=0}^{D}K_{\ell,0}. \] \[ S_K(t)=\sum_i w_i(1-\eta\lambda_i)^{2t},\quad w_i=\frac{(v_i^{\top}r_0)^2}{\|r_0\|^2},\quad \tau(K)=\min\{t\in\mathbb N_{\ge1}:S_K(t)\le1/2\},\quad \widehat T_{\rm slow}=\max_\ell\tau(K_{\ell,0}),\quad \widehat T_{\rm sum}=\tau(K_0),\quad T_{50}=\min\{t\ge1:L_t\le L_0/2\}. \]
残差 $r$ 是预测与标签之差。$S_K(t)$ 是冻结切线模型在第 $t$ 步的损失与初始损失之比,无量纲。$\lambda_{\max}$ 为相应核的最大特征值。
其中 $w$ 表示每个隐藏层的宽度(神经元数,取16或32);它改变参数形状与初始函数。
目标式中的 $x_0,x_1$ 是输入的坐标分量。$X$ 为固定训练输入(输入坐标沿用生成数据的单位)。$y$ 为按训练均值及均方根(RMS)归一化的标签,$f$ 为预测,$r$ 为同一个输出残差,其中 $y,f,r$ 的单位均为归一化标签。$L$ 的单位为标签平方。
$n=32$ 为样本数,$D=1/2/4/6$ 为隐藏层数;$\theta_\ell$ 是第 $\ell$ 个权重矩阵的参数坐标,$\ell=0\ldots D-1$ 为隐藏层,$\ell=D$ 为输出 head。参数坐标以初始化权重的数值尺度计;$n,D,\ell$ 是计数或编号,无量纲。
$J$ 是 Jacobian(输出对参数的一阶导数矩阵),单位为标签/参数坐标,$K$ 与特征值 $\lambda_i$ 的单位为标签平方/参数坐标平方;$\lambda_i,v_i$ 是计算 $S_K$ 时所用核 $K$ 的特征值和单位特征向量,$i$ 为特征方向编号,$w_i$ 为无量纲初始残差能量占比。
$\eta\in\{.005,.02,.04\}$ 为学习率,$w\in\{16,32\}$ 为隐藏宽度,使 $\eta K$ 无量纲。$\eta$ 的单位为参数坐标平方/标签平方。$t$ 为更新步编号,$\tau,T$ 单位为更新步。$\widehat T_{\rm slow}$ 为最慢单组候选,$\widehat T_{\rm sum}$ 为全核候选,$T_{50}$ 为实际半损失时间。$\tau$ 是只更新一个参数组的冻结切线模型的时间,不是网络前向传播等待时间。
结果与适用范围
实测边界:在 d3、width16、无 bias/LN/残差的 SiLU、全批量 SGD、depth1/2/4/6 与三个初始化中,$\eta=.02$ 时最慢组比值为 4.727273–2053.176796(12/12 超出 [.5,2]),全核比值为 .333333–3.320442(10/12 在区间内);$\eta=.005$ 时分别为 5.097561–2067.454798(12/12 超出)与 .328638–3.339360(10/12 在区间内),且每个深度均至少 2/3 通过全核判据。
width32、eta=.005 的实测边界:同一 d3/n32/SiLU/full-batch SGD 条件下,最慢组比值18.333333–60.562500(12/12超过2),全核比值.666667–1.052632(12/12在[.5,2]内)。这是离散已测宽度的适用边界,未拟合经验系数。
width32、eta=.02 的实测边界:同一 d3/n32/SiLU/full-batch SGD、固定全部初始参数时,最慢组比值16.6–73(12/12超过2),全核比值.75–1(12/12在[.5,2]内)。将 eta 从 .02 升至 .04 后,最慢组比值17.5–60.5(12/12超过2),全核比值.75–1(12/12在[.5,2]内)。最大初始 eta·lambda_max=1.5426750551<2,未触发不稳定分支。
逐参数层的最慢冻结时间无法描述全层共同更新的早期拟合时间。width16 的深度1和2时,三个初始化的最慢组都为输入层;深度4时一个初始化为最后隐藏层;深度6时两个初始化为 head。因而“最慢层”没有固定位置。全层参数梯度共同改变输出,单组时间的最大值在本族上系统性高估真实时间。核相加的已知关系与该现象相容,但未单独证明层间耦合或核变化的机制。降低学习率后,实际半损失步数按同cell增长2.000000–4.000000倍;最慢组仍12/12超过两倍,全核仍10/12在两倍内。该配对结果只支持这两个学习率下的边界稳定,不外推任意学习率。
width32 的 eta=.005 下,全核12/12达到两倍判据,最慢组12/12高估超过两倍。全层参数共同更新的输出变化与相加核描述相容;这不证明层间耦合或核漂移的独立机制。其最慢组在11/12为输入层,深度6、初始化1129为最后隐藏层。
与width16同seed配对的实际时间差按深度1/2/4/6、各深度内初始化1103/1129/1151的顺序为−3/−26/−20、−55/−5/+1、−18/−154/+22、−74/−662/−16步,新旧比值.079277–12。10/12加快,2/12变慢;width改变矩阵形状、参数量、随机数消费和初始函数,不能单独归因宽度机制。
width32 下仅将 eta 从 .005 升至 .02,保留输入、标签、初始参数、初始函数和全部初始 J/K/谱逐位一致,全核仍12/12在两倍内。最慢组仍12/12高估超过两倍。所有实际时间缩短:新/旧时间比值为 .166667–.294118,配对差为−5至−44步。深度6、初始化1151的6→1步出现整数阈值影响;不能把1/6写成连续时间的六倍速率定律。
核相加与 $S_K(t)$ 是固定 Jacobian、全批量 half-MSE(均方误差的一半)的已知解析关系。特征值不大于 $10^{-12}\lambda_{\max}$ 时按零处理;零空间(核不改变的输出方向)的能量占比至少 .5 时 $\tau=\infty$。实测全部初始化核稳定;width32、eta=.005 时最大 eta·lambda_max=.1928343819<2,eta=.02 时为 .7713375275<2,eta=.04 时为 1.5426750551<2;width16 的 $\eta=.02$ 时最大 $\eta\lambda_{\max}=1.364826<2$,width16 的 $\eta=.005$ 时为 $0.3412064351<2$,没有无限或删失时间(训练结束仍未达到半损失阈值)。
仅在 development(用于开发和反复检查的已见条件)中验证。通过率按每个宽度/学习率族的12个cell分别报告,不合并成独立recipe计数。width16保留两个全核反例,width32保留跨宽度两个变慢cell。只测早期半损失;未测任意学习率、其他宽度/深度、优化器、mini-batch(每步仅用部分样本)、测试误差、泛化、LN机制或封存 OOD(未查看的新条件)。
方法与条件
width16 的训练输入来自 data_seed260071 的32个三维标准 Gaussian(高斯分布)样本,目标为 $x_0+.5x_0x_1$,按同一训练均值/RMS归一化。每层 Linear(线性变换)后接 SiLU,最后为标量 Linear;全部无 bias。隐藏权重为 $N(0,2/\mathrm{fan\_in})$,输出 head 权重为 $N(0,1/16)$。fan_in 为该层输入维度,$N$ 表示正态分布。各隐藏位置独立固定随机流;同初始化跨深度逐位共享隐藏前缀和输出 head。参数量为64/320/832/1344。深度同时改变初始函数和参数量,未控制这两者。
每个学习率/宽度族的四个深度为4个 recipe(固定深度、宽度、学习率等条件的一组实验配置),三个初始化仅为稳健性重复,共12个 cell(一个深度与初始化的实验单元)。float64(64位浮点数)、CPU单线程,全批量 SGD、momentum0、weight_decay0、4096步。损失为 $\|r\|^2/(2n)$;width16 的 $\eta=.02$ 实验累计 5.345299 秒,$\eta=.005$ 实验累计 5.585031 秒。保存每步损失和 0/1/8/32/128/512/2048/4096 步的每组完整 Jacobian、核、谱与输出残差投影;投影不是独立的隐藏层损失。
两候选均采用完整冻结谱(初始化核的全部特征值及残差投影),不以 Rayleigh 商(目标加权的平均特征值)替代半衰时间。width16 的 $\eta=.02$ 的两个候选都以每个深度至少2/3比值在[.5,2]内为通过判据;$\eta=.005$ 的新预测则为最慢组12/12比值>2、全核至少10/12在区间内且每深度至少2/3。初始化重复的逐值配对是主证据;原报告表述“仅3个重复的t95区间很宽且可跨零”原样保留。t95指基于 t 分布的95%区间;原报告未列出区间宽度数值。不视为跨任务总体精度或显著性。只测早期半损失时间,不推断1%阈值、测试误差或LN机制。
width16、$\eta=.02$ 的12个结果和96个 checkpoint(保存参数和导数的训练步)已通过hash(文件或数组内容的哈希校验值)、数据重生成、共同初始化、解析Jacobian、half-MSE首步更新、核相加与谱重建核验。解析Jacobian最大绝对误差4.44×10⁻¹⁵,首步预测2.22×10⁻¹⁵,谱重建2.31×10⁻¹⁴;独立矩阵平方递推的过线损失占比与谱计算差不超过7.71×10⁻¹²。
width16、$\eta=.005$ 的12个结果和96个checkpoint通过同样核验;Jacobian误差4.44×10⁻¹⁵、首步预测2.00×10⁻¹⁵、谱重建2.49×10⁻¹⁴、过线占比误差3.85×10⁻¹¹。width16 的两个学习率之间,输入、标签、参数与全部初始化J/K/谱逐位一致;恢复调用核对合同和数组hash后跳过12个成功cell,hash和mtime(文件修改时间)不变,无新训练。
width32只改宽度,保留输入/标签、初始化种子与fan-in(按层输入维度缩放权重的)规则;输出 head为N(0,1/32),参数量128/1152/3200/5248,训练累计7.105134秒。每个宽度内共享隐藏层前缀与输出 head;跨宽度参数形状与初始函数改变,不是逐位同初始化。输入、标签与归一化常数逐位相同。width32的判据沿用eta=.005的12/12最慢组比值>2、全核至少10/12且各深度至少2/3;不稳定候选(学习率与最大特征值之积达到稳定阈值的候选)统一判两倍内失败,不能计作有限高估支持。
width32独立核验12个cell/96个checkpoint通过:Jacobian误差5.33×10⁻¹⁵、首步预测3.55×10⁻¹⁵、谱重建2.84×10⁻¹⁴、过线占比8.46×10⁻¹⁴。恢复调用跳过12/12,0新训练;新24个结果文件和旧71个study(研究归档)文件hash/mtime未变。新合同修正不稳定谱分支,初始谱均稳定,旧源码与警告保留。
width32 的学习率配对仅改变 eta=.005→.02;12/12 cell完成,无发散/删失/无限候选,训练累计7.254602秒。新预测严格要求全核12/12、四深度各3/3在[.5,2],最慢组12/12有限比值>2;两项均支持。所有参数、初始函数与初始化核逐位相同,最大初始 eta·lambda_max=.7713375275。该值在注册前可由旧谱乘4计算,属于已知算术,不作为盲预测发现。
width32 的 eta=.04 配对仅改变 eta=.02→.04;12/12 cell 完成,训练累计 7.058 秒。输入、标签、参数形状、初始参数、初始函数和 checkpoint0 的 J/K/谱逐位匹配。修正独立核验覆盖 12 cell/96 checkpoint;最大 Jacobian 误差 5.329070518200751e−15,谱重建误差 1.4210854715202004e−14,冻结过线误差 6.938893903907228e−15。实际新/旧步数比为 .4–1,未出现发散或删失。
修正独立核验覆盖12个cell/96个checkpoint:Jacobian最大误差5.33×10⁻¹⁵、首步预测2.66×10⁻¹⁵、谱重建1.69×10⁻¹⁴、冻结过线占比4.40×10⁻¹⁴,核重建与相加误差为0。冻结分析从保存结果逐字节复算一致;恢复调用跳过12/12,0新训练,新24个结果文件与旧109个study文件的hash/mtime不变。发散训练统一 unresolved(未解决状态),不稳定候选不能支持有限高估;本次均未触发。
所有表按 seed1103/1129/1151 列出,单位为更新步。
| width16隐藏深度,eta=.02 | 实际 $T_{50}$ | 最慢单组 $\widehat T_{\rm slow}$ | 相加全核 $\widehat T_{\rm sum}$ | 全核两倍内重复数 |
|---|---|---|---|---|
| 1 | 4 / 11 / 10 | 61 / 52 / 70 | 4 / 10 / 9 | 3/3 |
| 2 | 18 / 4 / 4 | 227 / 45 / 31 | 19 / 4 / 3 | 3/3 |
| 4 | 12 / 54 / 1 | 254 / 328 / 10 | 10 / 18 / 1 | 2/3 |
| 6 | 23 / 181 / 6 | 8317 / 371625 / 286 | 41 / 601 / 6 | 2/3 |
width16、$\eta=.005$ 时实际 $T_{50}$(按 seed 1103/1129/1151)为 depth1 的 15/41/38、depth2 的 70/16/16、depth4 的 45/213/2、depth6 的 90/719/22;最慢组候选为 245/209/279、908/178/123、1013/1309/40、33268/1486500/1143;全核候选为 15/39/35、75/14/13、39/70/1、165/2401/22。这是4个深度recipe与3个初始化的学习率配对,不是24个独立recipe。
| width32隐藏深度,eta=.005 | 实际T50 | 最慢组候选 | 全核候选 | 全核两倍内重复数 |
|---|---|---|---|---|
| 1 | 12 / 15 / 18 | 437 / 275 / 331 | 12 / 15 / 18 | 3/3 |
| 2 | 15 / 11 / 17 | 385 / 339 / 766 | 15 / 10 / 16 | 3/3 |
| 4 | 27 / 59 / 24 | 1252 / 1564 / 873 | 25 / 55 / 20 | 3/3 |
| 6 | 16 / 57 / 6 | 969 / 2443 / 293 | 13 / 60 / 4 | 3/3 |
| width32隐藏深度,eta=.02 | 实际T50 | 最慢组候选 | 全核候选 | 全核两倍内重复数 |
|---|---|---|---|---|
| 1 | 3 / 4 / 5 | 110 / 69 / 83 | 3 / 4 / 5 | 3/3 |
| 2 | 4 / 3 / 5 | 96 / 85 / 192 | 4 / 3 / 4 | 3/3 |
| 4 | 7 / 15 / 6 | 313 / 391 / 218 | 6 / 14 / 5 | 3/3 |
| 6 | 4 / 15 / 1 | 242 / 611 / 73 | 3 / 15 / 1 | 3/3 |
失败与反例
- 最慢层候选的两倍内预测在4/4深度被推翻,各深度均0/3通过。最大误差出现于深度6、初始化1129:371625/181=2053.176796。
- 相加全核候选达到预注册判据,仍有两个失败:深度4、初始化1129为18/54=.333333;深度6、同初始化为601/181=3.320442。不能写成全初始化成立或封存新深度验证成功。
- 降低学习率后,全核反例仍为 depth4_seed1129:70/213=.32863849765,以及 depth6_seed1129:2401/719=3.33936022253;depth4_seed1151 的比值 1/2=.5 恰在下边界。
- width增加未使全部cell加快:depth2、初始化1151为16→17步,depth4、同初始化为2→24步。旧width16的两个全核反例仍保留;width32对应比值为55/59=.932203与60/57=1.052632。
- 实际时间不随深度单调增加。同初始化的1→2、2→4、4→6步数差分别为1103的14/−6/11,1129的−7/50/127,1151的−6/−3/5。
- width16、eta=.02 的冻结分析未实现不稳定谱分支;该历史源码不能未经修正用于不稳定条件。eta=.02 的全部初始核低于稳定阈值,故旧判断未受影响。独立矩阵幂核验首版出现 NumPy matmul(矩阵乘法)警告,显式 einsum(按指标执行求和运算)复算通过,根因未定。
-
width16、eta=.005 的分析已加入 $\eta\lambda_{\max}\ge2$ 的不稳定谱分支;12 个初始全核最大值为 .3412064351,未触发。预注册将该分支记为失败,而分析脚本在触发时返回 unresolved(未解决状态);eta=.005 的稳定谱下两者无影响。独立矩阵幂核验首版的 NumPy matmul 警告仍保留,显式 einsum 复算通过,根因未定。
-
width32、eta=.02 的冻结核验脚本将“数组名末尾为0”误作“checkpoint(保存训练状态的步)为0”,因此把第1步、第0组 Jacobian 纳入跨学习率比较而触发断言;训练与分析未改变。修正核验只筛选 checkpoint0 后通过。原脚本和失败日志保留。
尚未回答的问题
后续候选是在已有开发条件中,只改变一个学习率或一个深度,并事先登记数值预测范围。eta=.04 的结果尚不适用于未测学习率、宽度、深度、优化器或小批量更新,也没有验证测试表现、泛化或事先封存的新条件。
证据
- 预注册条件与判据(
studies/r026_layer_clock/preregistration.json);训练源码(studies/r026_layer_clock/executed/run.py);冻结分析(studies/r026_layer_clock/executed/analysis.py);源码hash(studies/r026_layer_clock/executed/manifest.json)。 - 12个cell及四深度汇总(
studies/r026_layer_clock/summary.json);独立复算源码(studies/r026_layer_clock/executed/verify.py);核验、逐层读数和配对差(studies/r026_layer_clock/executed/verification.json)。 -
提交与恢复审计(
studies/r026_layer_clock/executed/execution_audit.json);预注册提交 ed6cd26e3adb9993db40f5b5acb3e64f1ce7ab09;警告记录(studies/r026_layer_clock/executed/verification_warning.json);本轮交接(findings/r026_layer_clock.md)。 -
科学收尾提交 429d47589e8ac050cb5d3e0eeb85808accba099a;收尾字节核验(
studies/r026_layer_clock/executed/final_commit_verification.json)。 - eta=.005 预注册(
studies/r030_eta005/preregistration.json);训练源码(studies/r030_eta005/executed/run.py);修正分析(studies/r030_eta005/executed/analysis.py);12个cell汇总(studies/r030_eta005/summary.json);独立核验(studies/r030_eta005/executed/verification.json)。 - 预注册与pinned源码提交721cd6130e0df667163a5ca064f98558d8f79efb;提交与恢复审计(
studies/r030_eta005/executed/execution_audit.json);本轮交接(findings/r030_eta005.md)。 -
科学收尾提交 8903ba8;收尾字节核验(
studies/r030_eta005/executed/final_commit_verification.json)。 -
width32预注册(
studies/r034_width32/preregistration.json);训练源码(studies/r034_width32/executed/run.py);分析(studies/r034_width32/executed/analysis.py);逐cell与宽度配对汇总(studies/r034_width32/summary.json);独立核验(studies/r034_width32/executed/verification.json)。 -
预注册与pinned源码提交15be488;训练前旧证据审计(
studies/r034_width32/executed/baseline_audit.json);执行与恢复审计(studies/r034_width32/executed/execution_audit.json);本轮交接(findings/r034_width32.md)。 -
width32科学审计快照提交52956115b14de637065cc217b5075d90bd08b0d2;收尾回执(
studies/r034_width32/executed/final_commit_verification.json)。实际结果与交接提交6de95da、回执初存5b87c5d,审计快照保留。 - eta=.02 width32预注册(
studies/r042_width32_eta02/preregistration.json);冻结提交63aa9eab58c352223bd77f6a1f47a5af53d9542c;训练源码(studies/r042_width32_eta02/executed/run.py);分析源码(studies/r042_width32_eta02/executed/analysis.py);逐cell及学习率配对汇总(studies/r042_width32_eta02/summary.json)。 - 初始化与原始结果独立核验(
studies/r042_width32_eta02/executed/verification.json);修正核验源码(studies/r042_width32_eta02/executed/verify_corrected.py);冻结核验失败记录(studies/r042_width32_eta02/executed/verification_error.json);执行及恢复审计(studies/r042_width32_eta02/executed/execution_audit.json);本轮交接(findings/r042_width32_eta02.md)。 - 本轮科学收尾字节回执(
studies/r042_width32_eta02/executed/final_commit_verification.json)。 - eta=.04 预注册(
studies/r098_width32_eta04/preregistration.json);逐值汇总(studies/r098_width32_eta04/summary.json);训练与分析日志(studies/r098_width32_eta04/executed/training.log);修正独立核验(studies/r098_width32_eta04/executed/verification.json);本轮科学收尾字节回执(studies/r098_width32_eta04/executed/final_commit_verification.json)。