転移学習とファインチューニングの違い

今回もまた機械学習関連についてです。


先日から、つくりながら学ぶ! PyTorchによる発展ディープラーニングを読み進めているのですが、気になって点があり、調べました。

それは、

転移学習とファインチューニングの違い

です。

ディープラーニングでは、インターネットで無料配布されている学習済みモデルをダウンロードして使用する場合が高頻度であります。学習済みモデルは様々で、一覧は現在このようになっています。

学習済みモデルを自分の環境にロードをするのですが、そのままではそのモデルの通りの分類しかできません。例えば、犬と猫と人間を分類するモデルをロードすると犬と猫と人間しか推論できません。

ここで自分用にモデルを作成するために転移学習やファインチューニングをする必要が出てくるのです。

私は、この本を読むまで転移学習とファインチューニングは全く同じ意味を持つものだと勘違いしていました。今から違いを説明します。


転移学習

転移学習とは、学習済みモデルの最終出力層だけを付け替えて、自分のデータを学習させ新しいモデルを作成するということで出力層のパラメータだけ変更します。例えば、犬と猫と人間を分類するモデルを犬と猫のデータで再学習させることで犬と猫を分類するモデルを作ることができます。


ファインチューニング

ファインチューニングは、学習済みモデルの最終出力層を付け替えるのですが、入力層に近い部分と出力層のパラメータも変更します。例えば、犬と猫と人間を分類するモデルを柴犬とゴールデンレトリバーを分類するモデル、人間を年代毎に分類するモデルのように学習済みモデルと比べて全く異なるモデルへと学習することができるようになります。


まとめ

何気なく使っていた転移学習とファインチューニングですが、このような違いがありました。また、この情報は正確ではないかもしれないので追記・編集するかもしれません。

この記事が気に入ったらサポートをしてみませんか?