Weblab-10B, Qwen-7Bの機械翻訳性能

最近、日英対応大規模言語モデルや日本語が扱える多言語な大規模言語モデルが複数の会社・研究機関から公開された。

今までと同様、上記の機械翻訳性能を検証してみた。性能評価に使用したデータは以前(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。検証環境は環境はColab Pro+を用いfloat16で読み込んだ。Promptも以前と近いものを使っているが日本語が主体のLLMと思われるrinna、StableLM Alpha、Weblabについては指示を日本語にしたプロンプトも試している[1]。

上記4種類のモデルを検証してみたがJapanese StableLM Alphaシリーズの「Japanese-StableLM-Base-Alpha-7B」[2]「Japanese-StableLM-Instruct-Alpha-7B」[3]、rinna社の日英バイリンガル大規模言語モデル「bilingual-gpt-neox-4b-instruction-sft」[4]は十分な品質が達成できなかったため表には入れていない。

本件の検証ではLLMの出力から手動で回答を抽出することは行っていない。多くの場合ルールベースで十分だった事と手動抽出が必要な場合はそもそもの翻訳品質が悪く回答抽出に意味がなかった。

モデル・条件zero shot1 shot [5]
GPT-3.5 [6]26.737.0
Qwen-7B-Chat [7]14.523.3
Weblab-10B
weblab-10b-instruction-sft [8]
11.529.6
Qwen-7B, Weblab-10B, GPT-3.5-TURBO-16KのBLEU

結果

以前の検証でほぼ同条件&1 shotの性能はLlama-2-7b-chat-hf: 20.1、Llama-2-13b-chat-hf: 33.1、PolyLM-13B: 21.5だった[9]。パラメータ数を考えるとQwen-7B、Weblab-10Bともに相応の機械翻訳性能を持っていそうである。

目検してみるとQwen-7Bは日本語の語彙が不足している印象、Weblab-10Bはhallucinationが多めの印象を受けた。機械翻訳はパラメータサイズで性能が大きく変わるので13B程度のサイズに合わせた検証を行ってみたいなと思わなくはない。

ライセンスはQwen-7BがLlama 2に近い独自ライセンス(Qwen-7B/LICENSE at main · QwenLM/Qwen-7B · GitHub)、Weblab-10BはCC BY-NCと研究用には問題なく使えるものとなっている[10]。

様々な研究機関がモデルを公開してくれるとその差異から分かることもあり非常にありがたい。Qwen-7BはMMLUはじめ様々なベンチマークの結果、Weblab-10BはGitHub – Stability-AI/lm-evaluation-harness: A framework for few-shot evaluation of autoregressive language models.を用いたJGLUEでの評価結果を載せてくれているのがうれしい。様々なタスクにおける性能はパラメータサイズや最大シーケンス長より重要な情報で可能な限り公開してもらえるとありがたいなと思う[11]。

脚注

[1] 正直、大幅な性能向上という効果は見られなかった。1 shotではほぼ効果が無く、zero shotでは日本語で指示を与えた方が良いようにも見えたがそもそものBLEUが低いため参考にはならない印象。なお、Weblab-10Bについてはfew shot部分を公式の「\n\n### 指示:\n{} \n\n### 応答:\n{}」に合わせるのは効果がありそうだった。
[2] stabilityai/stablelm-base-alpha-7b · Hugging Face
[3] stabilityai/japanese-stablelm-instruct-alpha-7b · Hugging Face
[4] rinna/bilingual-gpt-neox-4b-instruction-sft · Hugging Face
[5] 以前と同じでOpenICL、TopkRetrieverにより取得
[6] gpt-3.5-turbo-16k-0613
[7] Qwen/Qwen-7B-Chat · Hugging Face
[8] matsuo-lab/weblab-10b-instruction-sft · Hugging Face
[9] 回答を手動抽出した場合の性能はLlama-2-7b-chat-hf: 23.9、Llama-2-13b-chat-hf: 35.1、PolyLM-13B: 25.8
[10] Qwenは商用利用可能そうだが「If you are commercially using the Materials, and your product or service has more than 100 million monthly active users」や「You can not use the Materials or any output therefrom to improve any other large language model (excluding Tongyi Qianwen or derivative works thereof).」との記載がある。また、HuggingFaceのページには「If you have requirements for commercial use, please fill out the form to apply.」というフォームが用意されている。Weblab-10BはCC BY-NCなので商用利用不可
[11] モデルが公開されていれば検証はできるが正しく検証できているかは謎な部分がある。特に「それぞれのモデルで最適なプロンプト」「Few shot事例の与え方」は使ったデータにも依存するわけで開発元の公式な情報があると良いなとは思う。

Llama 2(7B, 13B chat)の機械翻訳性能

Llama 2が発表された(公式サイトはLlama 2 – Meta AI huggingfaceへはmeta-llama (Meta Llama 2) (huggingface.co))ので機械翻訳性能を検証してみた。論文によると日本語データは0.1%程度しか含まれていない[1]とのことだが機械翻訳性能はかなり高い。

性能評価に使用したデータは前回(DAMO PolyLM-13Bの機械翻訳性能 | ぷるーふおぶこんせぷと (staka.jp))と同じ。同様の条件でサンプリングして使っている。他のフリーなモデルに比べて回答部分の抽出は容易になっているがそれでも失敗することがある[2]。そのためルールベースで回答部分を抽出した結果と手動抽出した結果の2通りでBLEUを算出している。

環境はColab Pro+を用いfloat16で読み込んだ。A100 VRAM 40GBではメモリ制約が厳しいのも前回同様。結果は下表の通り。13Bモデルの性能は高く(特に最大の構成70Bであれば)ChatGPT(GPT-3.5)相当という評価は過大というわけではなさそう。

モデル・条件zero shot1 shot [3]
GPT-3.5 [4]26.737.0
Llama-2-7b-chat-hf11.620.1
Llama-2-7b-chat-hf
※手で回答抽出
13.423.9
Llama-2-13b-chat-hf19.133.1
Llama-2-13b-chat-hf
※手で回答抽出
19.135.1
Llama 2 7B/13B, GPT-3.5-TURBO-16KのBLEU

結果

話題のLlama 2を試してみた。13Bかつ1 shot設定でうまく回答が抽出できればChatGPT(GPT-3.5)に迫るレベル。プロンプトを工夫すればもう少しスコアを出せそうとも感じる。

Llama 2の事前学習トークン量は2Tとされていて日本語データはそのうち0.1%とのこと。日本語データの割合が少なくても一定の性能が出せることに驚き。絶対量としても2TB×0.1%=2G tokensであり多いと言えば多いが大量というほどでもない。7Bと13Bで大きな性能差がある事も興味深い。MPTの検証でも感じたが機械翻訳を行う場合7Bでは厳しいのかもしれない。70Bでどうなるか、特にzero shotでの性能が改善するか非常に気になるところ[5]。

Llama 2を用いた派生モデルは今後出てくるはずで日本語能力の強化バージョンも開発されるはず。すでにMeet FreeWilly, Our Large And Mighty Instruction Fine-Tuned Models — Stability AIが発表されている。(前回の感想と同じだが)フリーのLLMに期待したい。

脚注

[1] Llama 2: Open Foundation and Fine-Tuned Chat Models | Meta AI Research 論文の22ページ目
[2] 特にICL利用時に意図しない出力が続くことが多かった。公式にも書かれている通りllama/llama/generation.py at main · facebookresearch/llama · GitHubを参考にプロンプトを組み立てると改善するものと思われる。(時間が無いこともあってプロンプトチューニングは十分ではない…)
[3] OpenICL、TopkRetrieverにより取得
[4] gpt-3.5-turbo-16k-0613
[5] 4bit量子化してもA100(40GB)だと推論時にOut of Memoryになる…

DAMO PolyLM-13Bの機械翻訳性能

Alibaba、DAMO ACADEMYよりApache-2ライセンスでマルチリンガルなLLM、[2307.06018v1] PolyLM: An Open Source Polyglot Large Language Model (arxiv.org)が出ており、機械翻訳性能を評価してみた。

HuggingFaceから利用可能でDAMO-NLP-MT/polylm-13b · Hugging Faceの他、DAMO-NLP-MT/polylm-multialpaca-13b · Hugging Faceも提供されている。

論文にデータセットや構築方法の詳細な情報があるのが非常にありがたい。13Bモデル構築に要した計算リソースは32 A100 GPU (8×80G) serversで29 daysとのこと。今後の拡張として下記が予定されているとのことで非常に楽しみである。

We are continuously enhancing the capabilities of PolyLM by focusing on the following aspects:

  1. Replacement of absolute position embeddings with RoPE, as outlined in the research paper here.
  2. Expansion of window size to more than 10,000.
  3. Verification of lightweight techniques to quickly enhance multilingual quality, especially for low-resource languages.
https://huggingface.co/DAMO-NLP-MT/polylm-13b

論文ではpolylm-multialpaca-13bの方が機械翻訳性能が高そうであったが制御が難しく[1]本件試行はpolylm-13bで行っている。環境はColab Pro+を用いた。bfloat16で読み込むこととGPU側で計算[2]させないとエラーになる点に注意が必要。また、A100 VRAM 40GBではメモリ制約が厳しいため特に長いコンテキストではエラーが発生する事がある[3]。本件でもOut of memory発生時はnum_beamsなどのパラメータを調整している。

性能評価に使用したデータは前回(MPT-30B-Chat + In-Context Learningの性能 | ぷるーふおぶこんせぷと (staka.jp))と同じであり50件をサンプリングして使っている。MPT-30B同様、回答部分の抽出が難しいことがありルールベースで回答部分を抽出した結果と手動抽出した結果の2通りでBLEUを算出している。

結果は下表の通り。OSSなマルチリンガルモデルとしてはかなり性能が高い。

モデル・条件zero shot1 shot [4]
GPT-3.5 [5]26.737.0
PolyLM-13B10.621.5
PolyLM-13B
※回答部を手動抽出
14.125.8
PolyLM-13B, GPT-3.5-TURBO-16KのBLEU

BLEU的には1 shotで回答をうまく抽出できればGPT-3.5のゼロショットと同レベルの品質となっている。目検すると重要部分での訳ミスが多くGPT-3.5と比較してもBLEU以上に差が大きい印象。

パラメータ数13Bと1 GPUで動作可能&マルチリンガル&日本語対応のモデルがApache-2で利用可能というのはとてもありがたい。LLaMA v2の噂も出ていてオープンなLLM開発は盛り上がっている。この状況が続き良いものが出てほしいと強く思う。

脚注

[1] プロンプトをうまく調整できれば良いのかもだが、中国語の出力がされる、hallucinationが凄いなど正しい翻訳への誘導が難しいことが多かった。。
[2] 本件ではset_default_tensor_typeを使用したが、to.(‘cuda’)みたく明示的に飛ばしてもよいはず。
[3] torch.cuda.empty_cache()も呼びまくっている。
[4] OpenICL、TopkRetrieverにより取得
[5] gpt-3.5-turbo-16k-0613

MPT-30B-Chat + In-Context Learningの性能

MPT-30Bの性能が高いと聞いてそのChat版であるmosaicml/mpt-30b-chat · Hugging Faceの性能を検証してみた。過去の事例通り機械翻訳(英文和訳)でGPT-3.5、GPT-4と性能を比較した。結果、パラメータ数の割に高い性能を持っていることが分かった[1]。

MPT-30B-ChatのライセンスはCC-By-NC-SA-4.0 (non-commercial use only)であることに注意が必要である。Apache-2.0のMPT-30BやCC-By-SA-3.0のMPT-30B-Instructとはライセンスが異なる。

モデル / shot数 / 備考BLEU
MPT-30B-Chat / 0 shot / モデル出力のまま7.7
MPT-30B-Chat / 0 shot / ルールで回答抽出13.0
MPT-30B-Chat / 0 shot / 手で回答抽出13.8
MPT-30B-Chat / 3 shot / モデル出力のまま16.1
MPT-30B-Chat / 3 shot / ルールで回答抽出29.2
MPT-30B-Chat / 3 shot / 手で回答抽出30.9
gpt-3.5-turbo-16k-0613 / 3 shot35.3
gpt-4-0613 / 3 shot32.1
gpt-4-0314 / 3 shot36.5
MPT-30B-Chat, GPT-3.5, GPT-4+OpenICL利用時のBLEU

性能評価の方法

性能評価に使用したデータは以前(GPT-4を用いた翻訳の検証(vs GPT-3.5 vs FuguMT) | ぷるーふおぶこんせぷと (staka.jp))と同様であるが、処理時間の関係上[2]、50件をサンプリングした。

  • 英語文を日本語文に翻訳し、その性能を評価した。評価指標はBLEUで、使用したツールやtokenizerは前回と同じ(sacrebleu –tokenize ja-mecab)である。
  • データセットは外務省WEBサイトのプレスリリース(CC BY互換で利用可)のうち日本語、英語が対応しているページを利用した。評価に使用した対訳ペアは前回と同じ。2020年1月~2023年3月で月ごとに5件のプレスリリースを選択し全195件を取得、その上でさらに50件サンプリングした[3]。
  • OpenICLを用いて事例部分を取得した。RetrieverにはTopkRetriever[2101.06804] What Makes Good In-Context Examples for GPT-$3$? (arxiv.org)」を用いた。3 shotと書かれた行については全く同じデータを使っている。
  • 入力データは前回GPT-3.5/4の比較で使用したものと可能な限り合わせて作成した。プロンプトの作成はMPT-30B-Chat – a Hugging Face Space by mosaicmlを参考にしている[4]。
  • 処理時間削減のためMPT-30B-Chatは「load_in_8bit=True」で読み込んでいる。
  • MPT-30B-Chatの出力は回答部分の特定が一筋縄ではいかないことがある。複数の方法で回答部分の特定を行った。[4][5]
    • モデル出力のまま:出力をそのまま利用
    • ルールで回答抽出:正規表現を用い<|im_start|>や<|im_end|>をいくつかのパターンで指定して回答部分を取得
    • 手で回答抽出:目で見て回答部分を特定

結果とまとめ

MPT-30B-Chatは長いコンテキストに対応していることからIn-Context Learningが有効に機能する。出力から回答部分を特定することは簡単ではないが、うまくルール化することでGPT-3.5に近い性能を出すことができる。これらの処理はライブラリが対応すればよく、単純なルールでも比較的良いスコアが出せる[4]。

スコア上はMPT-30B-Chat+3 shotのICLでzero shotのGPT-3.5以上の性能が出せている。日本語に対応していてローカル環境で動くLLMとしては非常に優秀である[6]。オープンなライセンスのLLMであることから日本語能力の強化も有望そうで今後が非常に楽しみ。

脚注

[1] (最近色々言われている)GPT-3.5やGPT-4のサイズと比べるとかなり小規模。
[2] 「その他」にも書いている通り、検証するのも結構な計算リソースが必要。ICLを使ってコンテキストが長いのでしょうがない面はあるが…(3 shotではなくzero shotだとかなり速い)
[3] 一定期間ごとにサンプリングしている。
[4] 簡単に使えるライブラリが欲しい。誰か作っていそうではあるし既存の何かのライブラリでサポートされそうな気もする。
[5] ルールを追加するなどして自動化したかったが時間の関係上断念した。これらの処理は回答の特定を目的としており回答中のおかしな出力を除去したりはしていない。「手で回答抽出」は頑張ってルール化したときの最善の結果として記載している。
[6] これは本当にそう思う。
[7] 中国語など他の言語が混ざることがある、日本語としておかしな表現が出力されることがある、など印象の悪い出力が混ざることがある。これらが悪い方向に目立つのは事実。

その他

MPT-30B-Chatを検証したところGPT-4や3.5にかなり迫っている感じがあり驚いた。とはいえ、目検証をしてみるとBLEU以上の差は感じなくもなく日本語能力は十分とは言い難い[7]。機械翻訳能力だけでなく総合的なベンチマークもしてみたいところ。

検証はCloab Pro+のA100 GPU、load_in_8bit=Trueで実施した。この環境でもコンテキストが長い(7000文字)場合は5-10分の処理時間が必要だった。公式の説明通りbfloat16+triton構成では20-30分かかる。高速化手法は色々あるとはいえ実利用で安定動作させるのはかなり大変そうではある。

OpenAI APIのアップデート(gpt-3.5-turbo-16k, gpt-4-0613)と機械翻訳

OpenAI APIがアップデート(Function calling and other API updates (openai.com))されたため機械翻訳を対象に性能を評価してみた。GPT-3.5 16Kは性能向上に有効、GPT-4 0613は機械翻訳においては性能が落ちているように見える結果となった[1]。

プロンプトの条件GPT-3.5 16K[2]GPT-4 0613[3]GPT-4 0314[4]
OpenICL / RandomRetriever / 3 shot29.029.4
OpenICL / TopkRetriever / 3 shot34.933.334.9
OpenICL / TopkRetriever / 3 shot(日本語のみ)
※ 訳文のみを例示
31.3
OpenICL / TopkRetriever / 5 shot(日本語のみ)
※ 上記同様
31.6
GPT-3.5 16K、GPT-4 0613、GPT-4-0314のBLEU

※ 前回結果は「GPT-3.5で1-2 shotの場合、BLEU=34.7」「GPT-4で3shotの場合、BLEU=35.3」だった。ランダム性があるため前回結果と厳密には一致はしない。

性能評価の方法

性能評価に使用したデータは以前(GPT-4を用いた翻訳の検証(vs GPT-3.5 vs FuguMT) | ぷるーふおぶこんせぷと (staka.jp))と同様である。繰り返しになるがランダム性があるため前回結果とは完全一致はしない。

  • OpenAI APIでの比較。英語文を日本語文に翻訳し、その性能を評価した。評価指標はBLEUで、評価指標はBLEUで、使用したツールやtokenizerは前回と同じ(sacrebleu –tokenize ja-mecab)である。
  • データセットは外務省WEBサイトのプレスリリース(CC BY互換で利用可)のうち日本語、英語が対応しているページを利用した。評価に使用した対訳ペアは前回と同じ。2020年1月~2023年3月で月ごとに5件のプレスリリースを選択し全195件。
  • ベースのプロンプトも前回と同じでOpenICLを用いて事例部分を変更した。各Retrieverが用いる対訳ペアは評価データとは分けている。
    • RandomRetriever / 3 shot: 対訳事例を3件ランダムに選択。
    • TopkRetriever / 3 shot: 対訳事例を3件 TopK「[2101.06804] What Makes Good In-Context Examples for GPT-$3$? (arxiv.org)[6]」に沿って選択。
    • TopkRetriever / 3 shot(日本語のみ): 対訳事例の選択は上記同様。プロンプトとして英語-日本語の対訳ペアではなく日本語文章のみを与えたもの。対訳事例が無く文体のみを参照可能な状況に相当する。
    • TopkRetriever / 5 shot(日本語のみ): 条件は上記同様で事例を5件選択したもの。
  • 表中、同じ行であれば全く同じデータがプロンプトとして与えられている。

結果とまとめ

以前の検証の通りTopkRetrieverは高い性能を示す。本件ではコンテキストが広がったGPT-3.5 16Kを検証し、トークン数の増加がIn-Context Learningを活用するため有効そうという結果が得られた[5]。

類似する日本語の翻訳文章のみを与える手法にも効果がみられ(同一ドメイン内で)ランダムな対訳事例を与えるより性能が高かった。ビジネスで何らかの翻訳を行っている場合、対訳データを整備している事例は多くない[6]。翻訳結果のみが残っている状況でもそのデータで性能向上が目指せる事は興味深いと言える[7][8]。

データ数に限りがありBLEUというイマイチな指標で評価している事もあり確定したことは言えないが、GPT-4の6/13版は3/14版より性能が落ちているように見える。API性能を正しく把握するため日本語や日本語を含むマルチリンガルな評価用データ・ベンチマークが必要である[9]。

脚注

[1] 評価指標が微妙ではあるがスコアはGPT-4-0314 > GPT-4-0613
[2] gpt-3.5-turbo-16k-0613
[3] gpt-4-0613
[4] gpt-4-0314
[5] 評価の揺れも大きいので断言は難しいが。。
[6] ビジネスでは単語単位で訳し方を決めている例は結構ある。単語単位の対訳がある場合、Fugu-MT 論文翻訳(概要): Dictionary-based Phrase-level Prompting of Large Language Models for Machine Translation (fugumt.com)Fugu-MT 論文翻訳(概要): Chain-of-Dictionary Prompting Elicits Translation in Large Language Models (fugumt.com)のような形でLLMに情報を入れる手法が提案されている。
[7] Fugu-MT 論文翻訳(概要): WangLab at MEDIQA-Chat 2023: Clinical Note Generation from Doctor-Patient Conversations using Large Language Models (fugumt.com)をみると入力/出力のペアを与えなくてもICLが有効っぽいので試してみたが、翻訳においては対訳データを与えた方が効果的であった。。
[8] モノリンガルデータでのドメインフィッティングのような動きかなーという気はしないでもない。なお、訳文のみでは微妙に商用APIのスコアに及ばないのでゼロショット設定では特化型の翻訳モデル、文体を変えたい場合はLLM+訳文のみのICLと使い分けるのが良いのではないかと思う。
[9] と思っている人はとても多いと思うが、作るのは大変。。。
[10] 問題が無いとは言っていない

その他

OpenAI APIがアップデートされたので性能を評価してみた。GPT-4について性能が落ちていそうに見えるのはとても意外だった(検証に色々雑な部分があり詳細検討は必須、結論ではない)

翻訳結果のみの参照でも機械翻訳性能が向上したことも興味深かった。文体の参照が効いているのではないかと思っているが詳細を分析してみたいところ。ビジネスの場では重要な性質のように思える[8]。

色々見ていて思うが機械翻訳以外を含めて標準的な日本語ベンチマークが欲しい。英語・中国語ではデータセットやベンチマークの整備が進んでいて多様な評価軸でオープンなLLMを含め様々なモデルを評価できるようになっている[10]。完璧でなかったとしても性能評価は重要で日本語(とクロスリンガルで日本語を含むもの)についてもベンチマークの整備が必要だと思う[9]。

The Pileの構成(なぜCerebras-GPTで日本語が使えるのか?)

ChatGPTが盛り上がる中、オープンライセンスなLLM(大規模言語モデル)開発も行われている。その中でCerebras-GPT(Cerebras Systems Releases Seven New GPT Models Trained on CS-2 Wafer-Scale Systems – Cerebras)が日本語を使えると聞いて試してみた。

Colab Pro +でA100 GPUを使うと、cerebras/Cerebras-GPT-6.7B · Hugging Faceにそって6.7Bのモデルを動作させることができる[1]。

import torch
device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')

from transformers import AutoTokenizer, AutoModelForCausalLM
from transformers import pipeline

tokenizer = AutoTokenizer.from_pretrained("cerebras/Cerebras-GPT-6.7B")
model = AutoModelForCausalLM.from_pretrained("cerebras/Cerebras-GPT-6.7B")

pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, device=device)

