メタ学習入門

こんにちは。スキルアップAI編集部です。

視線推定というタスクは視線方向のアノテーションが難しいため、十分なデータを用意することが容易ではありません。
そのため教師ありデータが少なくても上手く学習できるような方法の開発が期待されています。
そこで本ブログでは、少ないデータから学習する方法の1つであるメタ学習について入門的な内容をご紹介します。
「メタ学習とは、学習の仕方を学習する方法である」というようなことを聞いたことがある方も多いかと思いますが、 この記事を通じて「メタ学習とはどういうものか？」について具体的なイメージを持っていただけたら幸いです。

<目次>
1.メタ学習の位置付け
2.メタ学習の具体的な方法
3.おわりに
4.参考文献

# 1. メタ学習の位置付け
メタ学習はfew-shot学習という枠組みの⼀部に属する手法です。
few-shot学習というのは、学習時とテスト時に異なるクラスのデータが与えられるという問題設定で、数枚(a few)のテストデータを使って上手くモデルをテストデータのクラスに適応させて、学習時には無かったクラスに属するテストデータに対して正確に予測を行えるようにすることを目指す手法です。

例えば、テストではライオンとトラの分類を行いたいが、ライオンとトラのラベル付き画像は多く集められず、イヌとネコならラベル付き画像を集めることができたとします。
この場合、イヌとネコの画像で学習を行った後、ライオンとトラの画像を数枚(通常は3~5枚程度)だけ使ってライオンとトラの分類をできるようにモデルを適応させるのがfew-shot学習というものになります。

実際にはfew-shot学習やメタ学習の性能を評価する際のベンチマークとしてOmniglotというデータセットがよく用いられています。
これは平仮名、片仮名、ラテン文字、ギリシャ文字など50種類のアルファベット、1623種類の文字からなるデータセットです。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/d2506017-07b5-23c5-bf2f-700f2859cc31.jpeg">
図1：Omniglotデータセット
（[OmniglotのGitHubリポジトリ](https://github.com/brendenlake/omniglot)より引用）

これを学習用とテスト用のデータに分けて、学習用データで学習した後に、テスト用のデータを数枚だけ使ってモデルを適応させた後、適応に使用しなかった残りのテスト用データに対する精度を測ることで手法の性能を比較します。

この文字認識の例の場合、メタ学習に期待されているのは、全ての文字に共通の特徴を上手く学習し新しい文字にすぐに適応できる能力を獲得する、つまり「学習の仕方を学習する」メタな学習をすることです。

# 2. メタ学習の具体的な方法
どのようにして「学習の仕方を学習」しているのでしょうか。
ここではメタ学習の代表的な手法であるModel-Agnostic Meta-Learning (MAML) [Finn+, ICML’17]をご紹介します。
例として先程のOmniglotデータで5クラス分類をしようとしている状況でMAMLを用いる場合の説明をします。
手順としては次のようになります。

1. データセットをタスクと呼ばれるサブセットに分割する。  
このとき、各タスクに5クラスずつ割り当て、各タスクは割り当てられたクラスの全てのデータを含むようにする。
2. ミニバッチ学習の要領でタスクの集合をサンプリングする。
3. サンプリングした各タスクTiに対して手順4～手順6を行う。
4. タスクTiから適応用のデータD(各クラス5枚ずつなど)をサンプリングする。
5. サンプリングしたデータDを使って、通常の教師あり学習と同じように交差エントロピー誤差を逆伝播させてパラメータΘを更新する。  
ただし、ここでのパラメータ更新はタスク毎に適応させるためのものでありタスクTiに適応したパラメータΘのパラメータはΘ’iと表し、更新前のパラメータΘは更新しない。
6. タスクへの適応が上手くできているかを評価するためにタスクTiから先程のDとは別のデータD’i(各クラス15枚ずつなど)をサンプリングする。
7. ミニバッチに含まれる全てのタスクについて、パラメータΘ’iのネットワークにデータD’iを入力し交差エントロピー誤差を計算し、全てのタスクの誤差の総和を逆伝播させて元のパラメータΘを更新する。

手順2~7が1エポックにおける処理であり、これを収束するまで何度も繰り返します。
手順7は、「各タスクに対する適応が上手くできているか」を評価していると解釈することができます。
従って、上記の操作を繰り返すことにより、各クラス5枚ずつの小さいデータセットからそのタスクに上手く適応できるようなネットワークになっていくことが理解できるのではないかと思います。

MAMLで行っていることのイメージを下図に示します。
MAMLでいくつかのタスクに対する勾配(∇L1、 ∇L2、∇L3)でネットワークを更新することで、他のどんなタスクにも適応しやすいネットワークのパラメータを見つけ(Θ1、Θ2、Θ3はそれぞれ異なるタスクに適応させたパラメータ)ます。
<img width="600" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/364b8b82-004a-c0b0-cfdb-264f202bdcc7.jpeg">
図2：MAMLの学習アルゴリズムのイメージ
（参考文献[2]より引用）

MAMLは学習の方法に関しての提案であり、どんな構造のネットワークにも用いることができます。
このことから、名前にmodel-agnostic(モデルに依らない)という言葉が入っています。

# 3. おわりに
スキルアップAIでは、関連講座として「[現場で使える機械学習・データ分析基礎講座](https://www.skillupai.com/machine-learning/)」を開講中です。
本講座では、機械学習プロジェクトの一連の流れと様々なアルゴリズムの詳細を、ハンズオンを通じて学ぶことができます。

# 4. 参考文献
[1] [Lake, B.M., Salakhutdinov, R., and Tenenbaum, J.B.: Human-level concept learning through probabilistic program induction. Science, 350(6266), pp. 1332-1338, 2015.](https://science.sciencemag.org/content/350/6266/1332)
[2] [Finn, C., Abbeel, P., Levine, S.: Model-Agnostic Meta-Learning for Fast Adaptation of Deep Networks. In Proc. ICML, 2017.](http://proceedings.mlr.press/v70/finn17a.html)
# 25卒向け！AIエンジニアになるための長期インターンプログラム参加者募集中！
25卒学生向けに、AIの基礎を学びながら就活も一括サポートする無料カリキュラムを提供しています。
修了するとE資格の受験資格も獲得できるプログラムとなっています！

<img width="700" alt="長期インターン" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/889700/bfce4c26-1ebe-c54d-bacb-e804048a7a08.png">

**特長①AIエンジニアやデータサイエンティストの基礎が身に付く**
AIジェネラリスト基礎講座や機械学習のためのPython入門講座など、市場価値向上のための基礎を習得。

**特長②AI・データ分析領域の優良求人を紹介**
非公開求人や選考直結型インターンをご紹介し、早期内定の獲得をサポート。

**特長③長期インターンプログラム専用の学生コミュニティ参加可**
学生同士で就活情報をシェアしたり、学習を進めるうえでアドバイスをしあったりできるコミュニティに参加可能。

＞＞[長期インターン詳細](https://bit.ly/3pXW5JM)

☆☆☆
スキルアップAIのメールマガジンでは会社のお知らせや講座に関するお得な情報を配信しています。
配信を希望される方は[こちら](https://share.hsforms.com/1_XlReV-4Te-zcxCl9lhffA2mtef)

また、SNSでも様々なコンテンツをお届けしています。興味を持った方は是非チェックしてください♪
Twitterは[こちら](https://twitter.com/SkillupAi)
Facebookは[こちら](https://www.facebook.com/skillupai)
LinkedInは[こちら](https://www.linkedin.com/company/skillup-ai)