転移学習における標準化(オートスケーリング)

転移学習は、対象としているデータセット (ターゲットドメイン) だけでなく、そのデータセットに少し関連はありますが、一緒には扱えなさそうな別のデータセット (ソースドメイン、こちらはサンプル数がある程度大きいことが前提です) を活用して、回帰モデルやクラス分類モデルの予測精度を向上させる学習方法です。

転移学習にはやり方がいろいろあります。たとえば、ニューラルネットワークを用いるとき、ソースドメインでネットワークを学習させ、出力層に最も近い層のニューロンだけターゲットドメインで学習させる (ファインチューニングする) ような方法があります。もしくは、サンプルを “転移” させるようなイメージで、ゼロ行列を活用してターゲットドメインとソースドメインを組み合わせた新たなデータセットを準備して、一つのモデルを構築する方法もあります。

[解析結果とPythonコードあり] 転移学習 (Transfer Learning) を用いたデータ解析
転移学習 (Transfer Learning) について、パワーポイントの資料とその pdf ファイルを作成しました。どんなシチュエーションで転移学習が使えるのか、そして転移学習により本当にモデルの精度は向上するのか、数値シミュレーション...

 

今回は、ゼロ行列を用いてサンプルを転移させる方の転移学習における特徴量の標準化 (オートスケーリング) について考えます。シンプルに考えると、ゼロ行列を使って新たなデータセットを準備した後に、全体でオートスケーリングすることになるかと思います。ただ、ゼロ行列のある列 (特徴量) においては、(意味のない) 0 を含めて平均値や標準偏差を計算することになり、元のデータセットの値によっては、変な値になる可能性もあります。そのため、ターゲットドメイン、ソースドメインそれぞれのデータセットで、あらかじめオートスケーリングしてから、ゼロ行列を用いて全体のデータセットを準備するとよいです。

また、オートスケーリングから少し話はそれますが、もともとの特徴量に (意味のある) 0 が含まれる場合には注意が必要です。たとえばフィンガープリントを使用するような場合です。フィンガープリントの 「0」 には意味がありますが、転移させるときのゼロ行列における 「0」 には意味がありません。意味のある 0 と意味のない 0 が同じように扱われてしまい問題となります。もちろん、ターゲットドメイン、ソースドメインそれぞれのデータセットで、あらかじめオートスケーリングしておくことで、フィンガープリントのデータセットの値が 0 や 1から変わっていれば、ゼロ行列を用いても問題ありません。しかし、フィンガープリントをそのまま用いるときは、ゼロ行列ではなく別の値の行列を用いたほうがよいでしょう (例えば -1 の行列など)。

なお、目的変数 y においては、特にゼロ行列を使うわけではないため、全体でオートスケーリングしても、ターゲットドメイン、ソースドメインそれぞれのデータセットで、あらかじめオートスケーリングしても、あまり大きな影響はないと思います。ただ、詳細に検討したい方は、それぞれの方法でオートスケーリングして、モデルの推定性能を比較するとよいでしょう。

 

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました