微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 新加坡南洋理工大学发明"卡尔曼滤波器":让AI训练不再"翻车",彻底解决大模型崩溃问题

新加坡南洋理工大学发明"卡尔曼滤波器":让AI训练不再"翻车",彻底解决大模型崩溃问题

2026-03-13 11:03
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-03-13 11:03 科技行者

这项由新加坡南洋理工大学联合东南大学开展的研究发表于2026年2月的预印本论文中(论文编号:arXiv:2602.10609v1),有兴趣深入了解的读者可以通过该编号查询完整论文。研究团队发现了一个困扰AI训练界已久的严重问题,并提出了一个巧妙的解决方案。

当我们训练大型语言模型时,就像在教一个学生做数学题。传统的训练方法有个致命缺陷:它会根据每个词的重要程度给出不同的"关注分数",但这些分数经常忽高忽低,就像一个情绪不稳定的老师,对相邻的词语态度截然不同。这种不一致性会让整个训练过程变得极不稳定,最终导致模型性能崩溃。

研究团队通过对Qwen3-4B模型的深入观察发现了一个惊人现象:在数学推理任务中,相邻词语之间的重要性评分经常出现剧烈波动。具体来说,这些评分的切换频率高达41%,意味着几乎每隔一个词就会发生一次"态度转变"。更糟糕的是,连续保持同一评分的词语长度平均只有1.48个,这种短暂性表明训练过程缺乏足够的局部连贯性。

为了解决这个问题,研究团队开发了一种名为"在线因果卡尔曼滤波策略优化"(KPO)的新方法。这就像给那个情绪不稳定的老师配了一位经验丰富的辅导员。这个辅导员会观察老师的评分历史,当发现评分过于跳跃时,会温和地建议一个更合理的分数,既保持了对不同内容的区别对待,又避免了过度的情绪波动。

卡尔曼滤波器原本是航空航天领域用来追踪飞行器轨迹的技术,研究团队巧妙地将其应用到AI训练中。它会持续监控每个词语的重要性评分,当某个词的评分异常偏离周围词语时,滤波器会基于历史模式进行平滑调整。这个过程完全是自动的,不需要人工干预,就像一个自动驾驶系统能够平滑转弯而不会急刹车一样。

一、核心问题的发现:为什么AI训练会"翻车"

研究团队首先深入分析了当前主流训练方法GRPO(群体相对策略优化)存在的问题。GRPO是目前大型语言模型训练的标准方法,被OpenAI、DeepSeek等顶级公司广泛采用。这种方法的核心思想是给每个词语分配一个"重要性比值",用来衡量新模型相对于旧模型对该词语的重视程度。

然而,研究团队发现这些重要性比值存在严重的结构性问题。他们对960个训练样本进行了详细分析,发现了三个令人担忧的现象。

第一个现象是"频率递增效应":在一个完整的句子中,越往后的词语越容易偏离正常轨道。研究人员将句子分成若干个50词的窗口,发现偏离正常的词语在后面的窗口中出现得越来越频繁。这就像一个学生在做长篇数学证明时,开头还能保持清醒,但越往后越容易出错。

第二个现象是"短命效应":那些偏离正常的词语往往只能维持很短时间。平均而言,连续偏离的词语长度只有1.48个,而连续正常的词语也只能维持3.53个。这种短暂性表明训练过程极其不稳定,就像一辆汽车在颠簸路面上行驶,时刻都在震荡。

第三个现象是"频繁切换效应":相邻词语的重要性评分经常发生突变,切换频率高达41%。这意味着训练过程缺乏局部一致性,就像一个指挥家在指挥交响乐时手势忽快忽慢,导致整个乐团无法协调。

这三个现象共同指向一个核心问题:传统方法忽视了词语之间的时间关系。在自然语言中,相邻的词语通常在语义上相关,应该享受相似的重要性评分。但现有方法将每个词语视为独立个体,完全不考虑上下文的连贯性。

研究团队还发现,这种不稳定性在复杂的数学推理任务中表现得尤为明显。当模型需要进行多步骤推理时,每一步都依赖于前面步骤的准确性。如果中间某些词语的重要性评分出现剧烈波动,就会产生累积误差,最终导致整个推理链条崩溃。

