TabTransformer コンバーターにより、多層パーセプトロンのパフォーマンスの詳細な分析が向上
現在、Transformers は、最先端の自然言語処理 (NLP) およびコンピューター ビジョン (CV) アーキテクチャの主要なモジュールです。ただし、表形式データの分野では、依然として勾配ブースト決定木 (GBDT) アルゴリズムが主流です。そこで、このギャップを埋める試みが行われました。その中で、最初のコンバーターベースの表形式データモデリングの論文は、2020年にHuangらによって出版された論文「TabTransformer: Tabular Data Modeling using Context Embedding」です。
この記事は、論文の内容の基本的な表示を提供するとともに、TabTransformer モデルの実装の詳細を掘り下げ、特に独自のデータに TabTransformer を使用する方法を示すことを目的としています。 。
1. 論文の概要
上記の論文の主な考え方は、コンバータを使用して従来の分類埋め込みをコンテキスト埋め込みに変換すると、従来のマルチ-層の認識 プロセッサー (MLP) のパフォーマンスが大幅に向上します。次に、この説明をさらに深く理解してみましょう。
1. カテゴリカル埋め込み
深層学習モデルでカテゴリ特徴量を使用する古典的な方法は、その埋め込みをトレーニングすることです。これは、各カテゴリ値が固有の密ベクトル表現を持ち、次の層に渡すことができることを意味します。たとえば、以下の画像から、各カテゴリ特徴量が 4 次元配列で表されていることがわかります。これらの埋め込みは数値特徴と連結され、MLP への入力として使用されます。
論文の著者らは、カテゴリカル埋め込みには文脈上の意味が欠けており、カテゴリ変数間の相互作用や関係情報はエンコードされていないと考えています。埋め込まれたコンテンツをより具体的にするために、現在 NLP 分野で使用されている変換器をこの目的に使用することが提案されています。
#3.TabTransformer アーキテクチャ
上記の目的を達成するために、論文の著者は次のアーキテクチャを提案しました。
TabTransformer コンバーターのアーキテクチャ図
#(2020 年に Huang らによって発表された論文からの抜粋)
私たちはできる このアーキテクチャは 5 つのステップに分かれています:
数値特徴を標準化し、それらを転送する- カテゴリ特徴を埋め込む
- 埋め込みでは、コンテキスト エンベディングを取得するために Transformer ブロックの処理を N 回実行します。
- コンテキスト カテゴリカル エンベディングと数値特徴を連結します。
- MLP を介して連結して、必要な予測を取得します。
モデル アーキテクチャは非常に単純ですが、論文の著者は、コンバーター層を追加するとコンピューティング パフォーマンスを大幅に向上できると述べています。もちろん、すべての「魔法」はこれらのコンバーター ブロック内で発生するため、実装をさらに詳しく見てみましょう。
4. コンバータ
トランスのアーキテクチャ図
(Vaswani et al より) . 2017 論文)
コンバーターのアーキテクチャを以前に見たことがあるかもしれませんが、簡単に説明するために、コンバーターはエンコーダーで構成されていることを覚えておいてください。コンバーターは 2 つの部分で構成されています。デコーダとデコーダ(上の図を参照)。 TabTransformer の場合、入力エンベディングをコンテキスト化するエンコーダー部分のみを考慮します (デコーダー部分はこれらのエンベディングを最終出力結果に変換します)。しかし、それは具体的にどのように行われるのでしょうか?答えは、「マルチヘッド アテンション メカニズム」です。
5. マルチヘッド アテンション メカニズム
注意のメカニズムに関する私のお気に入りの記事の説明を引用すると、次のようになります:
「自己注意の背後にある重要な概念は、このメカニズムにより、ニューラル ネットワークがどのように学習するかが可能になるということです。入力シーケンスのさまざまな部分間で最適なルーティング スキームを使用して情報をスケジュールするためです。」
言い換えると、自己注意がモデルを助けます。入力のどの部分がより重要であるかを見つけます。特定の単語/カテゴリを表すときにどの部分がそれほど重要ではないか。そのために、上記で参照した記事を読んで、なぜ自己焦点が非常に効果的であるかをより直観的に理解することを強くお勧めします。
#セルフフォーカスプロセスの可視化
このプロセスを h 回繰り返すことで (異なる Q を使用して、 K , V 行列)、最終的なマルチヘッド アテンションを形成する複数のコンテキストの埋め込みを取得できます。
6. 簡単なレビュー
上で紹介した内容を要約しましょう:
単純なカテゴリカル エンベディングにはコンテキスト情報は含まれません
- カテゴリカル エンベディングをトランスフォーマー エンコーダーに渡すことで、エンベディングをコンテキスト化できます
- トランスフォーマー部分はエンベディングをコンテキスト化できます。マルチヘッド アテンション メカニズムが使用されます
- マルチヘッド アテンション メカニズムは、行列 Q、K、V を使用して、変数をエンコードするときに有用な相互作用と相関情報を見つけます
- TabTransformer では、コンテキスト化されます。埋め込みは数値入力と連結され、単純な MLP 出力を通じて予測されます
TabTransformer の背後にある考え方は単純ですが、アテンション メカニズムを習得するには時間がかかる場合があります。したがって、上記の説明をもう一度読むことを強くお勧めします。少し迷った場合は、この記事内の推奨リンクをすべて読んでください。一度これを実行すれば、注意のメカニズムがどのように機能するかを理解するのは難しくないと保証します。
7. 実験結果の表示
結果データ (Huang et al. 2020 Paper から選択)
報告された結果によると、TabTransformer は他のすべての深層学習表形式モデルよりも優れたパフォーマンスを示し、さらに GBDT のパフォーマンス レベルに近く、非常に心強いものです。また、このモデルは欠損データやノイズの多いデータに対して比較的堅牢であり、半教師あり設定では他のモデルよりも優れています。ただし、これらのデータセットは明らかに網羅的ではなく、今後出版される多くの関連論文で確認されているように、まだ改善の余地がかなりあります。
2. 独自のサンプル プログラムを構築する
さあ、いよいよモデルを独自のデータに適用する方法を決定しましょう。次のデータ例は、有名な Tabular Playground Kaggle コンペティションから取得したものです。 TabTransformer コンバーターを使いやすくするために、tabtransformertf パッケージを作成しました。これは、
pip install tabtransformertf
のような pip コマンドを使用してインストールでき、大規模な前処理なしでモデルを使用できるようになります。
1. データの前処理
最初のステップは、適切なデータ型を設定し、トレーニング データと検証データを TF データ セットに変換することです。その中で、以前にインストールしたパッケージは、これを行うことができる優れたユーティリティを提供します。
from tabtransformertf.utils.preprocessing import df_to_dataset, build_categorical_prep # 设置数据类型 train_data[CATEGORICAL_FEATURES] = train_data[CATEGORICAL_FEATURES].astype(str) val_data[CATEGORICAL_FEATURES] = val_data[CATEGORICAL_FEATURES].astype(str) train_data[NUMERIC_FEATURES] = train_data[NUMERIC_FEATURES].astype(float) val_data[NUMERIC_FEATURES] = val_data[NUMERIC_FEATURES].astype(float) # 转换成TF数据集 train_dataset = df_to_dataset(train_data[FEATURES + [LABEL]], LABEL, batch_size=1024) val_dataset = df_to_dataset(val_data[FEATURES + [LABEL]], LABEL, shuffle=False, batch_size=1024)
次のステップは、カテゴリデータの前処理層を準備することです。このカテゴリデータは、後でメイン モデルに渡されます。
from tabtransformertf.utils.preprocessing import build_categorical_prep category_prep_layers = build_categorical_prep(train_data, CATEGORICAL_FEATURES) # 输出结果是一个字典结构,其中键部分是特征名称,值部分是StringLookup层 # category_prep_layers -> # {'product_code': <keras.layers.preprocessing.string_lookup.StringLookup at 0x7f05d28ee4e0>, #'attribute_0': <keras.layers.preprocessing.string_lookup.StringLookup at 0x7f05ca4fb908>, #'attribute_1': <keras.layers.preprocessing.string_lookup.StringLookup at 0x7f05ca4da5f8>}
これは前処理です。これで、モデルの構築を開始できます。
2. TabTransformer モデルを構築する
モデルの初期化は簡単です。その中には、指定する必要があるパラメータがいくつかありますが、最も重要なパラメータは、embedding_dim、 Depth、heads です。すべてのパラメータはハイパーパラメータ調整後に選択されます。
from tabtransformertf.models.tabtransformer import TabTransformer tabtransformer = TabTransformer( numerical_features = NUMERIC_FEATURES,# 带有数字特征名称的列表 categorical_features = CATEGORICAL_FEATURES, # 带有分类特征名称的列表 categorical_lookup=category_prep_layers, # 带StringLookup层的Dict numerical_discretisers=None,# None代表我们只是简单地传递数字特征 embedding_dim=32,# 嵌入维数 out_dim=1,# Dimensionality of output (binary task) out_activatinotallow='sigmoid',# 输出层激活 depth=4,# 转换器块层的个数 heads=8,# 转换器块中注意力头的个数 attn_dropout=0.1,# 在转换器块中的丢弃率 ff_dropout=0.1,# 在最后MLP中的丢弃率 mlp_hidden_factors=[2, 4],# 我们为每一层划分最终嵌入的因子 use_column_embedding=True,#如果我们想使用列嵌入,设置此项为真 ) # 模型运行中摘要输出: # 总参数个数: 1,778,884 # 可训练的参数个数: 1,774,064 # 不可训练的参数个数: 4,820
モデルが初期化されたら、他の Keras モデルと同様にインストールできます。トレーニングパラメータも調整できるため、学習速度や早期停止を自由に調整できます。
LEARNING_RATE = 0.0001 WEIGHT_DECAY = 0.0001 NUM_EPOCHS = 1000 optimizer = tfa.optimizers.AdamW( learning_rate=LEARNING_RATE, weight_decay=WEIGHT_DECAY ) tabtransformer.compile( optimizer = optimizer, loss = tf.keras.losses.BinaryCrossentropy(), metrics= [tf.keras.metrics.AUC(name="PR AUC", curve='PR')], ) out_file = './tabTransformerBasic' checkpoint = ModelCheckpoint( out_file, mnotallow="val_loss", verbose=1, save_best_notallow=True, mode="min" ) early = EarlyStopping(mnotallow="val_loss", mode="min", patience=10, restore_best_weights=True) callback_list = [checkpoint, early] history = tabtransformer.fit( train_dataset, epochs=NUM_EPOCHS, validation_data=val_dataset, callbacks=callback_list )
3. 評価
コンテストで最も重要な指標は ROC AUC です。そこで、PR AUC メトリクスと一緒に出力して、モデルのパフォーマンスを評価しましょう。
val_preds = tabtransformer.predict(val_dataset) print(f"PR AUC: {average_precision_score(val_data['isFraud'], val_preds.ravel())}") print(f"ROC AUC: {roc_auc_score(val_data['isFraud'], val_preds.ravel())}") # PR AUC: 0.26 # ROC AUC: 0.58
您也可以自己给测试集评分,然后将结果值提交给Kaggle官方。我现在选择的这个解决方案使我跻身前35%,这并不坏,但也不太好。那么,为什么TabTransfromer在上述方案中表现不佳呢?可能有以下几个原因:
- 数据集太小,而深度学习模型以需要大量数据著称
- TabTransformer很容易在表格式数据示例领域出现过拟合
- 没有足够的分类特征使模型有用
三、结论
本文探讨了TabTransformer背后的主要思想,并展示了如何使用Tabtransformertf包来具体应用此转换器。
归纳起来看,TabTransformer的确是一种有趣的体系结构,它在当时的表现明显优于大多数深度表格模型。它的主要优点是将分类嵌入语境化,从而增强其表达能力。它使用在分类特征上的多头注意力机制来实现这一点,而这是在表格数据领域使用转换器的第一个应用实例。
TabTransformer体系结构的一个明显缺点是,数字特征被简单地传递到最终的MLP层。因此,它们没有语境化,它们的价值也没有在分类嵌入中得到解释。在下一篇文章中,我将探讨如何修复此缺陷并进一步提高性能。
译者介绍
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。
原文链接:https://towardsdatascience.com/transformers-for-tabular-data-tabtransformer-deep-dive-5fb2438da820?source=collection_home---------4----------------------------
以上がTabTransformer コンバーターにより、多層パーセプトロンのパフォーマンスの詳細な分析が向上の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









機械学習とデータ サイエンスの分野では、モデルの解釈可能性が常に研究者や実務家に焦点を当ててきました。深層学習やアンサンブル手法などの複雑なモデルが広く適用されるようになったことで、モデルの意思決定プロセスを理解することが特に重要になってきました。 Explainable AI|XAI は、モデルの透明性を高めることで、機械学習モデルに対する信頼と自信を構築するのに役立ちます。モデルの透明性の向上は、複数の複雑なモデルの普及や、モデルを説明するための意思決定プロセスなどの方法によって実現できます。これらの方法には、特徴重要度分析、モデル予測間隔推定、ローカル解釈可能性アルゴリズムなどが含まれます。特徴重要度分析では、入力特徴に対するモデルの影響度を評価することで、モデルの意思決定プロセスを説明できます。モデルの予測間隔の推定

平たく言えば、機械学習モデルは、入力データを予測された出力にマッピングする数学関数です。より具体的には、機械学習モデルは、予測出力と真のラベルの間の誤差を最小限に抑えるために、トレーニング データから学習することによってモデル パラメーターを調整する数学関数です。機械学習には、ロジスティック回帰モデル、デシジョン ツリー モデル、サポート ベクター マシン モデルなど、多くのモデルがあります。各モデルには、適用可能なデータ タイプと問題タイプがあります。同時に、異なるモデル間には多くの共通点があったり、モデル進化の隠れた道が存在したりすることがあります。コネクショニストのパーセプトロンを例にとると、パーセプトロンの隠れ層の数を増やすことで、それをディープ ニューラル ネットワークに変換できます。パーセプトロンにカーネル関数を追加すると、SVM に変換できます。これです

1950 年代に人工知能 (AI) が誕生しました。そのとき、研究者たちは、機械が思考などの人間と同じようなタスクを実行できることを発見しました。その後、1960 年代に米国国防総省は人工知能に資金を提供し、さらなる開発のために研究所を設立しました。研究者たちは、宇宙探査や極限環境での生存など、多くの分野で人工知能の応用を見出しています。宇宙探査は、地球を超えた宇宙全体を対象とする宇宙の研究です。宇宙は地球とは条件が異なるため、極限環境に分類されます。宇宙で生き残るためには、多くの要素を考慮し、予防策を講じる必要があります。科学者や研究者は、宇宙を探索し、あらゆるものの現状を理解することが、宇宙の仕組みを理解し、潜在的な環境危機に備えるのに役立つと信じています。

この記事では、学習曲線を通じて機械学習モデルの過学習と過小学習を効果的に特定する方法を紹介します。過小適合と過適合 1. 過適合 モデルがデータからノイズを学習するためにデータ上で過学習されている場合、そのモデルは過適合していると言われます。過学習モデルはすべての例を完璧に学習するため、未確認の新しい例を誤って分類してしまいます。過適合モデルの場合、完璧/ほぼ完璧なトレーニング セット スコアとひどい検証セット/テスト スコアが得られます。若干修正: 「過学習の原因: 複雑なモデルを使用して単純な問題を解決し、データからノイズを抽出します。トレーニング セットとしての小さなデータ セットはすべてのデータを正しく表現できない可能性があるため、2. 過学習の Heru。」

C++ の機械学習アルゴリズムが直面する一般的な課題には、メモリ管理、マルチスレッド、パフォーマンスの最適化、保守性などがあります。解決策には、スマート ポインター、最新のスレッド ライブラリ、SIMD 命令、サードパーティ ライブラリの使用、コーディング スタイル ガイドラインの遵守、自動化ツールの使用が含まれます。実践的な事例では、Eigen ライブラリを使用して線形回帰アルゴリズムを実装し、メモリを効果的に管理し、高性能の行列演算を使用する方法を示します。

翻訳者 | Li Rui によるレビュー | 今日、人工知能 (AI) および機械学習 (ML) モデルはますます複雑になっており、これらのモデルによって生成される出力はブラックボックスになっており、関係者に説明することができません。 Explainable AI (XAI) は、利害関係者がこれらのモデルがどのように機能するかを理解できるようにし、これらのモデルが実際に意思決定を行う方法を確実に理解できるようにし、AI システムの透明性、信頼性、およびこの問題を解決するための説明責任を確保することで、この問題を解決することを目指しています。この記事では、さまざまな説明可能な人工知能 (XAI) 手法を検討して、その基礎となる原理を説明します。説明可能な AI が重要であるいくつかの理由 信頼と透明性: AI システムが広く受け入れられ、信頼されるためには、ユーザーは意思決定がどのように行われるかを理解する必要があります

機械学習は人工知能の重要な分野であり、明示的にプログラムしなくてもコンピューターにデータから学習して能力を向上させる機能を提供します。機械学習は、画像認識や自然言語処理から、レコメンデーションシステムや不正行為検出に至るまで、さまざまな分野で幅広く応用されており、私たちの生活様式を変えつつあります。機械学習の分野にはさまざまな手法や理論があり、その中で最も影響力のある 5 つの手法は「機械学習の 5 つの流派」と呼ばれています。 5 つの主要な学派は、象徴学派、コネクショニスト学派、進化学派、ベイジアン学派、およびアナロジー学派です。 1. 象徴主義は、象徴主義とも呼ばれ、論理的推論と知識の表現のためのシンボルの使用を強調します。この学派は、学習は既存の既存の要素を介した逆演繹のプロセスであると信じています。

MetaFAIR はハーバード大学と協力して、大規模な機械学習の実行時に生成されるデータの偏りを最適化するための新しい研究フレームワークを提供しました。大規模な言語モデルのトレーニングには数か月かかることが多く、数百、さらには数千の GPU を使用することが知られています。 LLaMA270B モデルを例にとると、そのトレーニングには合計 1,720,320 GPU 時間が必要です。大規模なモデルのトレーニングには、これらのワークロードの規模と複雑さにより、特有のシステム上の課題が生じます。最近、多くの機関が、SOTA 生成 AI モデルをトレーニングする際のトレーニング プロセスの不安定性を報告しています。これらは通常、損失スパイクの形で現れます。たとえば、Google の PaLM モデルでは、トレーニング プロセス中に最大 20 回の損失スパイクが発生しました。数値的なバイアスがこのトレーニングの不正確さの根本原因です。
