XCOMET
先日はCOMETをローカルPCにインストールし、100セグメント程度のデータセットに対して翻訳品質がどのように評価されるのかを試してみた(参照訳あり・なしの両方を含む)。おまけで、Bootstrap法によってCIを計測してみた。
実は、久しぶりにCOMET関連のドキュメントを眺めていると、すでにXCOMETも公開されており、モデルを入手できることに気が付いた。せっかくなので、翌日、そのまま試してみることにした。
以下は作業メモと、実際に測定してみて感じたことである。
* * *
XCOMETは、COMETを拡張し、よりMQMに近い観点を取り込んだ翻訳品質評価を目指したモデルである。
COMET自体のモデルサイズは1〜2GB程度だったが、XCOMETはより大きなLLMである。XCOMET XLでは10GB以上、XCOMET XXLでは100GB近い規模になる。パラメータの規模も同様にアップしている。そのため、Discrete GPUを搭載していない一般的なPCで気軽に利用できるのは、実質的にXCOMET XLあたりまでだろう。
インストールそのものは難しくない。ただし初回実行時にはモデルのダウンロードが発生するため、それなりに時間がかかる。
一方で、2回目以降は比較的スムーズに動作する。
ちなみに、COMET 2022以外のモデルについては、Hugging Faceでの認証が必要なので注意したい。認証済みトークンを取得し、それをPython環境に渡しておけば利用できるようになる。
XCOMETでは以下のような指標を取得できる。
src_score:原文に対する正確性
ref_score:参照訳との類似性
unified_score:各種評価指標を統合したスコア
mqm_score:MQMスコアの予測値
XCOMET score:総合評価スコア
さらに興味深いのがこちらである。
error_spans:どこがエラーと判断されたのかを示す情報。平たく言えば、「どの単語や表現がスコア低下の原因になったのか」を確認できる。
ざっと触った印象では、COMETよりも翻訳品質を見る「奥行き」が増している。非常に有用な指標だと思う。
とはいえ、褒めてばかりいても仕方がない。ここからは、長年機械翻訳の品質を見てきた立場から、あえて課題も挙げてみたい。
そもそも翻訳品質を単一のスコアに落とし込むこと自体が非常に難しい。
それにもかかわらず、定量化に挑戦していること自体は高く評価されるべきだろう。とくにMQMを取り込もうとしていることは興味深い。
そもそも、翻訳品質をスコア化するのはどうして難しいのか?
例えば10単語からなる文で、そのうち1語だけが致命的に間違っていたとする。肯定と否定を取り違えるようなケースである。PEDであれば、おそらく10%程度になる。一般にPEDは20〜40%程度になることが多いため、10%は高品質と評価されるだろう。
しかし現実には、その1語によって文意そのものが逆転している可能性がある。まさしく一発アウトの致命的誤訳というやつである。
逆に、語順だけを大きく入れ替えたケースを考えてみる。前半の節を後半へ移動させたような場合である。この場合、変更文字数が大きくなるため、PEDは50%近くになるかもしれない。しかし内容そのものは正確であり、単なる表現上の違いにすぎない。
PED上は低品質に見えるが、実際にはむしろ良い翻訳ということもあり得る。
少し極端な言い方だが、BLEUも考え方としてはPEDと近い側面を持つ。PEDが「どれだけ離れているか」を見る指標だとすれば、BLEUは「どれだけ近いか」を見る指標である。
もちろん計算方法はまったく異なるが、どちらも単語の発生を見ており、ある意味ではコインの裏表とも言える。上記のようなシチュエーションを踏まえて言えば、BLEUの問題もPEDと同様である。
これに対して、意味をベクトルとして表現し、その距離を測るアプローチがある。BERT系の評価手法や初期のCOMETがこれに近い。この方法ではPED/BLEUのような問題は軽減される。
一方で、ベクトル空間上で差が付きにくい語句の違いを見逃しやすいという課題がある。
例えば肯定と否定を一文字で取り違えた場合でも、埋め込みベクトルが近いため、十分な差が出ないことがある。
こうした課題に対して、COMETは人間評価を模倣するよう学習されている。つまり重大な誤りに対しては、より大きなペナルティを与える方向へ調整されている。
COMETからXCOMETへ進化したことで、このMQMらしさはさらに強くなったように見える。
ただし、それもある程度までだ。
実際にサンプルデータと挙動を観察していて感じるのは、評価が「甘い」ということである。単純な誤訳に対しては、確かにMQM評価者が付けそうな評価を模倣しているように見える。
しかし、あくまで一般的で専門性のないMQMだ。より高度で専門性の高い誤訳に対しては、それほど鋭さを感じない。専門性どころか、一般的な文章ですら、文章の流れや本当に良い日本語を理解できているかというと、全くそのような気配はない。
私の印象では、学習データに含まれるMQMアノテーションの品質や粒度に限界があるのかもしれない。実際、専門ドメインの高品質翻訳であれば見逃されないような問題が、スコア上では比較的容易に通過してしまう場面が見受けられる。
一般的なニュース記事や説明文のようなデータには、そこそこ追従できる一方で、高度な専門翻訳の評価にはまだ課題が残っているように感じる。MQMアノテーション自体にも課題があるのではないか。そこも改善したほうがいいのではないか。翻訳の品質を決める次元はもっとたくさんあるが、低次元のデータしか取れていないような感じだ。
大きな目線で考えてみよう。
これは、NMTからLLMへ、さらにロングコンテキスト化へと進化してきた機械翻訳の流れと本質的には同じ話である。要するに、「1セグメント単位で評価することの限界」だ。
翻訳には段落や文書全体の流れがある。前後の文脈は翻訳品質に大きな影響を与える。
かつてのNMTがセグメント単位で翻訳していた頃は、この制約が大きな弱点だった。ドメインに適した用語体系が維持されず、文書全体として自然な流れも作りにくかった。
翻訳品質評価についても、同じことが言えるのではないか。
もし現在のXCOMETに本質的な限界があるとすれば、それはMQM学習データも評価システムも、依然としてセグメント単位を前提としている点にある。そして、MQMで評価している次元をもっと深くする必要がある。
次の世代では、MQMアノテーションそのものがマルチセグメントあるいは文書レベルで、かつ専門的次元を含めるように作成され、評価モデルも同じ粒度で学習・推論する必要があるのではないだろうか。
翻訳の品質のプロが扱っていることはもっと深い次元がある。それらをとらえられるようにMQMも改良したほうが良いだろう。