すべては ChatGPT の誕生から始まります...
かつては平和だった NLP コミュニティは、この突然の「怪物」の到来に怯えていました。一夜にして、NLP サークル全体が大きな変化を遂げました。業界もすぐに追随し、資金が急増し、ChatGPT を複製する道が始まりました。学術コミュニティは突然混乱状態に陥りました... みんなゆっくりと私は始めました「NLP は解決する!」と信じている
# しかし、最近でも活発に活動している NLP 学会や、次々と出てくる優れた研究から判断すると、これはそれは当てはまらず、「NLP が現実になった!」とさえ言えるかもしれません。
過去数か月間、北京大学、ミラ、香港科技大学、ETHチューリッヒ (ETH)、ウォータールー大学、ダートマス大学、体系的かつ包括的な研究の後、シェフィールド大学や中国科学院などの多くの機関が 110 ページの論文を作成しました。この論文では、世界のテクノロジー チェーンについて系統的に詳しく説明しています。 # ChatGPT 以降の時代: インタラクション。
- 紙のアドレス: https://arxiv.org/abs/2305.13246
- プロジェクト リソース: https://github.com/InteractiveNLP-Team
「ヒューマン イン ザ ループ (HITL)」や「ライティング アシスタント」などの従来のタイプのインタラクションとは異なり、この記事で説明するインタラクションには、より高度で包括的な視点があります。
業界の皆様へ: 大規模なモデルに事実性や適時性などの解決が難しい問題がある場合、ChatGPT X はそれらを解決できますか? ChatGPT プラグインと同様に、チケットの予約、食事の注文、絵の描画をワンステップで行うためのツールと連携させることができます。言い換えれば、体系的な技術フレームワークを通じて、現在の大規模モデルの制限の一部を緩和できるということです。 -
学界の皆様へ: 本当の AGI とは何ですか?実際、ディープラーニングの 3 人の巨人であり、チューリング賞を受賞したヨシュア ベンジオ氏は、2020 年の初めに対話型言語モデル [1] の青写真を説明しました。これは、環境と対話し、さらには社会的に対話できる言語モデルです。この方法によってのみ、言語の最も包括的な意味表現を得ることができます。ある程度、環境や人々との相互作用が人間の知性を生み出します。
したがって、言語モデル (LM) が外部エンティティやそれ自体と対話できるようにすることは、大規模なモデルに固有の欠点を埋めるのに役立つだけでなく、 AGI. 重要なマイルストーンに最適です。
インタラクションとは何ですか?
実のところ、「インタラクション」という概念は著者らも想像していません。 ChatGPT の出現以来、次のような NLP の世界の新しい問題に関する多くの論文が出版されています。
- 基盤モデルによるツール学習では、言語モデルがツールを使用して実際の操作を推論または実行する方法について説明します [2];
- 意思決定のための基盤モデル: 問題、方法、および機会では、言語モデルを使用して意思決定を行う方法について説明しています [3];
- ChatGPT for Robotics: 設計原則とモデルの能力では、ChatGPT エンパワーメント ロボットの使用方法について説明しています [ 4];
- 拡張言語モデル: 調査では、思考の連鎖 (Chain of Thought)、ツールの使用 (Tool-use)、およびその他の拡張言語モデルの使用方法について説明し、次の点を指摘します。言語モデルは、外部の世界 (つまり、行為) に実際の影響を与えることができるツールを使用します [5];
- 汎用人工知能の火花: GPT-4 による初期の実験では、GPT の使用方法について説明しています- 4 人、環境、ツールなどとのインタラクションの場合を含む、さまざまな種類のタスクを実行します [6]。
NLP 学術コミュニティの焦点は、「モデルを構築する方法」から「フレームワークを構築する方法」、つまり次のようなものに徐々に移行していることがわかります。トレーニングと推論のプロセス中に、より多くのエンティティを言語モデルに組み込む。最も典型的な例は、よく知られているヒューマン フィードバックからの強化学習 (RLHF) であり、その基本原理は、言語モデルに人間との対話 (フィードバック) から学習させることです [7]。この考え方は、ChatGPT の仕上げとなっています。
したがって、「インタラクション」の機能は、ChatGPT 以降の NLP の最も主流の技術開発パスの 1 つであると言えます。著者らの論文は、「インタラクティブ NLP」を初めて定義して体系的に分解し、主にインタラクティブ オブジェクトの次元に基づいて、さまざまな技術的ソリューションの長所と短所、およびアプリケーションの考慮事項を可能な限り包括的に説明しています。
##LM は人間と対話して、ユーザーのニーズをよりよく理解して満たし、応答をパーソナライズし、人間の価値観と一致させ、改善します全体的なユーザー エクスペリエンス; LM はナレッジ ベースと対話して、言語で表現された事実の知識を強化し、応答の知識背景の関連性を強化し、外部情報を動的に利用してより正確な応答を生成します。 LM はモデルやツールと対話して、複雑な推論タスクを効果的に分解して解決し、特定の知識を利用して特定のサブタスクを処理し、エージェントの社会的行動の出現を促進します。 LM は環境と対話して言語の基礎を学び、推論、計画、意思決定などの環境観察に関連する具体化されたタスクを効果的に処理します。
したがって、対話型フレームワークでは、言語モデルはもはや言語モデルそのものではなく、言語ベースで「観察」および「実行」できるモデルになります。 「フィードバックを得る」ことができるエージェント。
オブジェクトと対話することを、作者はそれを「XXX-in-the-loop」と呼び、このオブジェクトが言語モデルのトレーニングまたは推論のプロセスに参加し、それに基づいていることを示します。カスケード、ループ、フィードバック、または反復の形式が関係します。
#人々との対話
##言語モデルを人と対話させます人との対話は 3 つの方法に分類できます。
#プロンプトを使用してコミュニケーションを図る
- フィードバックを使用して学習
- 構成を使用した調整
- ##さらに、スケーラブルな展開を確保するために、モデルやプログラムが人間の行動や好みをシミュレートするためによく使用されます。 、人間の中学校の学習からシミュレートされます。
一般に、人間の対話において解決すべき中心的な問題は調整です。つまり、言語モデルの応答をユーザーなどのニーズにさらに適合させる方法です。これは無害で十分な根拠があり、ユーザーはより良いユーザー エクスペリエンスを得ることができます。
「プロンプトを使用してコミュニケーションする」では、主に対話のリアルタイムかつ継続的な性質に焦点を当てています。つまり、複数ラウンドの対話の継続的な性質を強調しています。これは、会話型 AI [8] の考え方と一致しています。つまり、複数回の対話を通じてユーザーに質問を続けさせ、対話中に言語モデルの応答がユーザーの好みに徐々に一致するようにします。このアプローチでは、通常、対話中にモデル パラメーターを調整する必要はありません。
現在、「フィードバックを使用した学習」が調整の主な方法であり、ユーザーが言語モデルの応答にフィードバックを提供できるようにするものです。このフィードバックには、「良い/悪い」というものがあります。 」アノテーションは、自然言語の形式でより詳細なフィードバックにすることもできます。これらのフィードバックをできるだけ高くするためにモデルをトレーニングする必要があります。典型的な例は、InstructGPT で使用される RLHF [7] で、最初にモデル応答のユーザーラベル付き嗜好フィードバック データを使用して報酬モデルをトレーニングし、次にこの報酬モデルを使用して特定の RL アルゴリズムで言語モデルをトレーニングし、報酬を最大化します。 (以下に示すように))。
人間のフィードバックによる指示に従う言語モデルのトレーニング [7]
「構成を使用して調整する」は、ユーザーが言語モデルのハイパーパラメーター (温度など) や言語モデルのカスケード モードなどを直接調整できるようにする特別な対話方法です。典型的な例は Google の AI チェーン [9] であり、異なるプリセット プロンプトを持つ言語モデルが相互に接続されて、合理化されたタスクを処理するための推論チェーンを形成します。ユーザーは UI を介してドラッグ アンド ドロップして、このチェーンのノード接続方法を調整できます。 。
「ヒューマン シミュレーションからの学習」は、特にトレーニング プロセスにおいて実際のユーザーを使用するのが非現実的であるため、上記 3 つの方法の大規模な展開を促進できます。たとえば、RLHF は通常、ユーザーの好みをシミュレートするために報酬モデルを使用する必要があります。もう 1 つの例は Microsoft Research の ITG [10] で、これは Oracle モデルを使用してユーザーの編集動作をシミュレートします。
最近、スタンフォード大学の Percy Liang 教授らは、人間と LM の相互作用に関する非常に体系的な評価スキームを構築しました: 人間と言語モデルの相互作用の評価 [11]。興味のある読者はこの論文を参照するか、または元のテキスト。
#ナレッジ ベースとの対話
##言語モデルとナレッジの間で対話するには 3 つの手順がありますベース:
補足知識のソースを決定します: Knowledge Source 知識の取得: Knowledge Retrieval 知識を活用して強化する: 詳細については、この文書の「インタラクション メッセージの融合」セクションを参照してください。ここでは紹介しません。
一般に、ナレッジ ベースを操作すると、言語モデルの「幻覚」現象を軽減できます。つまり、出力の事実性や正確性などが向上します。また、言語モデルの適時性を向上させたり、言語モデルの知識や機能を補完したりすることもできます (以下に示すように)。
MineDojo [16]: 言語モデル エージェントが知らないタスクに遭遇したとき、言語モデル エージェントはそこから学ぶことができます。ナレッジ ベース 学習資料を検索し、その資料を利用してこのタスクを完了します。 「知識源」は、WikiText などのクローズドコーパス知識 (Corpus Knowledge) と [15] の 2 種類に分けられます。検索エンジンを利用して得られる知識など、オープンネットワークの知識(インターネット知識)である[14]。
「知識検索」は 4 つの方法に分かれています:
- 言語ベースのスパース表現と語彙一致スパース検索 (スパース検索): N グラム マッチング、BM25 など。
- 言語ベースの密表現と意味的マッチングに基づく密検索 (密検索): シングルタワーまたはツインタワー モデルを検索者として使用するなど。
- 生成検索に基づく: これは比較的新しい方法であり、代表的な研究は Google Tay Yi らの Differentiable Search Index [12] です。言語モデル。クエリを与えた後、対応するナレッジのドキュメント ID またはドキュメント コンテンツを直接出力します。言語モデルはナレッジ ベース [13] であるためです。
- 強化学習に基づく: これも比較的最先端の手法であり、OpenAI の WebGPT [14] などの代表的な研究では、人間のフィードバックを使用してモデルをトレーニングし、正しい知識を取得します。
#モデルまたはツールとの対話
##言語モデルは、主にモデルまたはツールと対話します。目的は、複雑な推論タスクをいくつかのサブタスクに分解するなど、複雑なタスクを分解することです。これは、Chain of Thought [17] の中心的なアイデアでもあります。さまざまなサブタスクは、さまざまな機能を持つモデルやツールを使用して解決できます。たとえば、コンピューティング タスクは電卓を使用して解決でき、検索タスクは検索モデルを使用して解決できます。したがって、この種のインタラクションは、言語モデルの推論、計画、および意思決定の能力を向上させるだけでなく、「幻覚」や不正確な出力などの言語モデルの制限を軽減することもできます。特に、ツールを使用して特定のサブタスクを実行する場合、WeChat API を使用して友人のサークルを投稿するなど、外部の世界に一定の影響を与える可能性があります。これは「ツール指向」と呼ばれます。 Learning" [ 2].
さらに、複雑なタスクを明示的に分解することが難しい場合があります。この場合、異なる役割やスキルを異なる言語モデルに割り当てることができます。これらの言語モデルは、タスクを分解するための相互協力とコミュニケーションのプロセス中に暗黙的かつ自動的に分業を形成します。この種のインタラクションは、複雑なタスクの解決プロセスを単純化するだけでなく、人間社会をシミュレートし、何らかの形のインテリジェント エージェント社会を構築することもできます。
著者がモデルとツールをまとめているのは、主にモデルとツールが必ずしも 2 つの別個のカテゴリではないためです。たとえば、検索エンジン ツールと取得モデルは必須ではありません。この本質は、著者によって「タスク分解後、どのような種類のオブジェクトがどのような種類のサブタスクを引き受けるか」を使用して定義されています。
言語モデルがモデルまたはツールと対話する場合、次の 3 種類の操作があります。
思考: モデルは対話します。それ自体で、タスクの分解と推論を実行します。 演技: モデルは、推論を支援するため、または外部の世界に実際の影響を与えるために、他のモデルや外部ツールなどを呼び出します。 ; 共同作業: 複数の言語モデルのエージェントが相互に通信および共同作業して、特定のタスクを完了したり、人間の社会的行動をシミュレートしたりします。
注: 思考では主に「多段階の思考連鎖」について説明します。つまり、言語に応じたさまざまな推論ステップ、モデルへのさまざまな呼び出し (複数のVanilla CoT [17] のように、モデルを 1 回実行して同時に思考の答えを出力する (単一モデルの実行) のではなく、モデルの実行)。
ここで継承されるものの一部は定式化です。 ReAct [18] の。
典型的な思考ワークには、ReAct [18]、Least-to-Most Prompting [19]、Self-Ask [20] などが含まれます。たとえば、Least-to-Most Prompting [19] では、まず複雑な問題をいくつかの単純なモジュールのサブ問題に分解し、次に言語モデルを繰り返し呼び出してそれらを 1 つずつ解決します。
演技に関する代表的な作品には、ReAct [18]、HuggingGPT [21]、Toolformer [22] などが含まれます。例えば、Toolformer [22] は、言語モデルの事前学習コーパスを、ツール使用プロンプトを備えた形式に処理するため、学習済み言語モデルは、テキスト生成時に適切なタイミングで適切な言語を自動的に呼び出すことができます。検索エンジン、翻訳ツール、時間ツール、計算機など)特定の下位問題を解決します。
コラボレーションには主に以下が含まれます:
- 閉ループ対話: 大きな言語を介したソクラテス モデル [23] などモデル、視覚言語モデル、音声言語モデルの閉ループ対話により、視覚環境に特有の特定の複雑な QA タスクを完了します。
- 心の理論: あるエージェントが別のエージェントの状態を理解して予測し、相互の効率的な対話を促進できるようにすることを目的としています。たとえば、EMNLP 2021 の優秀論文である MindCraft [24] は、2 つの異なる言語モデルに異なるが補完的なスキルを提供し、コミュニケーション プロセス中に MineCraft の世界で特定のタスクを完了するために協力できるようにします。有名な Graham Neubig 教授も、最近では [25] など、この研究の方向性に非常に注目しています。お互いに 。最も典型的な例は、最近世界に衝撃を与えたスタンフォード大学のジェネレーティブ エージェント [26] です。サンドボックス環境を構築し、大きなモデルから「魂」を注入された多くの知的エージェントがその中で自由に移動できるようにすると、自発的に人間のようなものを表現できるようになります。おしゃべりや挨拶などの社会的行動には、「西洋世界」の雰囲気があります (以下を参照)。さらに、より有名な作品は、DeepGCN の作者による新しい作品 CAMEL [27] です。これにより、大規模なモデルによって権限を与えられた 2 人のエージェントが、人間の介入をあまり必要とせずに、相互に通信する過程でゲームを開発したり株式を株したりすることができます。 .介入。著者は論文の中で「大規模モデル社会」(LLM Society)という概念を明確に提唱している。
生成エージェント: 人間の行動のインタラクティブなシミュレーション、https://arxiv.org/pdf/2304.03442 。 pdf
環境との対話
言語モデルと環境2 つの異なる象限に属します: 言語モデルは抽象的なテキスト記号に基づいて構築され、高度な推論、計画、意思決定、その他のタスクに優れていますが、環境は特定の感覚信号 (視覚情報、聴覚など) に基づいて構築されています。または、観察、フィードバック、状態遷移などの提供など、いくつかの低レベルのタスクが自然に発生する場合もあります (例: 現実世界ではリンゴが地面に落ち、「つる植物」が地面に落ちる)シミュレーション エンジンに表示されます)。
したがって、言語モデルが効果的かつ効率的に環境と対話できるようにするために、主に次の 2 つの側面の取り組みが必要になります。
モダリティグラウンディング: 言語モデルが画像や音声などのマルチモーダル情報を処理できるようにします;
- アフォーダンスグラウンディング: 言語モデルが、言語モデルが可能な規模で適切な情報を処理できるようにします環境の特定のシーン オブジェクトは、可能な適切なアクションを実行します。
- #モダリティ グラウンディングの最も典型的なものは、視覚言語モデルです。一般的に言えば、OFA [28] などの単一タワー モデル、BridgeTower [29] などの 2 タワー モデル、または BLIP-2 [30] などの言語モデルと視覚モデルの相互作用を使用して実行できます。ここではこれ以上の詳細は述べませんが、詳細についてはこの文書を参照してください。
アフォーダンス グラウンディングには主に 2 つの考慮事項があります。つまり、(1) 特定のタスクの条件下でシーン スケールの知覚 (シーン スケールの知覚) を実行する方法、および (2) )可能なアクション。例えば:#####################
たとえば、上のシーンでは、「リビング ルームの電気を消してください」と「シーン スケールの認識」という与えられたタスクでは、選択する代わりに、赤枠のすべての照明を見つける必要があります。緑のものはリビングルームではなくキッチンにあります。丸で囲まれたライトの場合、「可能なアクション」では、ライトを消すための実現可能な方法を決定する必要があります。たとえば、コードライトを引くには「引く」アクションが必要です。ライトのオンとオフを切り替えるには「トグルスイッチ」アクションが必要です。
一般的に、アフォーダンス グラウンディングは、SayCan [31] などの環境に依存する値関数、またはグラウンディング デコーディング [ 32] 待ってください。これは、人、モデル、ツールなどと対話することによって解決することもできます (以下を参照)。
#内なる独白 [33]
使用するものインタラクション用:インタラクション インターフェイス
論文のインタラクション インターフェイスの章では、著者は、さまざまなインターフェイスの使用法、利点、欠点を体系的に説明しました。インタラクション言語およびインタラクション メディア。次のものが含まれます。
- 自然言語: 数ショットの例、タスクの指示、役割の割り当て、さらには構造化された自然言語など。一般化と表現力におけるその特性と機能について主に説明します。
- 形式的な言語: コード、文法、数式など。解析性と推論能力におけるその特徴と機能について主に議論されます。
- マシン語: ソフト プロンプト、離散化されたビジュアル トークンなど。一般化におけるその特徴と機能、情報ボトルネック理論、インタラクション効率などを主に議論します。
- 編集: 主にテキストの削除、挿入、置換、保持などの操作が含まれます。その原理、歴史、利点、および現在の制限について説明します。
- 共有メモリ: 主にハードメモリとソフトメモリがあり、前者は履歴状態をメモリとしてログに記録し、後者は読み書き可能なメモリ外部モジュールを使用して保存します。 . テンソル。この文書では、この 2 つの特性、機能、制限について説明します。
対話方法: 対話方法
この論文では、これについても包括的に説明しています。詳細かつ体系的に以下を含むさまざまな対話方法:
- プロンプト: モデル パラメーターを調整せずに、言語モデルはプロンプト エンジニアリングを通じてのみ呼び出されます。これには、コンテキスト内学習、思考の連鎖、ツール使用のヒント (ツールの使用)、カスケード推論の連鎖 ( Prompt Chaining) やその他の手法について、制御性や堅牢性の考慮など、さまざまなプロンプト手法の原理、機能、さまざまなトリックや制限について詳しく説明します。
- 微調整: モデル パラメーターを調整して、モデルが対話型情報から学習して更新できるようにします。このセクションでは、教師あり命令チューニング、パラメーター効率の良い微調整、継続学習、半教師あり微調整などの方法について説明します。これらの方法の原理、機能、利点、特定の使用における考慮事項、および制限について詳しく説明します。これには、ナレッジ編集 (つまり、モデル内のナレッジの編集) の一部も含まれます。
- アクティブ ラーニング: インタラクティブなアクティブ ラーニング アルゴリズム フレームワーク。
- 強化学習: インタラクティブな強化学習アルゴリズム フレームワーク。オンライン強化学習フレームワーク、オフライン強化学習フレームワーク、人間のフィードバックからの学習 (RLHF)、環境フィードバックからの学習 (RLEF)、からの学習について説明します。 AIフィードバック(RLAIF)などの手法。
- 模倣学習: オンライン模倣学習、オフライン模倣学習などについて説明する対話型模倣学習アルゴリズム フレームワーク。
- インタラクション メッセージ フュージョン: 上記のインタラクション方法すべてに統一フレームワークを提供します。同時に、このフレームワーク内で外側に拡張し、次のようなさまざまな知識と情報の融合ソリューションについて議論します。クロスアテンション融合方式(クロスアテンション)、制約付き復号融合方式(制約付き復号)など
その他の議論
スペースの制限のため、この記事では、評価、アプリケーション、倫理、セキュリティ、将来などの他の側面に関する議論については詳しく説明しません。開発の方向性。ただし、これらの内容は論文の原文でも 15 ページを占めているため、読者は原文で詳細を参照することをお勧めします。
インタラクションの評価
この論文での評価の議論には主に次のキーワードが含まれます:
インタラクティブ NLP の主な用途
##制御可能なテキスト生成
- 人々とのインタラクション: RLHF のイデオロギー的スタンピング現象など
- 知識とのインタラクション: Knowledge-Aware Fine -チューニング [34] など。
- モデルやツールとの対話: 分類器ガイド付き CTG など。
- 環境との対話: アフォーダンス グラウンディングetc
インタラクティブ ライティング アシスタント (ライティング アシスタント)
- コンテンツ サポート:コンテンツ サポート タイプ
- コンテンツ チェックと研磨: コンテンツ チェックと研磨タイプ
- コンテンツ エンリッチメント: コンテンツ エンリッチメント タイプ
#Content Co-creation:コンテンツ作成タイプ
Embodied AI
#観察と操作: 基本
- ナビゲーションと探索: 高度な (長期的な具体化されたタスクなど)
- 複数の役割を持つタスク: 高度な#####################
- ゲーム(テキスト ゲーム)
- テキストを含むインタラクティブ ゲーム プラットフォーム: インタラクティブ テキスト ゲーム プラットフォーム
- いかにインタラクティブであるか言語モデルはテキストのみのゲームを強化できます: テキストのみのゲームのプレイ
- インタラクティブな言語モデルがテキスト メディアを含むゲームを強化できる方法: テキスト支援ゲームの強化
- その他の応用
- 分野・課題特化(Specialization):例えば、金融分野や医療分野などに特化した言語モデルフレームワークをどのように作成するか。交流 。
- パーソナライゼーションとパーソナリティ: たとえば、ユーザーに固有の言語モデル、またはインタラクションに基づいた特定のパーソナリティを備えた言語モデルを作成する方法。
- #モデルベースの評価
倫理と安全
対話型言語モデルが教育に及ぼす影響や、社会的偏見やプライバシーなどの倫理的および安全性の問題について議論されました。
#今後の開発の方向性と課題
## 調整: 言語モデルの調整の問題、モデルの出力をより無害にし、人間の価値観とより一致させ、より正当化する方法など。
-
社会的身体化: 言語モデルの基礎的な問題、言語モデルの身体化と社会化をさらに促進する方法。
-
可塑性: 言語モデルの可塑性の問題、モデルの知識を継続的に更新し、更新プロセス中に以前に取得した知識を忘れないようにする方法。
-
速度と効率: 言語モデルの推論速度とトレーニング効率、パフォーマンスに影響を与えずに推論を高速化する方法、加速されたトレーニングの効率などの問題。
-
コンテキストの長さ: 言語モデルのコンテキスト ウィンドウのサイズ制限。長いテキストを処理できるようにコンテキストのウィンドウ サイズを拡張する方法。
-
長文生成: 言語モデルの長文生成問題。非常に長いテキスト生成シナリオで言語モデルが優れたパフォーマンスを維持できるようにする方法。
-
アクセシビリティ: 言語モデルの可用性の問題。言語モデルをクローズド ソースからオープン ソースに作成する方法、およびパフォーマンスを過度に低下させることなく言語モデルを車両システムやノートブックなどのエッジ デバイスに展開できるようにする方法。
-
分析: 言語モデルの分析、解釈可能性、その他の問題。たとえば、大規模モデルの開発をガイドするためにスケールアップ後のモデルのパフォーマンスを予測する方法、大規模モデルの内部メカニズムを説明する方法などです。
-
創造性: 言語モデルにおける創造的な問題。言語モデルをより創造的にする方法、比喩や隠喩などをよりよく使用できるようにする方法、新しい知識を生み出す方法など。
-
評価: 一般的な大規模モデルをより適切に評価する方法、言語モデルの対話型特性を評価する方法など。
以上がNLP では他に何ができるでしょうか?北杭大学、ETH、香港科技大学、中国科学院、その他の機関が共同でポストChatGPTテクノロジーチェーンを体系的に説明する100ページの論文を発表の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。