2. ドメイン固有の知識マップ融合スキーム: テキスト マッチング アルゴリズム (Simnet、Simcse、Diffcse) [2]

ここに画像の説明を挿入

ナレッジマップコラムの紹介: データ強化、インテリジェントラベル付け、テキスト情報抽出 (エンティティ関係イベント抽出)、知識融合アルゴリズムスキーム、知識推論、モデル最適化、モデル圧縮技術など。

ここに画像の説明を挿入

コラムの詳細な紹介:ナレッジ マップ コラムの紹介: データ強化、インテリジェントなラベル付け、テキスト情報抽出 (エンティティ関係イベント抽出)、知識融合アルゴリズム スキーム、知識推論、モデル最適化、モデル圧縮技術など。

  • NLP ナレッジ マップ関連の技術ビジネス実装計画とコード ソース。このコラムでは、ナレッジ マップ (知識融合、知識推論など)、NLP ビジネス実装計画とコード ソースを更新し続けます。
  • 同時に、貴重な情報を整理して要約し、時間を大幅に節約し、科学研究やビジネスの実装に役立つ情報を迅速に入手します。

ドメイン固有のナレッジ マップ融合スキーム: テキスト マッチング アルゴリズム (Simnet、Simcse、Diffcse)

記事の最後にあるプロジェクトのリンクを参照してください

テキスト マッチング タスクは、自然言語処理における非常に重要な基本タスクの 1 つであり、一般に 2 つのテキスト間の関係を研究します。情報検索、質問応答システム、インテリジェントな対話、テキスト識別、インテリジェントな推奨、テキスト データの重複排除、テキストの類似性計算、自然言語推論、質問応答システム、情報検索など、多くのアプリケーション シナリオがありますが、テキスト マッチングや自然言語処理にはまだ多くの困難があります。これらの自然言語処理タスクは、テキスト マッチング問題として大幅に抽象化できます。たとえば、情報検索は検索語とドキュメント リソースのマッチングに、質問応答システムは質問と回答候補のマッチングに、言い換え問題は同義文の 2 つの一致に削減されます。

0. はじめに: ドメイン固有のナレッジグラフ融合ソリューション

このプロジェクトは主にドメイン固有のナレッジ グラフ (Domain-specified Knowledge Graph: DKG) 融合スキームに焦点を当てています。テキスト マッチング アルゴリズム、知識融合学術スキーム、知識融合産業着地スキーム、アルゴリズム評価 KG 生産品質保証、テキスト マッチングの概要を説明しました。アルゴリズムは、古典的な伝統的なモデルから、ツインニューラルネットワーク「ツインタワーモデル」、事前学習モデル、教師あり・教師なし結合モデルまで、近年の最先端の比較学習モデルも含めて、テキストを提案しました。マッチングスキル向上計画、そして最後にDKGの着陸計画が示されます。ここでは主に原理の説明と技術的な解決策に焦点を当てますが、その後、プロジェクトを徐々にオープンソースにして一緒に KG を構築し、知識の抽出から知識の融合、知識の推論、品質評価までの完全なプロセスを通過するよう努めます。

0.1 詳細については、最初のプロジェクトを参照してください: ドメイン固有の知識マップ融合スキーム: 技術知識前置詞 [1] - テキスト マッチング アルゴリズム

https://aistudio.baidu.com/aistudio/projectdetail/5398069?contributionType=1

0.2 ドメイン固有のナレッジ グラフ (DKG) 融合スキーム (強調!)

これまでの技術知識をもとに、その後の実際の事業着地計画や学術計画をご覧いただけます。

グラフニューラルネットワークの知識融合技術学習については、PGLグラフ学習プロジェクト収集&データセット共有&技術誘導ビジネスランディングスキル【シリーズ10】を参照してください。

入門知識から古典的なグラフアルゴリズム、高度なグラフアルゴリズムなど、自分で調べて食べてみましょう!

記事の長さに限りがありますので、オンデマンドでご覧いただけるコラム「NLPナレッジマップ関連技術事業導入計画とコードソース」をご参照ください。

1. ドメイン固有のナレッジ グラフ知識融合スキーム (エンティティ アライメント): Youku ドメイン ナレッジ グラフを例にします

解決策のリンク: https://blog.csdn.net/sinat_39620217/article/details/128614951

2. ドメイン固有の知識グラフ知識融合スキーム (エンティティ アライメント): エンターテイメント ナレッジ グラフ構築のためのキャラクター エンティティ アライメント