为了验证这一发现,研究团队设计了一系列对照实验。他们比较了稳定训练和不稳定训练的效果,发现重要性评分的波动确实与模型性能下降密切相关。当波动程度较高时,模型在数学推理任务上的准确率会显著下降,有时甚至会出现完全的训练崩溃。

二、卡尔曼滤波器的妙用:从航天技术到AI训练

卡尔曼滤波器是20世纪60年代由鲁道夫·卡尔曼发明的一种数学工具,最初用于阿波罗登月计划中的导航系统。它的基本思想很简单:当你需要追踪一个移动物体的位置,但观测数据有噪声时,可以结合历史轨迹和当前观测来得出最可能的真实位置。

研究团队意识到,AI训练中的重要性评分追踪问题与航天器轨迹追踪问题本质上是相同的。每个词语的真实重要性就像航天器的真实位置,而我们计算出的重要性评分就像带有噪声的观测数据。通过卡尔曼滤波器,可以将这些"噪声观测"转换为平滑、连贯的"真实轨迹"。

卡尔曼滤波器的工作原理可以用一个开车的比喻来解释。当你在雾天开车时,GPS信号可能不稳定,时而显示你在路中央,时而显示你偏离了道路。一个聪明的导航系统不会盲目相信每一个GPS读数,而是会综合考虑你的历史行驶轨迹、当前速度方向,以及最新的GPS信号,来推断你最可能的真实位置。

在AI训练中,卡尔曼滤波器扮演着类似的角色。它会维护每个词语重要性的"内部估计",这个估计会随着时间缓慢演化。当新计算出的重要性评分与内部估计差距很大时,滤波器不会立即采信,而是会进行谨慎的调整。这样既保证了对真实变化的响应,又避免了被噪声误导。

研究团队设计的KPO方法包含三个核心步骤,就像一个精密的三步舞蹈。

第一步是"预测步骤"。基于前一个词语的重要性估计,滤波器会对当前词语的重要性进行初步预测。这个预测考虑了重要性的自然演化趋势,就像根据汽车当前的行驶方向预测下一秒的位置。

第二步是"增益计算"。滤波器会计算一个介于0到1之间的"信任度"参数,决定对新观测数据的相信程度。如果历史估计比较可靠而新观测看起来有很多噪声,信任度就会偏低;反之则会偏高。这就像一个经验丰富的司机在判断GPS信号的可靠性。

第三步是"更新步骤"。基于信任度参数,滤波器会将初步预测和新观测进行加权平均,得出最终的重要性估计。这个过程确保了估计结果既不会过于保守(忽视真实变化),也不会过于激进(被噪声误导)。

整个滤波过程完全是在线进行的,意味着它只使用当前和历史信息,不需要"预知未来"。这种因果性设计与自然语言的生成过程完美匹配,因为语言模型在生成每个词语时也只能依赖之前的上下文。

为了优化滤波效果,研究团队引入了两个关键参数:过程噪声Q和观测噪声V。过程噪声控制我们认为重要性评分应该变化多快,而观测噪声反映我们对计算出的评分的信任程度。通过调节这两个参数的比值,可以在"快速响应真实变化"和"抵抗随机噪声"之间找到最佳平衡点。

三、实验验证:数学推理能力的显著提升

为了验证KPO方法的有效性,研究团队在六个具有挑战性的数学推理数据集上进行了全面测试。这些数据集包括AIME'24、AIME'25(美国数学邀请赛)、AMC'23(美国数学竞赛)、MATH500、Minerva和OlympiadBench(奥林匹克数学竞赛),涵盖了从中学水平到奥赛水平的各种数学问题。

实验设置遵循了严格的公平性原则。所有比较方法都使用相同的Qwen3-4B模型作为基础,采用相同的训练数据、相同的硬件环境和相同的评估标准。研究团队将KPO与三种主流方法进行对比:原始的GRPO、序列级别的GMPO和GSPO。每个问题都会生成16个候选答案,然后计算两个关键指标:pass@16(至少有一个答案正确的问题比例)和avg@16(16个答案的平均正确率)。

