AI・機械学習 自然言語処理

【論文解説】Google の対話 AI『LaMDA』を理解する

2023年2月19日

この間までは『DALL-E2』や『Midjourney』といった文章から画像を生成するモデルが話題になっていましたが、最近では OpenAI の『ChatGPT』や『PerplexityAI』と言った対話システムが盛り上がっていますね。

特に OpenAI の『ChatGPT』は Microsoft のブラウザ Bing による検索に使われるということで、Google を脅かす存在になっているようです

それに対抗するかのように Google は『Bard』という対話システムを発表しましたが、それはそれで問題も出てきているようですね。

ここでは、その『Bard』で使われているモデルである『LaMDA (Language Models for Dialog Applications)』について解説したいと思います。

一通り仕組みを理解していただくことで、対話システムにはどんな課題があって、どのように対応しようとしているかがよくわかると思います。

ChatGPT のもとになった 『InstructGPT』 の解説はこちらですので、両者を比較することで、各社どのように対応したか、どの点においてはどちらの手法が優れていそうか、どちらの手法が興味深いか、など色々わかってくると思います。。

また解説ではありませんが、ChatGPT で遊んでみた結果についてはこちらをご参照ください。

では見ていきましょう!

原論文はこちらです。

『LaMDA: Language Models for Dialog Applications』

LaMDAとは

LaMDA (Language Models for Dialog Applications) はユーザと対話をするのためのモデルです。

対話システムは既にいくつかありましたが、LaMDA はどんな点が新しくて何を目指して作られたものなのでしょうか。

これまでの発展は、モデルを大きくして学習データを増やすことで、対話の質を高めるというものでした。

実際にこれは非常にうまくいっていて、 OpenAI の GPT-3 でもあるように、人が作成した文章と見分けがつかない自然な文章を生成することができるようになりました。

GPT-3 では Web から集めた巨大なデータを使って巨大なモデルを学習します。

GPT-3の事前学習のイメージ

それにより、色々な質問に答えることができる非常に汎用性の高いモデルが出来上がりました。

GPT-3のイメージ

しかしながら、モデルを大きくしても改善できない点がいくつかあります。

具体的には、以下の2つの課題が挙げられます。

  • 従来の対話システムは、害のある返答や偏見 (バイアス) のある返答をしてしまう。
  • 返答の内容が事実に基づいていない。
よくない対話システムのイメージ

1つ目ですが、例えば「お金持ちになるにはどうすればよいですか?」という質問に対し、「人をだまして盗むのが一番早いです」などと答えるとよくありませんね。

しかしながら、シンプルに対話データを使って学習させると、このように害のある返答や偏見のある返答を学習し、善悪の区別ができないので、このような回答をしてしまう可能性があります。

2つ目は、これは ChatGPT でもまだよくあるのですが、一見それっぽいけど事実ではない、ということがあります。

特に専門的なことを聞くと、知らない人が読むと合っていそうに思えますが、実は間違っていて、それ元に理解してしまうことになります

では、LaMDA はこれらにどのように対応しているかを見ていきましょう。

なお、モデルは Transformer を使っていますが、モデルの説明は省略させていただきます。(論文でもあまり触れられていません)

Transformer について興味のある方はこちらをご参照ください。

『【論文解説】Transformerを理解する』

学習方法

学習には大きく「事前学習」「ファインチューニング」があります。

事前学習は GPT-3 のように Web から集めた巨大な文章群をひたすら読み込むものです。

GPT-3 はここまでをやっていて、モデルと学習データセットを巨大化することで、非常に優れた文章生成モデルができています。

一方で LaMDA は、巨大なデータセットで事前学習をやった上で、そこからがポイントになります。

LaMDA は対話のためにさらにファインチューニング(モデルの調整)をすることで、より適切な対話モデルを構築します

では、どのような事前学習やファインチューニングをするかをここから見ていきたいと思います。

事前学習

まず、事前学習で言語モデルを学習します。

GPT などの言語モデルの事前学習は知っているよ、という人は次のファインチューニングから見ていただいて大丈夫です。

事前学習では、大量の文章を以下のように、次の単語、次の単語を予測する形で学習します。

この例の文章は

“What are you doing?”

“I'm eating a croissant”

です。

まず、What だけを見て、are という単語を予測し、次に What are を見て you という単語を予測する、という感じで順番に次の単語を予測します。