解決策のリンク: https://blog.csdn.net/sinat_39620217/article/details/128673963

3. ドメイン固有ナレッジグラフ知識融合スキーム(エンティティアライメント):コモディティナレッジグラフ技術の実践

解決策のリンク: https://blog.csdn.net/sinat_39620217/article/details/128674429

4. ドメイン固有の知識グラフ知識融合スキーム (エンティティ アライメント): グラフ ニューラル ネットワークに基づく製品の異種エンティティ表現の探索

解決策のリンク: https://blog.csdn.net/sinat_39620217/article/details/128674929

5. ドメイン固有ナレッジグラフ知識融合スキーム(エンティティアライメント)に関する論文集

解決策のリンク: https://blog.csdn.net/sinat_39620217/article/details/128675199

紙資料へのリンク: 2 つのコピーの内容は異なり、2 つのコピーの重要度はシーケンス番号に従って小さいものから大きいものへと降順に表示されます。

ナレッジ グラフ エンティティ アライメント データ ペーパー リファレンス (PDF) + エンティティ アライメント ソリューション + ドメイン固有のナレッジ グラフ ナレッジ フュージョン ソリューション (エンティティ アライメント)

ナレッジ マップ エンティティ アライメント データ ペーパー リファレンス (CAJ) + エンティティ アライメント スキーム + ドメイン固有のナレッジ マップ ナレッジ フュージョン スキーム (エンティティ アライメント)

6. 知識融合アルゴリズム試験スキーム(知識生産品質保証)

解決策のリンク: https://blog.csdn.net/sinat_39620217/article/details/128675698

1. 従来のディープモデル: SimNet

短文意味マッチング (SimilarityNet、SimNet) は、短文の類似性を計算するためのフレームワークであり、ユーザーが入力した 2 つのテキストに基づいて類似性スコアを計算できます。SimNet フレームワークには、主に BOW、CNN、RNN、MMDNN などのコア ネットワーク構造が含まれており、セマンティック類似性計算のトレーニングと予測フレームワークを提供し、情報検索、ニュース推奨、セマンティック問題を解決するインテリジェントな顧客サービスなどの複数のアプリケーション シナリオに適しています。マッチングの問題。

モデル紹介:

Seq2Vecの組み込みモデルを呼び出してシーケンスモデリングを行うことで、文のベクトル表現が完成します。最も単純なバッグオブワードモデルと一連の古典的な RNN のようなモデルが含まれています。

詳細については、エンコーダ ファイルまたは SimNet ファイルの下のリファレンスを確認してください: https://github.com/PaddlePaddle/PaddleNLP/tree/develop/paddlenlp/seq2vec

__all__ = ["BoWEncoder", "CNNEncoder", "GRUEncoder", "LSTMEncoder", "RNNEncoder", "TCNEncoder"]

モデル モデル紹介
BOW(バッグ・オブ・ワーズ) 文を、それに含まれる単語のベクトルの合計として表す非逐次モデル
CNN 畳み込み演算を利用して局所領域の特徴を抽出するシーケンスモデル
GRU(ゲート・リカレント・ユニット) シーケンス モデル。シーケンス テキストの長距離依存の問題をより適切に解決できます。
LSTM(長短期記憶) シーケンス モデル。シーケンス テキストの長距離依存の問題をより適切に解決できます。
時間畳み込みネットワーク(TCN) シーケンス モデル。シーケンス テキストの長距離依存の問題をより適切に解決できます。

1.1 TCN: 時間畳み込みネットワーク

時間畳み込みネットワーク (TCN) 時間畳み込みネットワーク、18 年に提案された時系列畳み込みニューラル ネットワーク モデルは、時系列予測のアルゴリズムを解くために使用されます。その中で、タイミング問題のモデリングでは、通常、RNN 巡回ニューラル ネットワークと、LSTM、GRU などのその関連バリアントが使用されます。ここでは、畳み込みニューラル ネットワークを使用して、拡張畳み込みを通じて長期依存情報をキャプチャする効果を実現します。 RNN 関連モデルよりも優れたパフォーマンスを発揮する可能性があります。
新しい配列解析モデルとして、次の 2 つの主な特徴があります。

  • 畳み込みネットワークの層間には因果関係があり、これは、履歴情報や将来のデータが「欠落」することはないことを意味します。たとえ LSTM にメモリ ゲートがあったとしても、すべてのデータを完全に記憶することはできません。情報が役に立たない場合、それは徐々に忘れ去られるだろうということを述べてください。
  • このモデルのアーキテクチャは、任意の長さに柔軟に調整でき、出力端で必要なインターフェイスの数に応じて対応する外観にマッピングできるという点は、RNN フレームワークと同じであり、非常に柔軟です。

