Li YunlongとSheldonはプロのチャット仲間です!ロールプレイングシステム「ChatHaruhi」は人気があり、32の中国語と外国語のキャラクターをサポートし、54,000の対話データをオープンソース化しています。

Li YunlongとSheldonはプロのチャット仲間です!ロールプレイングシステム「ChatHaruhi」は人気があり、32の中国語と外国語のキャラクターをサポートし、54,000の対話データをオープンソース化しています。

「ロールプレイング」は、大規模言語モデルのより興味深い応用シナリオです。LLMは、指定されたロールの口調でユーザーと会話することができ、「スティーブ・ジョブズとソクラテス」のような時間的および空間的なコミュニケーションも実現できます。

Glow、Character.AIなど、多くの企業が言語モデルに基づいたロールプレイング製品をリリースしています。ユーザーは簡単に「サイバー妻」を作成でき、ゲーム、クリエイティブ産業などの分野で多くの潜在的な応用シナリオがあります。

最近、GitHub でオープンソース化された楽しいロールプレイングチャットシステム「Chat Haruhi Suzumiya」がリリースされました。これは中国語の言語モデル「Luotuo」に基づいており、32 種類の中国語および外国語のキャラクターの会話スタイルを模倣できます。また、54,000 を超える会話データセットも提供しています。

プロジェクトリンク: https://github.com/LC1332/ChatHaruhi-Suzumiya

論文リンク: https://arxiv.org/abs/2306.09479

プロジェクトはまだ進行中で、豊富なデモ方法を提供しています。

デモリンク: https://huggingface.co/spaces/chenxiYan/ChatHaruhi-OpenAI

ユーザーは自由に自分の名前を付けることができます(できればオリジナルに近いもの)、その後、質問を入力してコミュニケーションを開始できます。たとえば、「Xiuqin」の役割を演じてLi Yunlongと会話すると、モデルのマルチラウンドの回答が非常に効果的であり、シミュレートされた会話スタイルも非常に適切であることがわかります。


基本的な考え方

オープンソースのロールプレイング実装では、ユーザーは通常、プロンプトに次のように入力します。

{series} の {character} のように行動してください。{character} が使用する口調、態度、語彙を使用して、{character} のように応答して回答してください。説明は書かないでください。{character} のように回答するだけです。{character} に関する知識をすべて知っておく必要があります。私の最初の文は「こんにちは、{character}。

[テレビ番組]の[登場人物]のように演じてほしいです。 [登場人物] が使用する口調、態度、語彙を使用して、[登場人物] と同じように応答し、答えてください。説明は書かないでください。 [キャラクター]らしく答えてください。 [そのキャラクター]について知るべきことはすべて知っておく必要があります。私の最初の言葉は「こんにちは、[キャラクター]」でした。

この単純な方法では、言語モデルはいくつかのロールプレイング機能を発揮できますが、この方法は言語モデルの既存の知識に大きく依存しており、漠然と記憶されているロールやコーパス外のロールをプレイすることはできません。

また、プロンプトの「キャラクターのすべての知識を知っている」という定義は曖昧であり、モデルは依然として幻覚を抱くことになります。

プロンプトの内容が十分に明確であっても、テキスト生成プロセス中に基礎となる言語モデルの影響を受けます。プロンプトの単語を調整し続けると、この状況は緩和される可能性がありますが、文字数が多すぎると作業負荷が非常に大きくなる可能性があります。

1 つのアイデアは、キャラクターの会話データに基づいてモデルを微調整することですが、研究者は、微調整されたチャットボットでは幻覚の問題が増えることを発見しました。また、模倣したい二次キャラクターを微調整するのに十分なデータを収集することは困難です。

ChatHaruhi プロジェクトの目標は、言語モデルでアニメ、テレビシリーズ、小説などさまざまなジャンルのキャラクタースタイルをシミュレートできるようにすることです。開発者は、仮想キャラクターは主に次の 3 つのコンポーネントで構成されていると考えています。

1. 知識と背景

「ハリー・ポッター」の登場人物は魔法の世界に存在し、涼宮ハルヒは日本の高校に存在するなど、仮想キャラクターはそれぞれ独自の設定で存在します。

チャットボットを構築する際には、対応するストーリーの設定を理解できるようにする必要があります。これは言語モデルのメモリの主なテストでもあり、通常は外部の知識ベースが必要です。