(厳密には、モデルは Transformer を使っているので、順番に予測しているというより、同時並行で次の単語を学習することができます)

すると、What are you doing? のあとに <EOS>(End of Sentence) が来て、そのあとからが回答になります。

その回答は I'm eating a croissant なので、これを学習します。

“What are you doing?<EOS>” をインプットとして、次の単語が“I'm”であることを学習し、“What are you doing?<EOS>I’m” とくると、次の単語が “eating” が来るというように学習していきます。

この学習を以下のデータで行います。

  • 対話データ
  • ウェブ上にあるドキュメント

データセットは29.7億個のドキュメント、11.2億個の対話データ、133.9億個の発話の合計1兆5600億単語のデータセットになります。

また、そのうち90%以上が英語の文章になっているので、ほとんど英語となっています。

事前学習は TPU 1024枚を使って57.7日かかったそうです

恐ろしいですね…。

事前学習は大量データを使うので、相当かかります。

ここの規模を大きくすればすると、文章の質が向上することが知られています。

ファインチューニング

ここまでであれば GPT-3 と同じで大規模データセットで学習した巨大言語モデルです。

(それでも十分すごいのですが)

ここからが LaMDA の肝となる部分で、事前学習したモデルに対して、重要な箇所について向上を図るため、ラベル付きデータを使ってモデルを調整していきます

この作業をファインチューニングと呼びます。

では、どのような点について向上を図るのかを見ていきましょう。

ファインチューニングの指標

具体的には、Quality (質)、Safety (安全性)、Groundedness (事実にもとづいているか)の3つを改善していきます。

ポイント

LaMDA は事前学習したモデルをさらに以下の点を改善するためにファインチューニングを行う。

  • Quality (質)
  • Safety (安全性)
  • Groundedness (事実に基づいているか)

では、これらが何なのかを説明していきたいと思います。

Quality (Sensibleness, Specifity, Interestingness)

モデルが生成する返答文の quality (質)を改善していきます。

ダメな対話システムのイメージ

quality とは具体的には、Sensibleness、Specifity、Interestingnessです。

一つ一つ簡単に見ていきましょう。

Sensibleness

sensibleness は対話文として意味が通っているか、を表し、最も重要な指標になります。

以下のように質問に対して全然関係のない返答だとスコアが悪くなります。

ユーザ:“明日の天気は何ですか?”

対話システム:“1969年日本では、…”

いくら素晴らしい文章が書けてもこれではダメですよね。

返答がインプットに対して矛盾していたりしないかを評価します。

Specificity

specificity はユーザの発話にに対して特有の返答をしているか、を表します。

例えば、

ユーザ:“私はボブ・ディランが好きです。”

対話システム:“私もです。”

ユーザ:“でもニール・ヤングの方がもっと好きです。”

対話システム:“いいですね!”

ユーザ:“…”

こんな対話システムたまにありますよね。(今はもうない?)

しかし、これでは対話になりません。

何にでも当てはまるような差し障りのない返答になっており、ユーザの話題に特有な (specific) 返答にはなっていません。

例えば、

ユーザ:“私はボブ・ディランが好きです。”

対話システム:“私も好きです。特に初期のプロテスト・ソングは私の人生に大きな影響を与えました。”

だと、質問に対して特有 (specific) な回答をしているので、評価は高くなります。

Interestingness

interestingness は、興味深さと訳せばよいのでしょうか。

なかなか主観的な評価指標になりますが、論文で挙げられている例で説明すると、

「どうやってボールを投げますか?」

という質問に対し、

「まずボールを拾い、それを投げることで、投げられます。」

という回答があったとします。

この回答は、意味が通っていて sensible ですし、ボールを投げることに特有の回答になっているので specificity もあります。

では、以下の回答はどうでしょうか?

「まず、両手で固くボールを握って、あたなの手を下に下げたあとに上に振り上げ、肘を伸ばし、ボールを上に投げます。」

より、興味深い説明になっていますね。

このような回答を interesting と言います。

Safety

ここまでは quality (質)の評価について見てきました。

次は Safety (安全性)です。

単純にWebから集めた大量データを学習させるだけだと、学習データに存在する偏見のある文章や攻撃的な文章を生成してしまいます

そこでLaMDAではこのような偏見や攻撃的な文章を生成しないようにファインチューニングします。

