ChatGPTについて考える (3) 形態素解析はどこへ行った?

「[ChatGPTについて考える](https://qiita.com/ryokan/items/0e65dfa1cffa2cbd3ddb)」 (3) は形態素解析に関して考えます。

前回、単語ベクトルについて書きましたが、英語は単語がスペースで区切られているため、(記号などの処理はあるものの) スペースで区切ったものをそのまま深層学習にかけます。一方、日本語を深層学習で処理する場合は、従来の自然言語処理のビルディングブロックである形態素解析を使った結果を与えていたように思います。End-to-Endといってもここだけは除外されていたわけです。

ところが、ChatGPTではそのような処理を特別に噛ませているわけではなさそうです。入力欄にそのまま日本を入れて大丈夫。入力された言語を判別し、その言語にあった前処理をやっているようには見えません。

学習データも日本語は入っているらしいですが、量的には少ないようです*。

それでも日本語として正しい文章が出力される。ここに疑問があります。

形態素解析を行わないで、文を単語 (日本語学で使われてきた単語ではなく、単語としてみてもいい区切り方) に区切る方法として、工藤氏らのSentencePiece ([arXiv:1808.06226](https://arxiv.org/abs/1808.06226)) があります。これを用いれば、未加工の文から直接サブワード・モデルを訓練することができるため、純粋にEnd-to-Endで言語に依存しないシステムを作ることができます。ChatGPTも同じような仕組みが組み込まれていることが考えられます。

それにしても、
* 単語に分割する
* 日本語の単語と (主要な言語であろう) 英語の単語を同じベクトル空間に配置する
* 単語のつながりとして生成する

ということがひとつの大規模言語モデルでできていることに驚きを感じます。

補足*: 日本語のデータ量に関してはよくわかりませんでした。
Zenn 2023/02/28 [ChatGPTの学習データ内容およびデータ量](https://zenn.dev/to3izo/books/9328f52bd3cfd3/viewer/3595ec) 

> GPT-3モデルが事前に学習したテキストデータの 量は約 570GB（ギガバイト） であり、 パラメータ数は約 1750億個 と言われています。
（厳密には、45TB（テラバイト）の膨大なテキストデータに対して、いくつかの前処理を行って絞られた570GBのデータセットを使って学習しています。）


ChatGPTの「ChatGPTの学習データはどれくらいありますか」に対する回答：

> ChatGPTの学習に使用されたデータは、約45テラバイトに及びます。具体的には、ウェブ上の大量のテキストデータ、書籍、ニュース記事、Wikipediaなど、さまざまな情報源から収集されたテキストデータが含まれています。また、この学習データは、人工的に作成されたデータではなく、自然言語で書かれた実際の文章から構成されています。

ここはあっています。

ChatGPTの「ChatGPTが学習データに日本語テキストはどれくらいありますか」に対する回答：

> ChatGPTは、英語を中心に学習された言語モデルですが、学習データに日本語テキストも含まれています。具体的な量は正確には把握していませんが、およそ数十億語の日本語テキストが含まれていると推定されています。ただし、英語に比べるとデータ量は少ないため、日本語処理においては英語に比べて精度が低くなることがあります。

約45テラバイトに対してどれだけか欲しいですね。質問を変えてみました。

ChatGPTの「ChatGPTの学習データの中に日本語テキストは何ギガバイトありますか」に対する回答：

> 正確な数字は公表されていないため、ChatGPTの学習データの中に日本語テキストが何ギガバイト含まれているかを特定することはできません。ただし、公式に公開されている事前学習済みの日本語モデル「Japanese GPT-3」は、約2.6テラバイトの日本語のテキストを学習しています。ChatGPTの学習データ全体に占める日本語のテキストの割合は、この数字よりも少なくなると考えられます。

(本当かどうかわかりませんが) 5%ちょっとだと、思ったよりも多い気がします。数ギガ語で約2.6テラバイトは1語あたり1KBのオーダーとなり、どちらかの数字が間違っているのではないかと考えます。

正確なところを知りたくて、「ChatGPTの学習データについて公表された論文または記事を教えてください」と聞いたら、

> ChatGPTの学習に使用されたデータについては、以下の論文で詳細に説明されています。
>
> Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever. "Language Models are Unsupervised Multitask Learners." OpenAI Blog, 14 June 2019. https://openai.com/blog/better-language-models/
> この論文では、学習データの概要、データの収集方法、前処理方法、およびデータセットの統計情報が提供されています。また、論文中では、ChatGPTの学習に使用された大規模なデータセットに関する説明も提供されています。

リンクを辿ってみると、"Better language models and their implications" と、異なったタイトルになっていて、GPT-2について書いてありました。

"それはGPT-2のデータのようです。ChatGPTはGPT-3.5だと聞きました。" と聞くと、

> 申し訳ありません。先程の回答に誤りがありました。ChatGPTはGPT-3の派生モデルで、より大規模なデータセットで学習されています。
> 
> ChatGPTの学習に使用されたデータについては、以下の論文で詳細に説明されています。
> 
> Aditya et al. "Scaling Laws for Neural Language Models." arXiv preprint arXiv:2102.12470 (2021). https://arxiv.org/abs/2102.12470
> この論文では、ChatGPTの学習に使用された巨大なデータセットについて、収集方法、前処理方法、およびデータセットの統計情報が提供されています。データセットの詳細については、論文を参照してください。

リンク先は、"On the Validity of Modeling SGD with Stochastic Differential Equations (SDEs)" というタイトルで、SGD (Stochastic Gradient Descent: 確率的勾配降下法) の話です。一方、"Scaling Laws for Neural Language Models." ([arXiv:2001.08361](https://arxiv.org/abs/2001.08361)) は大規模言語モデルの話ではありますが、2020年の論文で、GPT関連は含まれていないようです。

間違いを指摘したら、"A Survey of Transformers" が紹介されましたが、リンクは[arXiv:2106.04554](https://arxiv.org/abs/2106.04554)で別のものでした。最後に "Language models are few-shot learners" ([arXiv:2005.14165](https://arxiv.org/abs/2005.14165)) を紹介してくれました。これはGPT-3に関しての論文です。