みなさま、こんにちは。
ソニー・ミュージックエンタテインメントでAI関連技術の調査・検討をしているみみずくと申します。
我々のチームでは、人工知能(AI)・機械学習(ML)をエンタメの創出に活用すべく、調査・検討を行っています。
さて、昨今巷を賑わせている大規模言語モデル(以下LLM)ですが、その実態はChatGPTやBardから受ける第一印象ほど万能なものではありません。 特に、それほどデータセットのサイズやパラメータ数が大きくないものでは、常に性能の限界と向き合いながら扱う必要性があります。 そこで今回は、LLMにできることとできないことについて紹介していきたいと思います。
- ひとくちに大規模言語モデルと言っても…
- 3種類のTransformerモデル
- フューショット学習とゼロショット学習
- モデルサイズの効果:Scaling Law
- さらなる機能の追加
- 教養としてのAI学
- 最後に
ひとくちに大規模言語モデルと言っても…
LLMと聞けば、ChatGPTやBardのようなイメージを持っている方が多いのではないかと思います。 しかしながら、実際にLLMを開発することを想定した場合、最初からそのようなイメージを持っていると、実際とのギャップにつまずくかもしれません。
2023年現在、自然言語処理を行うAIのほとんどには「Transformer」と呼ばれる機械学習モデルが使われており、これはほとんど唯一の「文脈における意味」に着目した処理が可能なモデルとなっています。 LLMの実際の能力について理解するには、このTransformerモデルに3つの種類があることを確認する必要があります。
3種類のTransformerモデル
Transformerモデルは、その内部構造の違いから3つの種類に分けられます。 エンコーダ・デコーダモデル、エンコーダモデル、そしてデコーダモデルの3種類です。
① エンコーダ・デコーダモデル
エンコーダ・デコーダモデルは、文字通りエンコーダとデコーダという2つのモジュールからなっています。
エンコーダで入力された文章を符号化(エンコード)して、符号化された情報をデコーダで復元(デコード)するという一連の流れによって出力する文章を生成します。 入力も出力もそれなりの文章量が想定される場面で使用され、機械翻訳、文章要約、質問回答などのタスクが主な対象です。
② エンコーダモデル
エンコーダモデルは、Transformerモデルのエンコーダ部分のみを使用したモデルとなっています。
デコーダが存在しないため、事前学習した語彙を組み合わせて複雑な文章を生成するタスクには使われません。一方で、エンコーダ自体が文章の全体の意味を数値化した特徴量を吐き出す機能を持つため、その特徴量を利用して入力された文章を分類するようなタスクを行うことが可能です。
たとえばその一種である「感情評価タスク」では、ある映画につけられた「私はこの内容に満足しています」というレビューがポジティブな意味合いで、「観なければよかったです」というレビューがネガティブな意味合いであると分類することができます。
また「固有表現抽出タスク」では、「ソニーグループは11日、上海に合成映像の撮影スタジオを新設した」という文章から「ソニーグループ(社名)」「11日(日付)」「上海(地名)」などの単語を固有表現(カッコの中)付きで抜き出すことが可能となります。
このモデルによって作られたAIは楽しくおしゃべりのできる相手というわけではなく、派手な挙動はしませんが、文章のような定性的データから定量的データを取り出す事務処理などの場面で非常に重要な役割を果たしています。
③ デコーダモデル
デコーダモデルは、Transformerモデルのデコーダ部分のみを使用したモデルとなっています。 エンコーダが存在しないため、長大な入力をその意味まで含めて処理するのには本来向かず、次に続く単語を予測することによる文章生成タスクに向いています。
しかしながら、非常にモデルサイズが巨大なものになると様々なタスクに対応できるようになることが分かっており、ChatGPTでおなじみの「GPT」や世界最大のオープンソースモデル「BLOOM」にもデコーダモデルが採用されています。また機械翻訳に関しても、デコーダモデルで十分だという学説もあります。 モデルサイズによる性能への影響は、後述する「Scaling Law」という法則に従うことが知られています。
ここまで、3種類のTransformerモデルについて確認しました。LLMの能力やできることの限界は、どのモデルを選ぶかによって大いに決定されます。 LLMを構築する際には、目的となるタスクや予算を検討した上で、どのモデルを選ぶかを決定する必要があるのです。
エンコーダ・デコーダモデル | エンコーダモデル | デコーダモデル | |
---|---|---|---|
含まれるRNN | Encoder、Decoder | Encoderのみ | Decoderのみ |
得意なタスク | 機械翻訳、文章要約、質問回答 | 感情評価、固有表現抽出 | 文章生成タスク、その他様々(巨大なモデル) |
特徴 | 入力、出力ともに長文に対応 | 長めの文を分析可能 | 長めの文を出力可能 |
フューショット学習とゼロショット学習
先ほど、デコーダモデルではモデルサイズの大きさがタスクの処理能力に大きく関わると言いましたが、それは当然ながら他のモデルでも同様です。 ChatGPTのように極めて巨大なモデルを除けば、ほとんどのLLMではフューショット学習(Few-shot Learning)というメソッドを用いる必要があります。 フューショット学習では、プロンプト内で複数の例をこちらが提示して、そのルールに従う形でタスクを行わせることになります。
少々面倒にも思えますが、小~中規模のLLMではこういった入力の仕方をしてあげないと思うように動作してくれません。 こちらの画像では翻訳タスクが例示されていますが、その他のタスクでもいくつかの例を提示することが有効になる場合は多いです。 このように、入力の仕方によってLLMの性能を最大限に引き出してあげる方法のことを「プロンプトエンジニアリング」と呼びます。 モデルサイズが少ない場合、プロンプトエンジニアリングによって見かけの性能をある程度高めることができます。
一方、モデルサイズが大きいデコーダモデルなどでは、一切の例示がなくてもタスクを行うことが可能になる場合もあります。 これをゼロショット学習(Zero-shot Learning)と呼びます。
ChatGPT、ことにGPT-4のような大規模なLLMにおいては、多くの方が意識せずにこの使い方をしていると思いますが、LLMにとってこれが一段と高度なタスクであることは確かです。 そのため思うような回答が得られない場合にはフューショット学習のメソッドを試してみても良いでしょう。
ちなみに、近年の研究ではGPT-3に対するプロンプトに「Let's think step by step(一歩ずつ考えよう)」または「深呼吸をして、この問題に一歩ずつ取り組もう」という呪文を追加するだけで、ゼロショットの精度が大幅に向上することが知られています。この原理は完全には明らかになっていませんが、「Optimization by PROmpting(OPRO)」と呼ばれるれっきとした研究対象であり、便利な呪文として覚えておいても良いかもしれません。
モデルサイズの効果:Scaling Law
ここまで、モデルサイズが大きくなることで性能が上がるという内容を繰り返し書いてきましたが、具体的にどのように性能が向上するのでしょうか。
実のところ、この性能向上は、Scaling Lawと呼ばれる法則に従っています。 Scaling Lawによれば、Transformerモデルの性能はたった3つの変数によって決定されます。 その3つとは、パラメータ数、データセットのサイズ、そして計算量(Compute)です。 これらの変数を増加させることによって、モデルによる予測と実際のデータの誤差=損失(Loss)が指数関数的に減少していくことが分かっています。 この法則がどの程度まで適用されるのかという有効範囲は現時点でまだ見つかっておらず、膨大な計算資源とデータを用意できるモデルプロバイダが圧倒的に有利な環境となっています。
さらなる機能の追加
いくらモデルサイズやデータサイズが大きくても、LLMの基本機能だけでは難しいこともあります。例えば、モデルが知らないことを質問された時です。
「石川啄木の好んだタバコの銘柄はなんですか?」
石川啄木はタバコに関する句を詠んでおり喫煙者であったことが推測されますが、愛用していた銘柄については資料がなく、LLMにとっても未知の事柄であるはずです。 このような場合、LLMは理想的には学習したデータから見込みの高い文章を生成するのではなく、「知らない」と返すべきです。 しかしながらこのような挙動は、LLMの基本システムだけでは実現することができません。
また、例えばこんな質問も想定されます。
部屋の中には鳥が40羽います。そのうち半数が鳩で、鳩の4割が黒いです。部屋の中に黒い鳩は何羽いますか?(答え:8羽)
このような算数・数学の問題も、文章をベクトル化して処理するLLMの基本システムだけでは対応できません。 これらのような入力に対応できるようにするために、様々な追加インフラが開発されています。 追加インフラにはAmazon Web Services上で利用できるものや、オープンソースで公開しているものもあります。
また、通常の教師あり学習とは異なる、RLHFと呼ばれる手法によってモデルをトレーニングすることによって、人間の意図に沿った挙動に近づけることも可能です。 我々が享受できる「知らないことを知らないと言えるAI」は、そういった工夫があってはじめて成り立つのです。
教養としてのAI学
今回は大規模言語モデル(LLM)にできること・できないことについて紹介しました。
LLMは近年のトレンドでもありますが、その性能を正しく理解している人は決して多くはありません。 LLMの根幹は、基盤モデルと呼ばれる、大量のデータによって訓練されたAIニューラルネットワークです。しかしながらLLMは基盤モデル単体でその性能を発揮するだけでなく、画像生成AIや音声認識AIなど、さまざまな別のAIと連携することでさらに複雑なタスクをこなすことが可能になります。
漫画『鉄腕アトム』や『ドラえもん』で空想された、人間のような心を持ったAIが登場するのはまだ先のことかもしれませんが、人間とAIが手を取り合ってモノづくりする時代は到来しつつあります。 現状のLLMは、人間ならばしないようなミスをしたり、人の目から見て不自然な内容を出力したりすることがまだあります。しかし、その点を加味しても、人間がやると何十時間もかかる作業を数分のうちにこなせるなど、さまざまな場面で人間にとって代われる可能性を持っています。
それはよく懸念されているような「人間がAIに仕事を奪われる」ということではありません。むしろ人間が行わなくても良い作業をAIに任せ、人間はよりクリエイティブな業務に専念できるという形になるのが理想形だと私は考えています。
そんな時代に向け、AIに上手に命令して、自分のアイデアややりたいことを実現するスキルをITエンジニア以外の方が身につけておくことには大きな意味があるように感じています。 そのために、教養としてのAI学として、LLMついて勉強してみるのはいかがでしょうか。
最後に
冒頭でも触れましたが、私のいるチームでは、AI技術をエンタメ創出に活かすべく様々な可能性を模索しています。 先端技術を活かして一緒にエンタメの未来を作っていきましょう!