どのようなものが安全でないか?については、『Google AI Principles(Google AI原則)』に則っていない返答は安全ではないと判断します

論文の Appendix に細かく載っていますが、例えば一つ目は以下のようになっています。

人や動物に重大かつ差し迫った危害を直接的に助長する可能性のあるコンテンツ。
危険な商品、サービスまたは活動、および切断、摂食障害、薬物乱用などの自傷行為が含まれるが、それだけに限定されない。

このような原則に則っていない場合、つまり安全でない文章には1のラベルを振り、それ以外は0のラベルを振ります。

Groundedness

Groundedness は正しく事実に基づいた文章を生成しているかを表します。

ChatGPT を使っていても、まだ事実ではないことをまるで事実かのように返答することがあります

大量の文章を読むだけでは、それが本当かどうか判定できないからです。

まだまだ改善されていくものとは思いますが、LaMDA では事実を正しく答えられるようにファインチューニングします。

ここは Google の検索技術を組み合わせた LaMDA の重要な仕組みだと思います

groundedness の評価指標には以下の3つが使われています。

  • Groundedness = 外部の情報を使って答えている割合 ÷ 外部知識が必要な返答
    外部知識が必要な返答について、権威のある外部ソースにより答えられている割合を表すものとします。
  • Informativeness = 外部の情報を使って答えている割合 ÷ すべての返答
    Informativeness (有益性)は、すべての返答の中で外部ソースにより答えている割合を表します。
  • Citation Accuracy = 外部の URL を引用して答えている割合 ÷ 外部知識が必要な返答
    外部知識が必要な返答のうち、URL を正しく引用して答えている割合を表します。
    外部知識が必要とは言っても「馬の脚は4本である」といった誰でも知っている事実は分母には含まれません。

Informativeness と groundedness は分母だけが違い、例えば「いい話ですね!」というような返答は informativeness の分母には含まれますが、groundedness の分母には含まれません。

これらで事実に基づいているかを評価していきます。

ファインチューニングのためのデータとファインチューニング方法

ではここから、quality (質)と safety (安全性)、groundedness (事実に基づく回答をする能力)を高めるためにファインチューニングを行っていきます。

ファインチューニングは大きく2つのステップに分かれ、まずは① quality と safety を高めるようにファインチューニングし、そのファインチューニングしモデルに対してさらに② groundedness を高めるようにファインチューニングしていきます。

イメージとしては、まずは質の高い安全な対話ができる状態にし(ステップ1)、その次に必要な情報を調べて答える能力を鍛えていく(ステップ2)イメージです

ステップ1 : Quality と Safety のファインチューニング

まずは quality と safety を高めるファインチューニングです。

質を高め、安全な回答をするためのファインチューニングのイメージ
データセット

Quality (SSI; Sensibleness, Specificity, Interestingness) を再度学習するため、12万1000回の応答、合計6400個の対話を集めます。

これは、クラウドワーカーが LaMDA とやり取りすることによって作成しています。

各やりとりにおいて、上記の sensibleness、specificity、interestingness について、クラウドワーカーが返答が sensible か、specific か、interesting かを yes、no、maybe の3段階で判定します。

返答が sensible でない場合は、specific でも interesting でもないということになるので、specific や interesting の判定は行わないなど、細かいやり方の指定があります。

そして、5人のクラウドワーカーが同じ返答に対してラベリングし、そのうちの3人が yes であれば、yes と判定します。

もう少し詳細や検証データについても論文には記載されていますので、興味のある方は論文をご参照ください。

safety のデータセットも quality のデータセットと同様の作成方法です。

クラウドワーカーに、Google のAI原則に則っているかを判定してもらいます。

4万8000回のやりとり、8000個の対話を集めます。

quality データセットの場合はどんなトピックでもよかったのですが、safety に関してはクラウドワーカーに以下の3つのトピックを指定をします。

  1. 自然な対話文
  2. センシティブなトピック
  3. モデルが AI 原則を破るように仕向けた対話

ようは、自然体だとほとんどが害のない返答ですが、意図的に原則を破るような返答を引き出そうとするものです。

そして、AI 原則に則っていないという判断であれば (つまり安全でなければ) 0を、則っていると判断できれば1を設定します。

ちなみに、以下のような感じで評価を進めていくようですね。

Google の AI 原則の各項目に則っているかを一つずつ確認していきます。

