TensorFlow が NSL ニューラル構造学習フレームワークをオープンソース化

TensorFlow が NSL ニューラル構造学習フレームワークをオープンソース化

本日、Google TensorFlow は、ニューラル グラフ学習手法を使用してグラフと構造化データでニューラル ネットワークをトレーニングする Neural Structured Learning (NSL) オープン ソース フレームワークのリリースを発表しました。

Google TensorFlow ブログによると、NSL は初心者から上級者まで、構造化信号を使用してニューラル ネットワークをトレーニングできるシンプルなフレームワークであり、正確で堅牢なビジョン、言語理解、予測モデルの構築に使用できます。

  • プロジェクトアドレス: https://github.com/tensorflow/neural-structured-learning

構造化データにはサンプル間の豊富な関係情報が含まれており、多くの機械学習タスクがその恩恵を受けています。たとえば、引用ネットワークのモデリング、文の言語構造の知識グラフに関する推論と推論、分子指紋の学習には、個々のサンプルだけでなく構造化された入力から学習するモデルが必要です。

これらの構造は、明示的に(たとえば、グラフとして)与えることも、暗黙的に(たとえば、敵対的例として)推論することもできます。トレーニング フェーズ中に構造化シグナルを活用すると、特にラベル付けされたデータの量が比較的少ない場合に、開発者はより高いモデル精度を実現できます。 Google の調査によると、構造化シ​​グナルを使用したトレーニングによって、より堅牢なモデルが実現できることもわかっています。

図 2. ネットワーク学習の一般的なプロセス。

Google はこれらの技術を使用して、画像の意味的埋め込みの学習などのモデルのパフォーマンスを大幅に向上させました。

Neural Structured Learning (NSL) は、構造化された信号を使用してディープ ニューラル ネットワークをトレーニングするためのオープン ソース フレームワークです。これは、Google が論文「ニューラル グラフ学習: グラフを使用したニューラル ネットワークのトレーニング」で紹介したニューラル グラフ学習を実装し、開発者がグラフを使用してニューラル ネットワークをトレーニングできるようにします。

ここでのグラフは、ナレッジグラフ、医療記録、ゲノムデータ、マルチモーダル関係(画像とテキストのペアなど)など、多岐にわたります。さらに、NSL は敵対的学習にも適用できます。つまり、敵対的摂動を使用して入力サンプル間の構造を動的に構築できます。

NSL を使用すると、TensorFlow ユーザーはさまざまな構造化信号を簡単に組み込んで、さまざまな学習シナリオ (教師あり、半教師あり、教師なし (表現) 設定) でニューラル ネットワークをトレーニングできます。

NSLの仕組み

NSL フレームワークでは、構造化された情報 (グラフとして定義できるデータや暗黙的な敵対的サンプルなど) を使用してニューラル ネットワークのトレーニングを正規化し、モデルが正確な予測を行うことを学習できるようにします (監督損失を最小限に抑えることにより)。同時に、同じ構造からのすべての入力が同じ類似性を維持するようにします (最近傍損失を最小限に抑えることにより)。この手法は一般化可能であり、フィードフォワード ニューラル ネットワーク、畳み込みニューラル ネットワーク、再帰型ニューラル ネットワークなどのニューラル ネットワーク アーキテクチャで使用できます。

NSL の基本構造。

NSL によるモデルの構築

NSL を使用すると、構造化データを使用するモデルの構築が簡単かつ非常に直感的になります。グラフ(特定の構造を持つ)とトレーニング サンプルが与えられると、NSL はこれらのサンプルを TFRcords に入力してダウンサンプリング操作を実行するツールを提供します。

具体的なコードは次のとおりです。グラフやデータを入力するために、関連するコマンドライン ツールを使用できます。

  1. python pack_nbrs.py --max_nbrs= 5 \
  2. ラベル付きデータ.tfr \
  3. ラベルなしデータ.tfr \
  4. グラフ.tsv \
  5. マージされた例.tfr

その後、NSL は、カスタマイズされたモデルを「パッケージ化」し、処理されたサンプルを入力し、グラフ構造を使用して正規化操作を実行できるいくつかの API を提供します。具体的なコードは次のとおりです。

  1. neural_structured_learning を nsl としてインポートします
  2. # シーケンシャル、機能的、またはサブクラスのカスタム モデルを作成します。
  3. base_model = tf.keras.Sequential(…)
  4. # カスタム モデルをグラフ正規化でラップします。
  5. graph_config = nsl.configs.GraphRegConfig(
  6. neighbor_config = nsl.configs.GraphNeighborConfig(max_neighbors = 1 ))
  7. graph_model = nsl.keras.GraphRegularization(ベースモデル、graph_config)
  8. # コンパイル、トレーニング、評価します。
  9. graph_model.compile(オプティマイザ='adam',
  10. 損失=tf.keras.losses.SparseCategoricalCrossentropy()、メトリック=['精度'])
  11. graph_model.fit(train_dataset、エポック= 5 )
  12. graph_model.evaluate(テストデータセット)

わずか 5 行のコード (コメントを含む) を追加するだけで、NSL はニューラル モデルとグラフ信号を組み合わせることができます。データの観点から見ると、グラフ構造を使用すると、モデルはトレーニング中にラベル付けされたデータを少なく使用しても、精度をあまり失うことはありません (元の教師あり学習よりも 10% または 1% しか少なくありません)。

明示的な構造のないグラフによるトレーニング

明示的な構造を持つグラフがない場合、または入力として使用されていない場合、NSL をトレーニングするにはどうすればよいですか? NSL は、生データからグラフを構築するためのツールを提供します。さらに、NSL は暗黙的な構造シグナルから敵対的サンプルを「導出」するためのツールを提供します。敵対的サンプルはモデルを意図的に誘導するために使用され、トレーニングされたモデルを小さな入力変動に対してより堅牢にします。関連するコードは次のとおりです。

  1. import neural_structured_learning as nsl # シーケンシャル、機能的、またはサブクラスのカスタム モデルを作成します。
  2. base_model = tf.keras.Sequential(...) # カスタムモデルをグラフ正規化でラップします。
  3. graph_config = nsl.configs.GraphRegConfig(
  4. neighbor_config = nsl.configs.GraphNeighborConfig(max_neighbors= 1 ))
  5. graph_model = nsl.keras.GraphRegularization(base_model, graph_config) # コンパイル、トレーニング、評価を行います。
  6. graph_model.compile(オプティマイザ='adam',
  7. 損失=tf.keras.losses.SparseCategoricalCrossentropy()、メトリック=['精度'])
  8. graph_model.fit(train_dataset、エポック= 5 )
  9. graph_model.evaluate(テストデータセット)

5 行未満の追加コード (コメントを含む) で、暗黙的な構造を持つ敵対的サンプルを使用してトレーニングされたニューラル モデルを取得できます。経験的に、敵対的サンプルがない場合、悪意はあるが人間には検出できない変動データが入力に追加されると、モデルの精度は大幅に低下します (例: 30% 低下)。トレーニングに敵対的サンプルを追加すると、このような問題を回避できます。

<<:  ウェルズ・ファーゴ:人工知能と機械学習は「諸刃の剣」

>>:  AIが銀行業務をどう変えるか

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

推薦する

屋台経済は活況を呈している!ロボットも問題を抱えている

「働いてお金を稼ぐのは大変すぎるから、屋台を出して自分で経営者になったほうがいいよ!」露店経済の突然...

200以上の大規模モデル論文の調査と分析、数十人の研究者が1つの論文でRLHFの課題と限界をレビュー

ChatGPTの登場以来、OpenAIが使用するトレーニング方法である人間によるフィードバックによる...

クラウドコンピューティングと人工知能の発展により、ITセキュリティは大幅に向上しました。

データ侵害が頻繁に起こるようになるにつれて、IT セキュリティの重要性がますます高まります。幸いなこ...

Liang Yanbo: データマイニングと機械学習アルゴリズム

電子商取引であれ、インターネット広告であれ、直接ユーザーと向き合うものであり、ユーザーの属性によって...

科学者たちは、人間の肌の感触を模倣し、さらには触覚の方向を感知して予測できる電子毛髪を備えたロボットを開発している。

ビッグデータダイジェスト制作著者: カレブ皆さんはたくさんのロボットを見たことがあると思いますが、こ...

18カ国が支持するAI安全ガイドラインが発表

英国の国立サイバーセキュリティセンター(NCSC)は、AIシステムの開発者やプロバイダーが「期待通り...

今後10年間で自動化される可能性のある14の仕事

[[317602]]自動化技術はさまざまな職場で広く使用されており、多くの企業がこの急速に発展する技...

...

機械学習を活用して人事部門の時間を節約する方法

導入履歴書データベースに「ソフトウェア エンジニア」という名前の履歴書が 10,000 件あるとしま...

...

コンテンツ管理と AI – ContentOps の未来

人工知能 (AI) は、退屈な日常的な作業を一つずつこなして世界を席巻しています。 AI を使用して...

PythonでAutoMLを実装する方法を教えます

[51CTO.com クイック翻訳] 機械学習は複雑な問題を自動的に解決する方法であることはすでに知...

認知と論理的思考の観点から自然言語理解を議論する

[[425002]]自然言語理解 (NLU) は難しい問題です。数十年前の AI の誕生から現在に至...

...