Why Does vf_loss Take the Maximum Value, Rendering Clamp Meaningless?

Author: MorizhaoyangCreated Feb 7, 2025Updated May 17, 2025

critic_loss: def critic_loss_fn(self, values, old_values, returns, mask):

value loss

values_clipped = torch.clamp( values, old_values - self.cliprange_value, old_values + self.cliprange_value, ) vf_loss1 = (values - returns) ** 2 vf_loss2 = (values_clipped - returns) ** 2 vf_loss = 0.5 * torch.sum( torch.max(vf_loss1, vf_loss2) * mask) / mask.sum() return vf_loss

Why does vf_loss take the maximum value? If that's the case, wouldn't the clamp be meaningless?

Source: deepspeedai/DeepSpeedExamples