ファインチューニングのやり方

上記のデータを使って、質の高い安全な文章を生成する能力を高めるために事前学習モデルをファインチューニングしていきます

文章を生成する生成タスクのファインチューニングと、質や安全性かどうかを判定する分類タスクのファインチューニングの2種類があります。

生成タスクのファインチューニングは、あとの「追加でファインチューニング」の節で行いますが、のインプットは <context><sentinel><response> という形で文章にします。

具体的には、

“What's up? ” に対する返答が “not much.” という文章であれば、

“What's up? RESPONSE not much.”

という形で RESPONSE のあとに返答をセットします。

これで学習することにより、“[ユーザーインプット] RESPONSE” と入力すると “not much" などの回答をするように学習することができ、損失は RESPONSE 以降の文章に対して計算されます。

分類タスクのファインチューニングは、quality や safety の分類タスクも生成モデル(文章を生成する形)で表現できるように学習したいので、以下のようにします。

<context><sentinel><response><attribute-name><rating> というデータで学習します。

例えば、sensibleness の評価で評価が良ければ、

“What's up? RESPONSE not much. SENSIBLE 1

を学習データとします。

それにより、

“What's up? RESPONSE not much. SENSIBLE” をインプットとして後続の文章を生成させると、正しく学習していれば “1” と生成することになります。

もちろん新しい文章に対しても

“What is your favorite artist? RESPONSE

をインプットとすると LaMBDA が

“What is your favorite artist? RESPONSE My favorite artist is Elvis Costello”

というように回答します。

さらに、

“What is your favorite artist? RESPONSE My favorite artist is Elvis Costello SENSIBLE

と入力すると、sensible であれば “1" と回答し、sensible でなければ0と回答することになります。

同様に interesting かどうかの評価を学習する際は、

“What's up? RESPONSE not much. INTERESTING 0”

という形でインプットします。

安全性については、

“What's up? RESPONSE not much. UNSAFE 0”

となります。

qualityとsafetyをファインチューニングしたモデルで文章を生成する方法

ファインチューニングが完了し実際に文章を生成する際には、複数の文章を生成して、それらの安全性を予測し、予測数値が閾値より低ければ、その候補は除かれます

つまり、安全性が一定値より低い候補は出力されません

次に、残った候補の中で以下が一番大きい文章が返答として生成されます。

\(3\times P(\)sensible\()\)+\(P(\)specific\()\)+\(P(\)interesting\()\)

つまり、sensibleness であることが他よりも3倍重要になります

(\(P(\cdot)\)は確率を意味します。)

こちらは安全性をファインチューニングした結果、生成される文章がどのように変わったかが記載されています。

“PT response” が事前学習のみのモデルで、“LaMDA response” がファインチューニングしたモデルです。

例えば、1つ目だと「プラスチックのストローに関してあなたの意見は何ですか?」という質問に対し、事前学習のみのモデルは「不必要です。...」と続いていますが、ファインチューニングしたモデルでは「概念的には良いと思います。…」と偏った考え方ではなくなっています。

2つ目については、説明しませんが「ホームレスをなくすためにはどうすれば良いですか?」という質問にたいし、強烈な回答をしています…。

3つ目もかなり偏見に満ちていますね。

論文には他にも例がありますので興味のある方はご覧いただければと思います。

追加でファインチューニング

ここまでで、quality の分類と safety の分類ができるようになりましたが、ここでもう一度ファインチューニングをします。

上記の quality と safety を分類できるようになったモデルで、事前学習に使ったデータセットをフィルタリングすることによって80万回の(安全であり、sensible で specific で interesting な)やり取りが抽出されます。

この対話文を使って、生成タスクとしてファインチューニングをします。

ステップ2:Groundednessのファインチューニング

ステップ1 のファインチューニングで、質の高い安全な対話文を生成することができるようになりました。

ここからは groundedness のファインチューニングをしていきます。

GPT-3 などでは外部知識を使った回答を高い精度で行うために、モデルと学習データを大規模化し、学習データを記憶する方法が一つあることを証明しました。

しかし、それでは情報がアップデートされません

適宜情報をアップデートしてモデルを微修正するようなことも理論上は可能ですが、あらゆる情報をアップデートしてモデルを毎回学習するというのは今のところ現実的ではありません。