text = "猫と暮らして10年になる人に聞いた、猫と一緒に暮らすときに必要なもの第1位は"
generated_text = pipe(text, max_length=500, do_sample=False, no_repeat_ngram_size=2)[0]
print(generated_text['generated_text'])

上記の出力は「猫と暮らして10年になる人に聞いた、猫と一緒に暮らすときに必要なもの第1位は「笑顔」。続いて「恋愛」、「自分のことを知っている」という結果に。」[2]、なお、2.7Bパラメータの場合は「猫と暮らして10年になる人に聞いた、猫と一緒に暮らすときに必要なもの第1位は、それぞれの人間が笑っているということです。」[2]だった。

model = AutoModelForCausalLM.from_pretrained("cerebras/Cerebras-GPT-13B", torch_dtype=torch.float16)

としてCerebras-GPT-13Bを使った時の結果は「猫と暮らして10年になる人に聞いた、猫と一緒に暮らすときに必要なもの第1位は、「笑顔」。結果、それは私の言葉ではなく、自分のものである。」[2]だった。

日本語を使えると言っても性能はかなり微妙な感じ。
※以降、理由を探っていくが本来使えないはずの日本語っぽい文字列が表示されるのは結構すごいというのが全体的な感想。

The Pile

Cerebras-GPTシリーズはデータセットとしてThe Pile[3]を用いている。論文に書かれている通りThe Pileは英語のデータセットである。そのため基本的には日本語を使えないはずなのだが、The Pileを用いて学習されたLLMは日本語をある程度解釈しているのでは?と思う動作をする。これはThe Pile構築で使われたデータセットに意図せず日本語が含まれているためと言われている。前置きが長くなったが、本記事ではこれが本当なのか検証する。

