Self-Translate
https://scrapbox.io/files/65c3346f73246c00247be88d.png
一度英語に翻訳してから、出力を求めるプロンプト
小さいモデルで、性能が上がったとの結果
大きなモデル、高リソース言語(日本語、ドイツ語など)では、特に効果が期待できると
実際の例: √(28+n*n ) が整数となる自然数nの値を求めよ。
DeepLを使い英語に変換-> Find the value of the natural number n for which √(28+n*n ) is an integer.
正解率8/10へと改善した。
そもそも、日本語から英語に翻訳すべき?
Self-Translateという、プロンプトを一度英語に翻訳してから、出力をさせるテクニックがあります。
論文で紹介されたテクニックですが、この実験結果を使う際は注意が必要と考えてます。理由として、この実験で使用されたモデルのパラメータ数は、ChatGPTなどのGPT-3.5-Turbo(175B)の、1/10以下のものがほとんどだからです。
https://scrapbox.io/files/65c32c8f2eca100024885e49.png
ChatGPTを使った実験であれば良かったのですが、その様子はありませんでした。
一方で、XGLMというモデルでは、モデルサイズが大きくなるほど、性能が良くなるという結果でした。
https://scrapbox.io/files/65c32c9fafbaab00254d06b5.png
このことから、ChatGPTのようなサイズが大きいモデルにも有効かもしれません。
英語に翻訳すべきか?で、よく引き合いに出される画像があります。
https://scrapbox.io/files/65c33e7173246c00247d3726.png
この画像をもとに、GPT-4のEnglishとJapaneseでそんなに差がないよという主張が散見されます。 しかし、この解釈にも一定の注意が必要です。
まずこの画像のグラフは何かというと、MMLUという日本でいうセンター試験の専門版(法律、医学あり)のような問題があります。これらは英語で書かれた問題のため、まずAzure Translateを使って、それぞれの言語に翻訳して解かせ、正解率を比較した画像になります。 つまり、日本語の精度を語る前に、Azure Translateの精度という変数の影響を受けます。(Azure Translateを使ったいくつかの記事を読むと、日本語への翻訳精度はそこそこ高そうと思います。)
じゃあ、日本語のままでいいじゃんと思いきや、私はそうはあまり思ってません。
理由として、3枚目の黄色文字である、低リソース言語であるラトビア語より精度が低いという結果になっているからです。低リソース言語とはマイナーすぎて、GPT-4の学習源が少ない言語という解釈になりますが、これより精度が低かったのが日本語というわけです。
以上まとめですが、精度にこだわるのであれば英語に翻訳するのはあり。Self-TranslateをGPT-3.5/4で使った実験結果はないが、使ってみる価値ありとなります。