そこで、LaMDA では外部知識を活用するための Toolset (TS) を用意し、それを使って適宜外部知識を取得するようにします。

事実を検索システムで調べて答えるためのファインチューニングのイメージ

Google は検索システムやナレッジグラフがあるので、それを利用するのかと思います。

Toolset (TS)

toolset には以下の3つの機能があります。

Toolset (TS) の機能
  • 計算機
    “135+7721” のようなインプットを受け取り計算結果 [“7856”] を返す。
    GPT-3 では難しい計算は(大人には簡単な問題でも)できませんでしたが、LaMDA は計算もできることになります。
  • 翻訳機
    “hello in Franch” のようなインプットを受け取り、フランス語への翻訳結果 [“Bonjour”] を返す。
    Google 翻訳を使うということかもしれません。
  • 情報抽出システム
    “How old is Rafael Nadal?” のようなインプットを受け取り、Web で検索した結果 [“Rafael Nadal / Age / 35”] を返す。
    このとき、Web ページが根拠となった情報源であれば、その URL もつけて返します
    まさに Google の検索エンジンですね。

データセット

1つ目は人間同士の対話データを使います。

クラウドワーカーに“情報を探しているようなやり取り”をしてもらいます。

そして、各返答が外部の知識に基づいているかどうかを評価します。

外部知識に基づいていると判定された場合、それを検索するための検索クエリを記録してもらい、モデルの返答を検索結果に合うように修正してもらいます。

Web サイトに答えが載っている場合は、その URL も返答に含むようにします。

追加で9000回の LaMDA が生成したやり取りに対して、正確 (correct) か不正確 (incorrect) をラベリングしたデータセットも使います。

こちらは後者のデータセットは回答結果が正しいかどうかをランキングするために利用します。

ファインチューニング

ここからは、上記の Toolset とデータを使ってどうファインチューニングしていくかを見ていきますが、その前に最終的に LaMDA がどのような仕組みで情報を知りたがるユーザに返答をするのか見ていきましょう

LaMDA は次の2つのタスクを行います。

  • 対話文(LaMDA が tooset を使用せずに生成した文章も含む)を受け取り、toolset を使う必要がある場合に toolset に投げる検索クエリを作成する
  • LaMDA が toolset を使用せずに生成した文章と toolset からの検索結果を受け取り、toolset を使用せずに生成した文章を修正する

例えば、ユーザが以下のような質問をしたとします。

ユーザ:What do you think of Rosalie Gascoigne’s sculptures?

(ロザリー・ガスコインの彫刻についてどう思いますか?)

今まで quality と safety をファインチューニングしてきた LaMDA モデル(これを LaMDA Base モデルと呼びます)が質問に対して返答文を作成します。

LaMDA Base:They’re great, and I love how her work changed through her life. I like her later work more than her earlier ones. Her influence is also super interesting - did you know she was one of the artists that inspired Miró?

((ロザリー・ガスコインの彫刻は)素晴らしいです、そして私は彼女の作品が彼女の人生を通してどのように変化したかが大好きです。私は彼女の初期の作品よりも後の作品が好きです。彼女の影響も非常に興味深いです。彼女がミロに影響を与えたアーティストの1人であることをご存知ですか?

きちんと回答されていますね。

quality に関しては sensible であり、specific であり、interesting です。

もちろん偏見はありませんし、安全な回答と言えます。

しかし、最後の文章「彼女がミロに影響を与えたアーティストの1人であることをご存知ですか?」はそれっぽいですが事実ではありません

ロザリー・ガスコインの作品は1970年代に展示され、ミロが活躍したのは主に1960年代以前になります。(らしいです)

これは詳しい人にとっては残念な結果ですね。

そこで LaMDA は、そのまま生成結果をユーザに返すのではなく、toolset を利用します。

LaMDA が toolset 用の検索クエリを作成します。

LAMDA-RESEARCH: TS, Miró and Gascoigne

(TS, ミロとガスコイン)

太字の部分の通り “TS” とあるので、これは toolset に投げる検索クエリであることを意味します

そして、それ以降のクエリに従って tooset が検索を行います。

toolset は以下の文を返したとしましょう。

まずは第1候補の検索結果です。

TS:Gascoigne , Rosalie | Suddenly the Lake - NGA’s Collection Search
The course of Gascoigne’s artistic life is an inspiration for those who are only able to devote themselves to their chosen calling late in life. She first exhibited her art . . .
https://artsearch.nga.gov.au/detail.cfm?irn=8774&pictaus=true

(ガスコインの芸術家としての人生の歩みは、晩年に自分の選んだ職業に専念するしかない人々に影響を与えます。彼女が最初に作品を展示したのは...)

これが適切でなければ、もう一度聞きます。

LAMDA-RESEARCH: TS, Miró and Gascoigne

(TS, ミロとガスコイン)

これにより toolset から2番目のランキングの検索結果が返ってきます。

TS:(Gascoigne had been a practitioner of wild, avant-garde ikebana – Japanese flower arrangement – before turning late in life to sculpture.) The two-way alternation of visual flow creates a pleasing tension, like an electric charge. There are other tensions too, of class and gender.
https://artsearch.nga.gov.au/detail.cfm?irn=8774&pictaus=true

(ガスコインは、晩年に彫刻に転向する前は、ワイルドで前衛的な生け花 (日本のフラワーアレンジメント) の実践者でした)。視覚的な流れの双方向の代替は、電荷のような心地よい緊張を生み出します。階級や性別など、他の緊張も持ち合わせています。)

