1. はじめに
最終更新日: 2022 年 3 月 28 日
機械学習
機械学習は急速に進歩している分野です。新しい研究や可能性が毎日リリースされており、これまでは不可能だったユースケースが実現しています。
通常、こうしたリリースでは、結果がモデルとして付加されています。モデルは、入力(画像など)が与えられて結果(分類など)が出力される非常に長い数式として理解できます。
- こうした新しいモデルのいずれかを、独自のデータで使用するとしたらどうなるでしょうか。
- 最先端のモデルを採用することで、ユースケースやアプリでどのようなメリットが得られるでしょうか。
この Codelab では、独自のデータに合わせて機械学習モデルを簡単にカスタマイズするプロセスについて説明します。
機械学習モデルの構築とトレーニングには多くの課題があります:
- 時間がかかる。
- 大量のデータを使用する。
- 数学や統計学などの専門知識が必要。
- リソースを大量に消費: モデルの中にはトレーニングに数日かかるものがある。
新しいモデル アーキテクチャの構築には時間がかかり、多くの実験と何年もの経験が必要になることがあります。しかし、最先端の知識を独自の課題に合わせてカスタマイズするだけで、そうした知識をすべて活用してご自分のデータで使用できるとしたらどうでしょう。これは、転移学習と呼ばれる手法を使えば可能です。
この Codelab では、転移学習の方法、仕組み、用途について学習します。
学習内容
- 転移学習の概要と用途
- 転移学習の使用方法
- モデルを微調整する方法
- TensorFlow Lite Model Maker の使用方法
- TensorFlow Hub の使用方法
必要なもの
- すべてのコードは Google Colaboratory を使用して実行されるため、何もマシンにインストールする必要はありません。必要なものは、インターネットへのアクセスと、Colab にログインするための Google アカウントだけです。
- TensorFlow と Keras API に関する基本的な知識。
- Python に関する知識。
TensorFlow や機械学習に関する基本的な知識がなくても、転移学習について学ぶことができます。この手法の背後にある理論については、次のステップ「転移学習とは何か」を読み、「モデルメーカーによる転移学習」に進んでください。プロセスをより深く詳しく知りたい方は、TensorFlow Hub による転移学習に関するセクションをご覧ください。
2. 転移学習とは
事前トレーニング済みモデルとは、大規模なデータセット(通常は大規模な画像分類タスク)でトレーニングされた保存済みネットワークのことです。事前トレーニング済みモデルは、そのまま使用するか、転移学習を使用してこのモデルを特定のタスクに合わせてカスタマイズします。
画像分類向け転移学習の背後にある考え方は、モデルが広大で汎用性の高いデータセットでトレーニングされている場合、実質的には視覚世界の一般的なモデルとして機能するということです。そして、大規模なデータセットで大規模なモデルをトレーニングすることで、ゼロから学習しなくてもこれらの学習した特徴マップを活用できます。
機械学習モデルをカスタマイズする方法は 2 つあります。
- 特徴抽出: 前のネットワークで学習された表現を使用して、新しいサンプルから重要な特徴を抽出します。前に学習した特徴マップをそのデータセットで再利用できるように、事前にトレーニングしたモデル上に、ゼロからトレーニングする新しい分類器を追加するだけです。モデル全体を(再)トレーニングする必要はありません。基本の畳み込みネットワークには、画像の分類に一般的に役立つ特徴がすでに含まれています。ただし、事前トレーニング済みモデルの最終分類部は元の分類タスクに固有のもので、モデルがトレーニングされたクラスのセットにはその次に固有のものです。
- 微調整: フリーズされたモデルベースの最上位レイヤの固定をいくつか解除し、新たに追加された分類レイヤとベースモデルの最後のレイヤの両方を一緒にトレーニングします。これにより、基本モデルの高次の特徴表現を「微調整」して、具体的なタスクとの関連性を高めることができます。
特徴抽出はトレーニングが高速ですが、微調整によってさらに優れた結果が得られます。
転移学習を行う 2 つの異なる方法で、どちらも(特徴抽出と微調整)試してみましょう。
- TensorFlow Lite Model Maker ライブラリは、データ パイプラインとモデル作成の大部分を自動的に行い、このプロセスを大幅に簡素化できます。作成したモデルは、モバイルやブラウザで使用するために、エクスポートも簡単に行えます。
- TensorFlow Hub モデルは、TensorFlow Hub で利用可能な膨大な機械学習モデルのリポジトリを活用します。研究者やコミュニティは、これらのモデルによって、より幅広い最先端のモデルをより速く利用できるようにしています。
3. モデルメーカーによる転移学習
転移学習の概念を理解したところで、次は、簡単にその処理を行えるツールである TensorFlow Lite Model Maker ライブラリを使用してみましょう。
TensorFlow Lite Model Maker ライブラリは、転移学習のプロセスを簡素化するオープンソース ライブラリで、モバイルやウェブのデベロッパーなど、ML 以外のデベロッパーがより親しみやすいプロセスになっています。
Colab ノートブックでは、次の手順について説明します。
- データを読み込む。
- データを分割する。
- モデルの作成とトレーニングを行う
- モデルを評価する。
- モデルをエクスポートする。
このステップが完了すると、同じプロセスに従って、独自のデータで転移学習を開始できます。
Colaboratory
次に、Google Colab に移動して、カスタムモデルをトレーニングしましょう。
説明を読んでノートブックの基本を理解するためには、約 15 分かかります。
長所:
- モデルをカスタマイズする簡単な方法。
- TensorFlow や Keras API の理解が不要。
- まだ実装されていない特定の機能をユーザーが必要としている場合に変更可能な、オープンソースのツール。
- モバイルやブラウザでの実行用にモデルを直接エクスポート。
短所
- 前記の 2 つの方法の場合のように、完全なパイプラインを作成して自分でモデルを作成するよりも、構成の余地が少ない。
- ベースモデルを選択する場合でも、すべてのモデルをベースとして使用できるわけではない。
- データ パイプラインがより複雑な大量のデータには不向き。
4.TensorFlow Hub でモデルを見つける
このセクションを終えると、次のことができるようになります。
- TensorFlow Hub で機械学習モデルを見つける。
- コレクションについて理解する。
- さまざまな種類のモデルを理解する。
転移学習を行うには、次の 2 つを用意して始める必要があります。
- データ(認識したい対象の画像など)。
- データに合わせてカスタマイズできるベースモデル。
通常、データに関してはビジネスによって異なりますが、認識したい対象の写真を数多く撮ることが最も簡単な方法です。しかし、ベースモデルについてはどうでしょうか。どこで見つけることができるでしょうか?それには、TensorFlow Hub が役立ちます。
TensorFlow Hub は、TensorFlow モデルのニーズに対するモデル リポジトリです。
何千ものモデルのドキュメントを検索、確認してすぐに利用でき、その多くは転移学習と微調整に対応しています。
モデルの検索
まず、TensorFlow Hub で使用するモデルを簡単に検索して、後でコード内で使えるようにします。
ステップ 1: ブラウザで、サイト tfhub.dev を開きます。
画像分野での転移学習には特徴ベクトルが必要です。特徴ベクトルは分類モデルに似ていますが、分類ヘッドはありません。
特徴ベクトルは、N 次空間の数値表現に変換できます(N はモデルの出力レイヤの次元数)。
TFHub では、特定のカードをクリックすると特徴ベクトルを検索できます。
左側のフィルタでモデルの名前を検索して、Image feature vectors
だけを表示することもできます。
青いアイコンが付いたカードはモデルのコレクションです。image コレクションをクリックすると、多数の同様のモデルにアクセスできます。image コレクションを選択しましょう。
下にスクロールして MobileNet V3
を選択します。どの特徴ベクトルでも同じです。
モデルの詳細ページでは、モデルのすべてのドキュメントを読むことができます。また、モデルを実際に試すコード スニペットを確認すること、Colab ノートブックで直接試すこともできます。
今のところ必要なものは、上部の URL だけです。これがモデルのハンドルであり、TensorFlow Hub ライブラリからモデルに簡単にアクセスする方法です。
5. TensorFlow Hub による転移学習
使用するモデルは選択しましたので、それを TensorFlow Hub ライブラリの KerasLayer メソッドで読み込んでカスタマイズします。
このメソッドは、モデルのレイヤとして使用できるようにモデルを読み込みます。これにより、このレイヤを中心にモデルを構築できます。
以前、Model Maker の使用方法を学習したときは、わかりやすくするためにすべての内部情報が非表示にされていました。ここでは、Model Maker がバックグラウンドで行っている処理を見ていきます。
Colaboratory
次に、Google Colab に移動して、カスタムモデルをトレーニングしましょう。
説明を読んでノートブックの基本を理解するためには、約 20 分かかります。
長所:
- 研究者とコミュニティによって数千ものモデルが提供され、多様なデータセットでトレーニング済み。
- すべてのタスク(ビジョン、テキスト、音声など)のモデル。
- さまざまな類似モデルを使用して簡単にテストが可能。文字列を 1 つ変更するだけでベースモデルを変更できます。
短所
- モデルを使用するためには、依然、TensorFlow / Keras の専門知識がある程度必要。
さらに詳しく知りたい場合は、Keras Application を使用した転移学習も利用できます。これは TensorFlow Hub を使用するプロセスと非常によく似ていますが、基本的な TensorFlow API だけが含まれています。
6. 完了
お疲れさまでした。転移学習の概要と、自身のデータに適用する方法を学びました。
この Codelab では、転移学習と呼ばれる手法を使用して、お客様独自のデータに合わせて機械学習モデルをカスタマイズする方法を学習しました。
次の 2 形態の転移学習を試しました。
- TensorFlow Lite Model Maker などのツールを使用。
- TensorFlow Hub の特徴ベクトルを使用。
どちらの方法にも長所と短所があり、特定のニーズに対して可能な構成も多数あります。
また、さらに一歩進め、データに合わせてモデルの重みを少し調整することで、モデルを微調整できることも学びました。
モデルの微調整は、どちらの方法でも可能です。
転移学習と微調整は、画像関連モデルに限られたことではありません。その目的は、学習したドメインの表現をデータセットに合わせるために使用することあるため、テキスト ドメインおよびオーディオ ドメインに使うこともできます。
次のステップ
- ご自身のデータで試してください。
- 作成したものを共有し、ソーシャル メディアでご自身のプロジェクトに TensorFlow のタグを付けてください。
詳細
- BERT などの最先端モデルの微調整の詳細については、 BERT モデルの微調整をご覧ください。
- 音声モデルの転移学習に関する詳細は、環境音分類の YAMNet を使用した転移学習をご覧ください。