論文リンク: https://arxiv.org/pdf/1803.01271.pdf

github リンク: https://github.com/LOCUSLAB/tcn

RNN の自然な再帰的自己回帰構造は時系列を適切に表現するため、時系列問題のモデリングは通常、リカレント ニューラル ネットワーク (RNN) によってモデル化されます。従来の畳み込みニューラル ネットワークは、主に畳み込みカーネルのサイズに制限があり、長期的な依存関係情報をうまく捕捉できないため、タイミング問題のモデリングには適していないと一般に考えられています。しかし、最近では、Google が音声合成用に提案したウェーブネットや、Facebook が翻訳用に提案した畳み込みニューラル ネットワークなど、特定の畳み込みニューラル ネットワーク構造でも良好な結果が得られることが多くの研究で示されています。ここで疑問が生じます。畳み込みを使用してニューラル ネットワークを実行するのは、特定の分野にのみ適用できるのでしょうか、それとも普遍的なモデルなのでしょうか? この疑問を念頭に置いて、この記事では特別な畳み込みニューラル ネットワーク、つまり時間畳み込みネットワーク (TCN) とさまざまな RNN 構造を比較し、TCN がさまざまなタスクで RNN に匹敵する、またはそれを超える可能性があることを発見しました。

1.1.1 因果畳み込み

因果的畳み込みは、上の図で視覚的に表すことができます。つまり、時刻 t における前のレイヤの値は、時刻 t 以前における次のレイヤの値にのみ依存します。従来の畳み込みニューラル ネットワークとの違いは、因果畳み込みでは将来のデータを見ることができず、双方向ではなく一方向の構造であることです。つまり、前の原因があって初めてその後の結果が生じるという、厳密な時間制約のあるモデルなので、因果畳み込みと呼ばれます。

1.1.2 拡張畳み込み

単純な因果畳み込みには、従来の畳み込みニューラル ネットワークの問題がまだあります。つまり、モデリング時間の長さは畳み込みカーネルのサイズによって制限されます。より長い依存関係をキャプチャしたい場合は、多くの層を線形に積み重ねる必要があります。この問題を解決するために、研究者は拡張畳み込みを提案しています。下の図aに示すように。

1.1.3 残留接続

上の図 b と c に示すように

残留リンクは、ネットワークがレイヤー間で情報を転送できるようにする、ディープ ネットワークをトレーニングするための効果的な方法であることが証明されています。この論文では、1 つの層の畳み込みを置き換えるために残差ブロックが構築されます。上の図に示すように、残差ブロックには畳み込みと非線形マッピングの 2 つの層が含まれており、ネットワークを正規化するために WeightNorm と Dropout が各層に追加されます。

1.1.4 概要分析

一般に, TCN モデルの革新はそれほど大きくなく, 因果畳み込みと拡張畳み込みはこの論文では提案されていない. この論文は主に TCN の構造を整理する. ウェーブネットの構造と比較して, ゲートを削除している.残差構造に機構を追加し、多くの数列問題について実験が行われます。実験結果は次のとおりです。

複数のタスクでは、標準の LSTM、GRU などよりも優れています。

その他のシミュレーション結果:

アドバンテージ:

(1)并行性。当给定一个句子时,TCN可以将句子并行的处理,而不需要像RNN那样顺序的处理。

(2)灵活的感受野。TCN的感受野的大小受层数、卷积核大小、扩张系数等决定。可以根据不同的任务不同的特性灵活定制。

(3)稳定的梯度。RNN经常存在梯度消失和梯度爆炸的问题,这主要是由不同时间段上共用参数导致的,和传统卷积神经网络一样,TCN不太存在梯度消失和爆炸问题。

(4)内存更低。RNN在使用时需要将每步的信息都保存下来,这会占据大量的内存,TCN在一层里面卷积核是共享的,内存使用更低。

欠点:

(1)TCN 在迁移学习方面可能没有那么强的适应能力。这是因为在不同的领域,模型预测所需要的历史信息量可能是不同的。因此,在将一个模型从一个对记忆信息需求量少的问题迁移到一个需要更长记忆的问题上时,TCN 可能会表现得很差,因为其感受野不够大。

