  Hallucinations and off-target translation remain unsolved problems in MT,
especially for low-resource languages and massively multilingual models. In
this paper, we introduce two related methods to mitigate these failure cases
with a modified decoding objective, without either requiring retraining or
external models. In source-contrastive decoding, we search for a translation
that is probable given the correct input, but improbable given a random input
segment. In language-contrastive decoding, we search for a translation that is
probable, but improbable given the wrong language indicator token. Experiments
on the massively multilingual models M2M-100 (418M) and SMaLL-100 show that
these methods suppress hallucinations and off-target translations, reducing the
number of translations with segment-level chrF2 below 10 by 67-83% on average,
and the number of translations with oscillatory hallucinations by 75-92% on
average, across 57 tested translation directions. In a proof of concept on
out-of-English translation, we also show that we can suppress off-target
translations with large language models. We release our source code at
https://github.com/ZurichNLP/ContraDecode.
