質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.45%
Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1970閲覧

DeepLearning 転移学習TransferLearningの解釈の仕方について

_Victorique__

総合スコア1392

Chainer

Chainerは、国産の深層学習フレームワークです。あらゆるニューラルネットワークをPythonで柔軟に書くことができ、学習させることが可能。GPUをサポートしており、複数のGPUを用いた学習も直感的に記述できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/09/17 04:32

機械学習における一つの手法に転移学習というものがあります。
簡単に説明すると、学習済みモデルの学習層だけを新しく繋ぎ変えて、
学習済みモデルの重みを利用して再度学習させるというものです。

転移学習の凄いところはもとのモデルの分類クラスに入っていなくても少ない枚数で学習が収束する
というところです。
どうしてこのようなことが出来てしまうのかを頭では分かっているつもりですがあっているのか分かりません。
以下図で説明すると、

もともと以下のようにキリンとパンダに学習して分類していたクラスを
イメージ説明

以下のようにタヌキとキツネを用意して出力層を入れ替えています。
イメージ説明

上から下に変わるときに、全結合層(出力層の手前)の特徴量の重みを
出力層に再度重みを振り分け直しているようなイメージなのですが合っていますでしょうか?
また、学習済みの重みを利用しているため、少ない画像でも早く収束するという認識で合っていますか?
画像では2クラス→2クラスですが数を合わせた意図はなく、違っていても同じです。

学習済みモデルの分類クラスに依存しない理由は、結局は特徴量の振り分けでしかないから
で合っていますでしょうか?

見当違いなことを言っていたらすみません。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

転移学習と初期値

パラメータ数が N のネットワークを考えた場合、学習とは N 次元空間を勾配法で探索し、損失関数の値が小さくなる点を探すことです。ゼロから学習する場合、適当な値で初期値として解を探すのですが、転移学習で学習済みの重みを初期値とした場合、このスタート地点が解の近くになっていることを意味しています。

転移学習が有効なモデル

転移学習が有効なのは、主に画像認識等に用いられる CNN モデルであるかと思います。
全結合モデルや強化学習等のモデルはそのタスクに特化した学習となってしまうので、別のタスクを解く際は基本的にゼロから学習し直しになります。

CNN

CNN の転移学習で用いる重みはよく ImageNet の数百万枚の画像を1000カテゴリに分類するタスクを学習したものが用いられます。
そのクラスには犬の品種などよく似ていて人間でも分類が難しいものが含まれます。
これらをきちんと分類できるようにするには、画像を認識するために必要な汎用的な畳み込み層のフィルターが学習する必要があります。
実際、畳み込み層のフィルターを可視化してみると、エッジフィルタや特定の色を抽出するフィルタなど画像処理でよく用いられるフィルタが学習で獲得されているのが確認できます。

イメージ説明

上は ResNet-50 の1個目の畳み込み層の64枚のフィルタとそのフィルタで処理した結果を可視化した画像になります。

CNN ならどのような場合でも転移学習は有効なのか

転移学習に用いる重みは、「学習するデータセットの分布」と「転移学習に使用する重みの学習に用いたデータセットの分布」と似ているほうが、より効果があります。
(例: 場所の分類なら、Place Recognition 用の学習済みモデルを用いる)

質問に関して

上から下に変わるときに、全結合層(出力層の手前)の特徴量の重みを 出力層に再度重みを振り分け直しているようなイメージなのですが合っていますでしょうか? また、学習済みの重みを利用しているため、少ない画像でも早く収束するという認識で合っていますか?

転移学習の場合、汎用的に使える畳み込み層の部分の重みはフリーズ (学習しない) で、分類部分の全結合層の重みだけ学習し直します。
転移学習により、全結合層の部分は学習するけど、学習が大変な畳み込み層の部分の学習を省略しているということです。

投稿2018/09/17 05:17

編集2018/09/17 10:37
tiitoi

総合スコア21956

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

_Victorique__

2018/09/17 05:52

丁寧な回答ありがとうございます。 > (ImageNet の学習モデルを用いるなら、ImageNet のデータの分布、ImageNet とデータの分布が異なる傾向にあるものは、あまり転移学習の利益を得られないでしょう。) ImageNetのクラスとは掛け離れた専門的なクラスで学習・分類した場合でもかなりの利益を得ました。 データの分布という意味での議論はできていないかもしれませんが、学習してみた感じどんなデータに対しても利益を得られるように感じました(複数のテーマで重み有無で学習・比較済み)。正確には適応できないデータはかなり少ない、つまり大体のデータに適応可能という認識ですがどうでしょうか?
tiitoi

2018/09/17 10:40

「適応できない」と言ってしまうと語弊があったので、回答を修正しました。 転移学習に用いる重みは、データセットの分布が近いほうがより効果があるという解釈をしてください。
_Victorique__

2018/09/18 13:08

ありがとうございます!大変参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.45%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問