ChatGPTはこれまでの対話システムと何が違う? 対話システムが有する知識、共感、個性を探る:対話システムの歴史から見たChatGPT(終)
ChatGPTを対話システムと見なし、これまでの対話システムで用いられてきた技術との違いを整理しながら、どのようにして人間のような自然で流ちょうな対話が実現できているのかを解説する本連載。最終回は、対話システムが有する知識、共感、個性について解説する。
今回のテーマは、対話システムが有する知識、共感、個性である。対話システムにタスクに関する知識や常識がなければ、利用者の役に立つ応答ができないのは自明である。対話システムが利用者に共感することは、対話システムの自然な応答を実現する上で重要な要素となる。対話システムに個性を持たせることは、利用者が対話システムに親しみを感じることにつながる。とりわけ、音声対話システムにおいては、昨今の音声合成技術の進展により、例えばNTTテクノクロスの製品「FutureVoice Crayon CustomVoice」[1]のように、合成音声に特定のキャラクターの個性を短時間に低コストで与えられるようになり、個性はますます重要な要素となっている。本稿では、対話システム、特にチャットbotの知識、共感、個性について、従来のルールベースと昨今の大規模言語モデルを取り上げる。
ルールベース
これまで取り上げてきた「ELIZA」[2]や「A.L.I.C.E.」[3]といったルールベースの対話システムでは、ユーザーからの発話への応答は、全てルールの中に記述されている、すなわち、ハードコーディングされている。対話を遂行するために必要な知識もまた、ハードコーディングされている。
例えば、第2回で解説したELIZAのルール1では、患者の状況を述べていると想定される“I am xxxxxx.”という発話が入力されたら“HOW LONG HAVE YOU BEEN xxxxxx”と応答して、患者が述べたその状況がどれくらいの期間継続しているのかを問診するための対話を行う、というような対話に関する知識が包含されている。
共感や個性についても同様に、これらもまた、ルールの中に埋め込まれている。例えば、ELIZAの対話例には“I AM SORRY TO HEAR THAT YOU ARE DEPRESSED”という発話が見られるが、これは患者への共感を表すための発話である。また、DOCTORというセラピストを模倣したルールが記述されているので、記述されたルールには少なからず模倣されたセラピストとしての個性が包含されていることになる。
A.L.I.C.E.で用いられている「AIML」は、チャットbotの振る舞いを記述するための、XMLをベースとしたマークアップ言語である。NTTドコモはこれを「xAIML」[4]として拡張し、拡張した機能の一つに外部サービスを利用するための各種APIを用意している。各種APIには天気検索や乗り換え検索、Wikipediaからの情報取得などがあり、さらに外部にサーバを立てることで独自のコンテンツを利用することが可能になっている。この拡張により、ルールベースの対話でありつつも、知識源をルールの外部に求めた対話を実現している。
また、チャットbotには人間らしく振る舞わせてより親しみを持たせるために、チャットbotの発話に個性(キャラクター性)を持たせるよう取り組みがなされてきた。ルールに記述されている発話の文末表現を、対象とするキャラクター性が反映されるように書き換える手法[5]がある。さらに、例えば「これはひどいや」が「こりゃひでえや」に変化するような音変化に着目し、小説やコミックのキャラクターの発話に表れる音変化表現のパターンを分類した報告[6]もある。音変化表現の分類では、表1に例示する出現頻度上位5位のパターンを含む137個のパターンが報告されている。
パターンの説明 | 音変化表現の例 |
---|---|
文末に長音が挿入される | 嫌だー |
助動詞「のだ(のです)」の全活用形において、語頭の「の」が「ん」に入れ替わる | (走る/)んだ、(走る/)んです |
「いる」の全活用形から語幹「い」が脱落する | (食べて/)φる |
ナ形容詞型の活用語のテ形の「で」+助詞「は」が「じゃ」に入れ替わる | 嫌じゃ(/ない) |
基本形の語幹末尾のア段音がエ段音に入れ替わり、活用語尾の「い」が「え」に入れ替わる | うるせえ |
表1 音変化のパターンの例([6]からの抜粋、編集) ※上記において、"/"は文節の区切りを、"φ"は文字の脱落を表す |
大規模言語モデル
BlenderBot
「Meena」[7]や「BlenderBot」[8]では、SNSの対話データ「Reddit」を用いてモデルを学習した。BlenderBotでは、Redditで学習したモデルに対してさらにファインチューニングすることで、モデルに知識や共感、個性が追加されている。ファインチューニングでは、知識、共感、個性を学習させるためのそれぞれのデータセットがそれぞれ用いられた。以下では、それらのデータセットの詳細を説明する。
1.Wizard of Wikipedia
知識を含むデータセットとして、その道に詳しい専門家「達人」の演者と好奇心旺盛な初心者「見習い」の演者の会話である「Wizard of Wikipedia」[9]が作成された。
Wizard of Wikipediaでは、「達人」は検索エンジンを使うことができ、発話したい内容に検索結果を取り込むことができる。一方、「見習い」は話題を深掘りしようとすることで対話が作成される。対話内容はWikipediaにリンクがある1365のさまざまな話題である。
「達人」は対話の各ステップで、対話の文脈に関連する知識のパッセージ集合にアクセスできる。直近の対話の2ターンに関連する上位7つの記事(最初の段落のみ)と、オリジナルの話題の記事(最初の10文のみ)が検索され、これらの記事がタイトルとともに「達人」に知識の文脈として提示される。
最終的に2万2311個(20万1999ターン)の対話が収集されている。対話の長さは平均して9ターンであった。以下に、話題とそれについての対話と、そこで提示されていた知識の例を示す(訳は筆者による)。
話題:アイスクリーム
達人:何てったってアイスクリームが好きなんです。フルーツとフレーバーのあるタイプが大好きです。あなたはアイスクリームはお好きですか?
見習い:私はどなたとも同じようにアイスクリームは大好きです。特にジェラート、外国のアイスクリームが好きです。
----------
知識:
アイスクリームは、一般的にスナックやデザートとして嗜好(しこう)される甘い冷凍食品です。
それは大抵牛乳やクリームといった乳製品から作られます。
……
ベーコン・アイスクリーム(またはベーコンエッグ・アイスクリーム)は、一般的に卵のカスタードにベーコンを加え、それを混ぜて凍らせることによって作られるアイスクリームです。
----------
達人:私もです。だけど、幾つか変わった組み合わせがあるんですよ。ベーコン・アイスクリームって聞いたことがありますか? そこではベーコンと卵のカスタードをアイスクリームの中に混ぜて凍らせるんです。
見習い:驚くべきことに、私はベーコン・アイスクリームにびっくりしません。それは私にとって興味をそそるものではありませんが、でも多分おいしいかもしれませんね……。
2. Empathetic Dialogues
対話における共感を表すデータセットとして、810人の異なる参加者による1対1の約2万5000個の対話を収集したデータセットEMPATHETICDIALOGUES[10]が作成された。話し手に与えられた感情の下で、話し手が特定の状況を想定し、それに応じて話し手が発話して聞き手が応答するという対話になっている。感情ラベルはポジティブとネガティブを幅広くカバーした32個である。対話の例を下記に抜粋する(訳は筆者による)。
ラベル:Afraid(恐怖)
状況:話し手はこの時こう感じた……
“夜に家の周りで物音が聞こえている。”
会話:
話し手:夜に家の周りで何か奇妙な物音が聞こえているんだ。
聞き手:あら、嫌だ。怖いわ。それ何だと思う?
話し手:分からない、そのことが私を不安にさせているんだ。
聞き手:それを聞いて気の毒に思うわ。あなたがそれを解決するのを手伝えたらいいんだけど。
ラベル:Proud(誇り)
状況:話し手はこの時こう感じた…….
“ついに職場で昇進しました! それまで長い間かなり一生懸命努力しました。”
会話:
話し手:今日職場でついに昇進したんです。
聞き手:おめでとう! そいつはすごい!
話し手:ありがとう! そのために最近しばらくの間努力していたんです!
聞き手:素晴らしい成果だし、自慢すべきですよ。
3. ConvAI2 dataset(PersonaChat)
個性を表現するためのデータセットとして、「ConvAI2 dataset」(PersonaChat)[11]が作成されている。
PersonaChatは、16万4356発話からなっている。クラウドワーカーが対になり、それぞれが与えられたペルソナ(キャラクター)を演じることで、話者の個性を含んだ対話のデータセットが作成されている。以下にPersonaChatの3つの特徴を示す。
(1)ペルソナの作成
クラウドソーシングで1155個のペルソナを作成している。1文は15単語以内となっている。以下にペルソナの例を示す(訳は筆者による)。
ペルソナの例:
私は砂浜が好きです。
私の父は車の販売代理店を持っています。
私はちょうど爪を切ったばかりです。
私は今ダイエット中です。
馬は私の好きな動物です。
(2) ペルソナの書き換え
ありふれた単語の重なりがモデルに有利にならないように、作成済みの1155のペルソナを別の表現にしたり、汎化(はんか)や特化によって書き換えられたりしている。以下は、上記のペルソナを書き換えた例である(訳は筆者による)。
書き換えられたペルソナの例:
私にとって、海辺で過ごす1日ほど素晴らしいものはない。
私の父は生計を立てるために車を売っている。
私は定期的に十分にくつろぐことが好きです。
私は体重を落とす必要があります。
私は馬のスポーツに夢中になっています。
(3)ペルソナによる対話
2人のクラウドワーカーをペアにして、彼らにランダムにペルソナを割り当てて、対話をさせることで、1万981個の対話(16万4356個の発話)を収集している。指示はわざとぶっきらぼうにして、単純に相手にチャットして互いに知り合いになるように依頼した。収集作業の最初の頃は、自分のペルソナについて多く話す傾向が見られたので、質問することと相手の質問に答えることを指示とした。対話はターンに基づき、1メッセージは15単語までとしている。メッセージにはペルソナの記述をコピーしないように指示し、そうした場合にはエラーを出した。対話の最低の長さを6から8ターンの間にランダムに設定した。以下に、2つのペルソナとそれを演じたクラウドワーカーによる対話例を示す(訳は筆者による)。
ペルソナ1:
私はスキーが好きです。
私の妻はもはや私を好きではない。
私は今年4回メキシコに行きました。
私はメキシコ料理が嫌いです。
私はcheetosを食べるのが好きです。
----------
ペルソナ2:
私は画家です。
私には4人の子どもがいます。
私は最近猫を飼いました。
私は運動のために散歩を楽しんでいます。
私はGame of Thronesを見るのがとても好きです。
----------
対話例:
ペルソナ1:やあ。
ペルソナ2:こんにちは。今日はご機嫌いかがですか?
ペルソナ1:いいですよ、ありがとう。あなたはどうですか?
ペルソナ2:とってもいいですよ、ありがとう。私は子供達とちょうどGame of Thronesを見ていたところでした。
ペルソナ1:いいですね。子ども達はお幾つですか?
ペルソナ2:私には4人いまして、10歳から21歳までなんです。あなたは?
ペルソナ1:私には今は子どもがいません。
ペルソナ2:それはポップコーンをあなたが独り占めできることを意味していますね。
ペルソナ1:そして今はCheetosもね。
ペルソナ2:いい選択ですね。あなたはGame of Thronesを見ますか?
ペルソナ1:いいえ、私はあまりテレビを見ないんです。
ペルソナ2:私はたいてい絵を描いているんですが、そのテレビ番組は大好きなんです。
これらの知識、共感、個性を含むデータセットを利用して、知識、共感、個性を対話の応答内容に反映させるように、BlenderBotのモデルがファインチューニングされた。後継の「BlenderBot2」[12]になると、知識を補うためのWeb検索や過去の対話内容を利用するための長期記憶を取り込むことで、対話の応答内容が改善された。そして「BlenderBot3」[13]では、モデルのパラメーター数の大幅な拡大(1750億個)とBlenderBot2で取り込んだWeb検索と長期記憶に加えて、表2に示す多くの機能(モジュール)を実現するために、モデルがファインチューニングされている。
モジュール | 入力 | 応答についての説明 |
---|---|---|
インターネット検索判定 | 文脈の最後のターン | 検索についての必要の有無を返却 |
インターネット検索クエリ生成 | 完全な文脈 | 検索クエリを生成 |
インターネット検索 | 検索クエリ | N個の文書を返却 |
知識応答生成 | 完全な文脈と検索文書 | 最終的な応答の基礎となるトークン系列を生成 |
関連エンティティ抽出 | 完全な文脈 | 応答の基礎となるエンティティを抽出 |
長期記憶生成 | 文脈の最後のターン | 記憶のトークン系列を要約、生成し長期記憶に保存 |
長期記憶使用判定 | 文脈の最後のターン+記憶の蓄積 | 記憶の使用について必要性の有無を返却 |
長期記憶使用 | 完全な文脈+記憶の蓄積 | 適切な記憶の返却(指定した文脈の長さに収まるよう記憶をサンプリングするなど) |
対話応答生成 | 完全な文脈+知識+記憶のトークン系列 | 与えられた文脈における会話の応答を生成 |
表2 BlenderBot3におけるモジュールとその入出力([13]から抜粋、編集) |
インターネット検索以外のモジュールは1つのモデルの学習により実現されており、モデルへの入力に対する各モジュールの識別は特殊トークン(special token)として表現されている。モデルは、質問応答や知識に根差した対話、オープンドメイン対話、タスク指向対話など、各モジュールの目的をカバーする多様なデータセットでファインチューニングされている。
BlenderBot3は、2022年8月に、一般の人々からのフィードバックを取り込むために、米国で一般公開された。しかしながら、ハルシネーション(でっち上げ)の問題が指摘されている[14]。
ChatGPT
一方、ChatGPTのベースモデルとなったGPTの事前学習では、大量のWebページやブックコーパスなどを知識源としている。OpenAIによれば、ChatGPTで利用されているモデルの「GPT-3.5 Turbo」は2021年9月までのデータから、「GPT-4 Turbo」は2023年12月までのデータから、それぞれ学習されている。逆に、ChatGPTはそれ以降の新しい情報を学習していないことに注意しなければならない。
GPTは、初めてリリースされたモデルから最新のモデルに至るまでに、パラメーターの数と学習データの量が急速に増大している。表3に、歴代のGPTのパラメーター数と事前学習における学習データ量を示す。GPT-4の情報は公開されていないが、既存のモデルを大きく上回っていると考えられる。
モデル | リリース年 | パラメーター数 | 学習データ量 |
---|---|---|---|
GPT-1[15] | 2018 | 0.12B | 4.5GB |
GPT-2[16] | 2019 | 1.5B | 40GB |
GPT-3[17] | 2020 | 175B | 570GB |
GPT-4[18] | 2023 | 未公開 | 未公開 |
表3 GPTのパラメーター数と事前学習における学習データ量の変遷 |
パラメーター数の増加と学習データ量の拡大により、GPTは対話に必要な知識だけでなく、共感や個性も獲得していると考えられる。さらに、インストラクションチューニング[19]によって、人間にとって好ましいと思われる応答を学習していると考えられる。
筆者は、前節で取り上げた文献を参考にしてハルシネーション(でっち上げ)を起こさないように留意しながらプロンプトを作成し、ChatGPT(GPT-3.5)が知識、共感、個性をどの程度備えているのかを検証した。知識、共感、個性を検証するそれぞれのプロンプトに従って生成された結果は、知識に基づいた対話や、相手に共感する対話、そして、個性を発揮する対話になっていることを確認できた。以下に、それらの対話例を示す。
終わりに
最終回となる今回は、対話システムの知識、共感、個性について解説した。初期の対話システムでは、これらはルールに埋め込まれていたが、外部の知識源を利用できるように発展していった。深層学習の時代になってからは、大量の学習データにより事前学習された大規模言語モデルに加えて、知識、共感、個性に特化したデータセットによるファインチューニングやインストラクションチューニングにより、知識、共感、個性を対話内容に反映させることができるようになってきた。
大規模言語モデルが学習しているデータはある時点までなので、それ以降のデータを回答に反映させることが難しい。また、公開されているデータしか学習していないため、公開されていない組織固有の情報を利用できないという問題点がある。
この問題に対しては、外部の知識源を利用するための「RAG」(Retrieval-Augmented Generation)[20]の進展により、大規模言語モデルが学習していない日々更新される情報や、組織に閉じた専門の知識に基づいて、対話することが可能になりつつある。また、利用者からのクエリに対して適切に検索される文書を大規模言語モデルに与えることで、RAGは大規模言語モデルが有するハルシネーション(でっち上げ)の問題に対しても有効に働くため、対話システムというアプリケーションにおいてもさらなる活用が考えられる。
本連載では、ChatGPTの対話能力に驚きつつ、対話システムの歴史からChatGPTを見ることで、対話システムへの入力を処理する言語理解や、出力となる応答文生成や、入力から出力までの対話管理、対話システムが有する知識、共感、個性に関する技術の変遷をたどってきた。ChatGPTの登場により近年急激に発展している大規模言語モデルは、これからもますます進化を遂げてわれわれをさらに驚かせてくれることだろう。
※記載されている会社名、サービス名および商品名は、各社の登録商標または商標です。
参考文献
[1]NTTテクノクロス, FutureVoice Crayon CustomVoice, https://www.futurevoice.jp/lineup/customvoice/
[2]Joseph Weizenbaum, ELIZA - A computer program for the study of natural language communication between man and machine, Communications of the ACM, Vol. 9, No.1, pp.36-45, 1966.
[3]Richard S. Wallace, The anatomy of A.L.I.C.E., In Robert Epstein, Gary Roberts and Grace Beber, editors, Parsing the turing test: Philosophical and Methodological Issues in the Quest for the Thinking Computer, pp.181-210, Springer Netherlands, 2009.
[4]渡邉亮裕, 田中剛, 藤本拓, 吉村健, 自然対話プラットフォームオープン化への取り組み, 人工知能学会研究会資料 SIG-SLUD-B802-12, 2018.
[5]宮崎 千明, 平野 徹, 東中 竜一郎, 牧野 俊朗, 松尾 義博, 佐藤 理史, 文節機能部の確率的書き換えによる言語表現のキャラクタ性変換, 人工知能学会論文誌, 31巻, 1号, 2016.
[6]宮崎 千明, 佐藤 理史, 発話テキストへのキャラクタ性付与のための音変化表現の分類, 自然言語処理, 26巻, 2号, 2019.
[7]Daniel Adiwardana, Minh-Thang Luong, Noah Fiedel, Romal Thoppilan, Zi Yang, Gaurav Nemade, Yifeng Lu, David R. So, Jamie Hall, Apoorv Kulshreshtha and Quoc V. Le, Towards a human-like open-domain chatbot, arXiv preprint arXiv:2001.09977, 2020.
[8]Stephen Roller, Emily Dinan, Naman Goyal, Da Ju, Mary Williamson, Yinhan Liu, Jing Xu, Kurt Shuster, Eric M. Smith, Y-Lan Boureau, Myle Ott and Jason Weston, Recipes for building an open-domain chatbot, arXiv preprint arXiv:2004.13637v2, 2020.https://arxiv.org/pdf/2004.13637v2.pdf
[9]Emily Dinan, Stephen Roller, Kurt Shuster, Angela Fan, Michael Auli, Jason Weston, Wizard of Wikipedia: KNOWLEDGE-POWERED CONVERSATIONAL AGENTS, arXiv preprint arXiv:1811.01241v2, 2019.https://arxiv.org/pdf/1811.01241v2.pdf
[10]Hannah Rashkin, Eric Michael Smith, Margaret Li, Y-Lan Boureau, Towards Empathetic Open-domain Conversation Models: a New Benchmark and Dataset, In Proceedings of the 57th Annual Meeting of the Association for Computational Linguistics, 2019.
[11] Saizheng Zhang, Emily Dinan, Jack Urbanek, Arthur Szlam, Douwe Kiela, Jason Weston, Personalizing Dialogue Agents: I have a dog, do you have pets too?, In Proceedings of the 56th Annual Meeting of the Association for Computational Linguistics, 2018.https://aclanthology.org/P18-1205.pdf
[12] Moya Chen, Douwe Kiela, Mojtaba Komeili, Spencer Poff, Stephen Roller, Kurt Shuster, Arthur Szlam, Ja- son Weston, and Jing Xu, Blender bot 2.0: An open source chatbot that builds long-term memory and searches the internet, 2021.https://parl.ai/projects/blenderbot2/(参照日:2024年2月12日)
[13]Kurt Shuster, Jing Xu, Mojtaba Komeili, Da Ju, Eric Michael Smith, Stephen Roller, Megan Ung, Moya Chen, Kushal Arora, Joshua Lane, Morteza Behrooz, William Ngan, Spencer Poff, Naman Goyal, Arthur Szlam, Y-Lan Boureau, Melanie Kambadur, Jason Weston, BlenderBot 3: a deployed conversational agent that continually learns to responsibly engage, arXiv preprint arXiv:2208.03188v3, 2022.https://arxiv.org/pdf/2208.03188v3.pdf
[14]TechTargetジャパン, MetaのAIチャットbot「BlenderBot 3」が公開直後に“バッシングの嵐”に, 2022.https://techtarget.itmedia.co.jp/tt/spv/2211/15/news08.html(参照日 2024年2月18日)
[15] Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever, Improving Language Understanding by Generative Pre-Training, 2018.https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
[16] Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever, Language Models are Unsupervised Multitask Learners, 2019, https://cdn.openai.com/better-language-models/language_models_are_unsupervised_multitask_learners.pdf
[17] Tom B. Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, Sandhini Agarwal, Ariel Herbert-Voss, Gretchen Krueger, T. J. Henighan, Rewon Child, Aditya Ramesh, Daniel M. Ziegler, Jeff Wu, Clemens Winter, Christopher Hesse, Mark Chen, Eric Sigler, Mateusz Litwin, Scott Gray, Benjamin Chess, Jack Clark, Christopher Berner, Sam McCandlish, Alec Radford, Ilya Sutskever, Dario Amodei,arXiv:2005.14165, 2020.https://arxiv.org/pdf/2005.14165.pdf
[18] OpenAI, GPT-4 Technical Report, arXiv:2303.08774,2023.https://arxiv.org/pdf/2303.08774
[19]Long Ouyang, Jeff Wu, Xu Jiang, Diogo Almeida, Carroll L. Wainwright, Pamela Mishkin, Chong Zhang, Sandhini Agarwal, Katarina Slama, Alex Ray, John Schulman, Jacob Hilton, Fraser Kelton, Luke Miller, Maddie Simens, Amanda Askell, Peter Welinder, Paul Christiano, Jan Leike, Ryan Lowe, Training language models to follow instructions with human feedback, arXiv preprint arXiv:2203.02155, 2022.https://arxiv.org/abs/2203.02155
[20] Patrick Lewis, Ethan Perez, Aleksandra Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Kuttler, Mike Lewis, Wen-tau Yih, Tim Rocktaschel, Sebastian Riedel, Douwe Kiela, Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks, arXiv preprint arXiv:2005.11401v4, 2021.https://arxiv.org/pdf/2005.11401v4.pdf
Copyright © ITmedia, Inc. All Rights Reserved.