Machine learning 是";1'的数量;生成的三元序列中的“s”;真的是一个合适的损失函数吗?

Machine learning 是";1'的数量;生成的三元序列中的“s”;真的是一个合适的损失函数吗?,machine-learning,deep-learning,pytorch,loss-function,Machine Learning,Deep Learning,Pytorch,Loss Function,我正在建立一个输出三元序列的模型。我的一个约束条件是,我在生成的序列中拥有的1s的数量应该很小(而其他约束条件可能会鼓励1s的数量变大)。本能地,我希望损失函数中的一个项是我生成的序列中1s的数量 我在Pytorch中实现了这一点,没有任何错误。虽然这个损失函数在概念上是有意义的,但我的模型究竟如何从中学习呢?“生成序列中1s的数量”的梯度是多少?是否有我遗漏的东西,或者autograd的功能比我想象的更强大?计算1s数的函数的梯度在定义的任何地方都是零(几乎在域中的任何地方)。通常,更合理的做

我正在建立一个输出三元序列的模型。我的一个约束条件是,我在生成的序列中拥有的
1
s的数量应该很小(而其他约束条件可能会鼓励
1
s的数量变大)。本能地,我希望损失函数中的一个项是我生成的序列中
1
s的数量


我在Pytorch中实现了这一点,没有任何错误。虽然这个损失函数在概念上是有意义的,但我的模型究竟如何从中学习呢?“生成序列中
1
s的数量”的梯度是多少?是否有我遗漏的东西,或者autograd的功能比我想象的更强大?

计算1s数的函数的梯度在定义的任何地方都是零(几乎在域中的任何地方)。通常,更合理的做法是平稳地放松这些目标。例如,如果我们想要稀疏性(最小化非零元素的数量),那么我们实际上想要最小化L0范数。然而,因为这无法优化,我们反而最小化了L1范数,它几乎处处可微(并且处处有次梯度),是L0范数的“最近”凸松弛。@jodag您如何将其扩展到三元序列(其中1和2都有助于L1范数)?计算1s数的函数的梯度在其定义的任何地方(几乎在域的任何地方)都为零。通常,更合理的做法是平稳地放松这些目标。例如,如果我们想要稀疏性(最小化非零元素的数量),那么我们实际上想要最小化L0范数。然而,由于这无法优化,我们将最小化L1范数,它几乎处处可微(并且处处有次梯度),是L0范数的“最近”凸松弛。@jodag您如何将其扩展到三元序列(其中1和2都有助于L1范数)?