2. 性格

登場人物の性格も文学作品の非常に重要な要素です。作品全体を通して一貫性を保たなければなりません。作家の中には、執筆を始める前に登場人物の性格を定義する人もいます。

3. 言語習慣

言語習慣は、文脈の中で適切な例が示される限り、最も簡単に真似ることができます。

このプロジェクトの重要なアイデアは、元のスクリプトを可能な限り抽出して、対象キャラクターのメモリ データベースを形成することでした。

ユーザーが新しい質問をすると、システムは関連する古典的なプロットを検索し、キャラクターに設定されたプロンプト語を組み合わせ、言語モデルを制御してキャラクターをよりよく模倣します。

研究者らはまた、オリジナルのセリフが少ないキャラクターであっても、キャラクターの性格に合ったセリフを自動的に生成し、微調整に十分なデータを生成するシステムを設計した。

チャットボットのデザイン

特定の役割 R とクエリ質問 q が与えられた場合、チャットタスクは次のようにモデル化できます。知識背景、性格、言語習慣の条件下で返信を生成する確率 Θ:

キャラクターRはヒントテキストで指定できます(シリーズのキャラクターのように行動してほしい...)。

文脈内学習と同様に、キャラクターの以前の会話シーケンスを確率の条件として使用できます。

より広い世界観を持つキャラクターの場合、最も関連性の高い会話シーケンスを最初にメモリバンクから取得する必要があります。

システムプロンプト

前述の ChatGPT に使用できる一般的なロールプレイング プロンプトには、改善が必要な領域が 2 つあります。

1. 行を繰り返さない

ChatGPT や LLaMA2 などのモデルは、人間のフィードバックからの強化学習 (RLHF) を使用してトレーニングされると、「m つの異なるオプションを提供」や「m 個のタイトルを生成」などのタスクに直面したときに、コンテキスト内のコンテンツを繰り返さないことを好みます。

登場人物を真似するときは、小説や映画の名セリフを再利用できることをプロンプトで強調します。

2. キャラクターの個性が十分に際立っていない

RLHF メカニズムにより、各言語モデルには独自の言語設定があり、それが模倣効果に影響します。プロンプト語の最後にキャラクターの性格の説明を追加すると、模倣効果が向上します。

改善されたプロンプトワードは次のとおりです。

{シリーズ}の{キャラクター}のように行動してほしいです。あなたは今{キャラクター}のコスプレをしています。他の人の質問が小説に関するものであれば、小説の元のセリフを再利用してみてください。{キャラクター}が使用する口調、態度、語彙を使用して、{キャラクター}のように応答して答えてほしいです。{キャラクター}に関する知識をすべて知っておく必要があります。{キャラクターの性格の補足説明}

[テレビ番組]の[登場人物]のように演じてほしいです。あなたは今、[キャラクター]のコスプレをしています。他の人の質問が小説に関連している場合は、小説の元のセリフを再利用してみてください。 [登場人物] が使用する口調、態度、語彙を使用して、[登場人物] と同じように応答し、答えてください。 [そのキャラクター]について知るべきことはすべて知っておく必要があります。 {キャラクターの性格についての補足説明}

キャラクターのセリフ

小説、テレビシリーズ、映画の登場人物の行動をより正確に再現するため、研究者らは古典の脚本から大量の抜粋を収集した。しかし、一部の登場人物(クロストークアーティストのYu Qianなど)を除いて、すべての対話が質問と回答の形式になっているわけではなく、歴史的記録は物語の形式で構成できる。

元の会話検索

クエリが入力されると、埋め込み類似度に基づいて、対話ライブラリ D から最も類似した M 個のサンプルが選択されます。M の具体的な数は、言語モデルのトークン制限によって異なります。

会話記憶を構築する際、研究者は、検索プロセス中に他のストーリーのスペースを占有しないように、各ストーリーを短くすることを推奨しています。

チャットメモリ

一定のメモリを確保するには、各ユーザーのクエリとチャットボットの応答を記録し、すべての対話シーケンスを言語モデルに入力して、対話の一貫性を確保する必要があります。

実際の実装では、このメモリから始めて、トークンの総数を前方に計算し、言語モデルの対話履歴入力は 1200 トークンに制限され、約 6 〜 10 ラウンドの対話を収容できます。

