従来型AIを変えた基盤モデルの登場
ジェネレーティブAIと従来のAIの決定的な違いは、裏側で動く基盤モデルの存在にある。数値列を入力すると数値列を返すなど、シンプルな入力に対してシンプルな出力を返す。あるいは、画像を入力すると、その画像が何かをテキストで返すというように、複雑な入力に対してシンプルな出力を返す。これが今までの機械学習や深層学習ができることであった。それが基盤モデルの登場で、複雑な入力に対して複雑な出力を返すことが可能になった。質問を入力すると答えを返してくれるチャットボット、指示を入力すると画像コンテンツを作ってくれるサービスのように、簡単なプロンプトで多様なタスクを実行するAIを実現したのが基盤モデルである。小林正人氏は、基盤モデルの特徴として「一定の汎用性」を挙げた。
基盤モデル
これまでの機械学習モデル構築の最大の課題は、事前準備の負担が大きいことにあった。そもそもモデルは特定の用途に合わせて個別に構築するもので、モデルの精度を決めるのは、どれだけ大量の正解データを収集し、モデルに与えて学習させることができるかに依存していた。エンジニアがモデルの先生になり「これを受け取ったら、こんな結果を出力するんだよ」と、大量のデータにラベルを付け、モデルに与える必要があった。この教師あり学習の前提を大きく変えたのが基盤モデルである。
基盤モデルはラベルなしでも学習が可能で、大量データを直接入力できる。用途ごとにモデルを個別に構築する必要もない。様々なタスクを実行させられるので、テキスト生成にも、要約にも、情報抽出にも「汎用的に」使える(図2)。基盤モデルはエンジニアの負担を大きく軽減することに成功した。
現在、基盤モデルが提供する機能は大きく3つに分類できる(図3)。1つ目は「Text-to-Text」で、テキストで入力するとテキストで出力するものだ。2つ目が「Text -to-Embeddings」で、テキストを入力すると、そのテキストを数値表現に直し、その数値表現に近いものをテキストに直して出力する。例えば、「ハンドソープ」と入力すると、「ハンドソープリフィル」「ハンドソープディスペンサー」「抗菌ハンドソープ」といった出力を返す。3つ目が「Multi-modal」で、テキストから画像を生成するものがわかりやすい例になる。
基盤モデル活用ではテクニックも必要
大規模言語モデル(LLM)
基盤モデルには様々なものがあるとは言え、ビジネス利用での期待が最も高いのは「Text-to-Text」のものだ。「Text-to-Text」の基盤モデルは、一般に大規模言語モデル(LLM)と呼ばれ、OpenAIのGPT-3.5/GPT-4、GoogleのPaLM 2が代表的なものになる(図4)。AmazonでもネイティブLLMとしてAmazon Titan TextとAmazon Titan Embeddingsを提供している。よくある誤解がサービスの名前と基盤モデルの名前を混同することだ。「それぞれが違っていることもあるので、切り分けて理解するべきです」と小林氏は語る。例えば、OpenAIのChatGPTはサービスの名前で、GPT-3.5やGPT-4がLLMの名前になる。
また、基盤モデルは「オープンソース」と「プロプライエタリー」のライセンス形態で分類することもできる。現在、オープンソースの基盤モデル構築が活発に進んでいる。また後者の代表例が前述のGPT-3.5で、有償での商業利用が可能だ。2023年3月にブルームバークが発表したBloombergGPTは、金融ワークロードに特化したLLMとしてAWS上で開発したものになる。
ハルシネーション(幻覚)
企業がジェネレーティブAIを業務で利用する場合、自社のデータを学習材料に使われる点が懸念される。同時に、「ハルシネーション(幻覚)」と呼ばれる「AIが嘘をつく」現象も大きな懸念点だ。例えば、コールセンターのような顧客に直接対応する業務で、事実ではない内容を含む出力結果が出てきた場合、結果をそのまま使うわけにはいかない。少なくとも事実ではない結果を出さないようにするには、コントロール手法が必要になる。小林氏は2つの手法を紹介した(図5)。
ファインチューニングとプロンプトエンジニアリング
1つは、基盤モデルのファインチューニングである。これは既に提供されている学習済みの基盤モデルに対し、追加で学習用のデータを渡し、より望ましい結果を得られるようにモデルを改良するアプローチである。特定分野のデータを学習させ、より自分たちに適したモデルを作ることができるし、ゼロから基盤モデルを構築するわけではないので、スピーディな改良が期待できる。
もう1つはプロンプトエンジニアリングである。例えば、テキストで答えを返してくれる基盤モデルであれば、ユーザーが工夫した質問を投げかける。あるいは「わからない場合は“わからない”と答えるように」と明確に指示をすることで、出力をコントロールするアプローチがプロンプトエンジニアリングに該当する。また、基盤モデルが英語しか理解できない場合、日本語に対応するよう翻訳処理を追加するなど、「アプリケーションに処理を追加することもプロンプトエンジニアリングの一種です」と小林氏は解説した。