【ワンショットラーニング】
One-Shotラーニング とは?
最終更新:
💡 新しいクラスを、各1件の見本で見分ける
新しい分類対象について、各クラス1件の例から未判定のデータを分類する学習の設定。事前学習との違いと、Siamese・Prototypical Networksの考え方を解説します。
📌 このページのポイント
- 画像分類では、新しい各クラスに1件の見本を使う設定
- モデル全体の学習データが1件という意味ではない
- 見本と未判定のデータを、学習した特徴で比べる方法がある
- 1件で必ず正しく認識できる保証ではない
One-Shotは、1枚だけでAIを全部作るの?
それとは違うよ。画像分類なら、新しい各クラスについて見本を1枚ずつ与え、別の画像がどのクラスかを判定する設定だ。事前に別のデータで学んだモデルを使う方法もある。
クラスごとに1枚、というのは?
例えば架空の3種類の記号を見分けるなら、A・B・Cそれぞれ1枚ずつの見本を置く。見本は合計3枚だ。次に来た未判定の記号が、どの種類に当たるかを考える。
少ない見本でも、どう比べる?
別のデータで学んだ特徴を使う方法がある。Siamese Networksの研究では、二つの画像が同じクラスかを学び、新しい見本との比較に利用する。新しいクラスの見本だけが1件でも、その前の学習にはほかのデータを使っているんだ。
Prototypical Networksも同じ仕組み?
特徴を比較する考え方は近いけれど、同じ構造ではないよ。見本を特徴の空間へ写し、クラスごとに平均を代表として使う方法だ。各クラス1件なら、その見本の特徴が代表になる。未判定のデータと代表の距離から分類する。
1枚あれば、必ず分かる?
保証はない。見本が偏っていたり、新しい対象が事前学習の対象と大きく違ったりすると、判断を誤ることがある。見本とは別の評価用データで、条件ごとの性能を確認する必要がある。
Few-ShotやZero-Shotとの違いは?
この画像分類の文脈では、Few-Shotは各クラス少数の見本、One-Shotは特に1件、Zero-Shotは対象クラスの見本なしで扱う設定だ。ただし、見本なしでも属性の説明などを使う場合がある。何を例として数えているかを確認しよう。
もっと詳しく知りたい人へ
One-Shotは、重みを1回だけ更新すること?
その意味ではありません。KochらのSiamese Networksの研究では、別のデータで学んだ特徴を、新しい各クラス1件の見本の分類へ再学習なしで使います。見本の数と、学習中の更新回数を分けます。
論文でよい成績なら、どんな用途でも使える?
そうとは限りません。文字などの研究用データでの評価と、実際の利用条件は区別します。クラスの種類、見本の品質、未知の入力をどう扱うかを含め、用途に合う評価が必要です。
まとめ:ざっくりこれだけ覚えればOK!
「One-Shotラーニング」って出てきたら「新しい分類対象について、各クラス1件の見本を使う学習の設定」と思えばだいたいOK!学習全体が1件のデータで済むという意味ではないよ。
📖 おまけ:英語の意味
「One-Shot Learning」 = 新しい対象の各クラス1件の例を使う学習の設定
💬 ここでは画像の分類を中心に説明します。one-shotは新しい各クラスに与える例が1件という設定を表し、学習全体のデータ数や更新回数とは分けて考えます。