总变差正则化(TV Loss)的思考

最近我在重构一维时序信号发现一种情况:重构信号的首尾边缘会出现毛刺,我只使用 L1 损失,为了解决我想到了差分可以反应梯度变化,所以打算约束梯度的变化实现去噪。

查资料发现这一思路叫做:TV Loss ,作用是惩罚相邻点的绝对差异,强制信号局部平滑:

python 复制代码
def tv_loss_1d(x):
    # x: (batch, channels, length)
    return torch.mean(torch.abs(x[:, :, 1:] - x[:, :, :-1]))

但是实际上的效果:

由于我发现这个毛刺只存在于边缘,因此我只在边缘处施加了这种损失,但结果如同所示。经过我的思考,我意识到这个损失函数的设计思路是:只要梯度不为零就有惩罚,最优解是全零梯度(直线),这与真实边缘冲突。

其次还有一个原因,L1 Loss不足以对抗TV Loss,我的重构目标,经过标准化其幅值较低,在最初我将TV Loss的权重设计为0.5,后期调整至0.2,都无法阻止其不输出直线。原因就在于L1损失处理这种信号时,损失值普遍非常低,而通过差分,这个梯度很大。

最后我的思路是,不在惩罚输出信号的梯度,而是惩罚输出和目标的梯度差异。

*****END*****

本次只是分享个调参思路,祝大家五一节快乐。

相关推荐
Ztopcloud极拓云视角3 小时前
ChatGPT超级应用改版技术解析:Codex集成架构与多模型路由实战
人工智能·chatgpt·架构
努力学习_小白3 小时前
基于 RNN 的心脏病预测
pytorch·rnn·深度学习
秋99 小时前
从 Python 后端工程师转型 AI Engineer(AI 工程化)的完整补课清单(2026实战版)
开发语言·人工智能·python
啦啦啦_999910 小时前
5. 迁移学习
人工智能·机器学习·迁移学习
A.说学逗唱的Coke10 小时前
【AI·Coding】TDD × SDD × AI Coding:从“测试驱动“到“规范驱动“的智能协作实践
人工智能·驱动开发·tdd
云烟成雨TD10 小时前
Spring AI Alibaba 1.x 系列【78】沙箱(Sandbox)
java·人工智能·spring
tq108610 小时前
基于SLIP的防幻觉的指南
人工智能
甲维斯11 小时前
Kimi版超级玛丽效果“惊人”,配额不足5厘米!
前端·人工智能
console.log('npc')11 小时前
AI前端工程与生成式UI学习路线
前端·人工智能·ui
秋912 小时前
3年经验Python后端转AI Engineer:3个月实战转型计划(2026版)
开发语言·人工智能·python