IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 独立行政法人情報通信研究機構の特許一覧

特開2023-149601推論装置、質問回答装置、対話装置、及び推論方法
<>
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図1
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図2
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図3
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図4
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図5
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図6
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図7
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図8
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図9
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図10
  • 特開-推論装置、質問回答装置、対話装置、及び推論方法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023149601
(43)【公開日】2023-10-13
(54)【発明の名称】推論装置、質問回答装置、対話装置、及び推論方法
(51)【国際特許分類】
   G06F 16/90 20190101AFI20231005BHJP
   G06N 3/08 20230101ALI20231005BHJP
【FI】
G06F16/90 100
G06N3/08
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022058254
(22)【出願日】2022-03-31
(71)【出願人】
【識別番号】301022471
【氏名又は名称】国立研究開発法人情報通信研究機構
(74)【代理人】
【識別番号】100099933
【弁理士】
【氏名又は名称】清水 敏
(72)【発明者】
【氏名】鳥澤 健太郎
(72)【発明者】
【氏名】クロエツェー ジュリアン
(72)【発明者】
【氏名】水野 淳太
(72)【発明者】
【氏名】飯田 龍
(72)【発明者】
【氏名】大竹 清敬
(72)【発明者】
【氏名】呉 鍾勲
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA01
(57)【要約】
【課題】少ない計算資源により高速に、十分な精度をもって動作可能な推論装置を提供する。
【解決手段】推論装置50は、第1入力のベクトル表現を出力する第1ニューラルネット80と、第2入力のベクトル表現を出力する第2ニューラルネットとを含み、所定の関係にある第1及び第2入力の学習データを用いて、第1及び第2入力のベクトル表現が所定の関係にある場合に、ベクトル空間において近接して位置するように第1及び第2ニューラルネットを学習させ、学習済みの第2ニューラルネットの出力であるベクトル表現をクラスタ化し、第1入力のベクトル表現に基づき、クラスタの検索抽出が可能なようにあらかじめ構築されたデータベース84をさらに含み、入力60に対して第1ニューラルネット80による入力のベクトル表現に基づいてデータベース84から検索抽出されたクラスタの情報88に基づき出力を推論する。
【選択図】図1
【特許請求の範囲】
【請求項1】
第1の入力が供給され、この第1の入力のベクトル表現を出力する第1のニューラルネットワークと、
第2の入力が供給され、この第2の入力のベクトル表現を出力する第2のニューラルネットワークとを含み、
少なくとも、所定の関係にある前記第1及び第2の入力の学習データを用いて、前記第1の入力のベクトル表現と前記第2の入力のベクトル表現が、前記所定の関係にある場合に、ベクトル空間において近接して位置するように前記第1及び第2のニューラルネットワークを学習させ、
学習済みの前記第2のニューラルネットワークの出力であるベクトル表現を、前記ベクトル空間上の位置に基づきクラスタ化し、前記第1の入力のベクトル表現に基づき、前記クラスタの検索抽出が可能なようにあらかじめ構築されたデータベースをさらに含み、
装置への入力に対して前記第1のニューラルネットワークによる前記入力のベクトル表現に基づいて前記データベースから検索抽出された前記クラスタの情報に基づき、前記所定の関係にある出力を推論する、推論装置。
【請求項2】
請求項1記載の推論装置において、前記データベースは、それぞれのクラスタに含まれる出力のベクトル表現のセントロイドを用いて検索抽出されることを特徴とする推論装置。
【請求項3】
前記第1のニューラルネットワークは、前記第1の入力とこの第1の入力と前記所定の関係にある前記第2の入力の属するクラスタに関連したベクトル表現とに基づき、追加の学習がなされたことを特徴とする請求項1又は請求項2記載の推論装置。
【請求項4】
前記所定の関係は、質問とその質問に対する回答を含むものである、請求項1から請求項3のいずれか1項に記載の推論装置を含む質問回答装置。
【請求項5】
前記所定の関係は、発話とその発話に対する応答を含むものである、請求項1から請求項3のいずれか1項に記載の推論装置を含む対話装置。
【請求項6】
第1の入力が供給され、この第1の入力のベクトル表現を出力する第1のニューラルネットワークと、第2の入力が供給され、この第2の入力のベクトル表現を出力する第2のニューラルネットワークとを準備するステップと、
少なくとも、所定の関係にある前記第1及び第2の入力の学習データを用いて、前記第1の入力のベクトル表現と前記第2の入力のベクトル表現が、前記所定の関係にある場合に、ベクトル空間において近接して位置するように前記第1及び第2のニューラルネットワークを学習させるステップと、
学習済みの前記第2のニューラルネットワークの出力であるベクトル表現を、前記ベクトル空間上の位置に基づきクラスタ化し、前記第1の入力のベクトル表現に基づき、前記クラスタの検索抽出が可能なようにあらかじめデータベースを構築するステップと、
入力に対して前記第1のニューラルネットワークによる前記入力のベクトル表現に基づいて前記データベースから検索抽出された前記クラスタの情報に基づき、前記所定の関係にある出力を推論するステップとを含む、推論方法。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は自然言語による推論装置、質問回答装置、対話装置、及び推論方法に関する。
【背景技術】
【0002】
従来知られている質問回答システムに、本件出願人が開発しウェブ上において提供しているシステム(WISDOM X)がある。このシステムにおいては、主として入力された質問からキーワード群となる複数の内容語を抽出する。このキーワード群に基づき、インターネット等から収集したパッセージ(連続する7つ程度の文からなる文のまとまり)をいくつか選択する。得られたパッセージ群を質問とともにニューラルネットワークに入力することにより、質問に対する回答を含むか否かという観点からパッセージが分類される。回答が含まれると判断されたパッセージに関しては、そこから質問に対する回答となるフレーズ及び単語などを抽出し整形して回答を出力する。
【発明の概要】
【発明が解決しようとする課題】
【0003】
質問回答システムの性格上、質問に対する回答を早期に行う必要がある。そのために、上記したシステムにおいては、あらかじめウェブをクロールしてウェブ上のデータをローカルの記憶装置に蓄積しておく。上記したキーワードベースの検索エンジンの検索範囲は、この記憶装置に記憶された情報であり、その結果、大量の回答候補が得られる。そのため、各回答候補が質問に対する回答を含むか否かの判定処理には大量のデータ処理が伴う。さらに、この処理の対象となるパッセージの各々がある程度のデータ量を持つ上、自然言語処理が必要となる関係上、大規模ニューラルネットワークが処理に使用される。その結果、最終的に行うべきデータ処理の総量は非常に大きなものとなる。したがって、従来の質問回答システムを稼働させるためには大きな計算資源が必要だったという問題がある。
【0004】
こうした事情は、質問回答システムに限らない。本件出願人は、質問に限らず一般的な入力に対して応答を行う対話システムも開発している。この対話システムにおいては、応答候補を作成するために、入力から複数の質問を生成し、その質問を上記した質問回答システムに投入してそれぞれ複数の回答を得る。その後、それらの回答から入力発話に対する応答を生成し、更には生成された複数の応答から最適な応答を一つ選ぶ処理を行っている。そのために必要なデータ処理の量は、質問回答システムのためのデータ処理の量を上回る。その結果、対話システムを稼働させるためには非常に大きな計算資源が必要だったという問題がある。
【0005】
それ故にこの発明は、従来のものより少ない計算資源により高速に、かつ十分な精度をもって動作可能な推論装置、質問回答装置、対話装置、及び推論方法を提供することである。
【課題を解決するための手段】
【0006】
この発明の第1の局面に係る推論装置は、第1の入力が供給され、この第1の入力のベクトル表現を出力する第1のニューラルネットワークと、第2の入力が供給され、この第2の入力のベクトル表現を出力する第2のニューラルネットワークとを含み、少なくとも、所定の関係にある第1及び第2の入力の学習データを用いて、第1の入力のベクトル表現と第2の入力のベクトル表現が、所定の関係にある場合に、ベクトル空間において近接して位置するように第1及び第2のニューラルネットワークを学習させ、学習済みの第2のニューラルネットワークの出力であるベクトル表現を、ベクトル空間上の位置に基づきクラスタ化し、第1の入力のベクトル表現に基づき、クラスタの検索抽出が可能なようにあらかじめ構築されたデータベースをさらに含み、装置への入力に対して第1のニューラルネットワークによる入力のベクトル表現に基づいてデータベースから検索抽出されたクラスタの情報に基づき、所定の関係にある出力を推論する。
【0007】
好ましくは、データベースは、それぞれのクラスタに含まれる出力のベクトル表現のセントロイドを用いて検索抽出される。
【0008】
より好ましくは、第1のニューラルネットワークは、第1の入力とこの第1の入力と所定の関係にある第2の入力の属するクラスタに関連したベクトル表現とに基づき、追加の学習がなされる。
【0009】
この発明の第2の局面に係る質問回答装置は、上記したいずれかの推論装置を含み、所定の関係は、質問とその質問に対する回答を含むものである。
【0010】
この発明の第3の局面に係る対話装置は、上記したいずれかの推論装置を含み、所定の関係は、発話とその発話に対する応答を含むものである。
【0011】
この発明の第4の局面に係る推論方法は、第1の入力が供給され、この第1の入力のベ
クトル表現を出力する第1のニューラルネットワークと、第2の入力が供給され、この第2の入力のベクトル表現を出力する第2のニューラルネットワークとを準備するステップと、少なくとも、所定の関係にある第1及び第2の入力の学習データを用いて、第1の入力のベクトル表現と第2の入力のベクトル表現が、所定の関係にある場合に、ベクトル空間において近接して位置するように第1及び第2のニューラルネットワークを学習させるステップと、学習済みの第2のニューラルネットワークの出力であるベクトル表現を、ベクトル空間上の位置に基づきクラスタ化し、第1の入力のベクトル表現に基づき、クラスタの検索抽出が可能なようにあらかじめデータベースを構築するステップと、入力に対して第1のニューラルネットワークによる入力のベクトル表現に基づいてデータベースから検索抽出されたクラスタの情報に基づき、所定の関係にある出力を推論するステップとを含む。
【0012】
この発明の第5の局面に係る質問回答装置は、複数レコードを含むデータベースを含み、複数レコードの各々は、質問に対する回答候補のリンク先と、当該回答候補のベクトル表現が属するクラスタの識別子とを含み、質問文が入力されたことに応答して、質問文を、当該質問文のベクトル表現である質問ベクトルに変換するためのニューラルネットワークと、回答候補の意味的表現ベクトルのクラスタの中で、当該クラスタの代表ベクトルが質問ベクトルと最も近い所定個数のクラスタを選択するクラスタ選択手段と、データベースにおいて、クラスタ選択手段により選択された所定個数のクラスタのいずれかの識別子を持つレコードに含まれるリンク先から、それぞれ回答候補を収集するための回答候補収集手段と、回答候補収集部により収集された回答候補の中から、所定の手順で質問文に対する回答を選択するための回答選択手段とを含む。
【0013】
好ましくは、質問回答装置はさらに、質問文を発した質問者の発話履歴を記憶するための発話履歴記憶手段と、発話履歴記憶手段と、質問文が入力されたことに応答して、当該質問を発した質問者の過去の発話履歴の1又は複数のトピック候補を発話履歴記憶手段に記憶された発話履歴に基づいて特定するためのトピック特定手段と、質問文がニューラルネットワークに入力されるに先立って、トピック特定手段により特定された1又は複数のトピックを表す情報を質問文に付加するためのトピック付加手段とをさらに含む。
【0014】
より好ましくは、回答候補の各々は、いずれも複数の連続する文を含む。
【0015】
この発明の第6の局面に係る対話装置は、上記した質問回答装置と、入力される発話のトピックを推定するトピック推定手段と、入力される発話にトピック推定手段により推定されたトピックを示す情報を付加し、質問として質問回答装置に入力するトピック付加手段と、発話に対する質問回答装置の出力を対話にふさわしく整形することにより、入力される発話に対する応答を生成するための応答生成手段とを含む。
【0016】
この発明の第7の局面に係る質問回答用モデルの訓練方法は、複数の質問文と、当該複数の質問文の各々に対する回答候補群とから、質問文と当該質問文に対応する回答候補との組み合わせからなる正例と、質問文と当該質問文に対応しない回答候補との組み合わせからなる負例とを生成することにより、学習データを準備するステップと、質問文を、当該質問文のベクトル表現である質問ベクトルに変換するための質問変換用ニューラルネットワークと、回答候補を、当該回答候補のベクトル表現である回答候補ベクトルに変換するための回答変換用ニューラルネットワークとを、Siameseネットワークにより訓練するステップと、訓練するステップにより訓練された回答変換用ニューラルネットワークを用いて、回答候補群に含まれる回答候補を、当該回答候補のベクトル表現である回答候補ベクトルに変換するステップと、変換するステップにより生成された回答候補ベクトルを所定個数のクラスタにクラスタリングし、回答候補の各々に、当該回答候補が属するクラスタの識別子を付与するステップと、複数の質問文の各々について、当該質問に対応する回答候補を含むクラスタの識別子を対応付けるステップと、複数の質問文の各々について質問変換用ニューラルネットワークの出力する質問ベクトルと、当該質問文に対応する回答候補が属するクラスタとの距離を表す所定の指標が小さくなるように質問変換用ニューラルネットワークの追加学習をするステップとを含む。
【0017】
好ましくは、質問回答用モデルの訓練方法はさらに、学習データを準備するステップに先立って、インターネットから複数の質問文を収集するステップを含む。
【0018】
より好ましくは、収集するステップは、学習データを準備するステップに先立って、インターネットから複数の質問文を、その前又は後の文とともに収集するステップと、複数の質問文の各々について、当該質問文について収集された前又は後の文に基づいて、質問文の関連するトピックを推定するステップとを含み、学習データを準備するステップは、複数の質問文の各々に、当該質問文の関連するトピックを付与するステップと、トピックが付与された複数の質問文と、回答候補群とから、質問文と当該質問文に対応する回答候補との組み合わせからなる正例と、質問文と当該質問文に対応しない回答候補との組み合わせからなる負例とを生成することにより、学習データを準備するステップとを含む。
【0019】
さらに好ましくは、質問回答用モデルの訓練方法はさらに、学習データを準備するステップに先立って、インターネットから複数の質問文の各々に対する回答候補群を収集するステップと、収集された回答候補群に含まれる回答候補の各々に関連付けて、当該回答候補のインターネット上のURLを記憶するステップとを含み、方法はさらに、回答候補の各々について、当該回答候補が属するクラスタの識別子と、当該回答候補のインターネット上のURLとを含む新たなレコードをデータベースに追加するステップを含む。
【0020】
この発明の上記及び他の目的、特徴、局面及び利点は、添付の図面と関連して理解されるこの発明に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0021】
図1図1は、この発明の第1実施形態に係る質問回答装置の機能的ブロック図である。
図2図2は、第1実施形態に係る質問回答装置において、質問BERTの学習を行う学習装置の機能的ブロック図である。
図3図3は、図2に示すBERT学習部の機能的ブロック図である。
図4図4は、追加学習前の質問BERTにより生ずることのある問題を示す模式図である。
図5図5は、追加学習した後の質問BERTによる問題の解消を示す模式図である。
図6図6は、図2に示す追加学習部の機能的ブロック図である。
図7図7は、この発明の第2実施形態に係る対話装置の機能的ブロック図である。
図8図8は、図2実施形態に係る対話装置において、対話履歴管理部の学習を行う学習装置の機能的ブロック図である。
図9図9は、図8に示す追加学習部の機能的ブロック図である。
図10図10は、この発明の第1実施形態に係る質問回答装置50及び第2実施形態に係る対話装置350並びにそれらにおいて使用されるニューラルネットワークの学習を行う学習装置を実現するコンピュータシステムの外観を示す図である。
図11図11は、図10に示すコンピュータシステムのハードウェア構成を示すブロック図である。
【発明を実施するための形態】
【0022】
以下の説明及び図面においては、同一の部品には同一の参照番号を付してある。したがって、それらについての詳細な説明は繰返さない。
【0023】
第1 第1実施形態
1.構成
A.質問回答装置
図1に、この発明の第1実施形態に係る質問回答装置50の機能的ブロック図を示す。図1を参照して、質問回答装置50は、質問60を受け取り、インターネット62から回答候補となるパッセージ群を検索するための回答候補検索部64と、回答候補検索部64により検索されたパッセージ群を記憶するためのパッセージDB(Database)66とを含む。パッセージDB66に記憶されるパッセージ群は、従来のものと比較して限定された数である。質問回答装置50はさらに、パッセージDB66に記憶されたパッセージ群に基づき、従来の手法と同様の手法を用いて質問60に対する回答70を生成し出力するための回答生成部68を含む。回答生成部68が回答70を生成する手法は、この実施形態においては従来技術と全く同様である。ただし、回答生成部68が処理する対象となるパッセージの数は、従来技術と比較してはるかに少ない。
【0024】
この実施形態の特徴は、質問60を受けた時点においてインターネット62から検索するパッセージの数が限定されている点である。したがってパッセージDB66に記憶されるパッセージの数は少なく、回答生成部68が必要とする計算資源も従来と比較してはるかに少なく済む。
【0025】
回答候補検索部64は、質問60を変換し、質問60を表現するベクトルである質問ベクトル82を出力するための質問BERT80を含む。質問BERT80は、あらかじめ学習済みだが、その学習については図2以降を参照して後述する。ここで、質問BERT等は、ニューラルネットワークのBidirectional Encoder Representation from Transformersを含むものであり、BERT、RoBERTa等、Transformer Encoderを含むニューラルネットワークであり、一般的に、言語資源による事前学習を経て、タスクに応じたファインチューニングの後に利用される。この実施形態におけるファインチューニング等については、後述する。
【0026】
回答候補検索部64はさらに、セントロイドDB84を含む。セントロイドDB84は質問BERT80などの訓練過程において同時に生成される。セントロイドDB84を生成する方法については学習の説明の際にあわせて後述する。簡単に言えば、セントロイドDB84は、様々な質問に対する回答を含む多くのパッセージをベクトル化し、クラスタリングして、そのセントロイドをデータベース化したものである。セントロイドDB84の各レコードは、そのセントロイドが代表するクラスタのクラスタ識別子と、そのセントロイドのベクトル空間上の位置を表すベクトルとを含む。パッセージをベクトル化したものをパッセージベクトルと呼ぶ。パッセージベクトルと質問ベクトル82とは同じ次元数のベクトルである。
【0027】
回答候補検索部64はさらに、質問ベクトル82を受けて、ベクトル空間内において質問ベクトル82に最も近い所定個数のセントロイドのレコードをセントロイドDB84において検索し、検索された所定個数のセントロイドのクラスタ識別子88をそれぞれ出力するための回答候補クラスタ特定部86を含む。これらクラスタ識別子88により表される各クラスタには、質問60に対する回答を含む可能性が高いパッセージに対応するパッセージベクトルが含まれることが想定されている。なぜそのようになるかについては、質問BERT80の訓練に関する説明において明らかにする。
【0028】
回答候補検索部64はさらに、あらかじめ様々な質問について、その回答候補となるパッセージを表す多数のパッセージレコードを記憶するための回答候補DB90を含む。回答候補DB90の各レコードは、あらかじめ作成された質問に対して、その回答が含まれていると考えられるパッセージをウェブからダウンロードした情報から作成される。より具体的には、各レコードは、パッセージが存在していたロケーションを示すURLと、そのパッセージベクトルが属するクラスタのクラスタ識別子とを含む。
【0029】
回答候補検索部64はさらに、回答候補クラスタ特定部86が出力するクラスタ識別子88を受け、クラスタ識別子88と一致するクラスタ識別子を持つレコードを回答候補DB90において検索し、検索されたレコードのURLを回答候補URL群94として出力するための回答候補検索部92と、回答候補URL群94に含まれるURLの各々にアクセスし、回答候補を含むと思われるパッセージを含むテキストをダウンロードして、パッセージを抽出し、パッセージDB66に蓄積するためのパッセージ検索部96とを含む。
【0030】
前述したとおり、パッセージ検索部96がアクセスするURLは、回答候補クラスタ特定部86により特定されたセントロイドに対応するクラスタに属するものだけである。したがって、従来技術のようにウェブ全体からダウンロードした大量のデータにアクセスする必要はない。選択された個数のクラスタに属するURLからダウンロードしたものだけがアクセスの対象となる。そのため、回答生成部68として従来のものと同じものを採用したとしても、必要な記憶容量も、計算資源もはるかに小さくて済む。
【0031】
B.学習装置
図2に、図1に示す質問BERT80の学習を行い、同時にセントロイドDB84及び回答候補DB90の生成を行うための学習装置150の機能的構成を示す。図2を参照して、学習装置150は、インターネット62から多数の質問と、各質問に対する回答候補を含む多数のパッセージとを収集するための質問・パッセージ収集部160と、質問・パッセージ収集部160が収集した質問を記憶するための質問DB162と、質問・パッセージ収集部160が収集したパッセージを記憶するためのパッセージDB164とを含む。図2ではパッセージDB164に蓄積されるパッセージを用いて、BERTの学習とパッセージのクラスタリングを行うようにしているが、これは別のDB、例えばパッセージDB164に蓄積されているパッセージの一部からなるDBを用いることもできる。
【0032】
質問DB162の各レコードは各質問に対応する。各レコードは、例えば、質問識別子と、その質問に対応するパッセージが主として属するクラスタのクラスタ識別子と、質問のテキストと、その質問が存在するインターネット上のURLとを含む。
【0033】
質問・パッセージ収集部160の各レコードは各パッセージに対応する。各レコードは、パッセージIDと、対応する質問IDと、そのパッセージが存在するインターネット上のURLとを含む。
【0034】
学習装置150はさらに、図1に示す質問BERT80と同じ構成の、訓練対象の質問BERT168と、質問BERT168と同じ構成の回答候補BERT170と、質問DB162及び質問・パッセージ収集部160に記憶されたデータを用いて、質問BERT168及び回答候補BERT170の学習をSiamese BERTネットワーク(Siamese BERT Networks)により同時に行うためのBERT学習部166とを含む。Siamese BERTネットワークについては、以下の参考文献に記載がある。この実施形態におけるSiamese BERTネットワークの概略については図3を参照して後述する。なお、本発明は、Siamese BERTネットワークによる構成に限定されるものではなく、質問BERT80と回答候補BERT170の出力であるベクトル表現の近い、遠いが学習データと整合していれば、問題ない。
【0035】
[参考文献]
Nils Reimers and Iryna Gurevych,”Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks,”[online],令和元年8月27日,Arxiv.org,[令和4年3月10日検索],インターネット,<https://arxiv.org/pdf/1908.10084>
学習装置150はさらに、BERT学習部166により学習が行われた回答候補BERT170を用いて質問・パッセージ収集部160に含まれる各パッセージをパッセージベクトル化し、さらにクラスタリングして回答候補DB90及びセントロイドDB84を生成するためのパッセージクラスタリング部172を含む。パッセージクラスタリング部172による回答候補DB90の生成は、以下の手順に従って行われる。まず質問・パッセージ収集部160に含まれる各パッセージを回答候補BERT170に入力することにより、回答候補BERT170の出力に得られるベクトルに変換する。これらのベクトルは、各パッセージを表すパッセージベクトルである。パッセージクラスタリング部172はさらに、これらパッセージベクトルを所定個数のクラスタにクラスタリングする。このクラスタの個数は、あらかじめ定めておいてもよいし、クラスタ内のベクトルの分散の合計を最小にするなど、所定の基準により支障の出ない一定範囲内において決めるようにしてもよい。
【0036】
パッセージクラスタリング部172は、このようにしてパッセージベクトルをクラスタリングした後、各クラスタのセントロイドを決定する。さらに各セントロイドに、そのセントロイドが代表するクラスタの識別子を付与する。パッセージクラスタリング部172は、このようにして得られた各セントロイドに関する情報をレコード化しセントロイドDB84を生成する。具体的には、セントロイドDB84の各レコードは、クラスタ識別子と、そのセントロイドのベクトルとを含む。当然のことだがセントロイドのベクトルはパッセージベクトル及び質問ベクトルと同次元である。
【0037】
なお、パッセージクラスタリング部172は、回答候補DB90の各レコードを以下のように生成する。パッセージクラスタリング部172は、質問・パッセージ収集部160の各レコードについて、そのレコードのパッセージから得られたパッセージベクトルの属するクラスタのクラスタ識別子と、そのレコードのURLとを一組にして回答候補DB90にレコードを登録する。パッセージクラスタリング部172はまた、質問DB162の各レコードについて、その質問DB162に対して得られたパッセージが主として属するクラスタのセントロイドIDを付与する処理も行う。
【0038】
学習装置150はさらに、セントロイドDB84及び質問DB162を用いて、質問BERT168の追加学習を行うための追加学習部174を含む。BERT学習部166による学習がされた後の質問BERT168は、追加学習部174による追加学習を受けて図1に示す質問BERT80となる。この追加学習の意味については図4及び図5を参照して後述する。
【0039】
図3に、図2に示すBERT学習部166の構成についてブロック図形式により示す。この学習における教師データは、質問及びパッセージと、そのパッセージがその質問に対する回答を含むか否かを示すラベルとを1組とする。ラベルは、例えばパッセージが質問に対する回答を含むときは1であり、さもなければ0とする。
【0040】
図3を参照して、BERT学習部166は、学習データの質問と回答候補パッセージとを質問BERT168及び回答候補BERT170にそれぞれ入力し、質問を表現するベクトル200(U)と回答候補パッセージを表現するベクトル202(V)とに変換した後、ベクトルU及びベクトルVの間のコサイン類似度を算出するためのコサイン類似度算出部204と、コサイン類似度算出部204の出力([-1,1]の範囲)を[0,1]の範囲に正規化するための正規化処理部206と、正規化処理部206の出力と学習データのラベル210(0又は1)とに基づき、両者が一致する方向に質問BERT168及び回答候補BERT170の各々のパラメータを誤差逆伝播法により更新するためのパラメータ更新部208とを含む。正規化処理部206による正規化は、例えば{cos(U、V)+1}/2により行うことができる。なお、この実施形態においては、パラメータ更新部208における更新のための損失関数として平均二乗誤差を用いている。
【0041】
質問BERT168は、BERT220と、BERT220の最終層の各要素について平均プーリングを行うことによりベクトル200を出力するためのPooling層222とを含む。
【0042】
回答候補BERT170は質問BERT168と全く同じ構成である。すなわち、回答候補BERT170は、BERT220と同じ構成のBERT230と、BERT230の最終層の各要素について平均プーリングを行うことによりベクトル202を出力するためのPooling層232とを含む。この段階においては、BERT220とBERT230とのパラメータ構成は全て共通であり、それらの値の更新も互いに反映される。
【0043】
前述したとおり、質問BERT168及び回答候補BERT170は同じ構成であり、かつパラメータの値も共通するようパラメータ更新部208による更新が行われる。BERT学習部166は、こうした学習を全ての学習データに対して所定の終了条件が成立するまで繰り返す。その結果、回答候補BERT170に与えられる回答候補パッセージが質問BERT168に与えられる質問に対する回答を含む場合にはベクトル200とベクトル202とが類似したベクトルとなり、そうでない場合には互いに異なるベクトルとなる。
【0044】
ただし、上記した学習を行った場合には以下のような問題が生じ得る。図4を参照して、例えばある質問に対する質問BERT168による変換256の結果、ベクトル254が得られたものとする。一方、この質問に対する正しい回答を含むパッセージを回答候補BERT170により変換した結果がベクトル260だとする。またベクトル260が属するのがクラスタ250であり、そのセントロイドがベクトル270だとする。
【0045】
一方、クラスタ250と異なるクラスタ252が存在し、そのセントロイドがベクトル272だとする。なお、図4はベクトルを2次元として考えているが、実際ははるかに次元数が高いことに注意する必要がある。
【0046】
この状況においては、ベクトル254とベクトル260との間のコサイン類似度は、ベクトル254とクラスタ252に含まれるどのベクトルとの間のコサイン類似度よりも大きい。しかし、ベクトル254と各セントロイドのベクトル270及び272とのコサイン類似度を考えると、ベクトル254とベクトル270との間のコサイン類似度264(cos)と、ベクトル254とベクトル272との間のコサイン類似度262(cos2)との間にはcos<cosという関係が成立してしまうことになる。このような状況になると、図1に示す回答候補検索部92が質問ベクトル82と各クラスタのセントロイドとのコサイン類似度に基づいてクラスタを選択する以上、正しい処理が行えなくなる可能性がある。そこで、図2に示す追加学習部174により以下のような追加学習を行う。
【0047】
図5を参照して、追加学習においては、例えば質問BERT168による変換により生成されるベクトルとベクトル270とのコサイン類似度が、ベクトル272とのコサイン類似度よりも大きくなるようにすればよい。そこで、質問BERT168の追加学習により、質問BERT168の変換256ではなく、得られるベクトル280がよりベクトル270に近づく変換258が実現されるように質問BERT168のパラメータを更新する。すなわち、ベクトル254をベクトル282に相当する分だけ移動してベクトル280の位置に来るようにすればよい。ベクトル280とベクトル270のコサイン類似度286をcos′により表し、ベクトル280とベクトル272とのコサイン類似度284をcos′により表すとすれば、cos′>cos′となるようにすればよい。
【0048】
そのため、この実施形態においては、追加学習部174は以下のような構成を持つ。図6を参照して、追加学習部174は、ある質問60を質問BERT168に入力してベクトル310を出力させ、一方、質問60に対応するパッセージが主として属するクラスタのセントロイドのベクトルをベクトルWとすると、ベクトル310とベクトルWからなるベクトル312とのコサイン類似度を算出するためのコサイン類似度算出部314と、コサイン類似度算出部314の出力([-1,1]の範囲)を[0,1]の範囲に正規化するための正規化処理部316と、正規化処理部316の出力がラベル「1」に近づくようにBERT220のパラメータを誤差逆伝播法により更新するためのパラメータ更新部318とを含む。コサイン類似度算出部314は図3に示すコサイン類似度算出部204と同じものである。正規化処理部316は図3に示す正規化処理部206と同じものである。またパラメータ更新部318は基本的には図3に示すパラメータ更新部208と同じものだが、質問BERT168のBERT220のみのパラメータを更新する点においてパラメータ更新部208と異なる。追加学習部174は、この更新を、所定の終了条件が成立するまで繰り返し実行する。
【0049】
ラベル「1」は正解を示す。このような更新をすることにより、各質問のベクトルとその正しい回答を含むパッセージのベクトルとの間のコサイン類似度が大きくなるように、BERT220のパラメータを更新できる。なお、この追加学習においては、正解パッセージのベクトルが属するクラスタのセントロイドに対して質問のベクトルが近く(コサイン類似度が大きくなるように)配置されるようになればよい。そのため、不正解のパッセージは使用せず、正解のパッセージに関する学習データのみを利用して学習を行えばよい。
【0050】
2.動作
上記した構成を持つ質問回答装置50及び学習装置150は以下のように動作する。まず、質問BERT80の学習時の学習装置150について説明し、次に質問BERT80を用いた質問回答装置50の動作について説明する。
【0051】
2-1.質問BERT80の学習
図2を参照して、質問BERT80の学習時には学習装置150は以下のように動作する。まず質問・パッセージ収集部160が、インターネット62をクロールし、質問文を収集し質問DB162に記憶する。質問・パッセージ収集部160はさらに、質問DB162に記憶された質問文の各々について、その質問に対する回答を含むと考えられるパッセージをさらにインターネット62から収集する。質問・パッセージ収集部160は、収集したパッセージを対応する質問と関連付けてパッセージDB164に格納する。質問・パッセージ収集部160によるこれら処理は従来技術により実現できる。
【0052】
次にBERT学習部166が、質問DB162に記憶された質問の各々と、これら質問に対してパッセージDB164に記憶されたパッセージとから、正例と負例とからなる学習データを生成する。BERT学習部166はこれら学習データを用いて質問BERT168と回答候補BERT170との学習をSiamese BERTネットワークにより同時に行う。
【0053】
より具体的には、図3を参照して、この学習における教師データは、質問及びパッセージと、そのパッセージがその質問に対する回答を含むか否かを示すラベルとを1組とする。ラベルは、例えばパッセージが質問に対する回答を含むときは1であり、さもなければ0である。
【0054】
BERT学習部166は、学習データの質問と回答候補パッセージとを質問BERT168及び回答候補BERT170にそれぞれ入力する。質問BERT168のBERT220及びPooling層222は、質問をベクトル200(U)に変換する。回答候補BERT170のBERT230及びPooling層232は、回答候補パッセージをベクトル202(V)に変換する。コサイン類似度算出部204が、ベクトルU及びベクトルVの間のコサイン類似度を算出し正規化処理部206に入力する。この値は[-1,1]の範囲である。正規化処理部206は、コサイン類似度算出部204の値を[0,1]の範囲に正規化してパラメータ更新部208に入力する。パラメータ更新部208は、正規化処理部206の出力と学習データのラベル210(0又は1)とに基づき、両者が一致する方向に質問BERT168及び回答候補BERT170の各々のパラメータを誤差逆伝播法により更新する。質問BERT168及び回答候補BERT170は同じ構成であり、かつパラメータの値も共通するようパラメータ更新部208による更新が行われる。
【0055】
BERT学習部166は、こうした学習を全ての学習データに対して所定の終了条件が成立するまで繰り返す。その結果、回答候補BERT170に与えられる回答候補パッセージが質問BERT168に与えられる質問に対する回答を含む場合にはベクトル200とベクトル202とが類似したベクトルとなり、そうでない場合には互いに異なるベクトルとなる。
【0056】
パッセージクラスタリング部172は、このように学習が終わった回答候補BERT170を用いて、パッセージDB164に記憶されたパッセージを全てパッセーベクトルに変換する。パッセージクラスタリング部172はさらに、それらパッセージベクトルをk平均法により所定個数のクラスタに分類する。これらクラスタにはそれぞれ識別子が割り当てられる。パッセージクラスタリング部172はさらに、各クラスタのセントロイドのベクトルを算出し、クラスタの識別子をセントロイドの識別子に割り当てる。パッセージクラスタリング部172は、こうして得られた各セントロイドについて、クラスタ識別子とそのセントロイドのベクトルとを組にしてセントロイドDB84に登録する。
【0057】
一方、パッセージクラスタリング部172は、各クラスタに属するパッセージベクトルに対応するパッセージのURLと、その属するクラスタの識別子とを組にしてレコードを回答候補DB90に登録する。またパッセージクラスタリング部172は、質問DB162に記憶されている各質問のレコードに、その質問に対する回答を最も多く含むクラスタのクラスタ識別子を追加する。
【0058】
セントロイドDB84へのセントロイドの登録が完了すると、追加学習部174が、質問DB162に記憶されている各質問に対し、その質問に対応するセントロイドのベクトルをセントロイドDB84から読み出す。追加学習部174は各質問に対して、セントロイドDB84から読み出したセントロイドベクトルを正解データとして質問BERT80の追加学習を行う。所定の終了条件が成立した時点で質問BERT80の学習が終了する。
【0059】
より具体的には、図6を参照して、学習データは、質問と、質問に対する正しい回答を含むパッセージのパッセージベクトルが属するクラスタのセントロイドのベクトルWと、ラベルである。この場合、ラベルの値は常に「1」である。
【0060】
質問は質問BERT168に与えられる。質問BERT168のBERT220及びPooling層222が質問を処理し、ベクトル310を出力する。ベクトル310はコサイン類似度算出部314の第1の入力に与えられる。一方、コサイン類似度算出部314の第2の入力には、ベクトルWが与えられる。コサイン類似度算出部314は、第1の入力のベクトルと第2の入力のベクトルとの類似度を算出し正規化処理部316に与える。正規化処理部316はコサイン類似度算出部314の出力を[0,1]の範囲に正規化しパラメータ更新部318に与える。パラメータ更新部318は、この値がラベル(1)に近づくようにBERT220のパラメータを誤差逆伝播法により更新する。
【0061】
追加学習部174は、こうした追加学習を、所定の終了条件が終了するまで繰り返し実行する。
【0062】
この追加学習により、図4のような状態が発生する可能性が小さくなり、図5に示すように質問を質問BERT80によりベクトル化した質問ベクトルとのコサイン類似度が最も大きなセントロイドが、正しいクラスタ250のセントロイドのベクトル270となる可能性を高くできる。
【0063】
2-2.回答の生成
図1を参照して、追加学習後の質問BERT80を持つ回答候補検索部64、及び回答候補検索部64を含む質問回答装置50は以下のように動作する。なお学習により、回答候補DB90及びセントロイドDB84も既に得られている。
【0064】
対話相手から何らかの質問60が入力されたものとする。質問60は質問BERT80に与えられる。質問60は同時に回答生成部68にも与えられる。
【0065】
質問BERT80は質問60が入力されたことに応答して、質問60を表す質問ベクトル82を出力する。回答候補クラスタ特定部86は、質問ベクトル82に最も近いセントロイドのベクトルをセントロイドDB84において検索しそのクラスタ識別子88を出力する。
【0066】
回答候補検索部92は回答候補DB90を検索し、このクラスタ識別子88を持つパッセージ(回答候補)を全て取り出し、回答候補URL群94を出力する。パッセージ検索部96は、これら回答候補URL群94を受けて、インターネット62の各URLからパッセージをダウンロードしパッセージDB66に格納する。
【0067】
回答生成部68は、パッセージDB66に格納されたパッセージ群の中から、質問60に対する回答として最も適切なものを選択し、回答70として出力する。回答生成部68による回答の選択は従来の手法と全く同様である。
【0068】
3.効果
この第1実施形態によれば、オフラインの状態であらかじめ作成した回答候補DB90、セントロイドDB84を用い、同様にオフラインの状態であらかじめ学習した質問BERT80を使用して、質問60に対する回答候補をパッセージDB66に収集する。回答候補の数は、図1に示す回答候補クラスタ特定部86により選択されたクラスタに属する回答候補に限定される。質問に対する回答時に、大量の回答回答候補に対してニューラルネットワークを適用して回答を選択する必要がない。そのため、必要な記憶容量も計算資源もはるかに小さく済むという効果がある。特に図1に示す例のように、回答候補DB90がパッセージそのものではなくそのパッセージが存在するURLを記憶しているため、パッセージそのものを記憶する場合と比較してさらに記憶容量が小さく済み、処理が軽くできるという効果がある。また、パッセージ検索部96によるインターネットからの各パッセージのダウンロードは並列処理が可能であり、質問60に対して回答70を生成するために要する時間を短くできるという効果もある。
【0069】
なお、上記の構成に加えて、質問60を行う主体の質問履歴(過去の複数の質問)を、参考情報として、回答動作を制御する(例えば、初心者向けの回答や、専門家向けの回答のように、回答のレベルを変更する)ように、構成することも可能である。
【0070】
第2 第2実施形態
1.構成
第1実施形態は、質問に対する回答を与える質問回答装置に関している。しかしこの発明はそのような実施形態だけではなく、いわゆる対話装置に適用することもできる。対話装置においてシステムが受ける入力は質問とは限らない。しかし、入力に対する応答を検索するための手法としては、質問回答と同様の手法を利用できる。
【0071】
対話装置において質問回答装置と異なるのは、相手の発話に対する応答を生成するときに、それまでの対話の履歴と関連する応答をすることが望ましいということである。この第2実施形態は、そのような対話システムに関する。
【0072】
A.対話装置
図7に、この発明の第2実施形態に係る対話装置350の構成を示す。この対話装置350においても、第1実施形態の質問BERT80と同様の構成を持つ質問BERT380を使用する。質問BERT380の学習については図8以下を参照して後述する。
【0073】
図7を参照して、対話装置350は、相手の発話362に応答して、発話362に対する応答として適切な応答候補をインターネット62から検索する応答候補検索装置360と、応答候補検索装置360が検索した応答候補を記憶するためのパッセージDB363と、パッセージDB363に記憶された応答候補の中から発話362に対する応答として適切なものを選択し、応答366を生成し出力するための応答生成部364と、応答生成部364の出力を、対話に相応しい形に整形し出力するための応答整形部368とを含む。パッセージDB363は、第1実施形態において使用されたものと同様の構成である。ただし、応答候補検索装置360が選択するパッセージが第1実施形態と異なってくるため、パッセージDB363の記憶内容も第1実施形態とは異なる。対話には対話に相応しい発話スタイルがある。そのためこの実施形態においては応答整形部368により応答生成部364の出力を整形して出力する。
【0074】
応答候補検索装置360は、対話装置350と相手との対話の履歴を管理するための対話履歴管理部370と、対話履歴管理部370の管理する対話履歴を記憶する対話履歴DB372と、複数の内容語が入力されたことに応答して、その内容語を含む対話のトピックを示す情報を出力するためのトピックモデル374とを含む。トピックモデル374は例えば統計的モデルであり、あらかじめ学習済だとする。トピックモデルの学習には、例えば特開2015-045915号公報に記載の方法が利用できる。また、ニューラルネットワークによりトピックモデルを構築することもできる。トピックモデル374の出力は、例えばトピックを表す1又は複数の単語である。
【0075】
応答候補検索装置360はさらに、発話362に応答し、対話履歴DB372に記憶された情報とトピックモデル374とを使用して、発話362に相手との対話のトピックを示す情報を付与するためのトピック付与部376を含む。具体的には、トピック付与部376は、対話履歴DB372から相手との対話の履歴を読み出し、内容語を抽出する。トピック付与部376はこれらの内容語をトピックモデル374に与えて、トピックモデル374の出力する、トピックを表す1又は複数の単語を受け取る。トピック付与部376はさらに、発話362の後ろに、トピック付与部376から受け取った1又は複数の単語を付加して出力する。
【0076】
応答候補検索装置360はさらに、トピック付与部376の出力を受けて、第1実施形態における質問ベクトルと同様の質問ベクトル382を出力するための、第1実施形態における質問BERT80と同様の構成を持つ質問BERT380と、第1実施形態にお
けるセントロイドDB84と同様にして得られたセントロイドDB378と、質問ベクトル382に応答して、質問ベクトル382とのコサイン類似度が最も大きな所定個数のセントロイドベクトルをセントロイドDB378において検索し、それらのクラスタ識別子388を出力するための応答候補クラスタ特定部386とを含む。セントロイドDB378の構成自体は第1実施形態のセントロイドDB84と同じである。ただしこの第2実施形態においてはセントロイドDB378の学習を第1実施形態とはやや異なる方法により行っている。そのため、ここではセントロイドDB378をセントロイドDB84とは別のものとして記載している。
【0077】
応答候補検索装置360はさらに、第1実施形態における回答候補DB90と同様の構成を持つ応答候補DB390と、応答候補クラスタ特定部386からのクラスタ識別子388に応答して応答候補DB390を検索し、クラスタ識別子388と一致するクラスタ識別子を持つ応答候補のレコードを全て読み出して応答候補URL群394として出力するための、第1実施形態のものと同じ構成の応答候補検索部392とを含む。
【0078】
応答候補検索装置360はさらに、応答候補URL群394を受けて、インターネット62を検索し、各応答候補のレコードに格納されているURLから応答候補のパッセージをダウンロードしてパッセージDB363に格納するための、これも第1実施形態のパッセージ検索部96と同様のパッセージ検索部396を含む。
【0079】
B.学習装置
図8を参照して、応答候補検索装置360の質問BERT380の学習を行うための学習装置400は、インターネット62をクロールして、質問をその前後のいくつかの文(以下、このように質問とその前後の文の集まりを質問パッセージという)とともにダウンロードし、さらに各質問に対する応答として適切なパッセージをダウンロードするための質問・パッセージ収集部410と、質問・パッセージ収集部410がダウンロードした質問パッセージを記憶するための質問パッセージDB412と、質問・パッセージ収集部410がダウンロードしたパッセージを、質問と関係付けて記憶するための、図2に示すものと同様の構成を持つパッセージDB164とを含む。
【0080】
学習装置400はさらに、トピックモデル374と、質問パッセージDB412に記憶された各質問パッセージ、パッセージDB164に記憶されたパッセージ、及びトピックモデル374から得られるトピックに関する単語とを使用して作成した学習データにより、質問BERT380及び応答候補BERT418の学習をSiamese BERTネットワークにより実行するためのBERT学習部414を含む。第1実施形態における質問BERT168及び回答候補BERT170と同様、質問BERT380及び応答候補BERT418も互いに同じ構成であり、学習時の一方のパラメータの更新は他方のパラメータの更新に反映される。実際には、質問BERT380と応答候補BERT418の構成は、第1実施形態の質問BERT168及び回答候補BERT170と同一であり、学習の結果、その内部のパラメータが異なってくる。
【0081】
学習装置400はさらに、BERT学習部414による訓練が終了した応答候補BERT418を使用して、パッセージDB164に記憶されているパッセージを所定個数のクラスタにクラスタリングし各クラスタにクラスタ識別子を付与するためのパッセージクラスタリング部172と、パッセージクラスタリング部172によりクラスタリングされた各応答候補に、その属するクラスタのクラスタ識別子を付して記憶する応答候補DB390と、パッセージクラスタリング部172によるクラスタリングの結果として得られた各クラスタのセントロイドベクトルと、その代表するクラスタのクラスタ識別子とを含むレコードを各クラスタについて記憶するためのセントロイドDB378とを含む。なおパッセージクラスタリング部172は、質問パッセージDB412に記憶されている各質問について、その質問に関するパッセージが最も多く属するクラスタのクラスタ識別子を質問パッセージDB412の各質問のレコードに付与する。
【0082】
学習装置400はさらに、質問パッセージDB412に記憶された質問と、セントロイドDB378に記憶された各クラスタのセントロイドに関する情報とを使用して質問BERT380の追加学習を行うための追加学習部422を含む。質問BERT380に対し追加学習部422による追加学習を行うことにより、図7に示す質問BERT380が得られる。
【0083】
図9に、BERT学習部414の機能的構成をブロック図形式により示す。図9を参照して、BERT学習部414は、図8に示す質問パッセージDB412に記憶された各質問とその質問を含む質問パッセージとを受け、トピックモデル374を使用してその質問を含む文脈のトピックを示す1又は複数の単語を質問に付与するためのトピック付与部450と、パッセージDB164に記憶されている各応答候補パッセージに対し、トピックモデル374を使用してその応答候補パッセージのトピックを示す1又は複数の単語を応答候補パッセージに付与するためのトピック付与部452とを含む。トピック付与部450の出力、トピック付与部452の出力、及び応答候補パッセージが質問に対する応答を与えるパッセージであれば1であり、さもなければ0であるラベルとにより、質問BERT380の学習データが生成される。
【0084】
質問BERT416は、BERT480と、BERT480の最終層の各要素に対して平均プーリングを行ってベクトル454(U)を出力するためのPooling層482とを含む。同様に、応答候補BERT418は、BERT490と、BERT484の最終層の各要素に対して平均プーリングを行ってベクトル456(V)を出力するためのPooling層492とを含む。
【0085】
BERT学習部414はさらに、トピック付与部450の出力を質問BERT416に、トピック付与部452の出力を応答候補BERT418にそれぞれ与え、質問BERT416の出力するベクトル454と応答候補BERT418の出力するベクトル456とのコサイン類似度を算出するためのコサイン類似度算出部204と、コサイン類似度算出部204の出力する値([-1,1]の範囲)を[0,1]の範囲に正規化するための正規化処理部206と、正規化処理部206により得られた正規化後のコサイン類似度がラベル210と等しくなる方向に、BERT480及び490の各パラメータを更新するためのパラメータ更新部208とを含む。
【0086】
BERT学習部414は、上記した学習データを用い、こうした更新処理を所定の終了条件が成立するまで繰り返し実行する機能を持つ。
【0087】
追加学習部422の構成は、第1の実施形態において図6に示した追加学習部174と実質的に同一である。ただしこの例においては、質問に対してその質問パッセージのトピックが付されている点が追加学習部174と異なる。
【0088】
2.動作
この第2実施形態においても、最初に図8に示す学習装置400による質問BERT416の学習、及びセントロイドDB378と応答候補DB390の生成が行われる。さらに追加学習部422により質問BERT416に対する追加学習が行われる。この結果、質問BERT380が得られ、図7に示す対話装置350の処理が可能になる。
【0089】
2-1.質問BERT380の学習
質問BERT380の学習の流れは、概略、第1実施形態における質問BERT80の学習の流れと同様である。
【0090】
図8を参照して、質問BERT380の学習時には学習装置150は以下のように動作する。まず質問・パッセージ収集部410が、インターネット62をクロールし、質問文及びその質問文の前後を含む質問パッセージを収集し質問パッセージDB412に記憶する。質問・パッセージ収集部410はさらに、質問パッセージDB412に記憶された質問文の各々について、その質問に対する応答を含むと考えられる複数のパッセージをさらにインターネット62から収集する。質問・パッセージ収集部410は、収集したパッセージを質問パッセージDB412に記憶された質問と関連付けてパッセージDB164に格納する。質問・パッセージ収集部410によるこれら処理は従来技術により実現できる。
【0091】
次にBERT学習部414が、質問パッセージDB412に記憶された質問の各々及びその質問パッセージと、これら質問に対してパッセージDB164に記憶された応答候補であるパッセージとから、トピックモデル374を用いて正例と負例とからなる学習データを生成する。BERT学習部414はこれら学習データを用いて質問BERT416と応答候補BERT418との学習をSiamese BERTネットワークにより同時に行う。
【0092】
パッセージクラスタリング部172は、このように学習が終わった応答候補BERT418を用いて、パッセージDB164に記憶されたパッセージを全てパッセージベクトルに変換する。パッセージクラスタリング部172はさらに、それらパッセージベクトルをk平均法により所定個数のクラスタに分類する。これらクラスタにはそれぞれ識別子が割り当てられる。パッセージクラスタリング部172はさらに、各クラスタのセントロイドのベクトルを算出し、クラスタの識別子をセントロイドの識別子に割り当てる。パッセージクラスタリング部172は、こうして得られた各セントロイドについて、クラスタ識別子とそのセントロイドのベクトルとを組にしてセントロイドDB378に登録する。
【0093】
一方、パッセージクラスタリング部172は、各クラスタに属するパッセージベクトルに対応するパッセージのURLと、その属するクラスタの識別子とを組にしたレコードを応答候補DB390に登録する。またパッセージクラスタリング部172は、質問パッセージDB412に記憶されている各質問のレコードに、その質問に対する応答を最も多く含むクラスタのクラスタ識別子を追加する。
【0094】
セントロイドDB378へのセントロイドの登録が完了すると、追加学習部422が、質問パッセージDB412に記憶されている各質問に対し、その質問に対応するセントロイドのベクトルをセントロイドDB378から読み出す。追加学習部422は、各質問に対して、セントロイドDB378から読み出したセントロイドベクトルを正解データとして質問BERT380の追加学習を行う。所定の終了条件が成立した時点で質問BERT380の学習が終了する。
【0095】
2-2.応答の生成
図7を参照して、追加学習後の質問BERT380を持つ応答候補検索装置360、及び応答候補検索装置360を含む対話装置350は以下のように動作する。なお上記した学習により、応答候補DB390及びセントロイドDB378も既に得られている。また、トピックモデル374としては学習に用いられたものと同じものを用いる。
【0096】
対話相手から何らかの発話362が入力されたものとする。発話362はトピック付与部376、対話履歴管理部370及び応答生成部364に与えられる。対話履歴管理部370はこのようにして受けた過去の一定期間の対話の履歴を、各対話相手について対話履歴DB372に保存する。一方、トピック付与部376は、対話履歴DB372において対話相手の過去の発話履歴を検索し、それら発話から内容語を抽出する。トピック付与部376はさらに、これら内容語をトピックモデル374に入力し、それぞれトピックを表す1又は複数の単語をトピックモデル374の出力として受け取る。トピック付与部376は、これら1又は複数の単語を発話362の後ろに付加して質問BERT380に入力する。
【0097】
質問BERT380は、トピックが付加された発話362に応答して質問ベクトルを出力する。この質問ベクトルは応答候補クラスタ特定部386に与えられる。
【0098】
応答候補クラスタ特定部386は、質問ベクトル382に応答して、セントロイドDB378に記憶されているセントロイドの中で、そのベクトルと質問ベクトル382との間のコサイン類似度が最も大きいものを、所定個数だけ選択し、それらのクラスタ識別子をクラスタ識別子88として応答候補検索部392に与える。
【0099】
応答候補検索部392は応答候補DB390を検索し、このクラスタ識別子388のいずれかと等しいクラスタ識別子を持つパッセージ(応答候補)のレコードを全て取り出し、それらのURLをまとめて応答候補URL群394として出力する。パッセージ検索部396は、この応答候補URL群394を受けて、応答候補URL群394に含まれる各URLを使用してインターネット62にアクセスすることにより、応答候補のパッセージをダウンロードしパッセージDB363に格納する。
【0100】
応答生成部364は、パッセージD3B66に格納されたパッセージ群の中から、発話362に対する応答として最も適切なものを選択し、応答整形部368に与える。応答整形部368は、入力を対話に相応しい形式に整形して応答366として出力する。応答生成部364による応答の選択及び生成方法は従来の手法をそのまま利用できる。
【0101】
3.効果
この第2実施形態によれば、入力された発話に対する応答を生成するために処理するパッセージは、図7に示す応答候補クラスタ特定部386により選択された1又は複数の線路ロイドに対応するクラスタに属するベクトルに対応するものに限定される。そのため、最適な応答は、従来のように質問回答システムから得られた複数の回答をもとに生成された複数の応答候補から選択する必要がないので、応答生成部364が応答を生成する際に行う処理は、従来と比較して大幅に削減される。また、処理に必要な計算資源も大幅に削減される。また、実施形態1と異なり、応答候補パッセージを検索する際に、発話のトピックを情報として用いる。そのため、得られる応答は対話のトピックに相応しいものとなる。その結果、従来よりも少ない資源を用いて高速に、かつ十分な精度をもって動作可能な対話装置を提供できる。
【0102】
第3 コンピュータによる実現
図10は、例えば図1に示す質問回答装置50として動作するコンピュータシステムの外観図である。図11は、図10に示すコンピュータシステムのハードウェアブロック図である。図2に示す学習装置150、図7に示す対話装置350及び図8に示す学習装置400についてもそれぞれ質問回答装置50とほぼ同様の構成のコンピュータシステムにより実現できる。ここでは質問回答装置50として動作するコンピュータシステムの構成についてのみ述べることとし、他の装置を実現するコンピュータシステムの構成の詳細については述べない。
【0103】
図10を参照して、このコンピュータシステム950は、DVD(Digital Versatile Disc)ドライブ1002を有するコンピュータ970と、いずれもコンピュータ970に接続された、ユーザと対話するためのキーボード974、マウス976、及びモニタ972とを含む。もちろんこれらはユーザ対話が必要となったときのための構成の一例であって、ユーザ対話に利用できる一般のハードウェア及びソフトウェア(例えばタッチパネル、音声入力、ポインティングデバイス一般)であればどのようなものも利用できる。
【0104】
図11を参照して、コンピュータ970は、DVDドライブ1002に加えて、CPU(Central Processing Unit)990と、GPU(Graphics Processing Unit)992と、CPU990、GPU992、DVDドライブ1002に接続されたバス1010とを含む。コンピュータ970はさらに、バス1010に接続され、コンピュータ970のブートアッププログラムなどを記憶するROM(Read-Only Memory)996と、バス1010に接続され、プログラムを構成する命令、システムプログラム、及び作業データなどを記憶するRAM(Random Access Memory)998と、バス1010に接続された不揮発性メモリであるSSD(Solid State Drive)1000とを含む。SSD1000は、CPU990及びGPU992が実行するプログラム、並びにCPU990及びGPU992が実行するプログラムが使用するデータなどを記憶するためのものである。コンピュータ970はさらに、他端末との通信を可能とするネットワーク986(図7に示す応答生成部364)への接続を提供するネットワークI/F(Interface)1008と、USB(Universal Serial Bus)メモリ984が着脱可能であり、USBメモリ984とコンピュータ970内の各部との通信を提供するUSBポート1006とを含む。
【0105】
コンピュータ970はさらに、マイクロフォン982及びスピーカ980とバス1010とに接続され、CPU990により生成されRAM998又はSSD1000に保存された音声信号、映像信号及びテキストデータをCPU990の指示に従って読み出し、アナログ変換及び増幅処理をしてスピーカ980を駆動したり、マイクロフォン982からのアナログの音声信号をデジタル化し、RAM998又はSSD1000の、CPU990により指定される任意のアドレスに保存したりする機能を持つ音声I/F1004を含む。
【0106】
上記実施形態においては、図1に示す質問回答装置50、図2に示す学習装置150、図7に示す対話装置350及び図8に示す学習装置400などの各機能を実現するプログラムなどは、いずれも例えば図11に示すSSD1000、RAM998、DVD978又はUSBメモリ984、若しくはネットワークI/F1008及びネットワーク986を介して接続された図示しない外部装置の記憶媒体などに格納される。典型的には、これらのデータ及びパラメータなどは、例えば外部からSSD1000に書込まれコンピュータ970の実行時にはRAM998にロードされる。
【0107】
このコンピュータシステムを、図1に示す質問回答装置50、図2に示す学習装置150、図7に示す対話装置350及び図8に示す学習装置400、並びにその各構成要素の機能を実現するよう動作させるためのコンピュータプログラムは、DVDドライブ1002に装着されるDVD978に記憶され、DVDドライブ1002からSSD1000に転送される。又は、これらのプログラムはUSBメモリ984に記憶され、USBメモリ984をUSBポート1006に装着し、プログラムをSSD1000に転送する。又は、このプログラムはネットワーク986を通じてコンピュータ970に送信されSSD1000に記憶されてもよい。
【0108】
プログラムは実行のときにRAM998にロードされる。もちろん、キーボード974、モニタ972及びマウス976を用いてソースプログラムを入力し、コンパイルした後のオブジェクトプログラムをSSD1000に格納してもよい。プログラムがスクリプト言語で記述されている場合には、キーボード974などを用いて入力したスクリプトをSSD1000に格納してもよい。仮想マシン上において動作するプログラムの場合には、仮想マシンとして機能するプログラムを予めコンピュータ970にインストールしておく必要がある。音声認識及び音声合成などにはニューラルネットワークが使用される。質問回答装置50及び対話装置350においては、学習済のニューラルネットワークを使用してもよいし、質問回答装置50及び対話装置350をそれぞれ学習装置150及び400として使用してニューラルネットワークの学習を行ってもよい。
【0109】
CPU990は、その内部のプログラムカウンタと呼ばれるレジスタ(図示せず)により示されるアドレスに従ってRAM998からプログラムを読み出して命令を解釈し、命令の実行に必要なデータを命令により指定されるアドレスに従ってRAM998、SSD1000又はそれ以外の機器から読み出して命令により指定される処理を実行する。CPU990は、実行結果のデータを、RAM998、SSD1000、CPU990内のレジスタなど、プログラムにより指定されるアドレスに格納する。アドレスによってはコンピュータから外部出力される。このとき、プログラムカウンタの値もプログラムによって更新される。コンピュータプログラムは、DVD978から、USBメモリ984から、又はネットワーク986を介して、RAM998に直接にロードしてもよい。なお、CPU990が実行するプログラムの中で、一部のタスク(主として数値計算)については、プログラムに含まれる命令により、又はCPU990による命令実行時の解析結果に従って、GPU992にディスパッチされる。
【0110】
コンピュータ970により上記した実施形態に係る各部の機能を実現するプログラムは、それら機能を実現するようコンピュータ970を動作させるように記述され配列された複数の命令を含む。この命令を実行するのに必要な基本的機能のいくつかはコンピュータ970上において動作するオペレーティングシステム(OS)若しくはサードパーティのプログラム、コンピュータ970にインストールされる各種ツールキットのモジュール又はプログラムの実行環境により提供される場合もある。したがって、このプログラムはこの実施形態のシステム及び方法を実現するのに必要な機能全てを必ずしも含まなくてよい。このプログラムは、命令の中で、所望の結果が得られるように制御されたやり方によって適切な機能又はモジュールなどをコンパイル時に静的にリンクすることにより、又は実行時に動的に呼出すことにより、上記した各装置及びその構成要素としての動作を実行する命令のみを含んでいればよい。そのためのコンピュータ970の動作方法は周知である。したがって、ここではコンピュータ970の動作方法の説明は繰り返さない。
【0111】
なお、GPU992は並列処理を行うことが可能であり、機械学習に伴う多量の計算を同時並列的又はパイプライン的に実行できる。例えばプログラムのコンパイル時にプログラム中に発見された並列的計算要素、又はプログラムの実行時に発見された並列的計算要素は、随時、CPU990からGPU992にディスパッチされ、実行され、その結果が直接に、又はRAM998の所定アドレスを介してCPU990に返され、プログラム中の所定の変数に代入される。
【0112】
第4 変形例
上記実施形態においては、BERTの更新の終了条件として、所定の終了条件とだけ述べている。この場合の終了条件とは、例えば全ての学習データについて所定回数だけ使用してBERTのパラメータ更新が終了したという条件である。別の条件としては、例えばパラメータの更新において、各パラメータの勾配がほぼゼロに等しくなったときという条件もあり得る。その他、終了条件としては様々なものが考えられる。
【0113】
上記実施形態においては、BERTとしてBERTラージを使用することを前提としている。しかしこの発明はBERTラージに限定されるわけではない。BERTベースを使用してもよい。またBERTと同様、トランスフォーマのエンコーダ又はそれに類似した要素を並べることにより、センテンスベースの変換が行えるようなモデルを使用してもよい。
【0114】
さらに、上記実施形態においては、図1に示す質問BERT80などにおいて、BERTの出力をベクトル化するために、平均プーリングを行っている。しかし、この発明はそのような実施形態には限定されない。平均プーリングに代えて、最大値プーリングを用いてもよい。
【0115】
上記実施形態においては、BERTの学習のための損失関数として平均二乗誤差を用いている。しかしこの発明はそのような実施形態には限定されない。尺度としてコサイン類似度ではなくソフトマックスを採用し、損失関数としてはクロスエントロピー誤差を用いてもよい。
【0116】
また、上記実施形態においては学習時のパッセージベクトルのクラスタリングにk平均法を用いている。しかしこの発明はそのような実施形態に限定されない。Related Minimum Variance基準によるクラスタリング、散布図基準によるクラスタリングなどを使用してもよい。
【0117】
また、上記実施形態においては、応答候補クラスタ特定部386には、トピックが付加された発話の質問ベクトルが与えられ、セントロイドDB378のセントロイドから適切なセントロイドのクラスタ識別子を得ている。しかしそれに限らず、応答候補クラスタ特定部386に、発話に基づく質問ベクトルとベクトル表現されたこれまでの対話履歴を与えて、類似度(あるいは距離)からセントロイドを決定しそのクラスタ識別子を得るようにしてもよい。
【0118】
さらに、上記実施形態では、図1に示す回答候補DB90及び図7に示す応答候補DB390には応答候補のURLが格納されている。しかしこの発明はそのような実施形態には限定されない。回答候補DB90及び応答候補DB390に、応答候補のURLではなく、パッセージそのものを格納しておいてもよい。その場合には、回答候補検索部92及び応答候補検索部392が出力するのは応答候補のURL群ではなく応答候補のパッセージそのものとなる。したがって、図1に示すパッセージ検索部96及び図7に示すパッセージ検索部396が必要なくなる。質問に対する回答時又は応答時にインターネット62からパッセージをダウンロードする必要がなくなるので、処理量はより少なくなり、応答は上記第1実施形態及び第2実施形態よりも速くなる可能性が高い。
【0119】
さらに、図2及び図8に示すパッセージDB164は、上記実施形態ではBERTの学習が終了すると不要であり廃棄できる。しかし、パッセージDB164に大量のパッセージを記憶しておいてもよいだけの余裕が記憶容量にあるならば、パッセージDB164を残しておいてもよい。この場合、回答候補DB90及び応答候補DB390に、応答候補のパッセージではなく、パッセージDB164から該当パッセージを検索するのに必要な情報を格納しておけばよい。検索するのに必要な情報とは、例えばそのパッセージを含むレコードの識別子、又はそのパッセージが存在していたURLなどである。特にURLを格納しておくようにすると、パッセージDB164にそのパッセージがあればパッセージDB164からそのパッセージを取り出すことができ、もしもパッセージDB164にそのパッセージがなければ、そのURLにアクセスしてそのパッセージをダウンロードできる。この場合には回答候補検索部92及び応答候補検索部392が出力するのは応答候補のURL群ではあるが、通常はインターネットにアクセスすることなく、ローカルに存在するパッセージDB164からそのパッセージを読み出せる。したがって、応答は上記第1実施形態及び第2実施形態よりも速くなる可能性が高い。また、一部のパッセージをパッセージDB164から削除したとしても、URLが分かっているので、インターネットからそのパッセージをダウンロードできる。
【0120】
上記した第2実施形態では、対話装置350への入力に対する応答候補を含むと思われるパッセージをインターネット62から検索し、それらパッセージを用いて応答生成部364において応答を生成している。しかし、この発明はそのような実施形態には限定されない。例えば発話362に対する応答として適切な応答候補があらかじめ準備できるなら、パッセージに代えて、そのような応答候補を応答候補DB390に記憶させておくことができる。発話362として様々なものを準備し、それらに対して適切な応答候補が定まれば、それを応答候補DB390に蓄積しておく。それら応答候補が大量に得られれば、それらを用いて第2実施形態で説明した手法により対話装置350が構築できる。この場合には、応答候補を含むと思われるパッセージから応答を生成するのではなく、あらかじめ発話に対する適切な応答であるものが集められ、それらから応答が生成される。したがって、応答は第2実施形態で説明した場合よりさらに適切なものとなる。
【0121】
そのように発話に対する応答として適切なものをあらかじめ集積する手法として以下のようなものが考えられる。まず、発話を構成する可能性のある名詞を大量に(例えば100万語)選ぶ。これらの名詞の各々から既存の手法を用いて複数の質問を生成する。それら質問を第1実施形態の質問回答装置50に入力する。質問回答装置50の回答に基づいて、元の名詞を含む質問に相応しい応答を作成し、その質問と応答を図8の質問パッセージDB412及びパッセージDB164に蓄積する。後は第2実施形態と同様の手法で図7及び図8に示す質問BERT380の訓練を行えばよい。発話に対する応答候補を含むと考えられるパッセージではなく、発話に対する応答として相応しい応答候補を使用して対話装置350が構築できる。このような変形例では、発話に対して最も適切と考えられる応答候補を事前に生成・選択することから、対話装置における計算処理の重い作業を事前に完了することができる。したがって、推論処理時の高速化及び計算資源の軽量化が図れる。
【0122】
なお、図7以下に示す第2実施形態では、訓練及び推論の双方においてトピックモデル374を用いている。しかし対話におけるトピック付与では、トピックモデル374を用いることが必須というわけではない。例えば対話履歴から何らかの条件を充足する単語など、又は対話履歴そのものを抽出し、トピック付与部376により発話362に付与してもよい。対話履歴を使用してトピックを特定するのではなく、あらかじめ行われる設定によりトピックを決定してもよい。例えば発話者が明示的にトピックを指定してもよい。また、トピック付与部376自体を省略してもよい。
【0123】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内での全ての変更を含む。
【符号の説明】
【0124】
50 質問回答装置
64、92 回答候補検索部
66、164、363 パッセージDB
68 回答生成部
80、168、380、416 質問BERT
82、382 質問ベクトル
84、378 セントロイドDB
86 回答候補クラスタ特定部
88、388 クラスタ識別子
90 回答候補DB
94 回答候補URL群
96、396 パッセージ検索部
150、400 学習装置
160、410 質問・パッセージ収集部
162 質問DB
166、414 BERT学習部
170 回答候補BERT
172 パッセージクラスタリング部
174、422 追加学習部
204、314 コサイン類似度算出部
206、316 正規化処理部
208、318 パラメータ更新部
210 ラベル
220、230、480、484、490 BERT
222、232、482、492 Pooling層
250、252 クラスタ
350 対話装置
360 応答候補検索装置
362 発話
364 応答生成部
368 応答整形部
370 対話履歴管理部
372 対話履歴DB
374 トピックモデル
376、450、452 トピック付与部
386 応答候補クラスタ特定部
390 応答候補DB
392 応答候補検索部
394 応答候補URL群
412 質問パッセージDB
418 応答候補BERT
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11