検証方法

The Pileをダウンロードし含まれる文字を文字別にカウントし、下記条件の文字を日本語と考えて日本語の構成比率を算出した。CJKの名の通り日本語ではない用例の漢字を含めて数えており明らかに日本語分を多くカウントしているという問題があるのだが、ここではいったん無視することにする[4]。

  • UnicodeのBlock=Hiragana
  • UnicodeのBlock=Katakana
  • UnicodeのBlock=CJK Unified Ideographs

The Pileのデータを展開しながら文字別カウントし、その後、上記条件をregexでチェックし日本語と全体の文字数を集計した。Pythonで適当に書いた感じc6a.xlargeで1プロセス辺り9Mバイト/秒程度の速度で処理ができた。2プロセス並列させると1日以内に処理が終わるイメージである。

検証結果

検証結果は次表の通り。The Pileにおける日本語の構成比率はわずか0.07%(約900 M文字)だった。日本語に貢献しているデータセットは「OpenWebText2」「Github」が大きく、続いて「YoutubeSubtitles」だった。

データ名全体の文字数うち日本語日本語構成比率
■全体1,297,182,716,948889,523,7340.07%
Pile-CC230,770,471,68714,799,6330.01%
PubMed Central181,751,973,64018,441,2010.01%
Books3153,023,754,59930,846,0520.02%
OpenWebText2124,271,071,981390,955,6250.31%
ArXiv113,558,856,961307,7740.00%
Github96,487,741,975314,200,4230.33%
FreeLaw79,956,003,3662,8320.00%
StackExchange64,805,917,11319,770,0980.03%
Wikipedia (en)50,611,222,0865,979,9760.01%
USPTO Backgrounds47,025,652,53400.00%
PubMed Abstracts39,086,727,4677300.00%
Gutenberg (PG-19)26,723,093,69917,8450.00%
OpenSubtitles19,750,201,47835,0700.00%
DM Mathematics15,719,095,09600.00%
Ubuntu IRC11,184,940,47100.00%
BookCorpus29,378,252,620833,3340.01%
EuroParl8,516,900,087200.00%
HackerNews7,872,312,50577,7930.00%
YoutubeSubtitles6,431,579,29193,060,4371.45%
PhilPapers4,745,004,923194,8910.00%
NIH ExPorter3,814,590,93000.00%
Enron Emails1,697,352,43900.00%
The Pileの日本語構成比率

