【初心者向け】本当にわかりやすいAI入門:第6章 文章生成の大規模化による進化

# はじめに

この記事は全7章に分かれた「本当にわかりやすいAI入門」の第6章です。以前の記事を読まれていない方は、先にこちらをご参照ください。

|章|内容|
|:-----:|-----|
|第1章|[AIはなぜ人間みたいなことができるのか?](https://qiita.com/segavvy/items/9e7e4ab4b253599ac58a)|
|第2章|[脳はすごい](https://qiita.com/segavvy/items/875b8c5643389c35e8fd)|
|第3章|[伝わりやすさと境界の決め方](https://qiita.com/segavvy/items/6459c5de2bb973442919)|
|第4章|[細胞増やすだけではダメだった](https://qiita.com/segavvy/items/5702a4620c43bfb0c87e)|
|第5章|[時間も手間もお金もかかる](https://qiita.com/segavvy/items/903e60bb7579f9d45273)|
|第6章|文章生成の大規模化による進化（この記事）|
|第7章|[AIのこれから](https://qiita.com/segavvy/items/b20fb22c612702ec9178)|

:::note info
この記事は個人で作成したものであり、内容や意見は所属企業・部門見解を代表するものではありません。
:::

# 第6章 文章生成の大規模化による進化

文章生成の仕組みがここ数年で大きく進化しました。今回はそのお話です。

## 大量の知識に基づく文章生成が可能に

[第4章](https://qiita.com/segavvy/items/5702a4620c43bfb0c87e#%E3%81%A4%E3%81%AA%E3%81%8E%E6%96%B9%E3%81%AE%E5%B7%A5%E5%A4%AB%E3%81%AE%E4%BE%8B)で、夏目漱石の小説を使って調整することにより、夏目漱石風の小説を書いてくれる仕組みをご紹介しました。

（[第4章](https://qiita.com/segavvy/items/5702a4620c43bfb0c87e#%E3%81%AA%E3%82%93%E3%81%A8%E5%B0%8F%E8%AA%AC%E3%81%8C%E5%9F%B7%E7%AD%86%E3%81%A7%E3%81%8D%E3%82%8B)より）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/9913132f-77e8-50f3-f19b-ca0695f3eddf.png)

この仕組みの改良が進んだ結果、インターネットや世界中の文献などの大量情報を使った調整もできるようになり、多種多様な知識に基づくさまざまな文章を生成できるようになりました[^1]。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/c7ec2d4f-c018-c0fd-e4bb-a77d15121d20.png)

2020年8月には、[この仕組みを使ってニセの記事が生成されていたブログ](https://liamp.substack.com/p/my-gpt-3-blog-got-26-thousand-visitors)がSNSのニュースサイトのランキングで1位になってしまい大きな話題になりました。みんな人が書いた記事だと思っていたのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/7a05d8ad-8815-02cf-2985-3f3e84c2cf44.png)
（AIに書かせたニセのブログが1位に！）

## さらに仕組みを大規模化すると……

当初は規模を大きくしすぎると逆に性能が落ちてしまうと考えられていましたが、その後の研究で、大規模化すればするほど精度が上がることもわかりました[^2]。そのため、文章生成の仕組みはどんどん大規模化しており、[第2章でご紹介した手書き数字の認識](https://qiita.com/segavvy/items/875b8c5643389c35e8fd#%E7%B4%B0%E8%83%9E%E3%81%8C160%E5%80%8B%E3%81%82%E3%82%8C%E3%81%B0%E6%89%8B%E6%9B%B8%E3%81%8D%E6%95%B0%E5%AD%97%E3%82%82%E8%AA%8D%E8%AD%98%E3%81%A7%E3%81%8D%E3%82%8B)の例では45,360個しかなかった調整すべき値（伝わりやすさや境界の値）の数が、最近では1兆を超え始めています[^3]。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/7137cb3f-a719-7f2e-1b4d-14fe87e6e6c2.png)
（グラフの出典）東京大学松尾研究室「[AIの進化と日本の戦略 23/2/17](https://note.com/api/v2/attachments/download/a29a2e6b5b35b75baf42a8025d68c175)」

## 飛躍的に性能が向上することも判明！ 

また、調整のための計算量があるポイントを超えると、性能が飛躍的に向上することもわかりました。下のグラフは複雑な数学の問題や大学の受験問題、単語の意味の特定に対する正確さのグラフです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/564e1d40-f635-ec98-497b-2ceb292ee583.png)
（出典）「[Characterizing Emergent Phenomena in Large Language Models](https://blog.research.google/2022/11/characterizing-emergent-phenomena-in.html)」

縦軸は正解率で、横軸が調整のための計算量、赤い点線は適当に答えたランダムな場合の正解率です。いずれのグラフも前半の計算量では正解率がランダムと変わらずボロボロなのですが、ある計算量を境に飛躍的に向上していることがわかります。

## 追加の調整で会話もできるようになった！

文章生成の仕組みは、質問文を与えると質問の答えを続きとして生成できます。これは、インターネットにインタービューや掲示板などの質疑応答の文章もたくさんあるためと思われます。ただし、質問に答えられるのは特定の事実に関する明確な質問文を与えた場合だけの話であり、2020年時点では流暢な会話や長い会話のやり取りはできませんでした[^4]。

その後、会話を実現するための追加の調整に成功し、2022年終わりには、まるで人とやりとりしているかのような自然な会話のできる仕組みが大きな話題になりました。以下、この会話を実現するための調整内容について簡単に解説します[^5]。

①ベースになるのは、インターネットの大量の情報や文献などを使って調整された文章生成の仕組みです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/d7eecb8f-135d-52dc-10ef-ca62f31afcad.png)

②これに対して、大量の対話の文章を用意して追加の調整を行います。対話の文章とは、さまざまな問いかけ文と理想の回答文のペアです。これを人が大量に用意して理想の回答を返すように調整することで、人の問いかけに対して自然な回答ができるようになります[^6]。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/3f7fc924-4b7a-3197-afc6-bcc1177c26a1.png)

③さらに回答の良し悪しを判定する別の仕組みを用意して、②の調整が終わった仕組みの精度を判定させます。この判定では、デマがないか、人や環境を傷つけないか、ユーザーの質問を解決しているかどうかなどを評価軸にしています。

この判定の仕組みと文章生成の仕組みをプログラムでつないで、判定結果の良し悪しに応じて文章生成の仕組みを自動調整できるようにします。これをグルグル回すことで、判定結果が良くなる方向へと調整していきます[^7]。これが終われば会話の仕組みの完成です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/d207915f-86b2-1500-1679-c5dc24684cee.png)

なお、この③で使う判定の仕組みも、事前に大量のデータを使って調整したものです。具体的には、まず大量の問いかけ文を用意して②の終わった仕組みに問いかけて回答文を出力させます。そして、その個々の回答文の良し悪しを人が判定することで、大量の問いかけ文＋回答文とその評価結果のセットを用意します。これを使って、問いかけ文と回答文を入力すると正しい評価結果が出力されるように調整されています[^8]。

## 専門家ではなくても使えるAIが爆誕！

これまでの仕組みは、専門家が用途に応じたものを設計・開発して試行錯誤し、大量のデータを使って調整することによりでき上がっていました。また、でき上がった仕組みの調整にも専門家の知識やコツが必要でした。

これに対して会話ができる仕組みでは、文章で指示ができるので誰でも試行錯誤ができます。また、仕組みの調整もある程度は文章で指示することができ[^9]、追加の情報も文章で与えればそれに基づいた処理ができます[^10]。専門家ではなくても簡単に活用できる仕組みが誕生したのです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/587358c0-f62f-a954-51bd-c02456c42b88.png)

# 第6章のまとめ

- 文章生成の仕組みが大きく進化しました。
- 大量の情報に基づく知識で質問に答えられるようになったので、誰でもいろいろな用途に使えます。
- 会話の往復ができるので、関連情報を伝えたり複雑な指示も出せるようになりました。

次の最終回では、進化したAIのこれからについてまとめます。

:::note info
[「第7章 AIのこれから」](https://qiita.com/segavvy/items/b20fb22c612702ec9178)に続きます。
:::

[^1]: 厳密な定義はないのですが、[第4章](https://qiita.com/segavvy/items/5702a4620c43bfb0c87e)でご紹介したような言語モデルに対して、調整する値の数と調整に使うデータ量、そして調整のための計算量を大規化したものを「[大規模言語モデル](https://ja.wikipedia.org/wiki/%E5%A4%A7%E8%A6%8F%E6%A8%A1%E8%A8%80%E8%AA%9E%E3%83%A2%E3%83%87%E3%83%AB)」（LLM：Large Language Model）と呼びます。
[^2]: 大規模化すればするほど性能が上がるという法則を「[自然言語モデルのスケーリング則](https://arxiv.org/abs/2001.08361)」（Scaling Laws for Neural Language Models）と呼びます。ただし、これは「[Transformer](https://ja.wikipedia.org/wiki/Transformer_(%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%A2%E3%83%87%E3%83%AB))」（トランスフォーマー）という仕組みにおけるものです。現在の主要な大規模言語モデルはTransformerをベースにしていますが、そうではないものには当てはまらない可能性もあります。
[^3]: このような大規模言語モデルはいろいろな用途で活用できるため「[基盤モデル](https://ja.wikipedia.org/wiki/%E5%9F%BA%E7%9B%A4%E3%83%A2%E3%83%87%E3%83%AB)」とも呼ばれます。
[^4]: ここでのご説明は2020年に発表された「[GPT3](https://ja.wikipedia.org/wiki/GPT-3)」（Generative Pre-trained Transformer 3）と呼ばれる一昔前の仕組みの特性です。
[^5]: ここでの説明は「[InstructGPT](https://openai.com/research/instruction-following)」という仕組みの調整方法です。
[^6]: このように、既存の仕組みに対して追加のデータで振る舞いを調整することを「[ファインチューニング](https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%B3%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0_(%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92))」（fine-tuning）と呼びます。
[^7]: この調整では、これまでの例のように理想の出力を使うのではなく、結果の良し悪しの判定結果しか使いません。このように結果の良し悪しから正しい結果を出力できるように調整する方法を「[強化学習](https://ja.wikipedia.org/wiki/%E5%BC%B7%E5%8C%96%E5%AD%A6%E7%BF%92)」（RL：reinforcement learning）と呼びます。
[^8]: このように、人の判定結果を使って強化学習する方法は「[人間のフィードバックによる強化学習](https://ja.wikipedia.org/wiki/%E4%BA%BA%E9%96%93%E3%81%AE%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E3%83%90%E3%83%83%E3%82%AF%E3%81%AB%E3%82%88%E3%82%8B%E5%BC%B7%E5%8C%96%E5%AD%A6%E7%BF%92)」（ RLHF：Reinforcement Learning from Human Feedback）と呼ばれます。
[^9]: 機械学習やファインチューニングでLLMを調整するのではなく、文章で指示して調整することを「[インコンテキストラーニング](https://www.google.com/search?q=%E3%82%A4%E3%83%B3%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0)」（In-Context Learning）と呼びます。
[^10]: LLMの性能向上により、LLMの機械学習やファインチューニングで使っていない情報（たとえば最新の情報や社内情報）も、インコンテキストラーニングで与えるとそれに基づく回答ができるようになりました。インコンテキストラーニングは機械学習やファインチューニングよりも簡単なので、外部のデータベースから情報検索してインコンテキストラーニングでLLMに与えて回答生成させる「[RAG]()」（Retrieval-Augmented Generation）とよばれる手法が注目されています。