この記事では転移学習とは何か、どのように使用するのかを簡単に紹介します。 転移学習とは何ですか?転移学習は、事前にトレーニングされたモデルを使用して深層学習の問題を解決する技術です。 転移学習は、事前にトレーニングされたニューラル ネットワークを使用して、ネットワークが元々解決するようにトレーニングされた問題に類似した問題を解決する機械学習手法です。たとえば、独自のモデルを構築する代わりに、犬の品種を識別するために構築されたディープラーニング モデルを活用して、犬と猫を分類することができます。これにより、効果的なニューラル ネットワーク アーキテクチャを見つける手間が省け、トレーニングに費やす時間が節約され、良好な結果が保証されます。つまり、猫と犬を正確に区別するために、長い時間をかけて 50 層の CNN を作成することもできますし、事前にトレーニングされた多数の画像分類モデルの 1 つを使用することもできます。 事前学習済みモデルを使用する3つの異なる方法 事前トレーニング済みモデルをリターゲットする方法は主に 3 つあります。彼らです、
特徴抽出:ここで必要なのは、出力層を変更して、元々コンテンツを分類するためにトレーニングされた数千のクラスではなく、猫と犬の確率 (またはモデルがコンテンツを分類しようとしているクラスの数) を与えることだけです。これは、モデルをトレーニングしようとしているデータが、事前トレーニング済みモデルが元々トレーニングされたデータと非常に類似しており、データセットのサイズが小さい場合に最適です。このメカニズムは固定特徴抽出と呼ばれます。追加した新しい出力層のみを再トレーニングし、各層の重みを保持します。 事前トレーニング済みネットワークのアーキテクチャをコピーする:ここでは、達成しようとしているタスクと同様のタスクを実行して優れた結果を示した事前トレーニング済みモデルと同じアーキテクチャを持つ機械学習モデルを定義し、それを最初からトレーニングします。事前トレーニング済みモデルから各レイヤーの重みを破棄し、データに基づいてモデル全体を再トレーニングします。トレーニングするデータが大量にあるが、事前トレーニング済みモデルがトレーニングされたデータとあまり類似していない場合に、このアプローチを採用します。 一部のレイヤーをフリーズし、他のレイヤーをトレーニングする:事前トレーニング済みモデルの最初の k レイヤーをフリーズし、上位の nk レイヤーのみをトレーニングすることを選択できます。初期値の重みを事前トレーニング済みモデルと同じに保ち、データ上で上位層を再トレーニングします。この方法は、データセットが小さく、データの類似性が低い場合に使用されます。下位層は、データから抽出できる最も基本的な情報に重点を置いており、基本レベルの情報は同じであることが多いため、他の問題にも使用できます。 もう 1 つの一般的な状況は、データの類似性が高く、データセットも大きい場合です。この場合、モデルのアーキテクチャとモデルの初期の重みは保持されます。次に、モデル全体を再トレーニングして、事前トレーニング済みモデルの重みを更新し、特定の問題により適合するようにします。これは転移学習を使用するのに理想的な状況です。 次の図は、データセットのサイズとデータの類似性が変化したときに使用される方法を示しています。 PyTorch での転移学習PyTorch の torchvision.models モジュールには、事前トレーニング済みの 8 つの異なるモデルがあります。彼らです:
これらはすべて、画像分類用に構築され、ImageNet データセットでトレーニングされた畳み込みニューラル ネットワークです。 ImageNet は、WordNet 階層に従って編成された画像データベースで、21,841 のカテゴリに属する 14,197,122 枚の画像が含まれています。 PyTorch のすべての事前トレーニング済みモデルは同じタスクの同じデータセットでトレーニングされるため、どれを選択しても問題ありません。 ResNet ネットワークを選択し、前述したさまざまなシナリオでそれをどのように使用できるかを見てみましょう。 ResNet または画像認識のための深層残差学習には、PyTorch で ResNet-18、ResNet-34、ResNet-50、ResNet-101、ResNet-152 の 5 つのバージョンがあります。 torchvisionからResNet-18をダウンロードしましょう。
以下は、先ほどダウンロードしたモデルです。 それでは、このモデルを 4 つの異なる問題でどのようにトレーニングできるか試してみましょう。 データセットは小さく、データの類似性は高いこの Kaggle データセット (https://www.kaggle.com/mriganksingh/cat-images-dataset) を検討してください。これには、猫の画像だけでなく、猫以外の画像も含まれます。 64×64×3ピクセルのトレーニング画像が209枚、テスト画像が50枚あります。これは明らかに非常に小さなデータセットですが、ResNet は多数の動物と猫の画像でトレーニングされていることがわかっているので、ResNet を固定特徴抽出器として使用して、猫と非猫の問題を解決できます。
アウト: 512
アウト: 1000 最後のレイヤーを除くすべてのネットワークをフリーズする必要があります。 backward() で勾配が計算されないように、パラメータを固定するには requires_grad = False を設定する必要があります。新しく構築されたモジュールのデフォルト パラメーターは requires_grad=True です。
最後のレイヤーでは、画像が猫であるかどうかの確率という 2 つの確率のみを提供する必要があるため、最後のレイヤーで出力機能の数を再定義できます。
これが私たちのモデルの新しいアーキテクチャです。 今やるべきことは、モデルの最後のレイヤーをトレーニングすることだけです。そうすれば、リターゲットされた vgg16 を使用して、非常に少ないデータとトレーニング時間で、画像が猫であるかどうかを予測できるようになります。 データのサイズが小さく、データの類似性も低い(https://www.kaggle.com/kvinicki/canine-coccidiosis) のデータセットを検討してください。このデータセットには、犬の腸に感染するコクシジウム寄生虫である Heterospora canis と Heterospora canis オーシストの画像とラベルが含まれています。これはザグレブの獣医学部によって作成されました。両方の寄生虫の画像が 341 枚含まれています。 このデータセットは小さく、Imagenet のカテゴリではありません。この場合、事前トレーニング済みのモデル アーキテクチャを維持し、下位層を固定してその重みを保持し、問題に合わせて重みを更新しながら下位層をトレーニングします。
アウト:10 ResNet18 には合計 10 層あります。最初の6層を冷凍しましょう。
最初の 6 つのレイヤーをフリーズしたので、最終出力レイヤーを再定義して、1000 ではなく 2 つの出力のみを生成するようにします。
これは更新されたアーキテクチャです。 ここで、この機械学習モデルをトレーニングし、最後の 4 つのレイヤーの重みを更新します。 データセットのサイズは大きいが、データの類似性は非常に低いKaggleのSkin Cancer MNISTデータセットHAM10000を検討してください。 7 つの異なるカテゴリに属する 10015 枚以上の皮膚鏡画像があります。これは、Imagenet で見つけられる種類のデータではありません。 ここでは、モデル アーキテクチャのみが保持され、事前トレーニング済みモデルの重みは保持されません。出力層を再定義して、アイテムを 7 つのカテゴリに分類してみましょう。
このモデルは、GPU のないマシンでトレーニングするには数時間かかりますが、十分なエポック数実行すれば、独自のモデル アーキテクチャを定義しなくても優れた結果が得られます。 データサイズが大きく、データの類似性が高いKaggle の花のデータセット (https://www.kaggle.com/alxmamaev/flowers-recognition) を検討してください。 4242枚の花の画像が含まれています。写真は、カモミール、チューリップ、バラ、ヒマワリ、タンポポの 5 つのカテゴリーに分かれています。各クラスには約800枚の写真があります。 これは転移学習を適用するのに理想的な状況です。事前トレーニング済みモデルの各レイヤーのアーキテクチャと重みを維持し、特定の問題に合わせて重みを更新しながらモデルをトレーニングしました。
事前トレーニング済みモデルから重みをコピーし、モデルを初期化します。これらの重みを更新するには、トレーニング フェーズとテスト フェーズを使用します。
この機械学習モデルもトレーニングに数時間かかりますが、たった 1 回のトレーニング エポックでも優れた結果が得られます。 同じ原則に従って、他のプラットフォーム上の他の事前トレーニング済みネットワークを使用して転移学習を実行できます。この記事では、Resnet と pytorch をランダムに選択しました。他の CNN でも同様の結果が得られます。これによって、コンピューター ビジョンを使用して現実世界の問題を解決する際の苦労が何時間も軽減されることを願っています。 |
<<: 顔認識技術は議論を呼んでいる。人工知能はどのように制御されるべきか?
>>: 人工知能を正しく実装するにはどうすればいいでしょうか?
潜在的な購入者が住宅を閲覧したり、オンラインで検索したりする際に、エージェントやブローカーによる物件...
[[205882]]北京時間10月10日朝のニュースによると、中国の検索大手、百度はシアトル地域にオ...
6月26日のニュースによると、今年5月、マイクロソフトは毎年恒例のBuild開発者会議で、Windo...
海外メディアの報道によると、9月19日、英国競争・市場庁(競争・市場庁)は、人工知能の規制当局や同技...
[[414411]]近年、顔認識技術は、身元認証からコミュニティのアクセス制御まで幅広く使用され、多...
ダブル11の大割引が戻ってきました。新規のお客様が最初に購入できる厳選商品...速達便のビジネスプロ...
近い将来に大きな価値を生み出す可能性のある技術の予測となると、人工知能は間違いなくリストのトップに位...
これから起こることは、やがて起こるでしょう! OpenAIが開発者会議で正式発表した「GPTストア」...
12月2日、OpenAIのChatGPTチームはGPT開発者に手紙を送り、「GPTストア」が202...
[[186071]]今日、私は BAT のアルゴリズム エンジニアに再び拒否されました。はい、お読み...
[[377893]] [51CTO.com クイック翻訳] データとオープンソースの機械学習フレーム...
仮想化技術はコンピューティング分野で幅広い用途があり、ハードウェア リソースの利用率を向上させ、メン...
11月16日、海外メディアの報道によると、OpenAIのCEOであるサム・アルトマン氏は最近、Dev...