なお、日本語として含まれる文字のトップ5は次の通りだった[5]。ひらがなの出現頻度が通常と同じなのかは疑問ではある。

  1. 「の」約20M文字
  2. 「い」約14M文字
  3. 「的」約13M文字
  4. 「に」約13M文字
  5. 「る」約12M文字

結果とまとめ

オープンなLLM開発でよく使われるデータセット、The Pileの構成文字から日本語の比率を考えてみた。結果、多めに見積もって900M文字、構成比率0.07%と非常に少ない。この程度しか入っていないにもかかわらず日本語文として一定程度成立した文が返ってくるCerebras-GPT-6.7Bは凄い。

脚注

[1] GPUで動作させる部分だけ若干コードを追加している。cerebras/Cerebras-GPT-13B · Hugging Faceは書かれた手順ではメモリ不足になる。float16にすれば動作する。
[2] この後改行して「私は、それぞれの言葉についちゃった。「お父さん、こんなに美しい犬がいますか?」「この人、あなたのほうが素敵ですよ」」・・・と謎の文字列が続く。
[3] Gao, L., Biderman, S., Black, S., Golding, L., Hoppe, T., Foster, C., Phang, J., He, H., Thite, A., Nabeshima, N., Presser, S., and Leahy, C. 2020. The Pile: An 800GB Dataset of Diverse Text for Language Modeling. arXiv preprint arXiv:2101.00027.
[4]とても雑なことは承知しつつ、日本語判定は結構難しく判定に凝ると処理時間の問題が出るため今回はこの条件で検証した。日本語分を多めにカウントしていて出た結果で結論には影響しない。
[5] 「的」が入っているのは中国語も入っているからかな?と思う。

その他

The Pileを使って構築した大規模言語モデルで何故か日本語が使えるのは知られていた。その理由としてGithubデータセットの日本語コメントによるものなどの理由を聞いたこともあったが、本当か確証がなかったので調べてみた。結果当たらずも遠からずという感じだった(構成要素としてはそれなりに多いが半分は超えていない)。

個人的には1G文字いかないレベルのデータで日本語能力を学習していることに驚きだった。疑問に思ったことは調べてみると面白い。The Pileにwikipedia-jaのデータを混ぜるだけでも日本語能力はかなり上がるんじゃないだろうか。BlinkDL/rwkv-4-raven · Hugging Faceのように1%程度でも日本語が入っていると結構な効果がありそうに思う。

機械翻訳でのIn-Context Learning(GPT-4 + OpenICL)

GPT-4とGPT-3.5 + OpenICL[1]を用いて機械翻訳におけるICL(In-Context Learning)を検証してみた。結果は下表の通りでプロンプトの動的生成には大きな効果があった。

プロンプトの条件GPT-3.5[2]GPT-4[3]FuguMT[4]
ゼロショット、事例無し27.230.231.3
対応するページのタイトル(英語・日本語の両方)29.631.8
OpenICL / RandomRetriever
※ gpt-3.5のトークン数に沿って1-2 shot
※ 翻訳例をランダムに参照しているイメージ
28.030.6
OpenICL / TopkRetriever①
※ gpt-3.5のトークン数に沿って1-2 shot
※ 翻訳例から対象に近い事例を参照しているイメージ
34.734.5
OpenICL / TopkRetriever②
※ 全ての試行で3-shot
※ 翻訳例から対象に近い事例を参照しているイメージ
35.3
GPT-3.5, GPT-4でプロンプトを変えた場合及びOpenICL利用時のBLEU

性能評価の方法

性能評価に使用したデータは前回(GPT-4を用いた翻訳の検証(vs GPT-3.5 vs FuguMT) | ぷるーふおぶこんせぷと (staka.jp))と同様としOpenICLの効果を検証した。

  • ChatGPT API(gpt-3.5-turbo-0301)、GPT-4 API(gpt-4-0314)、FuguMT(staka/fugumt-en-ja · Hugging Face)を比較。英語文を日本語文に翻訳し、その性能を評価した。評価指標はBLEUで、使用したツールやtokenizerは前回と同じ(sacrebleu –tokenize ja-mecab)である。
  • データセットは外務省WEBサイトのプレスリリース(CC BY互換で利用可)のうち日本語、英語が対応しているページを利用した。評価に使用した対訳ペアは前回と全く同じ。2020年1月~2023年3月で月ごとに5件のプレスリリースを選択し全195件。
  • ベースのプロンプトも前回と同じだがOpenICLを用いて事例部分を変更した。各Retrieverが用いる対訳ペアは評価データとは分けている。
    • RandomRetriever: 対訳事例をランダムに選択、gpt-3.5-turboの最大トークン数に合わせて事例数を変更、結果1-2shot設定となっている。(0-shotにはなっていない)
      直感的には過去の翻訳例をランダムに選んで参考にしている状況に相当する。
    • TopkRetriever①: 対訳事例をTopK「[2101.06804] What Makes Good In-Context Examples for GPT-$3$? (arxiv.org)[6]」に沿って選択。gpt-3.5-turboの最大トークン数に合わせて事例数を変更、結果1-2shot設定となっている。(0-shotにはなっていない)
      直感的には過去の翻訳例から今翻訳しようとしている内容に近いものを選び参考にしている状況に相当する。
    • TopkRetriever②: TopkRetriever①を3-shotに固定して実行。GPT-4で最大トークン数が拡張されているから可能[5]。

結果とまとめ

結果はページ最初の表の通りでTopkRetrieverは高い効果を示した。近い内容の翻訳結果を参照することで単語の対訳や文章スタイルなどを合わせることができBLEUが高くなったものと思われる。

某有償APIを用いた時はBLEU=32.6であった。GPT-3.5 + TopkRetrieverとGPT-4 + TopkRetrieverはこのスコアを超えておりOpenICLの有効性が伺える。有償APIによっては単語登録が可能なものもあり一概には言えないものの、うまくICLを行ったときの翻訳性能は非常に高いと言える。

GPT-3.5の最大トークン数(約4K)に比べGPT-4の最大トークン数は32Kと大幅に拡張されている。本件では最大3-shotの設定[7]で試行しshot数が増えたことによる性能向上も確認できた。

翻訳時に過去の翻訳結果を参照することは一般的に行われており、本検証の設定は無理なものではない(厳密には微妙な部分はあるけど)。LLMを利用した機械翻訳では辞書を参照することが有効という報告もある[8]。プロンプトの工夫や自動作成によってLLMを用いた機械翻訳性能は向上し使い勝手の良いシステムになる事が見込まれる。

脚注

[1] GitHub – Shark-NLP/OpenICL: OpenICL is an open-source framework to facilitate research, development, and prototyping of in-context learning. Zhenyu Wu, Yaoxiang Wang, Jiacheng Ye, Jiangtao Feng, Jingjing Xu, Yu Qiao, and Zhiyong Wu 2023. OpenICL: An Open-Source Framework for In-context Learning. arXiv preprint arXiv:2303.02913.
※sentence_transformerのモデル名を与えることができ日本語も使用可能(例えば↓)
TopkRetriever(data, ice_num=5, sentence_transformers_model_name='paraphrase-multilingual-mpnet-base-v2')
[2] gpt-3.5-turbo-0301
[3] gpt-4-0314
[4] GitHub – nipunsadvilkar/pySBDにより行に分割し、FuguMT(staka/fugumt-en-ja · Hugging Face)で翻訳
[5] GPT-3.5では実行不可の設定
[6] Jiachang Liu, Dinghan Shen, Yizhe Zhang, Bill Dolan, Lawrence Carin, and Weizhu Chen. (2021). What Makes Good In-Context Examples for GPT-$3$?. arXiv preprint arXiv:2101.06804.
[7] 4Kだと1 shotしか無理な場合もあったので、3 shotでも大きな拡張
[8] [2302.07856v1] Dictionary-based Phrase-level Prompting of Large Language Models for Machine Translation (arxiv.org)、Marjan Ghazvininejad, Hila Gonen, Luke Zettlemoyer. Dictionary-based Phrase-level Prompting of Large Language Models for Machine Translation. arXiv preprint arXiv:2302.07856.
[9] 正直、ベンチマークデータの品質がイマイチだったりする…。

