AdaCosのPyTorch実装にまつわるバグ

深層距離学習の一つであるAdaCosはとても有効である。

PyTorch実装も利用できる。 github.com

ところがこの実装には(2021/04/24時点)、使い方を間違えるとNaNが頻発する不具合がある。 forward関数内でscaleをadaptiveに更新しているのだが、学習データのみ更新の対象としてほしいところ、検証データの上でそのまま動かすと(forward関数を必然的に通すため)スケールが更新され続けてしまう。結果としてscaleが発散する現象が起きる。 この問題点は以下のissueで指摘されており、修正案も示されている。

github.com

この修正案を適用することで、NaNの発生は抑制される。