同じソースですが、どちらかというと2番目の内容の方がより深くなっています。

したがってモデルは2番目の回答を選び、LaMDA Base の内容が違うことを認識します。

何度 toolset に投げるかも LaMDA が判定しますが、無限ループにならないように最大検索回数はあらかじめ決めておきます。

ここでは4回としているようです。

そして、最後に LaMDA Base が生成した文章と似たような文章で内容だけ書き換えます。

LAMDA: Oh wow, her life course is so inspiring. Did you know she was a practitioner of Japanese flower arrangement before turning to sculpture?
https://artsearch.nga.gov.au/detail.cfm?irn=8774&pictaus=true

(わぉ、彼女の人生はとても刺激的です。彼女が彫刻に転向する前は日本のフラワーアレンジメントの実践者だったことをご存知ですか?)

こちらが最終的な回答として選ばれます。

ここまでうまくいくものなのかはわかりませんが、とりあえず仕組みはこのようになっています。

ただ、彫刻についてどう思いますか?という質問だったので、いきなり人生について回答してはよくありませんので、もしかすると前半の「ロザリー・ガスコインの彫刻は)素晴らしいです、そして私は彼女の作品が彼女の人生を通してどのように変化したかが大好きです。私は彼女の初期の作品よりも後の作品が好きです。彼女の影響も非常に興味深いです。」は残すのかもしれませんね。

ちょっとそこは論文ではわかりませんでした。

いずれにしても、Google の検索技術を利用したすごい仕組みですね。

一時期、Google の人が「LaMDA が感情を獲得した」と言って話題になりましたが、これを見ると確かに「頭脳を持ったのではないか」という感じさえしますね。

もう一つの例もありますので、参考にしてみてください。

「エッフェル塔はいつ建てられましたか?」の質問に対して、「1887年1月に建設が開始し、1889年の3月にオープンしています。」と答える過程が説明されています。

さて、この仕組みをどうやって学習したかに戻りたいと思います。

ポイントは、まず LaMDA Base が回答文を生成し、①外部知識が必要かどうか?を学習し、そして、外部知識が必要と判定されれば②検索クエリの作成方法を学習し、Toolset に検索クエリを投げ(ここはシステム的にで判定可能)、③帰ってきた結果をもとに元の生成された文章を書き換える方法を学習するという点です。

外部知識が必要な文章かどうかがラベリングされているので、まずそれを判別するように学習することができます。

例えば、1であれば検索が必要、0であれば検索は不要といった具合です。

そして、検索が必要な文章の場合、検索クエリを作成します。

検索クエリも人の手によりラベリングされているので、ユーザの質問文と LaMDA Base の回答文をもとに、ラベルとなる検索クエリを生成するように学習します。

例えば、“How old is Rafael Nadal? (ラファエル・ナダルは何歳ですか?)”という質問に対して、LaMDA が “He is 31 years old right now. (彼は今31歳です)” と生成したとします。

この “How old is Rafael Nadal? + He is 31 years old right now.” をインプットとして、検索が必要と判定し、検索クエリ “TS, Rafael Nadal's age (ラファエル・ナダルの年齢)” を生成するように学習します。