(2)论文中描述的TCN还是一种单向的结构,在语音识别和语音合成等任务上,纯单向的结构还是相当有用的。但是在文本中大多使用双向的结构,当然将TCN也很容易扩展成双向的结构,不使用因果卷积,使用传统的卷积结构即可。

(3)TCN毕竟是卷积神经网络的变种,虽然使用扩展卷积可以扩大感受野,但是仍然受到限制,相比于Transformer那种可以任意长度的相关信息都可以抓取到的特性还是差了点。TCN在文本中的应用还有待检验。

参考リンク:

https://blog.csdn.net/qq_27586341/article/details/90751794

1.2 モデルのトレーニングと予測

1.2.1 データの準備

コードの説明:

simnet/
├── model.py # 模型组网
├── predict.py # 模型预测
├── utils.py # 数据处理工具
├── train.py # 训练模型主程序入口,包括训练、评估

プログラムの実行中に、トレーニング、評価、テストが自動的に実行されます。同時に、モデルはトレーニング プロセス中に指定された save_dir に自動的に保存されます。好き:

checkpoints_simnet_lstm/
├── 0.pdopt
├── 0.pdparams
├── 1.pdopt
├── 1.pdparams
├── ...
└── final.pdparams

注: モデルのトレーニングを再開する必要がある場合は、init_from_ckpt でファイル名を指定するだけで済み、ファイル接尾辞を追加する必要はありません。たとえば –init_from_ckpt=checkpoints/0 の場合、プログラムはモデル パラメータ Checkpoints/0.pdparams とオプティマイザ ステータス Checkpoints/0.pdopt を自動的にロードします。

いくつかの結果は次のようになります。

step 1790/1866 - loss: 0.2604 - acc: 0.9097 - 28ms/step
step 1800/1866 - loss: 0.2853 - acc: 0.9096 - 28ms/step
step 1810/1866 - loss: 0.3007 - acc: 0.9094 - 28ms/step
step 1820/1866 - loss: 0.2607 - acc: 0.9094 - 28ms/step
step 1830/1866 - loss: 0.3522 - acc: 0.9093 - 28ms/step
step 1840/1866 - loss: 0.2478 - acc: 0.9092 - 28ms/step
step 1850/1866 - loss: 0.2186 - acc: 0.9092 - 28ms/step
step 1860/1866 - loss: 0.1786 - acc: 0.9091 - 28ms/step
step 1866/1866 - loss: 0.2358 - acc: 0.9091 - 28ms/step
save checkpoint at /home/aistudio/SimNet/checkpoints_simnet_lstm/4
Eval begin...
step 10/69 - loss: 0.5209 - acc: 0.7336 - 31ms/step
step 20/69 - loss: 0.9080 - acc: 0.7352 - 34ms/step
step 30/69 - loss: 0.9188 - acc: 0.7352 - 34ms/step
step 40/69 - loss: 0.9328 - acc: 0.7393 - 34ms/step
step 50/69 - loss: 0.5988 - acc: 0.7398 - 32ms/step
step 60/69 - loss: 0.5592 - acc: 0.7367 - 32ms/step
step 69/69 - loss: 0.6573 - acc: 0.7384 - 30ms/step

1.2.3 モデルの予測

予測を開始する

テスト ケースには、出力ファイルの test_1 で予測される 125000 個の結果を含めることができます。