实验结果令人印象深刻。KPO在绝大多数基准测试中都实现了最佳性能,特别是在最具挑战性的AIME数学竞赛中表现突出。在AIME'24中,KPO-clipped版本的avg@16得分达到37.91%,比最强基线GSPO的32.70%提升了5.21个百分点。在AIME'25中,KPO的改进更加显著,avg@16从29.16%提升至36.87%,pass@16从50.00%提升至60.00%。

更有趣的是,KPO的改进幅度与问题难度呈正相关。在相对简单的AMC'23多选题中,KPO的优势较为有限,avg@16从75.46%提升至87.50%。但在需要复杂多步推理的AIME问题中,KPO的优势就变得非常明显。这说明卡尔曼滤波对于长序列推理的稳定性提升作用更加突出。

研究团队还开发了两个KPO变体:带截断的KPO-clipped和不带截断的KPO-unclipped。令人惊讶的是,在大多数任务中,KPO-clipped的表现都优于KPO-unclipped。这表明即使经过卡尔曼滤波平滑处理,仍然需要适度的截断机制来处理极端异常值。滤波器能够消除大部分噪声,但对于那些确实严重偏离的词语,截断机制仍然是必要的安全网。

训练动态分析揭示了KPO稳定性优势的深层原因。研究团队追踪了800个训练步骤中的四个关键指标:平均奖励、策略熵、截断比例和策略梯度损失。结果显示,原始GRPO在约200步后开始出现不稳定现象,奖励曲线开始下降,熵急剧坍塌至接近零,表明模型陷入了过度确定的状态而失去了探索能力。

相比之下,KPO在整个训练过程中都保持了良好的稳定性。奖励曲线持续上升直到训练结束,熵水平保持在合理范围内,策略梯度损失的波动性明显降低。这些观察结果确认了卡尔曼滤波器在维护训练稳定性方面的有效性。

特别值得注意的是截断比例的变化模式。KPO的截断比例在早期训练中快速上升然后趋于稳定,而GRPO和GMPO的截断比例始终维持在极低水平。这种差异反映了不同方法对异常值处理策略的本质差别。KPO通过滤波器识别出需要截断的异常词语,而传统方法由于缺乏这种识别能力,往往设置较宽松的截断阈值,导致异常值没有得到有效处理。

四、滤波前后的对比分析:从混乱到有序的转变

为了深入理解卡尔曼滤波器的作用机制,研究团队对滤波前后的重要性评分分布进行了详细分析。这种分析就像是给训练过程做"体检",通过各种统计指标来诊断训练的"健康状况"。

词语类型比例的变化最为直观。研究团队将每个词语根据其重要性评分分为三类:上偏离(评分大于1)、下偏离(评分小于1)和正常(评分等于1)。滤波前,正常词语占据主导地位(53%),上偏离和下偏离词语比例相对较低(分别为25%和22%)。滤波后,正常词语比例大幅下降至22%,而偏离词语比例显著增加(上偏离35%,下偏离43%)。

这种变化可能让人担心滤波器是否增加了训练的不稳定性。但进一步的分析表明,情况恰恰相反。虽然偏离词语的数量增加了,但它们的质量发生了根本性改变,变得更加结构化和可预测。

运行长度分析揭示了滤波器的核心价值。运行长度指的是连续保持同一类型的词语数量,是衡量局部一致性的重要指标。滤波前,所有类型词语的运行长度都很短:上偏离词语平均只能维持1.64个词,下偏离词语1.57个词,正常词语也只有3.53个词。这种短暂性表明训练过程充满了随机波动,缺乏必要的结构性。

滤波后的运行长度发生了戏剧性变化。上偏离词语的平均运行长度激增至119.95个词,下偏离词语达到135.12个词,连正常词语也增加到35.11个词。这意味着滤波后的重要性评分形成了长期稳定的段落,每个段落内部保持高度一致性。这种结构化特征对于长序列推理任务至关重要,因为它确保了推理过程中的局部连贯性。

切换频率的降低进一步证实了滤波器的平滑效果。切换频率衡量相邻词语改变类型的频繁程度,高切换频率意味着评分分布过于破碎。滤波前的切换频率高达43%,几乎每两个词就会发生一次类型切换。滤波后,切换频率急剧下降至1%,表明大多数相邻词语现在保持相同类型。