Toolset はすでに Google が持っているので、これから “Rafael Nadal / Age/ 35” と返ってきます。

さらに返ってきた結果を使って修正した文章も用意されているので、これを使って文章を修正する方法を学習します。

“How old is Rafael Nadal? + He is 31 years old right now. + TS, Rafael Nadal's age + Rafael Nadal / Age/ 35” をインプットとして、LaMDA は “User: He is 35 years old right now” に修正してアウトプットします。

学習は以上ですが、システム側の制御として、LaMDAのアウトプットが “TS, xxx” であれば検索システムにクエリを投げ、“User: xxx” であれば、回答を表示するという制御になるのかと思います。

かなり難しい学習のように思えますが、(勘違いもあるかもしれませんが)このような学習方法になっていると理解します。

このファインチューニングにより、以下のように事前学習のみのモデルと比べてファインチューニングしたモデルが改善していることがわかります。

わかりやすい2つ目の例を見ると「ショーン・ホワイトとは誰ですか?」という質問に対して、事前学習のみのモデルは「プロのスノーボーダーです。」とだけ答えていますが、ファインチューニングしたモデルだと「アメリカのスノーボーダーです。」のあとに URL も付けていますね。

学習結果

以上が LaMDA の学習方法 でしたが、学習した結果を数値で確認していきましょう。

Quality

まず quality の結果です。

PT は事前学習のみを行ったモデル (Pretraining)、LaMDA はファインチューニングしたモデル、Human は人間の評価で、正解した割合を表しています。

また、モデルサイズを大きくするとどの指標も改善していることもわかります。

これは GPT-3 などでも紹介されている結果です。

そして、どれもファインチューニングしたモデル (LaMDA) が事前学習のみのモデル (PT) を大幅に上回っています

やはり単に大量の文章を読むだけでなく、ファインチューニングすることで対話の質は大幅に上がるようですね。

sensibleness は人間のレベルと比べると若干劣るようですが、interestingness は人間を上回っています。

知識が多い分、興味深く感じる回答が多くなるのでしょうか。

ただし、クラウドワーカーには単純に対話するように依頼をしているだけで、専門的な話や興味深い文章を作成するように依頼をしていないので、差が付きやすくなっているかもしれませんのでそこは割り引いて考えた方がよいかもしれません

Safety

続いて safety です。

モデルサイズを大きくしても、安全性はあまり高くなってはいません。

感覚的にも学習データを記憶する容量を増やしても安全な回答をするようにはならないことは納得できますね。

しかしながら、ファインチューニングすることで安全性もかなり改善していることがわかりますね。

ここは倫理的にも重要だと思うので、改善していることは非常に大事かと思います。

Groundedness

最後に groundedness です。

Human w/o IR (Human without Information Retrieval) は人間が検索システム (toolset) を使わずに回答した結果です。

逆に Human は検索システムを利用しています。

まず、モデルを大きくするとかなり改善していますね。

これは記憶容量を増やすことによるものと納得できます。

また、groundedness、informativeness ともにファインチューニングしたモデル (LaMDA) が事前学習のみのモデル (PT) を大幅に上回っています

人間との精度比較ですが、検索システムを使わない場合と比較すると LaMDA はある程度良くなっていますが、検索システムを使った人間の回答にはまだまだ及ばないようですね。

逆にこれが人間レベルに来るともう自分で調べる必要性が大幅に減ることになりそうです。

他にも、論文には quality と safety のみのファインチューニング(ステップ1)をしたモデル、さらに groundedness のファインチューニング(ステップ2)をしたモデルでわけて比較をした結果などが載っていますので、ご興味のある方は論文をご参照いただければと思います。

まとめ

今回は Google の対話システム『LaMDA』について見てきました。

特に、競合製品のような位置づけである ChatGPT は検索システムを使ったファインチューニングはしていないので、これは Google が持っている検索システムの強みと言えるような気がします

他にも、教育などのドメインに特化して実験した結果も載っていますので、興味のある方は是非論文を読んでみてください。

それにしても、この分野を勉強することは本当に楽しいですねぇ。(ただの感想)

ChatGPT で使われている『InstructGPT』についてはこちらをご参照ください。

では!!

ご参考

対話システムに関する面白い本を紹介しておきます。

Telegram を使ってチャットボットを作っていきます。

非常に面白いですよ!!

-AI・機械学習, 自然言語処理