{"query": "谁有狂三这张高清的", "title": "这张高清图,谁有", "label": ""}
{"query": "英雄联盟什么英雄最好", "title": "英雄联盟最好英雄是什么", "label": ""}
{"query": "这是什么意思,被蹭网吗", "title": "我也是醉了,这是什么意思", "label": ""}
{"query": "现在有什么动画片好看呢?", "title": "现在有什么好看的动画片吗?", "label": ""}
{"query": "请问晶达电子厂现在的工资待遇怎么样要求有哪些", "title": "三星电子厂工资待遇怎么样啊", "label": ""}
{"query": "文章真的爱姚笛吗", "title": "姚笛真的被文章干了吗", "label": ""}
{"query": "送自己做的闺蜜什么生日礼物好", "title": "送闺蜜什么生日礼物好", "label": ""}
{"query": "近期上映的电影", "title": "近期上映的电影有哪些", "label": ""}
{"query": "求英雄联盟大神带?", "title": "英雄联盟,求大神带~", "label": ""}
{"query": "如加上什么部首", "title": "给东加上部首是什么字?", "label": ""}
{"query": "杭州哪里好玩", "title": "杭州哪里好玩点", "label": ""}
{"query": "这是什么乌龟值钱吗", "title": "这是什么乌龟!值钱嘛?", "label": ""}
{"query": "心各有所属是什么意思?", "title": "心有所属是什么意思?", "label": ""}
{"query": "什么东西越热爬得越高", "title": "什么东西越热爬得很高", "label": ""}
{"query": "世界杯哪位球员进球最多", "title": "世界杯单界进球最多是哪位球员", "label": ""}
{"query": "韭菜多吃什么好处", "title": "多吃韭菜有什么好处", "label": ""}
{"query": "云赚钱怎么样", "title": "怎么才能赚钱", "label": ""}
{"query": "何炅结婚了嘛", "title": "何炅结婚了么", "label": ""}
{"query": "长的清新是什么意思", "title": "小清新的意思是什么", "label": ""}

コードを自分で変更するバッチ予測が必要な場合は、データ部分を変更します。

1.3 モデル結果の比較

モデル 電車に乗る 開発者アカウント
0.8836 0.7297
CNN 0.9517 0.7352
GRU 0.9124 0.7489
LSTM 0.9091 0.7384
TCN ---- ----
RNN ---- ----

RNN と TCN については、モデル ファイルを自分で変更できます。/home/aistudio/SimNet/encoder.py を参照して、/home/aistudio/SimNet/model.py を変更します。

