In practice, it's common to see the unconditional part being conditioned with a negative prompt, which is intended to reduce or suppress the elements the user has defined. I wonder if using the unconditional prediction for the start and the end still makes sense in such a situation.
Using the conditional prediction as the base term might be an option, since the original CFG can be rearranged into a condition-based formulation with the guidance weight reduced by 1 from the original.
# uncond base
cfg_result = uncond + w * (cond - uncond)
# cond base
cfg_result = cond + (w - 1) * (cond - uncond)
From this latter view, when the correction term goes to zero, the result will simply use the conditional prediction. Although we can apply beta-CFG scaling to this new correction term, I'm not sure if it still reflects the original intention of beta-CFG.
# Example
beta_cfg_result = cond + beta(t) * (w - 1) * (cond - uncond)
In practice, it's common to see the unconditional part being conditioned with a negative prompt, which is intended to reduce or suppress the elements the user has defined. I wonder if using the unconditional prediction for the start and the end still makes sense in such a situation.
Using the conditional prediction as the base term might be an option, since the original CFG can be rearranged into a condition-based formulation with the guidance weight reduced by 1 from the original.
From this latter view, when the correction term goes to zero, the result will simply use the conditional prediction. Although we can apply beta-CFG scaling to this new correction term, I'm not sure if it still reflects the original intention of beta-CFG.