从频域角度的分析提供了另一个重要视角。研究团队计算了重要性评分序列的功率谱,并定义了低频比(LFR)来衡量低频成分所占的能量比例。低频比较高意味着信号主要由缓慢变化的趋势组成,而低频比较低则表明信号被高频噪声主导。

滤波前的重要性评分序列呈现出典型的噪声特征,低频比仅为12%,表明信号能量主要集中在高频成分上。这种高频主导的模式对应着前面观察到的频繁切换和短运行长度现象。滤波后,低频比激增至98%,几乎所有信号能量都转移到了低频段。这种转变确认了卡尔曼滤波器作为低通滤波器的本质:它保留了重要性评分的长期趋势,同时滤除了短期噪声。

方差分析从另一个角度验证了滤波效果。研究团队计算了全局方差(整个序列的方差)和窗口局部方差(短窗口内的方差)。滤波前,全局方差为0.19,窗口局部方差为0.15,都处于较高水平,表明重要性评分在各个尺度上都存在显著波动。滤波后,两个方差指标都降至接近零的水平(1e-4和1e-5),证实了滤波器在所有时间尺度上的平滑效果。

这种全面的统计分析清晰地展示了卡尔曼滤波器的作用机制:它将原本混乱、破碎、噪声主导的重要性评分序列转换为结构化、连贯、趋势主导的平滑序列。这种转换不仅改善了单个词语的评分质量,更重要的是建立了词语之间的时间依赖关系,为稳定的长序列训练奠定了基础。

五、参数调优:在响应性和稳定性间寻找平衡

卡尔曼滤波器的性能很大程度上取决于两个核心参数的设置:过程噪声Q和观测噪声V。这两个参数的比值Q/V控制着滤波器在"快速响应真实变化"和"抵抗随机噪声"之间的权衡。理解这种权衡对于在实际应用中获得最佳效果至关重要。

过程噪声Q反映我们对重要性评分变化速度的先验期望。较大的Q值意味着我们认为重要性评分可能快速变化,因此滤波器会更积极地跟踪新观测;较小的Q值则表示我们期望重要性评分变化缓慢,滤波器会表现得更加保守。

观测噪声V体现我们对计算出的重要性评分可靠性的信心。较大的V值表示我们认为观测数据噪声较大,滤波器会更多地依赖历史估计;较小的V值则意味着我们对观测数据比较信任,滤波器会给新观测更高的权重。

研究团队测试了三个不同的Q/V比值设置:1e-6、1e-4和1e-2。这三个设置代表了从强平滑(1e-6)到中等平滑(1e-4)再到弱平滑(1e-2)的不同策略。

实验结果清晰地显示了平滑强度对训练效果的影响。Q/V=1e-6的设置实现了最高的训练奖励,学习曲线在整个训练过程中都保持稳定上升。这种强平滑设置有效地消除了重要性评分中的高频噪声,为稳定训练创造了理想条件。

Q/V=1e-4的设置表现略逊,但仍然明显优于弱平滑设置。这表明即使是中等程度的平滑也能带来显著的稳定性改善。有趣的是,这种设置产生了最高的截断比例,表明它在识别异常值方面更加敏感。这可能是因为中等平滑在保持一定响应性的同时,仍能有效标识出真正的异常情况。

Q/V=1e-2的弱平滑设置表现最差,训练奖励不仅起点较低,而且在训练中期还出现了性能退化。这说明当滤波强度不足时,高频噪声仍能对训练造成干扰,导致优化过程不稳定。

截断比例的变化模式也很有启发性。强平滑设置的截断比例适中且稳定,表明它能够在保持平滑性的同时进行必要的异常值控制。中等平滑设置的截断比例较高,反映了其对变化更敏感的特性。弱平滑设置的截断比例相对较低,这看似矛盾,但实际上表明该设置可能存在异常值识别能力不足的问题。

这些结果为实际应用提供了重要指导。在大多数情况下,较强的平滑设置(较小的Q/V比值)能够提供更好的训练稳定性和最终性能。但是,平滑强度的选择也应该考虑具体的应用场景和数据特性。

