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が銀行業務をどう変えるか

ブログ    
ブログ    
ブログ    

推薦する

どのようなタイプのスマートビルが AI の導入をリードするのでしょうか?

人工知能 (AI) は建物の避けられない未来ですが、過去 10 年間のスマート テクノロジーの採用と...

機械学習はどのような種類のタスクを解決できますか?

機械学習により、人間が設計した固定されたプログラムでは解決が難しい問題を解決できるようになります。科...

MITとIBMが共同で「コンピュータービジョンの黄金時代に備える」ための新しいデータセットを発表

人工知能の分野における画像分類問題に関して言えば、トレーニングとテストに最もよく使用されるデータセッ...

2021年のAIチップの在庫:「2つの壁」を破り、ストレージとコンピューティングを統合することがトレンドに

​​著者: 張傑【51CTO.comオリジナル記事】 AI チップはなぜ必要なのでしょうか?新しいイ...

人工知能に関するよくある誤解

ビッグデータ、自動化、ニューラルネットワークが日常語となっている世界では、人工知能とその背後にあるプ...

すべての IT リーダーが議論すべき 6 つの難しい AI に関する議論

AIほど多くの議論や論争を巻き起こした技術はほとんどなく、労働者、著名な経営者、世界の指導者たちは、...

YOLOプロジェクト復活!マスターが後を継ぎ、YOLOの父が2か月間引退し、v4バージョンが正式にリリースされました

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

DeepMind: ビッグモデルのもう一つの大きな欠陥は、正しい答えが事前にわかっていなければ推論を自己修正できないことだ。

大規模言語モデルのもう一つの重大な欠陥が DeepMind によって明らかにされました。 LLM は...

人工知能の3つの浮き沈みと、寒い冬の可能性

[[437677]]より長期的な視点で見ると、中国は歴史上、3つの発展の波と2つの谷を経験してきたこ...

周志華:「データ、アルゴリズム、計算力」は人工知能の3つの要素であり、今後は「知識」が加わる必要があります。

CCF-GAIR 2020人工知能フロンティア特別セッションでは、南京大学コンピュータサイエンス学...

ウォルマートのAIを活用したイノベーションの実践経験

ウォルマートの創業者サム・ウォルトンはよく「私たちの人材が違いを生み出す」と言っていましたが、この言...

...

YOLOv6: 高速かつ正確な物体検出フレームワークがオープンソース化

著者: Chu Yi、Kai Heng 他最近、Meituan のビジュアル インテリジェンス部門は...

基本的なプログラミングアルゴリズムを簡単にマスターする(パート2)

[[121970]]この記事を書く前に、プログラマーの基本的な知識についてお話ししたいと思います。...

...