その他

OpenICLを試してみたいと思って機械翻訳を題材に検証してみた。結果として商用の機械翻訳システムを超える性能となってびっくり。過去の訳を参照できる条件だと翻訳が容易になるのは当たり前ではあるが、それを自然に自動化できるのはすごい。

LLMの流行やGPT-4の登場によってNLP界隈は激変している。LLMをうまく使う上でICLは一つのキーワードであると思う。なかなか検証が難しい[9]分野であるが今後も定量的評価を行いたい。本件だとICLは「英語→日本語での単語選択への貢献」「日本語のスタイル(常体・敬体など)への貢献」など様々な側面があるはずでその辺りも分けて検証したいところ。

GPT-4を用いた翻訳の検証(vs GPT-3.5 vs FuguMT)

GPT-4の翻訳性能を外務省WEBサイトのテキスト(日本語/英語)を用いて定量的[1]に測ってみた。

検証結果からGPT-4の翻訳性能はGPT-3.5より優れていると言えそう(FuguMTより若干上)。期間別の比較(後述)も行っているが発表されているGPT-4の学習データ期間前後では大きな性能変化はなかった。一方で詳細検討が必要な気がしている[2]。

モデル概要BLEU
GPT-4gpt-4-0314を利用(ゼロショット)30.19
GPT-4 + タイトルgpt-4-0314を利用し対応するページのタイトル(英語・日本語の両方)を与えたもの31.82
GPT-3.5gpt-3.5-turbo-0301を利用(ゼロショット)27.16
GPT-3.5 + タイトルgpt-3.5-turbo-0301を利用し対応するページのタイトル(英語・日本語の両方)を与えたもの29.58
FuguMT英語文書をGitHub – nipunsadvilkar/pySBDにより行に分割し、FuguMTで翻訳31.30
GPT-4、GPT-3.5、FuguMTの性能(概要)、データの詳細は後述

性能評価の方法

性能評価は下記の条件で実施した。

  • ChatGPT API(gpt-3.5-turbo-0301)、GPT-4 API(gpt-4-0314)、FuguMT(staka/fugumt-en-ja · Hugging Face)を比較。英語文を日本語文に翻訳し、その性能を評価した。
    • 評価指標はBLEUで、使用したツールやtokenizerは前回と同じ(sacrebleu –tokenize ja-mecab)である
  • データセットは外務省WEBサイトのプレスリリースのうち日本語、英語が対応しているページを利用した。詳細はデータセットの作成に記載する。
    • 期間は2020年1月~2023年3月、月ごとに5件のプレスリリースを選択[3]、全195件
    • 既存のデータセットはGPT-4、GPT-3.5の学習データとして使われている可能性があり利用を避けた。(加えて性能評価のために適した品質と言えないものも少なくない。)
  • プロンプトは前回のもの(機械翻訳でのChatGPT vs GPT-3.5 vs FuguMT | ぷるーふおぶこんせぷと (staka.jp))を使用、プレスリリースのタイトル(日・英)の対応を参照用として与えたパターンも比較対象とした
    • タイトルを与えることで、参考訳として使用する事及び訳のスタイルを官公庁っぽくすることを狙っている [4]
    • 学習データに外務省のサイトが入っている場合(おそらく入っていると思うが)そのデータを色濃く反映する効果も狙っている
  • 性能評価は全体、2021年9月[2]前後での検証、月別(ある月以降3ヶ月間分のプレスリリースを使用)で評価した。月別の評価と言いつつ3ヶ月移動平均のような処理になっている。(データが少ないことによる苦肉の策)

データセットの作成

データセットは外務省ホームページのPress Releases | Ministry of Foreign Affairs of Japan (mofa.go.jp)を用いて下記手順で作成した。使用したデータは整理後に公開予定[5]。

  1. プレスリリースのうち、日本語と英語の対応が取れるものを取得
  2. 日本語のページと英語のページから本文とタイトルを抽出
  3. 英語のページから日付を抽出
  4. 日本語のページと英語のページを目で比較し、どちらか一方のみにある部分を削除
    • 日本語だけに補足や経緯がある、参考リンクが日本語と英語のページで異なるなど微妙な差異があるため、その部分は対応が必要である。[6]
  5. 2020年1月~2023年3月の記事について長さがちょうどよいものを5件/月を選択した
    • 月内の全記事の中から一定期間ごとになるように5件選択
    • 300文字~1600文字の記事を選択

検証結果

検証結果は下表・下図の通り。 

モデル期間BLEU
GPT-4全期間30.19
GPT-42021/09/01以前29.66
GPT-42021/10/01以降30.82
GPT-4 + タイトル全期間31.82
GPT-4 + タイトル2021/09/01以前31.30
GPT-4 + タイトル2021/10/01以降32.15
GPT-3.5全期間27.16
GPT-3.52021/09/01以前27.04
GPT-3.52021/10/01以降26.87
GPT-3.5 + タイトル全期間29.58
GPT-3.5 + タイトル2021/09/01以前29.34
GPT-3.5 + タイトル2021/10/01以降29.59
FuguMT全期間31.30
FuguMT2021/09/01以前31.65
FuguMT2021/10/01以降30.70
2021年9月を境にした性能変化
BLEUの時系列変化
BLEUの時系列変化、BLEU≧20のエリアを拡大表示

まとめ

GPT-4の翻訳性能を外務省WEBサイトの日本語-英語対応を使って検証した。結果としてGPT-4は翻訳性能においてGPT-3.5よりも大幅に優れていた。タイトルを参考訳として使用可能な状況ではFuguMTのような翻訳特化モデルを超える性能を発揮している[7]。

GPT-4の学習データ期間は2021年9月までとのことだが、翻訳性能の変化からはその時期を境にした性能変化は見られなかった。2022年3月~4月ごろに性能の変化がみられるが、FuguMTでも同傾向であり単純に訳が難しいデータになっているだけの可能性がある[8]。

BLEUの経年変化はタイトル行を入れてもFuguMTと概ね同じである。(おそらく学習データに含まれているであろう)ページの日本語訳のコピーを出している場合はFuguMTと動きが異なるはずで、そのような不適切な動作はしていないものと思われる。BLEUの変化のブレが激しくデータを増やす、比較するモデルを変えるなどしての再検証が必要と思われる[9]。

現在のGPT-4 APIでは画像入力ができないが、できるようになったらそれを含めて検証を行いたい。官公庁のサイトでは画像付きの記事も多く、画像+機械翻訳の性能検証は可能だと考えている。

脚注

[1] といってもデータ数は微妙で評価指標はBLEU。。。sacrebleu.corpus_bleu( sys, [ref], tokenize=’ja-mecab’)を使用。
[2] GPT-4 (openai.com)によると「GPT-4 generally lacks knowledge of events that have occurred after the vast majority of its data cuts off (September 2021)」とのこと。データ数も少ないので何とも言えないというところではあるが、特に「Webページの内容を記憶しているだけ」な場合はタイトルをプロンプトに入れることで2021/9を境に大幅な性能変化があるかと期待していたが、そのような結果とはなっていない。
[3] 過負荷のためかOpenAI APIのエラー(’openai.error.RateLimitError’)が多発、検証に用いたデータは少なめである。負荷が落ち着いたら全データを使って検証したいと思っている。
[4] 本当はURLを与えるなどより学習データを濃く反映できそうなパターンも実施したかったが時間の関係上断念した
[5] 2017年1月~現在までで2700件程度のデータが取得可能、本件に使ったもの以外を含め1/3くらいは目検証済みで残りを検証した後に公開する予定である。翻訳の品質が高く、オープンなライセンスで、検証しやすい長さのドキュメント単位、発表日が明確に記載されている貴重なデータである。機械翻訳モデルの時系列での性能劣化を測るために有用だと思っている。
[6] 自分で目検した。結構大変だが何とかなる量ではある。
[7] FuguMTと僅差だと商用の翻訳サービスの性能よりは低めな気がする。ただ、プロンプトで改善できる、訳のスタイル変更が可能、間違いを指摘してくれるなど単純な性能以外の利点は多くあり、それがチャット形式で可能なのは大きな利点。
[8] 実はFuguMTのクローリングデータはちょうどこの時期に追加したのが最後になっている(OCR用翻訳モデルとVR対応論文翻訳 | ぷるーふおぶこんせぷと (staka.jp))。翻訳が難しいデータなのか、たまたまGPTのデータ期間とFuguMTのデータ期間が近いのか、結論を出すのがとても難しい。Google翻訳やDeepLなどの他のエンジンで試すか、FuguMTの過去バージョンで検証する必要がありそうに思っている。
[9] データはあるが、APIの動作が重く検証できる気がしない…参考までに本検証にかかったコストは15USD程度であった。