CNN:

  • データ: [「タオバオでクレジット カードの分割払いで支払う方法」、「クレジット カードがない場合、タオバオで分割払いで支払う方法は?」'] ラベル: 類似
  • データ: [ザクロはいつ熟しますか? 』、『熟したザクロはどんな感じ?'] ラベル: 類似
  • データ: [「車の中で携帯電話で遊ぶと乗り物酔いするのはなぜですか」、「車の中で携帯電話で遊ぶと乗り物酔いしないのはなぜですか」] ラベル: 類似

弓:

  • データ: [「タオバオでクレジット カードの分割払いで支払う方法」、「クレジット カードがない場合、タオバオで分割払いで支払う方法は?」'] ラベル: 類似
  • データ: [ザクロはいつ熟しますか? 』、『熟したザクロはどんな感じ?'] ラベル: 異なる
  • データ: [「車の中で携帯電話で遊ぶと乗り物酔いするのはなぜですか」、「車の中で携帯電話で遊ぶと乗り物酔いしないのはなぜですか」] ラベル: 類似

グルー:

  • データ: [「タオバオでクレジット カードの分割払いで支払う方法」、「クレジット カードがない場合、タオバオで分割払いで支払う方法は?」'] ラベル: 類似
  • データ: [ザクロはいつ熟しますか? 』、『熟したザクロはどんな感じ?'] ラベル: 異なる
  • データ: [「車の中で携帯電話で遊ぶと乗り物酔いするのはなぜですか」、「車の中で携帯電話で遊ぶと乗り物酔いしないのはなぜですか」] ラベル: 類似

LSTM:

  • データ: [「タオバオでクレジット カードの分割払いで支払う方法」、「クレジット カードがない場合、タオバオで分割払いで支払う方法は?」'] ラベル: 異なる
  • データ: [ザクロはいつ熟しますか? 』、『熟したザクロはどんな感じ?'] ラベル: 異なる
  • データ: [「車の中で携帯電話で遊ぶと乗り物酔いするのはなぜですか」、「車の中で携帯電話で遊ぶと乗り物酔いしないのはなぜですか」] ラベル: 類似

サンプリング結果は依然として明らかであり、アルゴリズムが新しいほど一般に優れています。

1.4スペースが限られているため、その他のプログラム コードについては、以下を参照してください

このプロジェクトへのリンク: https://aistudio.baidu.com/aistudio/projectdetail/5423713?contributionType=1

2. 教師なし意味一致モデル SimCSE

SimCSE モデルは、教師ありデータはなく大量の教師なしデータがある照合および検索シナリオに適しています。

関連原則参照プロジェクト: https://aistudio.baidu.com/aistudio/projectdetail/5398069?contributionType=1セクション 4.2.4 SimSCE 2021.04

以下では、LCQMC、BQ_Corpus、STS-B、ATEC の 4 つの中国語意味一致データセットのトレーニング セットを教師なしトレーニング セット (テキスト情報のみが使用され、ラベルは使用されません) として使用し、各データセット

スピアマンの相関係数とその有意性検定:

スピアマン相関係数 (スピアマン)

  • コード構造の説明
simcse/
├── model.py # SimCSE 模型组网代码
├── data.py # 无监督语义匹配训练数据、测试数据的读取逻辑
├── predict.py # 基于训练好的无监督语义匹配模型计算文本 Pair 相似度
├── train.sh # 模型训练的脚本
└── train.py # SimCSE 模型训练、评估逻辑

2.1 モデルのトレーニングと予測 (LCQMC)

中国語のテキスト マッチング公開データセット LCQMC をデータセットの例として取り上げ、LCQMC のテキスト データ構造のみを使用して教師なしトレーニング データを生成します。次のコマンドを実行してモデルのトレーニングを開始し、LCQMC の検証セットに対してスピアマン相関係数評価を実行できます。

%cd SimCSE
!unset CUDA_VISIBLE_DEVICES
!python -u -m paddle.distributed.launch --gpus '0' \
    train.py \
    --device gpu \
    --save_dir ./checkpoints_simcse/ \
    --batch_size 64 \
    --learning_rate 5E-5 \
    --epochs 1 \
    --save_steps 100 \
    --eval_steps 100 \
    --max_seq_length 64 \
    --dropout 0.3 \
    --train_set_file "/home/aistudio/LCQMC/train.txt" \
    --test_set_file "/home/aistudio/LCQMC/dev.tsv"

    

いくつかの結果は次のようになります。

[2023-02-01 10:22:15,087] [    INFO] - tokenizer config file saved in ./checkpoints_simcse/model_1900/tokenizer_config.json
[2023-02-01 10:22:15,088] [    INFO] - Special tokens file saved in ./checkpoints_simcse/model_1900/special_tokens_map.json
global step 1910, epoch: 1, batch: 1910, loss: 0.03640, speed: 0.95 step/s
global step 1920, epoch: 1, batch: 1920, loss: 0.03480, speed: 6.70 step/s
global step 1930, epoch: 1, batch: 1930, loss: 0.00650, speed: 7.08 step/s
global step 1940, epoch: 1, batch: 1940, loss: 0.00571, speed: 6.75 step/s
global step 1950, epoch: 1, batch: 1950, loss: 0.00966, speed: 6.28 step/s
global step 1960, epoch: 1, batch: 1960, loss: 0.01481, speed: 6.54 step/s
global step 1970, epoch: 1, batch: 1970, loss: 0.00974, speed: 6.42 step/s
global step 1980, epoch: 1, batch: 1980, loss: 0.03734, speed: 6.67 step/s
global step 1990, epoch: 1, batch: 1990, loss: 0.00716, speed: 6.68 step/s
global step 2000, epoch: 1, batch: 2000, loss: 0.01359, speed: 7.04 step/s
global step: 2000, spearman_corr: 0.4231, total_num: 8802

設定されたパラメータ:

  • infer_with_fc_pooler : 予測フェーズでテキスト埋め込み表現を計算するときに、ネットワーク フォワードがトレーニング フェーズの最後の層の fc を渡すかどうか (オプション)。最良の効果を得るには、モデルをオフにすることをお勧めします。

  • dup_rate : オプション、単語反復率。デフォルトは 0.32 です。論文によると、0.32 を使用する単語反復率が最適です。

  • scale : オプション、cross_entropy loss を計算する前にコサイン類似度をスケールする係数。デフォルトは 20 です。

  • Dropout : オプション、SimCSE ネットワーク転送によって使用されるドロップアウト値。デフォルトは 0.1 です。

  • save_dir: オプション、トレーニング モデルを保存するディレクトリ。デフォルトでは、現在のディレクトリのチェックポイント フォルダーに保存されます。

  • max_seq_length: オプション。ERNIE-Gram モデルで使用される最大シーケンス長は 512 を超えることはできません。メモリが不十分な場合は、このパラメータを適切に下げてください。デフォルトは 128 です。

  • batch_size: オプション、バッチ サイズ。ビデオ メモリの状況に応じて調整してください。ビデオ メモリが不十分な場合は、このパラメータを適切に下げてください。デフォルトは 32 です。

  • learning_rate: オプション、Fine-tune の最大学習率。デフォルトは 5e-5 です。

  • Weight_decay : オプション。正則化項の強度を制御するパラメータ。過学習を防ぐために使用されます。デフォルトは 0.0 です。

  • epochs: トレーニング エポック、デフォルトは 1 です。

  • Warmup_propion : オプションの学習率ウォームアップ戦略の割合。0.1 の場合、学習率は最初の 10% トレーニング ステップ中に 0 から learning_rate までゆっくりと増加し、その後ゆっくりと減衰します。デフォルトは 0.0 です。

  • init_from_ckpt: オプション、モデル パラメーター パス、ホット スタート モデル トレーニング。デフォルトは None です。

  • シード: オプション、ランダムなシード、デフォルトは 1000 です。

  • device: トレーニングにどのデバイスを選択するか、CPU または GPU はオプションです。GPU トレーニングが使用される場合、パラメーター gpus は GPU カード番号を指定します。

トレーニングと評価は、プログラムの実行中に自動的に実行されます。同時に、モデルはトレーニング プロセス中に指定された save_dir に自動的に保存されます。好き:

checkpoints/
├── model_100
│   ├── model_state.pdparams
│   ├── tokenizer_config.json
│   └── vocab.txt
└── ...

注: モデルのトレーニングを再開する必要がある場合は、init_from_ckpt=checkpoints/model_100/model_state.pdparams などの init_from_ckpt を設定できます。

予測データとして LCQMC のテストセットを使用します。テストデータの例は次のとおりです。

谁有狂三这张高清的  这张高清图,谁有
英雄联盟什么英雄最好    英雄联盟最好英雄是什么
这是什么意思,被蹭网吗  我也是醉了,这是什么意思
现在有什么动画片好看呢?    现在有什么好看的动画片吗?
请问晶达电子厂现在的工资待遇怎么样要求有哪些    三星电子厂工资待遇怎么样啊

2.2 評価効果

すべてのデータセットはそれ自体で調整および実行でき、ハイパーパラメータもそれ自体で調整できます。結果の一部を以下に示します。

  • 中国語の意味一致データセットの効果
モデル LCQMC BQ_コーパス STS-B エイテック
シムCSE 57.01 51.72 74.76 33.56
シムCSE + WR 58.97 51.58 78.32 33.73
  • 中国のデータセットでトレーニングされた SimCSE + WR 戦略のハイパーパラメーターは次のように設定されます。
データセット 時代 学習率 脱落 重複率
LCQMC 1 5E-5 0.3 0.32
BQ_コーパス 1 1E-5 0.3 0.32
STS-B 8 5E-5 0.1 0.32
エイテック 1 5E-5 0.3 0.32

3. 教師なしセマンティックマッチングモデル DiffCSE

関連原則参照プロジェクト: https://aistudio.baidu.com/aistudio/projectdetail/5398069?contributionType=1セクション 4.2.9 DiffSCE 2022.04

SimCSE モデルと比較して、DiffCSE モデルは文間の差異にさらに注意を払い、正確なベクトル表現の能力を備えていますDiffCSE モデルは、教師ありデータはないが大量の教師なしデータがある照合および検索シナリオにも適しています。

コード構造:

DiffCSE/
├── model.py # DiffCSE 模型组网代码
├── custom_ernie.py # 为适配 DiffCSE 模型,对ERNIE模型进行了部分修改
├── data.py # 无监督语义匹配训练数据、测试数据的读取逻辑
├── run_diffcse.py # 模型训练、评估、预测的主脚本
├── utils.py # 包括一些常用的工具式函数
├── run_train.sh # 模型训练的脚本
├── run_eval.sh # 模型评估的脚本
└── run_infer.sh # 模型预测的脚本

3.1 モデルのトレーニングと予測 (LCQMC)

デフォルトでは、教師なしモードが DiffCSE のトレーニングに使用されます。モデル トレーニング データのデータ サンプルは次のとおりで、各行はトレーニング サンプルを表します。

全年地方财政总收入3686.81亿元,比上年增长12.3%。
“我对案情并不十分清楚,所以没办法提出批评,建议,只能希望通过质询,要求检察院对此做出说明。”他说。
据调查结果显示:2015年微商行业总体市场规模达到1819.5亿元,预计2016年将达到3607.3亿元,增长率为98.3%。
前往冈仁波齐需要办理目的地包含日喀则和阿里地区的边防证,外转沿途有一些补给点,可购买到干粮和饮料。

3.2 モデルのトレーニングと予測 (STS-B データセット)

データ セットと関連インデックスの参照: Chinese-STS-B データ セット。0 から 5 までの 6 つのラベルが含まれています。数値が大きいほど、テキスト ペアは類似しています。データ処理中、5 というラベルの付いたテキスト ペアは一致するテキスト ペア (1 としてマーク) とみなされ、0 ~ 2 のラベルが付いたテキスト ペアは不一致テキスト ペア (0 としてマーク) とみなされます。

https://zhuanlan.zhihu.com/p/388680608

https://zhuanlan.zhihu.com/p/454173790

部分表示

一个戴着安全帽的男人在跳舞。	一个戴着安全帽的男人在跳舞。	5
一个小孩在骑马。	孩子在骑马。	4
一个女人在弹吉他。	一个人在弹吉他。	2
一个女人在切洋葱。	一个人在切洋葱。	2
一个女人在吹长笛。	一个人在吹长笛。	2
一个男人在擦粉笔。	那人在擦粉笔。	5
一个女人抱着一个男孩。	一个女人怀了她的孩子。	2
女人剥土豆。	一个女人在剥土豆。	5
人们在玩板球。	男人们在打板球。	3
一个男人在弹吉他。	一个人在吹长笛。	1
美洲狮在追熊。	一只美洲狮正在追赶一只熊。	5
那人在弹吉他。	一个男人在弹吉他。	4
一个男人在找东西。	一个女人在切东西。	0
女孩对着麦克风唱歌。	这位女士对着麦克风唱歌。	2
一个男人在爬绳子。	一个男人爬上一根绳子。	5
小猫在吃东西。	小猫从盘子里吃东西。	4

評価指標:スピアマンの順位相関係数 スピアマンの順位相関係数. 文ペアをモデルに入力して埋め込みペアを符号化した後、埋め込みペアのコサイン距離を計算します。STS-B データセットは文ペアを 0 から 5 までスコア付けするため、評価指標にはスピアマンの順位相関係数が使用されます。

3.3 評価効果

モデル LCQMC STS-B
シムセ 58.97% 74.58
難しい 63.23% 71.79 (未調整)

チューニング プロセスについては、次の記事を参照してください。

https://zhuanlan.zhihu.com/p/388680608

全体として、Diffcse が Simcse よりも優れていることがわかります。

4. まとめ

テキスト マッチング タスクは、自然言語処理における非常に重要な基本タスクの 1 つであり、一般に 2 つのテキスト間の関係を研究します。情報検索、質問応答システム、インテリジェントな対話、テキスト識別、インテリジェントな推奨、テキスト データの重複排除、テキストの類似性計算、自然言語推論、質問応答システム、情報検索など、多くのアプリケーション シナリオがありますが、テキスト マッチングや自然言語処理にはまだ多くの困難があります。これらの自然言語処理タスクは、テキスト マッチング問題として大幅に抽象化できます。たとえば、情報検索は検索語とドキュメント リソースのマッチングに、質問応答システムは質問と回答候補のマッチングに、言い換え問題は同義文の 2 つの一致に削減されます。

このプロジェクトは主にドメイン固有のナレッジ グラフ (Domain-specified Knowledge Graph: DKG) 融合スキームに焦点を当てています。テキスト マッチング アルゴリズム、知識融合学術スキーム、知識融合産業着地スキーム、アルゴリズム評価 KG 生産品質保証、テキスト マッチングの概要を説明しました。アルゴリズムは、古典的な伝統的なモデルから、ツインニューラルネットワーク「ツインタワーモデル」、事前学習モデル、教師あり・教師なし結合モデルまで、近年の最先端の比較学習モデルも含めて、テキストを提案しました。マッチングスキル向上計画、そして最後にDKGの着陸計画が示されます。ここでは主に原理の説明と技術的な解決策に焦点を当てますが、その後、プロジェクトを徐々にオープンソースにして一緒に KG を構築し、知識の抽出から知識の融合、知識の推論、品質評価までの完全なプロセスを通過するよう努めます。

5. スペースには限りがあるため、その他のプログラム コードについては、以下を参照してください。

このプロジェクトへのリンク: https://aistudio.baidu.com/aistudio/projectdetail/5423713?contributionType=1

このプロジェクトへのリンク: https://aistudio.baidu.com/aistudio/projectdetail/5423713?contributionType=1

おすすめ

転載: blog.csdn.net/sinat_39620217/article/details/128833057