对于使用混合专家(MoE)模型或存在训练推理不匹配问题的场景,底层重要性评分可能具有更高的内在变异性,此时可能需要适当增大Q值以提高滤波器的响应性。相反,当离线偏离程度较温和时,更小的Q值能够施加更强的平滑约束,进一步提升稳定性。

观测噪声V的设置则应该基于对计算出的重要性评分可靠性的评估。在数值精度较低或计算环境不稳定的情况下,应该增大V值以降低对噪声观测的依赖。在高精度计算环境中,则可以使用较小的V值以充分利用观测信息。

参数调优过程本身也可以自动化。研究团队建议根据验证集性能来选择最优的Q/V比值,或者使用自适应方法在训练过程中动态调整这些参数。这种自适应策略能够进一步提升KPO方法在不同场景下的鲁棒性和适用性。

六、技术创新与理论贡献

KPO方法的核心创新在于将时间序列分析的经典工具成功迁移到强化学习领域,开创了一个全新的研究方向。这种跨领域的技术融合不仅解决了当前的实际问题,更为未来的研究提供了新的思路和工具。

状态空间建模的引入是最重要的理论贡献之一。传统的重要性采样方法将每个词语的评分视为独立的随机变量,完全忽略了时间维度上的依赖关系。KPO首次将词语级重要性评分建模为一个动态系统,其中真实的重要性作为潜在状态随时间演化,而观测到的评分则是这个潜在状态的噪声观测。

这种建模方式带来了三个重要优势。首先,它提供了处理噪声的原理化框架,不再依赖启发式的平滑方法。其次,它建立了词语之间的时间依赖关系,确保相邻词语的重要性评分具有适当的连贯性。最后,它支持在线处理,与自回归语言生成的因果性要求完美匹配。

在线因果性约束是另一个重要的技术创新。与传统的批处理平滑方法不同,KPO的卡尔曼滤波器严格遵循因果性原则,每个词语的滤波结果只依赖于当前和历史信息。这种设计确保了方法与语言模型的生成过程保持一致,避免了引入不现实的"未来信息"依赖。

噪声参数化方案展现了深刻的工程洞察。通过引入过程噪声Q和观测噪声V两个独立参数,KPO提供了精细控制滤波行为的能力。这种参数化不是任意的,而是基于对问题本质的深刻理解:过程噪声捕获重要性评分的真实变化特性,观测噪声反映计算过程中的不确定性。

算法效率的考虑也体现了实用性导向的设计理念。一维卡尔曼滤波的计算复杂度与序列长度呈线性关系,相比于复杂的图神经网络或注意力机制,具有明显的计算优势。这种轻量级的设计使得KPO能够容易地集成到现有的训练流水线中,而不会带来显著的额外计算开销。

理论分析框架的建立为理解滤波效果提供了数学基础。研究团队从频域、时域和统计三个角度全面分析了滤波前后的信号特性变化,建立了定量评估滤波质量的指标体系。这套分析框架不仅有助于理解当前方法,更为后续研究提供了评估工具。

方法的通用性是另一个重要贡献。虽然实验主要集中在数学推理任务上,但KPO的核心思想可以轻易推广到其他需要序列一致性的场景。无论是代码生成、长文本写作,还是多轮对话,只要存在时间序列上的依赖关系,卡尔曼滤波的思想都可能发挥作用。

与现有方法的兼容性确保了KPO的实用价值。该方法可以作为即插即用的组件添加到现有的GRPO、PPO或其他强化学习算法中,不需要对基础框架进行重大修改。这种兼容性设计大大降低了方法采用的门槛,促进了技术的快速传播和应用。

开放性设计为未来扩展留下了空间。当前的实现使用了最简单的随机游走过程模型和一维滤波器,但这个框架可以容易地扩展到更复杂的动态模型和多维滤波器。研究者可以根据具体应用的需求,设计更精细的状态转移模型或引入额外的观测变量。

七、实际应用前景与影响

KPO方法的成功不仅仅是一个学术成果,它对整个AI训练行业都具有深远的实际意义。当前大型语言模型的训练成本动辄数百万美元,任何能够提高训练稳定性和效果的方法都具有巨大的经济价值。

