Muranaga's View

読書、美術鑑賞、ときにビジネスの日々

ChatGPT をはじめとする生成 AI のブレークスルーに、ワクワクしている

ここ数年の自然言語処理 AI のブレークスルーを体現したのが ChatGPT である。応答としては「教科書的」だし、正しくない応答をするといった問題もあるが、大規模言語モデル(GPT-3.5)を基盤として、人間との自然な対話を実現していることは本当に凄い。GPT = Generative Pre-trained Transformer という名の通り、Transformer というアーキテクチャのディープ・ニューラルネットワークで事前学習された(pre-trained)、生成(generative)AI である。

muranaga.hatenablog.com

ここ数ヶ月は、ChatGPT に代表される大規模言語モデル(LLM = Large Language Model)のブレークスルーに驚かされ、かつ心を動かされている状態である。さまざまなビジネス応用・商用化が考えられる一方で、ここまで進化した AI がどういう仕組みで動いているのか、その技術を少しでも理解したいという好奇心がむくむくと湧いて来ている。

ChatGPT はものごとを適切にまとめて教えてくれるし、プロンプトをうまく与えると、ちょっとした「議論の壁打ち」みたいなことができる。英文のメールの下書きをさせることもできる。自然言語だけでなく、プログラムのソースコードも学習しているので、適切な要件を与えることによって、動くプログラムを作り上げることもできる。英語やプログラミングという観点では、ChatGPT は僕の能力を超えていると言っても過言ではない。

もちろん学習していないことについては答えられないし、ChatGPT の場合、知らない(学習されていない)ことについて、正しくない答えをもっともらしく答えるといった課題もある。仕事に使うには、機密情報が ChatGPT に渡ってしまう(場合によってはそれが学習に使われてしまう)という問題もある。

Microsoft は最新の言語モデル GPT-4 をベースにした Bing をリリースし、さらには Office 365 をはじめとする全製品を AI 対応にする方向に舵を切った。Microsoft 365 Copilot や、GitHub Copilot(大規模言語モデルからコードを自動生成する) というネーミングからもわかる通り、人間の「副操縦士」として AI を位置づけている。GPT-4 ベースのコード生成能力も上がっている。

news.microsoft.com

自然言語で会話するだけではない。Transformer や Diffusion Model というモデルにより、自然言語から画像を生成する AI もブレークスルーを迎えている。画像生成 AI の MidjourneyStable Diffusion を直接使うだけでなく、ChatGPT から得られた記述を与えて、絵を描くことも行われている。「オードリー・ヘップバーンがローマのカフェでスマホを見ている」といった見たこともない画像を生成することもできる。

Web・映像のようなコンテンツ制作のビジネスに携わる者の一人として、生成 AI のビジネスへの影響は大きく、その可能性とリスクを押さえておく必要がある。そのためにもその原理、仕組みを理解しておきたい。

いや、違うな…。ビジネスのためというよりも、今はどちらかというと自分の純粋な好奇心の方が勝っている。大規模言語モデルベースの AI が、なぜ自然な会話ができる(ように見える)のか、どう作られたのか。その原理を少しでも知りたいし、場合によってはソースコードレベルで見てみたい。まずはこの技術を理解したいという欲求が、先に立っている。

もしこの技術が少しでもわかるようになったら、その結果として、大規模言語モデルの可能性や限界について、自分なりに考えられるようになるかもしれない。

今回の自然言語処理におけるブレークスルーの技術的な大きな流れは、ざっくりと次のようにとらえている:

  • 注意機構(attention)という仕組みを入れた Transformer というアーキテクチャの発明(BERT)
  • その並列性による高速化と、スケーラビリティ(パラメータ数や学習データが大きいほど性能が出る)が示された
  • 膨大な計算機資源に使った「大規模言語モデル」(GPT)の出現
  • 事前学習済みの汎用的な言語モデルに対して、データセットの小さいファインチューニング 、あるいは少しの事例を与えるプロンプト学習というやり方で、特定のタスクに応用できる可能性が示された(BERT、GPT-3)