その他

色々なところで指摘されている事でもあるが、試行しているとGPT-3.5までと比べてGPT-4は日本語性能が大きく向上している。機械翻訳でのBLEUの向上はそれを裏付けている。GPT-3.5までであれば特化型モデル > GPT(LLM+prompt)だったがGPT-4ではそうでもなさそう。おそらく数か月すれば検証結果がそろうはずで興味津々。

本件の検証の目的の一つは2021年9月を境に性能が劣化するか?だったが残念ながら裏付けが取れなかった…全データを使っているわけではなく変化点っぽいものも見えなくはないのでより詳細な検討を行いたいところ。メンバシップ攻撃のようなことをやっている人達もいるかもだが、個人的にはデータの期間をはっきりさせるというよりはleakっぽい理由で性能が高く見えるのかそうでないのか?をはっきりさせたいと思っている。Home | RealTime QAのような取り組みも参考になりそう。

日本語性能の向上やプロンプトの探索などを見るに結構な社会的インパクトを与えるのは間違いなく、どう使っていくか?を考えていく必要がある。初期のインターネットと同じワクワク感がありとても楽しいと思う一方でディスラプトの怖さもある。OpenAIは結構な影響を予測しているFugu-MT 論文翻訳(概要): GPTs are GPTs: An Early Look at the Labor Market Impact Potential of Large Language Models (fugumt.com)が、実際どうなるかはここ数ヶ月で決まるんだろうなーと思う。

社会的なインパクトにも興味があるが、LLMの内部動作の理解、特にマルチリンガルな能力の獲得やIn-Context Learningが可能な理由にも興味がある。マルチモーダルさが入った時の動きも知りたいところ。この手の検証はAPIだととてもやりにくいのでオープンなChatGPT likeモデルに期待大。色々理由はあるのだろうが詳細が非公開というのはやはり辛い。

GPT-4の翻訳性能

GPT-4が発表された(GPT-4 (openai.com))。マルチモーダル化や長い入力への対応など非常に面白い拡張がされている。テキスト部分も性能向上があったとのことで機械翻訳でのChatGPT vs GPT-3.5 vs FuguMT | ぷるーふおぶこんせぷと (staka.jp)の後半の文例で翻訳させてみた。

現在はAPI提供はされておらず画面から「あなたは翻訳者です」と役割を入力し、その後「次の文章を英語から日本語に翻訳してください。」と指示している。入力方法は異なるが前回と条件はほぼ同じのはずである。

APIが提供されれば何らかのデータセットを用いたベンチマークもやってみたいと思っている。ただ下記の結果を見るに、ベンチマークデータの品質が問われるレベルで高い性能だなという印象。

最初に、林大臣は、G20外相会合と日本・オーストラリア・インド・米国外相会合の議長を務めるジャイシャンカル外相のリーダーシップに敬意を表しました。彼は、国際社会が一連の大きな危機に直面している中で、日本は5月のG7広島サミットと9月のG20ニューデリーサミットに向けて取り組み、G20議長国を務めるインドと引き続き緊密に連携していくと述べました。これに対し、ジャイシャンカル外相は、林大臣のインド訪問を歓迎し、G20議長国として、G7議長国である日本と協力したいとの意向を示しました。