ダイアログ合成

現在、ChatHaruhi はロールプレイングを完了するために ChatGPT または Claude API のみを使用できます。ユーザーがこの機能をローカル モデルに移行する場合は、適切なデータセットを構築する必要があります。

質問から会話を生み出す

収集されたデータは厳密な質疑応答形式ではないため、研究者は収集されたストーリー内の対象キャラクターの最初の文の前のすべての対話を質問として扱い、それを言語モデルに入力して後続の対話を生成することを選択しました。

質問生成

一部の文字はデータが非常に限られており、言語モデルを微調整するには不十分であることに注意することが重要です。

既存のデータからキャラクターの質問のデータ拡張を実行するために、研究者は Alpaca などのモデルを使用して、最初に明確な質問と回答のペアを提供し、次に約 10 個のヒューリスティック出力を生成し、次に定義済みのプロンプトを使用してキャラクターのトレーニング データを再生成します。

研究者らは合計 22,752 件のオリジナル会話データと 31,974 件の模擬質問を収集し、これらを合わせて ChatHaruhi-v1 データセットを構成しました。

実験結果

現在、定量的な実験結果とユーザー調査はまだ進行中です。この記事では、さまざまなモデルを定性的に簡単に比較するだけです。

1. GPT Turbo 3.5、システムプロンプトのみを使用する

2. Turbo 3.5、入力補完プロンプト、会話履歴、質問など

3. ChatGLM2、システムプロンプトのみ入力

4. ChatGLM2、完全なプロンプトを出す

5. ChatGLM2、ChatHaruhiデータで微調整、フルプロンプト入力

<<:  人工知能、液体冷却、そして未来のデータセンター

>>:  Nougat: 科学文書の OCR 用トランスフォーマー モデル

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

150億のパラメータと60%以上の初回合格率を持つHuaweiの大規模モデルが登場、コーディング能力はGPT3.5を超える

大規模モデルが AI 開発の新たなパラダイムとなるにつれ、大規模言語モデルをプログラミング分野に統合...

AIが米国の8年生の理科テストに高得点で合格。常識や推論の問題を解くことができ、同じ舞台でAIと競争する準備が整った。

8年生の理科のテストに60点で合格すれば、8万ドル(57万人民元相当)の賞金を獲得できます。 [[...

ViT以外にも、美団、浙江大学などが、視覚タスクのための統合アーキテクチャであるVisionLLAMAを提案した。

過去 6 か月間にわたり、Meta のオープン ソース LLaMA アーキテクチャはテストされ、LL...

...

IoT、ビッグデータ、AIの現状はどうなっているのでしょうか?

テクノロジーが今日の私たちの生活を根本的に変えてきたことは否定できません。私たちの先祖と比べると、今...

2021 年の自然言語処理 (NLP) のトレンド トップ 10

2020 年は、ディープラーニングベースの自然言語処理 (NLP) 研究にとって忙しい年でした。最...

将来、人工知能に置き換えられない仕事が最も収益性が高くなるでしょう。それがどれか見てみましょう。

誰もが知っているように、昔は銀行に行って業務を処理するには長い列に並ばなければなりませんでした。業務...

AI + スマート交通が全体のアップグレードと調整を実現

[[353150]]人工知能は、人間のように知覚、認識、決定、実行できる人工プログラムまたはシステム...

OpenAIのアルトマン氏、Nvidiaへの依存を減らすため中東の投資家とチップ協力について協議

1月20日、フィナンシャル・タイムズによると、OpenAIのCEOサム・アルトマン氏は、TSMCを含...

...

オープンソースツール | データサイエンスのための Python 入門

[[248716]]データ サイエンスの力を活用するために高価なツールは必要ありません。これらのオー...

KDnuggets 公式調査: データ サイエンティストが最もよく使用する 10 のアルゴリズム

[[174162]]最新の KDnuggets 調査では、データ サイエンティストが最もよく使用する...

中国科学院の張雲泉氏:コンピューティング能力は定量化可能であり、インテリジェントコンピューティングは公共サービスになる

[[410843]] 7月9日、2021年世界人工知能大会の期間中に開催された「新世代人工知能コンピ...

JavaScript 面接でよくあるアルゴリズムの質問の詳細な説明

[[185725]] JavaScript での変数の昇格を説明するいわゆるプロモーションは、その名...