|
出典: Baidu Geek Talk オタクトーク 01 機械による質問応答とは何ですか? 複数のキーワードに基づいてウェブページのリンクを検索する従来の検索エンジンとは異なり、機械質問応答(CQA)は自然言語で記述された質問に基づいて直接回答を得るため、情報検索の効率が大幅に向上します。機械CQAは日常生活に広く浸透しており、統計によると、検索リクエストの約40%、会話型リクエストの約30%が機械CQAに関連しています。 では、Baidu Searchにおける機械Q&A機能の現状はどうなっているのでしょうか?現状では、検索結果の上位に表示されるだけで、ほとんどのQ&Aニーズを直接満たすことができます。さらに、Baidu Searchはユーザーの質問領域を制限せず、ユーザーがあらゆる情報を質問できるオープンなQ&Aシステムです。 1.1 機械質問応答の開発の歴史 機械質問応答の発展の歴史は以下の通りで、機械学習の発展と一致しています。 モデリング手法の開発の観点から: 2013 年以前は、主に特徴エンジニアリング関連の作業が行われていました。つまり、質問といくつかの候補となる回答が与えられ、さまざまなリテラル マッチング機能を設計し、BM25 アルゴリズムなど、質問と回答の間の単語の一致度を計算していました。 2014年から2015年にかけて、ディープラーニングの発展に伴い、CNNやRNNなどのニューラルネットワークを使用して、質問と回答の表現間の意味的距離を計算するようになりました。 2016年から2017年にかけて、人々はAttentionネットワーク構造を使用してさまざまなモデル構造を設計し、質問と回答の間の深い意味的一致関係をさらに特徴づけるでしょう。 2018年から2021年にかけて、この研究は主にモデルのトレーニングに焦点を当て、より大規模で質の高い事前トレーニング済みモデルを使用して、複雑な質問応答マッチングタスクを完了しました。 2022年以降、生成モデルの応用に人々はより多くの注目を払うようになりました。 データセット開発の観点から: 2013 年に、主に多肢選択式テストと穴埋め式テストで構成される MCTest が導入されました。 2016年にSQuADがリリースされました。これは、ユーザーの質問に基づいて提供された記事から回答を抽出する、世界初の大規模読解データセットでした。 2017年、Baiduは中国語初の読解データセットであるDuReaderデータセットをリリースしました。 2018 年には、マルチホップ推論や常識推論などの複雑な質疑応答シナリオについてより詳細な研究を行った HotputQA などがリリースされました。 1.2 機械による質問応答モデリング 現在の主流パラダイム:Retriever + Reader Retriever = クエリベースの候補検索。つまり、クエリを入力すると、そのクエリに関連する候補(ウェブページ、動画、表、ナレッジグラフなど)を検索します。 Reader = 与えられた候補から回答情報を取得します。つまり、与えられた候補に基づいて、クエリと組み合わせることで回答をさらに抽出します。 Baidu検索は非常に強力な検索リトリーバーであり、関連性の高い候補クエリを提供できます。そのため、私たちの研究はリーダー、つまり検索結果に基づいてより適切な回答を抽出する方法に重点を置いています。 Readerの初期バージョンは、主に従来の特徴量エンジニアリング手法に基づいており、複雑で体系的なパイプラインプロセスを含んでいました。まず、クエリを分析して、想定される回答タイプ、エンティティ情報、質問タイプなどを取得します。次に、この情報に基づいて候補ライブラリから複数の候補を取得します。そして、クエリと候補間の関連スコアを計算するための複雑なマッチング機能を設計します。そして、候補をソートして最高ランクの回答を取得するランキング関数を設計します。このプロセスを下の図に示します。 このプロセスはパイプライン化されており、各ステップでエラーが蓄積されます。トレーニングプロセス全体を反復処理することは不可能であるため、メンテナンスコストが高くなります。その後、研究者たちはこれらの問題に対処するため、よりエンドツーエンドのアプローチを模索し、機械読解(MRC)の開発につながりました。 MRC(Multi-Reference Function)のタスクは、質問とドキュメントを入力として受け取り、複雑なプロセスを単一のモデルに直接置き換え、回答を出力するように定義されます。初期のMRC研究では、質問と回答の関係をモデル化するために比較的複雑なネットワーク構造が設計されました。古典的な方法はBiDAF(Bilateral Decision Making)です。その入力層は、ドキュメント全体とクエリをそれぞれ埋め込み表現にマッピングし、それぞれがLSTMなどのネットワークを介して質問とドキュメントのコンテキストの表現を学習します。次に、Attention相互作用層を使用して、双方向の注意を使用してクエリとドキュメントの関係をモデル化します。これに基づいて、LSTMネットワークを使用して、より豊富なコンテキスト表現を取得します。最後に、出力層は、各位置が回答の開始と終了となる確率を予測し、最も確率の高いセグメントが回答として抽出されます。 初期のモデル構造設計は多種多様で、問題をより良く解決し、ソリューションをモデル化することを目的としていました。 その後、事前学習済みモデルが徐々に発展するにつれて、複雑なモデル構造設計は不要であることが認識されました。Transformerは現在までに最も優れたモデル構造であり、これにより研究エネルギーが事前学習作業に充てられ、事前学習タスクの設計、損失関数、事前学習データなどに重点が置かれるようになりました。 この文脈において、初期のBERTやBaiduのERNIEなど、様々な事前学習済みモデルが登場しました。これらの事前学習済みモデルは、クエリと文書を特殊な記号で区切られた単一の入力シーケンスとして扱うため、MRCを簡素化します。事前学習済みモデルによる意味表現モデリングの後でも、回答の開始位置と終了位置は予測・抽出されます。 02 近年、生成技術が急速に発展しており、非常に多くの作品が発表されています。 初期かつ代表的な生成型リーダーとして、2017年に登場したS-NETがあります。これはMS-MARCOデータセット向けに特別に設計されました。このデータセットの特徴は、回答が複数の記事から取得され、語彙が原文と異なる場合があることです。 このようなタスクに対しては、生成的手法を用いて解決するのが自然なアプローチです。生成的手法は2段階のプロセスを設計します。第1段階は、上記のモデルと非常によく似た回答抽出モデルですが、候補記事を関連度に基づいてランク付けするパッセージランキングタスクが追加されています。第2段階は、抽出された結果を入力として受け取り、回答の要約を生成する生成モデルです(下図参照)。 ご覧のとおり、これらの初期の研究は、現在私たちが使用している生成的な質問応答プロセスと非常によく似ています。さらに、先ほど述べたRetrieverと呼ばれる検索モジュールを追加し、候補の抽出、ソート、そして生成という一連の処理を行っています。しかし、この研究は依然として参照と要約のために追加情報に依存しています。追加の入力情報に依存せず、直接回答を生成する生成モデルは存在するのだろうか、と疑問に思う人もいるかもしれません。 2019年に発表されたT5モデルは、この問題を解決した最初のモデルでした。このモデルは「事前学習+転移学習」アプローチを採用し、様々なNLPタスクを生成パラダイムの下に統合することで、質問応答、機械翻訳、感情分析、対話といった幅広いタスクに対応しました。数十億のパラメータ(当時としては相当に大規模と考えられていました)を持つ大規模モデルに蓄積された知識を用いて、質問に直接回答しました。また、エンコーダー・デコーダー、デコーダーのみ、ハイブリッドモデルなど、様々な生成モデルの構造を検証しました。 しかし、T5のようなモデルは簡単な質疑応答タスクを実行できるものの、まだ直接商用利用できる段階には至っていません。パラメータ数と学習方法には改善の余地があり、一部の一般的な問題に対しては良好な結果が得られていません。この技術が登場したのは、ChatGPTの登場によってです。ChatGPTは、はるかに大規模なパラメータスケール(数千億)を採用し、人間の反応に合わせる能力がより高く、ユーザーの指示を理解して、より複雑な質疑応答タスクを完了することができます。つまり、ChatGPTは商業的に実現可能な対話および質疑応答製品なのです。 オタクトーク 03 Baidu Searchのインテリジェントな質問と回答アプリケーション Baidu Searchは、多種多様な質疑応答シナリオを提供しています。回答抽出にも複数の方法があります。例えば、情報抽出によって百科事典やウェブページから知識グラフを抽出し、そこから回答を抽出できます。より一般的なアプローチは、読解によってウェブページのテキストから直接回答を抽出することです。また、表などの半構造化データからさらに情報を抽出し、より構造化されたプレゼンテーションに整理することも可能です。これはテキストだけでなく、動画コンテンツからの理解と回答抽出にも適用できます。 このように多様な質疑応答のシナリオに直面して、私たちはどのような課題に直面するのでしょうか? 課題 1 : 複雑な意味理解、推論、コンテキストモデリングの観点から、機械による質問応答が直面する課題は何ですか? 課題 2 : 検索トラフィックの増加と機械による質問応答における複雑なモデルの必要性に直面した際に、迅速な応答を実現するにはどうすればよいでしょうか。 課題3 :オープンドメイン検索では、ウェブページのデータは非常に複雑で、回答の質が大きく異なります(不正確、偏りがあるなど)。どうすれば正確で高品質な回答を提供できるでしょうか? 3.1 複雑な意味理解、推論、コンテキストモデリングの課題への取り組み 例えば、下図の最初のケースでは、答えに「彼女」という記述がありますが、これは文脈の逆参照による解決と理解を必要とします。この文脈は非常に長くなる場合があり、深い理解によってのみ、必要な情報が他の番組ではなくクイズ番組を指していることを判断できます。この問題の解決には、非常に複雑なモデルが不可欠です。 私たちの解決策は「大規模モデル + 事前トレーニング」です。 事前トレーニングでは、いくつかの段階を含む非常に豊富なデータを使用します。
大型モデルについて:
例えば、私たちが使用しているDocMRCモデルと呼ばれるモデルは、人が読解問題に答えながら記事全体を読む様子をシミュレートします。そのロジックは下の図に示されています。 入力層は長シーケンスモデリングをサポートし、文書セグメント全体をセグメントに分割します。具体的には、各文の前にトークン表現を挿入し、CLSを用いて各文の表現を集約します。全体的な入力は、局所的な表現を学習するための浅い単語レベルのモデル構造です。この表現に基づいて、階層構造を通して深い文脈関係を学習します。最終的に、CLS固有のトークン表現が出力され、回答にラベルを付けます。 出力層には 2 種類の出力があります。1 つは質問に対する回答の要約を複数の文で出力するためのもので、文層の出力を使用してシーケンス ラベル付けを実行します。もう 1 つは回答内の主要なコンテンツ (複数のエンティティである可能性があります) を強調するためのもので、シーケンス ラベル付けの予測にトークン表現を使用します。 3.2 全体的なモデル速度を向上させて、迅速な応答を実現します。 検索トラフィックは日々膨大で、前述の通り、大規模または複雑なモデルを使用する必要があり、多くの時間とリソースを消費します。モデル全体の速度を向上させ、レスポンスとリソースバランスを高速化する他の方法はあるでしょうか? 先ほど紹介した、モデル構造を最適化する階層モデリングは、1 つの解決策です。 もう一つの一般的なアプローチは知識蒸留です。これは、大規模なモデルから知識を抽出し、それを単一の小規模なモデルに適用することで、同等のパフォーマンスを維持しながら推論速度を向上させるものです。ここでは、「複数教師、多段階蒸留」モデルを採用しています。 質問応答シナリオでは、複数の異なる教師を訓練し、これらの異なる教師をアンサンブルすることで学習目標の上限を向上させます。次に、複数の教師の蒸留を行うための基本的なアプローチの一つとして、各教師の加重スコアまたは損失を直接平均化し、その結果を学習者に当てはめさせるというものがあります。しかし、このアプローチでは最適なパフォーマンスが保証されない可能性があると考えています。私たちは、異なるサンプルに基づいて教師を動的に選択することを目指しており(教師ごとに焦点が異なるため)、下図に示すように、データに基づいて教師を動的に選択する多段階蒸留モードを設計しました。 最初の段階は教師モデルのトレーニングであり、学習の限界を高めるために複数の教師をトレーニングします。 第2段階では、教師なし蒸留法が用いられます。ラベル付きデータなしでは教師の質を判断することは困難であるため、教師間の投票方式を採用し、勾配方向に基づいて動的に教師を選択し、ノイズの多い可能性のある教師を排除します。 第 3 段階では、教師あり蒸留が実行され、ラベル付けされたサンプルに基づいて教師が動的に重み付けされます。 この多段階、複数教師の蒸留方法を通じて、最終的に、単一の大規模モデルのパフォーマンスを上回る、非常に優れたパフォーマンスを発揮する生徒モデルを取得しました。 3.3 正確で質の高い回答を提供する方法 検索シナリオにおける質疑応答データは非常に複雑で、回答の質は様々です。多くのウェブページには、誤った情報や一方的な説明が含まれている可能性があります。正確かつ高品質な回答をどのように提供できるかが、私たちが直面する3つ目の課題です。 下の画像は、検索シナリオにおける複雑な回答の例を示しています。左側には長文の回答が表示されており、ユーザーが要点を素早く把握することが困難です。このような場合、ユーザーが重要な情報を素早く理解し、効率性を向上させるために、回答を要約する手法が必要です。抽出型の回答手法だけではもはや不十分であり、回答を深く圧縮・要約する生成技術を活用する必要があります。 さらに、単一の記事から回答を抽出するだけでは、十分な網羅性が得られない可能性があります。複数のウェブページからの回答を要約し、下図に示すようにモデルを生成する必要があります。複数の記事からの回答を要約し、回答内に出典をマークすることで、ユーザーが回答の出所を明確に把握できるようにします。 結論として、包括的、効率的、かつ正確な回答を生成するには、より優れた生成モデルが必要です。現在、多くの大規模言語モデルが利用可能ですが、検索シナリオにおける質問応答タスクを効果的に処理できる大規模言語モデルはどれでしょうか? オタクトーク 04 検索強化生成 大規模な言語モデルを質問への回答に直接使用すると、まだいくつかの問題が残ります。 まず、ビッグオラクルモデルではすべての知識を記憶することが難しく、エラーが発生したり、ロングテールの知識を認識しなかったりする可能性があります。 第二に、大規模言語モデルの知識は古くなりやすく、更新が困難であるため、新しい知識をタイムリーに認識することが不可能になります。 第三に、大規模言語モデルの出力は検証が困難であり、現状ではユーザーの信頼度が低い。生成モデルによって直接生成された答えを完全に信頼することはできない。 したがって、このような状況では、人々は回答の検証を支援する何らかの方法を望んでいます。 4.1 検索強化生成プロセス 検索ベースの質疑応答シナリオ向けに、検索強化生成ソリューションを設計し、Baidu Searchに実装しました。検索強化生成は、検索エンジンに基づいて関連情報を補完することで、大規模モデルの錯覚を効果的に軽減し、回答の正確性、適時性、信頼性を向上させます。全体的なプロセスは、以下の複数の段階で構成されています。 1. 文書検索フェーズでは、複数の参照ソースが検索されます。 2. 回答抽出段階では、生成モデルの負担を軽減するために記事から重要な情報が抽出されます。 3. 質問作成段階では、入手した参考資料に基づいて質問に回答し、回答内容に通し番号を付けて出典を示すなどの具体的な要件が提供されます。 4. 回答生成段階では、プロンプトが大規模モデルに入力され、最終的な検索結果が得られます。 上の画像のように、右側の回答は複数の記事を要約したもので、参考文献も明記されています。これは、私たちがユーザーに提供したいと考えている回答です。 4.2 大規模モデルの生成とトレーニングプロセス 大規模モデルの学習プロセスは、下図に示すように4つの段階で構成されています。最初の2段階は現在主流となっている大規模モデルの学習プロセスと同様ですが、最後の2段階は検索強化型の質問応答シナリオ向けに特別に調整されています。 最初の段階である一般的な事前トレーニングでは、一般的な Web ページ コーパスと、書籍、表、対話などの垂直コーパスをいくつか用意して、一般的な事前トレーニング済みの基本モデルを取得します。 第 2 段階では、指示を微調整し、モデルが理解できるように一般的な指示をいくつか提供します。 3 番目の段階では、ビジネス指示に注釈を付け、それを特定の微調整に使用して、検索シナリオで整理された複数の結果を含む質疑応答シナリオを理解できるようにします。 第4段階では、ユーザーの行動フィードバックに基づいて微調整が行われ、強化学習などの手法を通じて生成される回答の品質が向上します。 4.3 複雑な指示を分解して学習します。 検索シナリオでは、非常に複雑なコマンドが使用されることが多く、非常に具体的な詳細と参照ソースの提供が求められます。生成モデルはどのようにしてこれらの複雑なコマンドを理解するのでしょうか?一つの解決策として、このような複雑なコマンドを多数アノテーション化し、生成モデルに入力することが挙げられますが、これは必ずしも最適な方法ではありません。モデルがこれらのコマンドを過度に学習すると、より優れた汎化を達成できず、モデルのパフォーマンスが低下する可能性があります。他に方法はありますか? ここでは、CoT (CoT) のアイデアを活用し、命令を分解することで、特定のシナリオのコンテキストで複雑な命令を取得することを学習することを提案します。 上記の複雑な手順は、通常、次の 3 つの簡単な手順で完了できます。 最初のステップは、質問に答えるために使用できる検索結果を選択することです。 2 番目のステップは、選択した検索結果に基づいて回答を整理して生成することです。 3 番目のステップは、番号形式を使用して参照ソースを追加することです。 ご覧のとおり、非常に複雑な命令であっても、複数のステップを経て複数の単純な命令に分解することができます。まずモデルに単純な命令を学習させて理解させれば、複雑な命令に関する大量のデータを必要としなくても、モデルが複雑な命令で非常に優れたパフォーマンスを発揮できるようになるでしょう。 4.4 推論の高速化とリソース消費の削減 一部の識別モデルでは、蒸留法などの手法が利用可能です。しかし、生成モデルでは、モデルサイズが小さいとパフォーマンスに大きな影響を与えるため、蒸留法は適さなくなり、他の高速化手法が必要になります。業界の最近の研究では、検索強化生成シナリオを対象とした「参照による推論」などの関連アプローチに焦点が当てられています。この手法は、固定プレフィックスを検出し、参照から固定長のテキストを候補シーケンスとしてコピーし、モデル出力と一致するかどうかを検証することで、下図に示すように並列マルチステップデコードを実現します。 生成を加速するためのより一般的な方法もいくつかあります。例えば、小さなモデルを用いて複数のステップを迅速に生成し、その小さなモデルの予測結果を大きなモデルに直接入力することができます。大きなモデルは、デコード結果の整合性を検証します。先行研究と同様に、高速化も実現可能ですが、小さなモデルと大きなモデルの有効性を可能な限り近づけることが求められます。これにより、正確な予測の確率が高まり、高速化率も向上します。 |