出典:外務省ホームページ (https://www.mofa.go.jp/s_sa/sw/in/page3e_001319.html、機械翻訳を行った結果)
金融庁は、資金移動業者に関する「行政手続きガイドライン」の改正案を公開コメントのために提案しました。この提案は主に、厚生労働大臣が指定する資金移動業者の口座への賃金支払いを認める労働基準法施行規則の改正に関する省令(仮称英語名)[2022年11月28日公布]を受けて、資金移動業者に対する監督措置を定めたガイドラインの改正を提供することを主な目的としています。

出典:金融庁ウェブサイトhttps://www.fsa.go.jp/en/newsletter/weekly2023/527.html)、機械翻訳を行った結果
デジタル庁は、政府の非効率的な技術を排除するために最善を尽くし、人々の日常生活を支援するシステムのデジタル化に注力しています。データとシステムのセキュリティを保証することで、ユーザー主導のデジタル化を加速させることを目指しています。私たちは、「政府がサービスとして」、「政府がスタートアップとして」のビジョンを基盤に、「人にやさしいデジタル化:誰も取り残さない」というコミットメントを果たします。

出典:デジタル庁(https://www.digital.go.jp/en/creation-en/)、機械翻訳を行った結果
GPT-4を用いた翻訳結果

GPT-4は全体的に正確かつ流暢に訳せており、前回結果(GPT-3.5、ChatGPT、FuguMT)より優れているように見える。特に3つ目で「デジタル庁」を正しく訳せているのはすごい。「Government as a service」「Government as a startup」「Human-friendly digitalization: No one left behind」の翻訳も良い感じである。

マルチモーダルな入力が可能になったら画像+テキストでの翻訳もぜひ試してみたい。(既存研究はあるものの)マルチモーダルなデータを用いた翻訳&テキスト指示による文のスタイル指定が手軽に実行可能だとするとすごいことだと思う。

その他

この分野はGoogleがPaLM APIを発表(Google Developers Blog: PaLM API & MakerSuite: an approachable way to start prototyping and building generative AI applications (googleblog.com))するなど競争が激化している。LLMの挙動は非常に面白いので色々試していく予定。

現在、GitHub – Shark-NLP/OpenICL: OpenICL is an open-source framework to facilitate research, development, and prototyping of in-context learning.のようなIn-Context Learningもテスト中でその結果も早めに記事にしたいなーと思っている。in-context Learningの挙動も謎が多く(Larger language models do in-context learning differently – arXiv最新論文の紹介 (devneko.jp))非常に興味深い。

GitHub – dair-ai/Prompt-Engineering-Guide: Guides, papers, lecture, and resources for prompt engineeringのようなPrompt作成のテクニックが日本語でも同じなのか?など、LLM周りが急速に発展する中での日本語の立ち位置にも興味津々で実験時間が足りないというのが正直なところ。

機械翻訳でのChatGPT vs GPT-3.5 vs FuguMT

ChatGPTがAPI提供されるようになったこともあり、機械翻訳性能がどの程度変わっているか試してみた。比較条件は下記の通り。

評価結果

結果は下表の通りであり、FuguMT > GPT-3.5 > ChatGPTの結果だった。

パターンBLEU補足
ChatGPT(Excellent)22.850.4/29.0/16.9/10.9 (BP = 1.000 ratio = 1.228 hyp_len = 6920 ref_len = 5633)
ChatGPT(Good)23.251.0/29.3/17.4/11.2 (BP = 1.000 ratio = 1.196 hyp_len = 6735 ref_len = 5633)
GPT-3.524.956.0/31.7/18.5/11.7 (BP = 1.000 ratio = 1.068 hyp_len = 6014 ref_len = 5633)
FuguMT32.763.5/40.2/26.0/18.6 (BP = 0.982 ratio = 0.982 hyp_len = 5531 ref_len = 5633)
Tatoebaを用いたBLEUの比較(ChatGPT vs GPT-3 vs FuguMT)

ChatGPTの出力には()書きでローマ字の読みが補足されている場合(「Hello」の翻訳として「こんにちは(Konnichiwa)」となっているような場合)があり、それを修正すると下表の結果となった。

パターンBLEU補足
ChatGPT(Excellent)26.557.6/33.5/19.8/13.0 (BP = 1.000 ratio = 1.077 hyp_len = 6064 ref_len = 5633)
ChatGPT(Good)26.056.3/32.6/19.5/12.8 (BP = 1.000 ratio = 1.084 hyp_len = 6104 ref_len = 5633)
Tatoebaを用いたBLEU、ChatGPTの出力を修正した場合

若干修正しても単文(かつ短め)翻訳においてはFuguMTはChatGPT・GPT-3よりも性能が高いという結果になった。ただし、Tatoebaの結果で正しい性能を測ることはそもそも困難であること、BLEUが良い指標とは言い難いこと、ChatGPTの出力は機械的な評価以上に人間に好まれること[2][3]に注意が必要である。実際に目検証を行った限りではChatGPTとFuguMTの性能はほぼ同じレベルに見えた(GPT-3.5はイマイチな訳が含まれていた)。そして、そもそもゼロショットで機械翻訳特化のモデルに相当しているというのも凄いことである。

追加検証

追加検証として外務省、金融庁、デジタル庁のWEBサイトにある英語文を用いて比較を行った。

外務省のデータ

まずはJapan-India Foreign Ministers’ Meeting | Ministry of Foreign Affairs of Japan (mofa.go.jp)から下記文章を抜き出し検証した。

At the outset, Minister Hayashi expressed his respect for Foreign Minister Jaishankar’s leadership in chairing the G20 Foreign Ministers’ Meeting and the Japan-Australia-India-US Foreign Ministers’ Meeting. He stated that as the international community faces a series of major crises, Japan is looking ahead to the G7 Hiroshima Summit in May and the G20 New Delhi Summit in September, and expressed that Japan will continue to work closely with India, which holds the G20 Presidency. In response, Foreign Minister Jaishankar welcomed Minister Hayashi’s visit to India and stated that as G20 Presidency, India would like to cooperate with Japan, which holds the G7 Presidency.

出典:外務省ホームページ (https://www.mofa.go.jp/s_sa/sw/in/page3e_001319.html、機械翻訳を行った結果を下表に表示)

この程度の長さであれば一文が入力されることを想定したFuguMTでも対応可能だが、テキスト中の行を分割後に翻訳したバージョンも記載している。なお、「外務省」「金融庁」「デジタル庁」など省庁のテキストの多くはクリエイティブ・コモンズ (Creative Commons) — 表示 4.0 国際 — CC BY 4.0と互換性のある利用規約で使うことができる。

パターン日本語訳
ChatGPT(Excellent)冒頭、林大臣は、ジャイシャンカル外相がG20外相会議と日豪印米外相会議の議長を務めたことへの尊敬を表明しました。彼は、国際社会が一連の大危機に直面する中、日本は5月のG7広島サミットと9月のG20ニューデリーサミットに注目し、G20大統領国のインドと引き続き緊密に連携していくと述べました。これに対し、ジャイシャンカル外相は、林大臣のインド訪問を歓迎し、G20大統領国であるインドは、G7大統領国である日本と協力したいと述べました。
ChatGPT(Good)最初に、林大臣は、ジャイシャンカル外務大臣がG20外相会議や日豪印米外相会議で議長を務めたことについて、彼の指導力に対する敬意を表明しました。彼は、国際社会が一連の重大な危機に直面している中、日本は5月のG7広島サミットと9月のG20ニューデリーサミットを見据えており、G20の議長国であるインドと緊密に連携していくと表明しました。これに対し、ジャイシャンカル外務大臣は、林大臣のインド訪問を歓迎し、G20議長国であるインドはG7議長国である日本と協力したいと述べました。
GPT-3.5最初に、林大臣はG20外務大臣会議と日豪印米外務大臣会議を主席としたジャイシャンカール外務大臣の領導力を尊敬した。彼は、国際社会が一連の重大な危機に直面していると述べ、5月にはG7広島サミット、9月にはG20ニューデリーサミットがあると述べ、G20議長国であるインドと緊密に協力していくと表明した。それに対し、ジャイシャンカール外務大臣は林大臣のインド訪問を歓迎し、G20議長国として日本、G7議長国として日本と協力したいと述べた。
FuguMT冒頭,林大臣から,ジャイシャンカル外相のG20外相会合及び日米豪印外相会談の議長に対する敬意を表明しました。国際社会が一連の大きな危機に直面する中で,5月のG7広島サミット,9月のG20ニューデリーサミットを先取りし,引き続きG20議長国であるインドと緊密に連携していく旨述べました。これに対し,ジャイシャンカル外務大臣から,ハヤシ外相の訪印を歓迎し,G20議長国として,G7議長国である日本と協力していきたい旨述べました。
FuguMT(行分割)冒頭,林大臣から,G20外相会合及び日米豪印外相会談の議長として,ジャイシャンカル外務大臣のリーダーシップを尊重する旨述べました。 5月のG7広島サミット、9月のG20ニューデリーサミットに向けて、国際社会が一連の大きな危機に直面する中、日本は引き続きG20議長国であるインドと緊密に連携していく旨述べました。 これに対し,ジャイシャンカル外務大臣から,林大臣のインド訪問を歓迎し,G20議長国として,G7議長国である日本と協力していきたい旨述べました。
外務省のページに対する各パターンの翻訳結果

外務省の日本語記載は下記の通りである。

冒頭、林大臣から、今般のG20外相会合及び日米豪印外相会合の議長としてのジャイシャンカル外相のリーダーシップに敬意を表明するとともに、国際社会が大きな危機に立て続けに直面する中、日本は、5月のG7広島サミット及び9月のG20ニューデリー・サミットを見据え、G20議長国であるインドと、引き続きしっかり連携していきたい旨述べました。これに対し、ジャイシャンカル外相より、林大臣の訪印を歓迎した上で、G20議長国としてG7議長国である日本と協力していきたい旨述べました。

出典:外務省ホームページ (https://www.mofa.go.jp/mofaj/s_sa/sw/in/page6_000819.html

全般的に甲乙をつけるのが難しいが、GPT-3.5は若干微妙な訳になっているように見える。FuguMTも誤訳のように思えなくもない(解釈が悩ましい文章になっている)。このように小さな単位で測っても…と思いつつBLEUを計算すると FuguMT(行分割) > FuguMT > ChatGPT(Excellent) > ChatGPT(Good) > GPT-3.5だった。

金融庁のデータ

金融庁の下記テキストを翻訳した結果は下表の通り。

The FSA proposed the draft amendments to the “Guidelines for Administrative Processes” regarding funds transfer service providers for public consultation.The proposal is mainly aimed at providing amendments to the said Guidelines by setting forth supervisory measures to be taken for funds transfer service providers, in response to the “Ministerial Order to Amend the Regulation for Enforcement of the Labor Standards Act to Allow Wage Payment to the Accounts of Funds Transfer Service Providers Designated by the Minister of Health, Labor and Welfare” (provisional English title) [promulgated on November 28, 2022].

出典:金融庁ウェブサイトhttps://www.fsa.go.jp/en/newsletter/weekly2023/527.html)、機械翻訳を行った結果を下表に表示
パターン日本語訳
ChatGPT(Excellent)FSAは、公共の意見募集のために、資金移転サービスプロバイダーに関する「行政手続指針」の草案改正案を提案しました。この提案は、主に「労働基準法施行規則の改正により、厚生労働大臣が指定した資金移転サービスプロバイダーの口座への賃金支払いを認める」という大命令に対応して、資金移転サービスプロバイダーに対する監督措置を定めることにより、当該指針の改正案を提供することを目的としています。
ChatGPT(Good)FSAは、公開の意見募集のために、資金移転サービスプロバイダに関する「行政手続に関する指針」の草案を提案しました。この提案は、主に、厚生労働大臣が指定した資金移転サービスプロバイダの口座への賃金支払いを許可するための「労働基準法施行規則の改正に関する省令案」(暫定英語タイトル)(2022年11月28日公布)に対応して、資金移転サービスプロバイダに対して取られるべき監督措置を明示することで、該指針の改正案を提供することを目的としています。
GPT-3.5「厚生労働大臣令による労働基準法施行規則の改正(仮英語表記)(2022年11月28日公布)に対応して、資金振込サービス提供者に対する監督措置を定めることを目的として、「行政処理のガイドライン」に関する案を公開諮問することを金融庁が提案しました。
FuguMTFSAは、公共相談のための資金移転サービス提供者に関する「行政プロセスガイドライン」の改正案を提案しました。この提案は、主に、「厚生労働大臣が指定する資金移転サービス事業者の口座への賃金支払いを許可する労働基準法施行規則の改正に関する閣僚令」(仮称)に対応して、資金移転サービス事業者に対して取るべき監督措置を設定することにより、当該ガイドラインの改正案を提供することを目的としています(仮称) [2022年11月28日に公布]。
FuguMT(行分割)FSAは、公的協議のための資金移転サービスプロバイダーに関する「行政プロセスガイドライン」の修正案を提案した。 この提案は、主に「厚生労働大臣が指定する資金移転サービス事業者の口座への賃金支払いを許可する労働基準法施行規則の改正に関する閣僚令」(仮称)(2022年11月28日公布)に対応し、資金移転サービス事業者に対して取るべき監督措置を定めることにより、当該ガイドラインの改正を行うことを目的とするものです。
金融庁のページに対する各パターンの翻訳結果

GPT-3.5以外は甲乙つけがたし、という印象。GPT-3.5は一部を飛ばしてしまっている。もっとも大意があっていればOKという感想はなくはない。

デジタル庁のデータ

最後にデジタル庁のテキストを翻訳した結果は下表の通り。

The Digital Agency makes best effort to eliminate inefficient technology of the government and focuses on the digitalization of improving systems to support daily lives of people. By guaranteeing the security of data and systems, we aim to accelerate digitalization in a user-driven manner. We commit to “Human-friendly digitalization: No one left behind”, underpinned by the vision of “Government as a service” and “Government as a startup.”

出典:デジタル庁(https://www.digital.go.jp/en/creation-en/)、機械翻訳を行った結果を下表に表示
パターン日本語訳
ChatGPT(Excellent)デジタル・エージェンシーは、政府の非効率な技術を排除し、人々の日常生活をサポートするシステムの改善のデジタル化に注力しています。データとシステムのセキュリティを保証することで、ユーザー中心のデジタル化を加速することを目指しています。「誰も後れを取らない」人間にやさしいデジタル化を実現することを約束し、「サービスとしての政府」と「スタートアップとしての政府」というビジョンを土台にしています。
ChatGPT(Good)デジタルエージェンシーは、政府の非効率的な技術を取り除き、人々の日常生活を支援するシステムの改善に重点を置くことでデジタル化に取り組んでいます。また、データやシステムのセキュリティーを保証することで、ユーザー主導のデジタル化を加速することを目指しています。私たちは、「誰一人取り残さない人間中心のデジタル化」というビジョンのもと、「政府サービス」と「政府スタートアップ」という考え方を基盤として、取り組んでいきます。
GPT-3.5デジタルエージェンシーは、政府の不効率な技術を排除し、人々の日常生活を支援するシステムのデジタル化に焦点を当てるための最善の努力をしています。データとシステムのセキュリティを保証することにより、ユーザー主導のデジタル化を加速します。私たちは「人間中心のデジタル化:誰も残さない」を掲げ、「政府をサービスとして」および「政府をスタートアップとして」というビジョンに基づいています。
FuguMTデジタルエージェンシーは、政府の非効率な技術を排除するために最善を尽くし、人々の日常生活を支えるシステム改善のデジタル化に重点を置いています。データとシステムのセキュリティを保証することで、ユーザー主導のデジタル化を加速することを目指しています。私たちは、「Government as a service」と「Government as a startup」のビジョンに裏付けられた「Human-friendly digitalization: No one left back」にコミットします。
FuguMT(行分割)デジタルエージェンシーは、政府の非効率な技術を排除するために最善を尽くし、人々の日常生活を支援するためのシステムの改善のデジタル化に焦点を当てています。 データとシステムのセキュリティを保証することで、ユーザ主導のデジタル化を加速することを目指しています。 私たちは、「サービスとしての政府」と「スタートアップとしての政府」のビジョンに裏付けられた「人間に優しいデジタル化:誰も残っていない」ことを約束します。
デジタル庁のページに対する各パターンの翻訳結果

こちらは全般的に近い翻訳で評価が難しい。GPT-3.5の「不効率」という表記は気になるが、それ以外はまぁ機械翻訳だしこんなもんか、という結果に思える。

まとめ

ChatGPT vs GPT-3.5 vs FuguMTということで翻訳性能を比較してみた。機械的な評価ではFuguMTが上回るが、個別にみていくと甲乙つけがたい結果であることが確認できた(ただ、おそらくChatGPTはGPT-3.5よりも和訳性能が高い)。

LLMを用いた翻訳はPromptの入れ方に依存して性能が変わることがある。実際にChatGPTではSystem Roleに与えたテキストによって訳文が変化している(スコア的にはそこまで変わらずExcellent > Goodということはなさそう)。他論文でも指摘されているが、Promptの工夫や今後のSoft Prompt[4][5]のような技術を適用することで性能はさらに上がっていくものと思われる。

ゼロショットで良い翻訳性能を出したLLMは驚異的とも言え、また、その性質上文単位ではなくドキュメント単位で情報を捉える事も可能、翻訳文のスタイルもコントロール可能と利点が多い。ChatGPTの会話の中で出力させていくUXも素晴らしく、使っていて楽しい。[2]にも書かかれていたように(裏側では)翻訳特化モデルと大規模言語モデル(LLM)+PromptのHybridで使っていくことになるのかなと思う。

FuguMTとしては「ChatGPTに勝ったぜ」と宣伝するのではなく、文書単位(文単位を超える)機械翻訳モデルへ性能強化するとか、英語OnlyなLLMを使うときに役立つ機能(<t1></t1>で挟まれた部分は訳文でも同じタグで挟まれているようタグ構造を保存して翻訳するなど)を入れるとかそういう方向で強化を行っていきたい。

その他

流行りのChatGPT API(gpt-3.5-turbo)、GPT-3.5 API(text-davinci-003)をFuguMTと比較してみたが、ぶっちぎりで負けているようなことが無くて安心した。OpenAIが使っているデータに日本語が少ないという理由だと悲しいが…

LLM (Large Language Model / 大規模言語モデル)の良さはzero / few shotで動くモデルが作れることにあり、No Data, No Codeで特化型モデルであるFuguMTと遜色ない性能を出しているのは正直凄い。[6]によるとGLUEにおけるChatGPTの性能は(得意不得意の差が大きいが平均的には)BERT-baseでfine tuningした結果と同等、BERT-largeやRoBERTaには及ばないとのこと。FuguMTはTransformer世代で約60Mパラメータ(BERT-baseは約110Mパラメータ)であることを考えるとだいたい想定通りの結果ともいえる。

上記結果を「あらゆるユーザが自分の欲しい”AI”をNo Code, No Dataで生み出せ、その性能はBERT-baseを用いてそこそこのデータでfine tuningした結果と同等」と捉えると世の中にかなりのインパクトがあってもおかしくない。Twitterを見ていると様々なタスクにChatGPTを使うユーザがいて、そのタスクには今まで想定されていなかったものが含まれている。データがいらないという点も重要でまさに「AIの民主化」と言えそう。今まで研究者やエンジニアが想像もしなかった用途で有用な”AI”が出てくる可能性は高い。とっても楽しみ。

NLP業界に与える影響としては、現時点では特化型モデルの方が性能が高い(上記、有用な”AI”のアイデアについてLLMの性能を超えることは可能)とかFATE(Fairness, Accountability, Transparency, Ethics)やRobustness[7]といったモデル性能以外に重要な要素も多数ある[8]ので、分野としての仕事は減らないかむしろ増える気がする。

ChatGPTが嘘を言う、いわゆるHallucinationの問題は機械翻訳やAbstractiveな要約といったテキスト生成でも生じる(生じてきた)問題で応用によっては解決可能。もちろん用途によっては対策が難しいかもしれないし、あまり考えずにChatGPTに頼る場合は問題になるが、現実的には何とかできる感がある。

少し未来のことを考えると今後もLLMの進化は止まらなさそう。上で挙げたfew-shot以上の事例をPromptに埋め込むSoft PromptやCoT(Chain of Thought)[9][10]、PAL(Program-Aided Language models)[11]のようにPromptを工夫する方向性の他、LLM自体の高度化としてマルチモーダル化や外部知識の利用、APIの活用など様々な方向性[12]が研究されている。

個人的にはマルチモーダル化に期待したいところ。自然言語+画像の大規模モデル構築の試みは非常に多く行われていてかつ成果も上がっている。視覚+言語理解を得たChatGPTが登場するのはそう遠くないと思う。その後、テーブルデータの理解(またはAutoMLとの統合)や計画・手順の理解がなされると”AIエンジニアGPT”のようなレベルに達する。それぞれについて研究成果が複数あるので意外と早く実現してしまうかもしれない。

この方向でAGIに達するかは不明だが、社会にインパクトを与えうる動きとして注目していきたい。

注釈・参考文献

[1] 単純に学習データに入れないだけではなく、英文側から数字記号を削除し小文字に直したデータをキーとして一致するものが学習データに含まれていないことを確認している。(複文の一部に含まれている場合は検出できないが…)
[2] [2302.09210v1] How Good Are GPT Models at Machine Translation? A Comprehensive Evaluation (arxiv.org)ではもっと詳細に検証されている。
[3] 要約だと[2302.08081] Exploring the Limits of ChatGPT for Query or Aspect-based Text Summarization (arxiv.org)には「we can tell the ChatGPT-generated summaries are surprisingly good and even better than the given references」との記載がある。
[4] The Power of Scale for Parameter-Efficient Prompt Tuning – ACL Anthology
[5] [2302.06541v1] Towards Agile Text Classifiers for Everyone (arxiv.org)
[6] [2302.10198v1] Can ChatGPT Understand Too? A Comparative Study on ChatGPT and Fine-tuned BERT (arxiv.org)
[7] RobustnessはLLMの方が良いかも?と言われていたりもする。[2302.12095v1] On the Robustness of ChatGPT: An Adversarial and Out-of-distribution Perspective (arxiv.org)
[8] [2110.01167] Trustworthy AI: From Principles to Practices (arxiv.org)
[9] [2201.11903] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (arxiv.org).
[10] その後も非常に多くの報告が出ている Chain of Thought – arXiv最新論文の紹介 (devneko.jp)
[11] [2211.10435v1] PAL: Program-aided Language Models (arxiv.org)
[12] [2302.07842] Augmented Language Models: a Survey (arxiv.org)