表現学習とは何か

この記事は、[Supershipグループ Advent Calendar 2020](https://qiita.com/advent-calendar/2020/supership)の15日目の記事になります。
Supership プロダクト開発本部の @ps010 です。普段は広告・マーケティング領域で、分析業務や広告セグメントの作成を担当しています。

## はじめに
ユーザー属性や広告のクリックユーザーの推定に機械学習を用いる際、精度への影響が大きいのは特徴抽出の工夫です。
従来の機械学習では、特徴量エンジニアリングは人による試行錯誤が必要でしたが、深層学習における表現学習では、生データから自動的に特徴を検出・学習します。この表現学習の工夫により、近年、深層学習は目覚ましい発展を遂げています。
今回は表現学習とは何か、わかりやすくまとめてみたいと思います。


## 記事で書くこと
* 表現学習とは何か
* どのような手法や活用法があるのか


## 表現学習とは
表現学習とは、機械学習のタスクの実行に有用な特徴表現を学ぶ手法のことです。画像、音、自然言語、時系列データなどの高次元なデータを、予測タスクを解くことで低次元な特徴表現に変換します。
機械学習の性能はデータの表現に依存するため、従来は人間が試行錯誤して特徴量を設計していましたが、表現学習ではコンピュータが自動で特徴を学習し、獲得した特徴表現を使って目的のタスクを実行できるようにします。


表現学習で得られる特徴表現は低次元なベクトルである為、演算により分類や推定などのタスクを容易に行えます。また、データと特徴表現の相互変換が可能で、この性質を生かして画像生成や自動翻訳などの手法が開発されています。
<img width="400" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290054/ac28b8c9-fd3a-1f7f-3067-cccf5592e68e.png">


## よい表現学習とは
では、機械学習のタスクを精度良く行う上で、どのような表現学習がよいのでしょうか。
深層学習の第一人者ヨシュア・ベンジオ氏のよい表現学習の重要性を説いた論文[^1]を参考にすると、説明要因が構造化され、幅広いタスクをシンプルな関数で解くことができるのが、よい表現学習の条件になると思います。

表現学習は、教師あり学習で獲得される場合、タスクに関する表現しか獲得されません。例えば画像分類タスクで学習した場合、分類に不要な色情報などは特徴表現に含まれない可能性が高く、画像生成のタスクで使うことが難しくなります。
近年では多くのタスクで使える汎用性の高い表現を獲得する方法として、教師なし学習による表現学習が着目され、研究が進んでいます。

個別タスクにとって、どのような表現学習がよいのかは、データやタスクの特殊性も影響します。
例えば、教師データが少なく画像分類に特化したタスクの場合、後述の転移学習の手法で、学習済みモデルの表現学習を利用する戦略が効果的でしょう。
どのような戦略を取るかは、個別タスクに合わせて考える必要があると思います。

## 応用例： 画像の場合
画像認識では、一般にCNNで表現を獲得し、様々なタスクに使います。
表現学習の応用例として有名なのは、教師あり学習の画像分類タスクで得られたモデルを画像認識の学習済みモデルとして使う、転移学習（fine tune）の手法です。
教師データが少量しかない場合、転移学習を利用することでタスクの精度を高めることができます。

転移学習に使うモデルとしては、ImageNetの120万枚の画像を1000カテゴリに分類した複数のモデルが有名で、VGG16などがよく用いられます。転移学習はこのモデルの上層部の重みをそのまま転用し、下層部分のみ目的の教師データを用いて学習します。
転移学習を行う上での注意ポイントは、タスクの精度がベースモデルと目的の教師データのドメインの近しさに影響を受けることです。ベースモデルを選ぶ際は、教師データが似ているかどうかも考慮に入れると効果的でしょう。


## その他の応用例
自然言語処理の表現学習は、Word2Vecによる分散表現に始まり、RNN/LSTMやAttention機構などを経て、BERTがデファクトスタンダードになりつつあるようです。BERTは教師なし事前学習の転移学習（fine tuning）で、センチメント分析や質疑応答、文の類似性など、多様なタスクで高い精度を出せる汎用性の高さが人気のようです。

また最近では、画像と言語の自動変換（画像のキャプション生成）や、英語と日本語の自動翻訳など、種類が異なるデータを特徴表現を介して結びつけることに多くの関心が寄せられています。


## おわりに
今回は、表現学習について、まとめてみました。
表現学習は、人間の知能でいえば認知にあたる機能で、事象の特徴や意味を符号化してコンピューターに伝えています。
符号化された意味は交換可能ですが、用途が遠いと交換可能性は低まります。事象を構造的に見る力が高まると多様な局面に対応しやすくなるのも、人間の知能に近く、とても興味深いです。

今回は触れることができませんでしたが、Webやアプリの閲覧履歴の表現学習では、ドコモさんの[【KDD2020 Workshop採択論文紹介】GCNで時系列予測！？](https://qiita.com/dcm_kkubota/items/ea0bdc12446e8aabc200)などという記事もあり、日々、進化を遂げているようです。
深層学習の実用化も進んでおり、大変、面白い時代になってきているなぁとワクワクしています。

***
Supershipではプロダクト開発やサービス開発に関わる人を絶賛募集しています。
データサイエンスに興味がある方、ぜひ一緒に働きましょう！
[Supership株式会社 採用サイト](https://supership.jp/recruit/)
よろしくお願いします。

## 参照
[^1]: [Representation Learning: A Review and New Perspectives/Yoshua Bengio, Aaron Courville, and Pascal Vincent](https://arxiv.org/pdf/1206.5538.pdf)
[AI白書](https://www.ipa.go.jp/files/000082705.pdf)
[Vol.31.No.4(2016/7)ネットワークの表現学習](https://www.ai-gakkai.or.jp/my-bookmark_vol31-no4/)
[教師なし表現学習の進化、異なるビュー間の相互情報量最大化](https://xtech.nikkei.com/atcl/nxt/mag/rob/18/00007/00021/)
[髪の色も顔の向きも自在に変化　AIに表現を学ばせる](https://xtrend.nikkei.com/atcl/contents/technology/00007/00016/)
[転移学習：機械学習の次のフロンティアへの招待](https://qiita.com/icoxfog417/items/48cbf087dd22f1f8c6f4)
[少ない画像から画像分類を学習させる方法（kerasで転移学習：fine tuning）](https://spjai.com/keras-fine-tuning/)
[自然言語処理でBERTまでの流れを簡単に紹介](https://nmoriyama.hatenablog.com/entry/2020/01/24/160351)
[自然言語処理の王様「BERT」の論文を徹底解説](https://qiita.com/omiita/items/72998858efc19a368e50)