tf.keras と Eager Execution を使用して複雑な問題を解決する方法

tf.keras と Eager Execution を使用して複雑な問題を解決する方法

生成モデルとシーケンス モデルは、常に私を魅了してきました。これらのモデルは、機械学習を初めて学ぶときによく遭遇する質問とは異なる質問をします。私が初めて ML を学び始めたとき、多くの人と同じように、分類と回帰を学びました。これらは、次のような質問をしたり答えたりするのに役立ちます。

  • この写真に写っているのは猫ですか、それとも犬ですか?(カテゴリ)
  • 明日雨が降る確率はどれくらいでしょうか?(回帰)

分類と回帰は習得する価値のあるスキルであり、実際の問題ではどちらもほぼ常に使用できます。ただし、これまでの質問とはまったく異なるタイプの質問をする場合もあります。

  • 詩を書けますか?(テキスト生成)
  • 猫の写真を生成できますか? (Generative Adversarial Networks)
  • 文章を翻訳できますか?(ニューラル機械翻訳)
  • 画像に基づいてタイトルを生成できますか? (画像注釈)

[[241467]]

夏のインターンシップ中に、TensorFlow の最も高度な API の 2 つ (tf.keras と Eager Execution) を使用してこれらの例を開発しました。ここではその内容を紹介します。役に立つ、興味深い内容だと思っていただければ幸いです。

  • 即時実行は、ランタイムによって定義される命令型インターフェースであり、Python から呼び出されるとすぐに操作が実行されます。これにより、TensorFlow を使い始めるのが容易になり、研究開発がより直感的になります。
  • tf.keras は、レゴのようなビルディング ブロックを使用してモデルを定義するための高レベル API です。私はこれらの例をモデル サブクラス化を使用して実装しました。これにより、tf.keras モデルをサブクラス化し、独自のフォワード パスを定義することで、完全にカスタマイズ可能なモデルを構築できます。モデルのサブクラス化は、フォワード パスを命令的に記述できるため、Eager 実行が有効になっている場合に特に便利です。

これらの API を初めて使用する場合は、最近更新された例を含む tensorflow.org/tutorials のノートブックを読んで詳細を学ぶことができます。

次の各例はエンドツーエンドであり、同様のパターンに従います。

  • トレーニング データを自動的にダウンロードします。
  • トレーニング データを前処理し、入力パイプラインで使用するための tf.data データセットを作成します。
  • tf.keras モデル サブクラス化 API を使用してモデルを定義します。
  • 積極的な実行を使用してモデルをトレーニングします。
  • トレーニング済みモデルの使用方法を説明します。

例1: テキスト生成

最初の例はテキスト生成です。ここでは、RNN を使用してシェイクスピアのスタイルに似たテキストを生成します。以下のリンクをたどって Colaboratory で実行できます (または GitHub から Jupyter ノートブックとしてダウンロードできます)。コードはノートブックで詳しく説明されています。

例1ノートブック:

https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/generative_examples/text_generation.ipynb

シェイクスピアが非常に多くの本を書いたことを考慮して、この例ではシェイクスピアのスタイルに似たテキストを生成することを学習します。

シェイクスピア コーパスで 30 エポックのトレーニングを行った後、ノートブックによって生成されたサンプル テキスト。

ほとんどの文章は意味をなさないものの (この単純なモデルはまだ言語の意味を学習していないため)、ほとんどの単語が正しく綴られており、生成されたスクリプトの構造が元のスクリプトの構造に似ているのは印象的です。 (これは文字ベースのモデルであり、長期間トレーニングしたわけではありませんが、これら 2 つのことをゼロから学習することができました)。必要に応じて、コードを 1 行変更するだけでデータセットを変更できます。 )

RNN について詳しくは、Andrej Karpathy の優れた記事「The Unreasonable Effectiveness of Recurrent Neural Networks」をご覧ください。 Keras または tf·Keras を使用した RNN の実装について詳しく知りたい場合は、Francois Chollet のノートブックをお勧めします。

Francois Chollet のノートブック: https://github.com/fchollet/deep-learning-with-python-notebooks

例2: DCGAN

この例では、DCGAN を使用して手書きの数字を生成します。生成的敵対ネットワーク (GAN) は、ジェネレーターと識別器で構成されます。ジェネレーターの役割は、ディスクリミネーターを騙すためにリアルな画像を生成することです。識別器の役割は、実際の画像と偽の画像(ジェネレータによって生成されたもの)を分類することです。以下に示す出力は、論文「Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks」で説明されているネットワーク アーキテクチャとハイパーパラメータを使用して、ジェネレータとディスクリミネーターを 150 エポックにわたってトレーニングした後に生成されました。

例2ノートブック:

https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/generative_examples/dcgan.ipynb

画像の GIF は 150 エポック中 10 エポックごとに生成されます。この GIF を生成するコードはノートブックにあります。

例3: 注意ニューラル機械翻訳

この例では、スペイン語の文章を英語の文章に翻訳するモデルをトレーニングします。モデルのトレーニングが完了すると、「¿to davia estan en casa?」などのスペイン語の文章を入力すると、「are you still at home?」という英語の翻訳が返されます。

下の図は注目度マップです。翻訳時に入力文のどの部分がモデルの注目を引いたかを示します。たとえば、モデルが「cold」という単語を翻訳したときは、「mucho」、「frio」、「aqui」を参照していました。ノートブックで説明されているように、tf.keras と Eager Execution を使用して、Bahdanau Attention を最初から実装します。この実装をカスタム モデルを実装するための基礎として使用することもできます。

例3ノートブック:

https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/nmt_with_attention/nmt_with_attention.ipynb

上記翻訳の注目度マップ。

例4: 注目画像注釈

この例では、画像のキャプションを予測するモデルをトレーニングします。また、キャプションを生成する際にモデルが注目する画像の部分を示す注目マップも生成します。たとえば、モデルが「サーフボード」という単語を予測する場合、画像内のサーフボードに焦点を当てます。ノートブックによって自動的にダウンロードされる MS-COCO データセットのサブセットを使用してモデルをトレーニングします。

例4ノートブック:

https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/generative_examples/image_captioning_with_attention.ipynb

画像の予測キャプション。

上の図の各単語の注目度マップ。

オリジナルリンク:

https://medium.com/tensorflow/complete-code-examples-for-machine-translation-with-attention-image-captioning-text-generation-51663d07a63d

[この記事は51CTOコラム「Machine Heart」、WeChatパブリックアカウント「Machine Heart(id: Almosthuman2014)」からのオリジナル記事です]

この著者の他の記事を読むにはここをクリックしてください

<<:  いいえ!機械学習は単なる美化された統計ではありません。

>>:  データラベラーの視点からAI技術の詳細な応用を検討する

ブログ    
ブログ    

推薦する

機械学習で避けるべき3つの落とし穴

[[274438]]機械学習の分野は数十年にわたって「タンク問題」に悩まされてきました。この話は 1...

大型模型+ロボット、詳細なレビューレポートはこちら、多くの中国の学者が参加

大型モデルの優れた能力は誰の目にも明らかであり、ロボットに統合されれば、ロボットはより賢い脳を持つこ...

「人工知能+ヘルスケア」は有望な未来を秘めている

現在、医療分野における人工知能の応用には、医用画像診断、健康管理、医療研究が含まれます。最近、国立神...

オートメーション研究所の拡散モデル「Brain Reading」、MindDiffuserは人間の脳の視覚イメージを鮮明に再現します

脳信号から対応する視覚刺激を再構築することは、意義深く困難な作業です。これまでの研究では、一部の自然...

BAT や他の人たちは人工知能に関してどのようなことを話しましたか?

9月17日、上海の西外灘で2018年世界人工知能大会が正式に開幕した。ジャック・マー、ポニー・マー...

...

私たちは皆、AIについて間違っていました! MIT教授が批判:データへの過度の焦点

ルイス・ペレス・ブレバは、マサチューセッツ工科大学 (MIT) の教授であり、MIT エンジニアリン...

人工知能によりデータの痕跡を監視できるようになりました。このとき、ユーザーのプライバシーとセキュリティをどのように維持できるのでしょうか?

近年、ソーシャル ネットワーキング プラットフォームのユーザー数は飛躍的に増加しています。これらのプ...

彼は17歳でiOSの脱獄の父となり、25歳で自動運転車を開発した。

[[271960]]彼は5歳の時に初めてコンピュータプログラムを書きました。14歳の時、自作のマッ...

OpenAIに大きな打撃!米政府がChatGPTを「オープンソース化」、アルトマン氏はパニックに陥り3つのツイートを投稿

ビッグニュース!連邦取引委員会の調査が始まります!調査の対象は、人気の OpenAI に他なりません...

LIDAR ポイント クラウドの自己教師あり事前トレーニング用 SOTA!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

...

...

K近傍教師あり学習マシンアルゴリズムの詳細な分析

翻訳者 | 朱 仙中校正 | 梁哲、孫淑娟K 近傍法 (KNN) は、機械学習アルゴリズムにおける回...