昔、知識処理のルールを人間が記述する記号処理型の AI をやっていた人間からすると、ニューラルネットワークの確率・統計的なアプローチで、自然な対話が実現できていること自体が驚きであり、これがどのような仕組みでできているのか興味深い。文の構造(構文)に始まり、単語や文の意味、共起関係、文脈の意味などの表現を、どのように獲得しているのだろう。それらがどう機能することで、滑らかな文章が生成されるのだろう。

つまるところ、 Transformer の原論文 "Attention Is All You Need" に出てくる以下の図と、それに相当する数式の意味するところを理解できるようになりたいのである(原論文の PDF 版から引用):

しかしディープラーニングについて、僕はほぼ初心者と言っていい状態なので、(今さらながら)ニューラルネットワークの入門書から読む(時にはソースコードを眺める)ところから始めている:

それと並行して、ディープラーニングの技術解説書に目を通している:

そして背伸びをして、専門家による Transformer 論文の解説(たとえば「楽しみながら理解するAI・機械学習入門」「ディープラーニングブログ」)を読んだり、YouTube の講義(たとえば Neural Network ConsoleAIcia Solid ProjectTransformer 解説)を視聴したりしているものの、初心者過ぎて、残念ながらまだそれをきちんと理解するレベルまでは到達していない(特に scaled dot-product attention における Q、K、V の意味するところ)。

道は遠い。

data-analytics.fun deeplearning.hatenablog.com


www.youtube.com


www.youtube.com


www.youtube.com

Transformer ベースの各モデルについては、Hugging Face という AI エンジニアのコミュニティ・ハブに、オープンソースという形でライブラリ化されており、BERT や GPT のような事前学習済みのモデルや学習用のデータセットをそこからダウンロードして、解きたいタスク向けにファインチューニングできるようになっている。機械学習エンジニアのエコシステムが構成されているのだ。

Transformer をベースに、特定のタスクではなく、より汎用性のある言語を学習させたのが GPT のような大規模言語モデルである。このような事前学習済みの大規模言語モデルFoundation Model と位置づけ、それに対する小さな学習データセットでのファインチューニングで、特定のタスクに応用できる可能性が BERT や GPT で示された。

blog.recruit.co.jp

さらに GPT-3 では、ファインチューニングしなくても、

  1. タスクの指示文
  2. いくつかの事例
  3. 解いてほしい問題の入力

をプロンプトとして与えると、特定のタスクが解けることが示された。事例もほんの少し(Few-shot)与えるだけで、あるいは事例を与えなくても(Zero-shot)、問題を解く能力がある。

ChatGPT のモデルを強化するにあたっては、プロンプトに対する望ましい回答を人間が作成、これを学習データセットとして、事後学習・ファインチューニングを行ったようだ。そのうえでさらに、人間のフィードバックによる強化学習(InstructGPT)が行われている。

data-analytics.fun

こうしてできあがった ChatGPT では、適切なプロンプトを与えることによって、さまざまな文章やコードを生成させることが可能となった。

僕が携わっている Web や映像のコンテンツ制作、デジタルマーケティング、Web システム開発のビジネスの現場では、ちょっと考えるだけでも、生成 AI に対するプロンプト・エンジニアリングによる業務の変革が予想できる。

  • メール、Webコンテンツ、デザイン案の生成
  • キャッチーなメルマガタイトルの生成
  • SNS 投稿・ブログ投稿、チャットボットへの応用
  • Web システム、Web サイト構築におけるコード生成
  • 映像シナリオ・絵コンテの生成
  • AI の生成した映像(たとえば背景)と、人間が制作した映像を組み合わせる

などなど、応用の可能性は枚挙にいとまがない。

自分たちの業務のやり方が根本的に変わる。そして必要とされるスキルが激変する可能性がある。真の意味での DX が、今の生成 AI のブレークスルーによってもたらされるかもしれない。

その一方で、生成 AI には限界もある。たとえば生成 AI が出してくる結果が、要件を満たす妥当なものかは保証されない。生成されたコンテンツの品質、正確性、妥当性を人間がチェックする必要がある。

  • 人間が作るもの、AI に生成させるもの、それらをどう組み合わせるかというプロデュース
  • 適切な指示を AI に与えるプロンプト・エンジニアリング
  • AI が生成したコンテンツ、デザインを評価して、その中からよいものを選ぶキュレーション

こういったスキルが、ChatGPT のような対話型の生成 AI を「副操縦士」や「有能な部下・インターン」として使いこなすために求められる。

いろいろなコンテンツを生成してくれる ChatGPT だが、その技術が興味深いのは、本質的に理解していないことでも、それらしく答えるところである。たとえば体系的な数学の知識を持っていないにもかかわらず、「1 + 1 =」と聞くと、ChatGPT は「2」と答える。大量の四則演算が含まれるデータセットを学習して、「1 + 1 =」と来たら、次に「2」が来る事例が多いから、そう答えるだけだ。数式の持つ意味・数学の知識を理解しているわけではない。

プログラムのソースコードもコメントと一緒に大量に学習しているので、自動コード生成(プログラミング)も行えるわけだが、そのコードの意味するところを、アルゴリズムやデータ構造といった計算処理のレベルで理解しているわけではないだろう。また「オブジェクト指向」といった抽象的な概念を学習しているわけでもないだろう。大量の事例をもとに、確率・統計的にパターン処理をしてコード生成していると思われる。

つまり ChatGPT では、自然言語も、数式も、プログラムも、結局は大量の学習データをもとに確率的に「連想」して「予測」しているだけ。パターン認識に基づく確率的な生成処理(自己回帰モデル)でありながら、本当に文章の意味を理解しているかのようにふるまうし、実際に動くコードを生成してくる。何と面白い技術なのだろう。

ちなみに ChatGPT で数式を本当の意味で処理するためには、数学の知識を持ち、数式処理を行える Wolfram Alpha と接続する ChatGPT のプラグインを導入する必要がある。ChatGPT と Wolfram Alpha の接続は、ある意味、パターン処理と記号処理の一つの結合の形を実現していると言えるかもしれない。数式処理のレジェンド、Stephen Wolfram による "What Is ChatGPT Doing … and Why Does It Work?" は、ChatGPT の動作原理を丁寧に解説しており、さすがである。

www.wolfram.com writings.stephenwolfram.com

ChatGPT の出現により、大規模言語モデルそのものを一から作らなくても、

  1. プロンプトを与える
  2. ファインチューニングする

という二つの方法で、特定のタスク向けにカスタマイズすることができる時代になった。

プロンプトを与えるのは、一般ユーザでも可能なカスタマイズだが、大規模言語モデルのような Foundation Model をファインチューニングするには、機械学習の専門家による開発が必要である。そして Foundation Model の可能性とリスクを、理解しておく必要がある。

arxiv.org

そうやって特定のタスク向けに作ったモデルは、自分たちの望む結果を生成するだろうか?今の AI の原理、ニューラルネットワークの仕組みを考えると、学習で得られたモデルの中身を解釈することは難しい。そしてその生成する結果が妥当なものであるようにコントロールすることも難しいように思う。前述したように、生成されたコンテンツの品質、正確性、妥当性を人間がチェックする必要がある。

だがそもそも人間だって、必ずしも正しい答えを返す者はいない。こうした AI の課題や限界・リスクを認識しつつ、どう活用するのか?AI により自分たちの生活がどう変わるのか?そこに自分はどう関わるのか?

大規模言語モデルの能力を目の当たりにして、今まさに、AI と人間が共生する時代の入り口に立っていると感じている。何だか久しぶりにワクワクしている。