训练成本的降低是最直接的经济效益。传统方法由于不稳定性问题,经常需要重新启动训练或使用更保守的学习率,这些都会显著增加训练时间和计算成本。KPO的稳定性改进意味着训练过程可以使用更激进的优化策略,在更短时间内达到更好的效果。对于大型科技公司而言,这种改进可能价值数千万美元。

模型性能的提升带来更广泛的应用可能性。数学推理能力的改进不仅影响教育领域的AI应用,还对科学研究、工程设计、金融分析等需要复杂逻辑推理的领域具有重要意义。随着AI助手在这些专业领域的应用越来越广泛,推理能力的提升将直接转化为生产力的增长。

技术门槛的降低使更多研究团队能够训练高质量的语言模型。KPO的即插即用特性和轻量级实现降低了应用门槛,小型研究机构和初创公司也能够利用这种技术改进他们的模型训练效果。这种技术民主化有助于促进整个AI生态系统的发展。

开源社区的推动效应值得期待。研究团队承诺将发布完整的代码实现,这将加速方法的采用和改进。开源社区的贡献者可能会开发出针对不同应用场景的优化版本,或者将KPO的思想扩展到其他类型的模型训练中。

教育和培训领域的应用前景特别值得关注。数学推理能力的改进使得AI系统能够更好地辅助学生学习复杂概念,提供更准确的解题步骤和解释。这种能力的提升可能会改变数学教育的方式,让个性化的AI导师成为现实。

科学研究中的应用潜力同样巨大。许多科学问题需要复杂的数学建模和推理,KPO训练出的模型可能在物理学、化学、生物学等领域发挥重要作用。从药物分子设计到气候模型分析,改进的推理能力都可能带来突破性进展。

工业应用的扩展也值得期待。工程设计、质量控制、故障诊断等工业场景都需要复杂的逻辑推理能力。KPO训练的模型可能在智能制造、自动化控制等领域发挥重要作用,推动工业4.0的进一步发展。

长期来看,这项工作可能启发更广泛的跨领域技术融合。将控制理论、信号处理、优化理论等传统工程学科的工具应用到AI训练中,可能会产生更多创新性突破。这种跨学科的研究方法论具有重要的示范意义。

同时,KPO方法也面临一些挑战和限制。并行化处理的困难是一个技术障碍,因为卡尔曼滤波本质上是序列化的过程,难以像传统的并行训练那样充分利用多GPU资源。未来的研究需要探索近似并行化的方法或设计更适合并行计算的变体。

参数调优的复杂性也是实际应用中需要考虑的问题。虽然研究团队提供了初步的参数设置指导,但不同的模型、数据集和应用场景可能需要不同的参数配置。开发自动化的参数调优方法或提供更详细的调优指南将有助于方法的广泛应用。

说到底,KPO方法代表了AI训练技术发展的一个重要里程碑。它不仅解决了当前大型语言模型训练中的实际问题,更为未来的研究开辟了新的方向。这种将经典控制理论与现代AI训练相结合的创新思路,可能会催生更多跨领域的技术突破,推动整个人工智能领域向更稳定、更可控的方向发展。随着更多研究团队和工业界开始采用和改进这种方法,我们有理由相信,更强大、更可靠的AI系统将很快成为现实,为人类社会带来更大的价值。

Q&A

Q1:卡尔曼滤波策略优化(KPO)是什么?

A:KPO是新加坡南洋理工大学开发的一种AI训练新方法,它借用航天领域的卡尔曼滤波器技术来解决大语言模型训练不稳定的问题。简单说就是给AI训练过程配了个"稳定器",让训练过程不再忽高忽低地"翻车"。

Q2:KPO解决了什么问题?

A:传统AI训练方法会给每个词语分配重要性评分,但这些评分经常剧烈波动,相邻词语的评分截然不同,导致训练过程不稳定甚至崩溃。KPO通过卡尔曼滤波器平滑这些评分,让相邻词语保持合理的一致性,大大提高训练稳定性。

Q3:KPO的效果有多好?

A:在数学推理任务测试中,KPO显著超越了所有对比方法。比如在AIME'24数学竞赛中,KPO的准确率从32.70%提升到37.91%,在AIME'25中从29.16%提升到36.87%。而且KPO的训练过程更稳定,不会像传统方法那样中途崩溃。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-