画像分類と転移学習 — 少ないデータで賢く学ぶ

画像に「これは何か」のラベルを付ける画像分類は、コンピュータビジョンの最も基本のタスクです。特徴を取り出して分類するパイプラインを動かし、実務の二大テクニック — 学習済み特徴を使い回す転移学習と、1枚を何枚にも増やすデータ拡張 — の効果を目で確かめます。

1. 画素からラベルへ — 分類パイプライン

生の画素をそのまま比較する分類は、照明や位置が少しずれるだけで破綻します(画像から特徴へで見た通りです)。そこで分類は必ず2段構えになります。

CNN ではこの特徴抽出そのものをデータから学習しますが(畳み込みニューラルネットで既習)、ここでは中身が見える古典的な特徴でパイプライン全体を体感しましょう。下のデモは、ノイズと変形の入った図形(○/△/□)を生成し、3つの特徴(塗りつぶし率・円形度・輪郭方向の均一さ)を測って、学習済みのクラス見本に最も近いクラスを選びます。

分類パイプライン・ライブ — 図形が特徴になり、確率になる
左=生成された入力画像、中央=抽出された3つの特徴量、右=クラス確率(緑=正解、赤=間違い)。自動で次々に分類され、下に蓄積精度が出ます。ノイズを強くすると特徴が乱れ、精度が落ちていく様子を観察してください。

分類器の出力はスコアの列(ロジット)を softmax で確率に変換したものです。

pk = ezk / Σj ezj zk はクラス k のスコア。softmax は全クラス合計が1になる「確率」に変換する
POINT — 勝負は特徴で決まる 特徴が良ければ分類器は単純でよく、特徴が悪ければどんな分類器でも救えない。深層学習の本質的な貢献は「良い特徴をデータから自動で獲得できるようにした」ことにある。

2. 特徴は使い回せる — 転移学習

CNNの章で見たように、学習された特徴には階層があります。前半の層はエッジ・色・テクスチャといったどんな画像タスクにも共通する汎用部品で、後半の層ほどタスク固有になります。ここから自然なアイデアが生まれます。

ImageNet(100万枚規模)で事前学習したモデルの前半を「出来上がった特徴抽出器」としてそのまま借り、自分のタスク(数百枚しかない)では最後の分類層だけを学習すればいいのでは? — これが転移学習です。

戦略更新する層データ量の目安向いている場面
特徴抽出(凍結)最後の分類層のみ数十〜数百枚/クラスデータが少ない・元タスクと似た画像
部分ファインチューニング後半の層+分類層数百〜数千枚画像の見た目がやや違う(医用画像など)
全層ファインチューニング全層(小さな学習率で)数千枚〜データ十分・タスクが大きく異なる

効果はデータが少ないほど劇的です。下のレースで、訓練データ数を変えながら「ゼロから学習」と「転移学習」の学習曲線を競走させてみてください。

学習曲線レース — ゼロから学習 vs 転移学習
緑=転移学習(学習済み特徴+最後の層だけ)、オレンジ=ゼロから学習。データ5枚では転移学習の圧勝。スライダーを500枚まで上げると、差がじわじわ縮むのが分かります。点線はあてずっぽう(3クラスで33%)。
POINT — 実務のレシピ まず全層凍結+最終層だけ学習で試す。足りなければ後半の層から順に解凍してファインチューニング。このとき学習率は事前学習時の1/10以下に下げるのが定石 — 大きな学習率はせっかくの学習済み特徴を壊してしまう。

3. 1枚を何枚にも — データ拡張

もう1つの「少データ対策」がデータ拡張(data augmentation)です。ラベルが変わらない変換 — 回転・反転・切り抜き・明るさ変化など — を訓練時にランダムに適用し、1枚の画像から実質的に何十通りもの訓練サンプルを作ります。モデルに「向きや明るさが変わっても同じものは同じ」という不変性をデータで教えているとも言えます。

データ拡張ギャラリー — 1枚が増殖し、過学習カーブが変わる
左=訓練データ(拡張ONだと元画像1枚から変換版が増えていく)、右=学習曲線(緑=訓練精度、オレンジ=検証精度)。拡張OFFにすると、訓練精度は100%なのに検証精度が途中から下がる典型的な過学習(過学習と正則化)が現れます。

ただし変換の選び方はタスク次第です。手書き数字の「6」を180°回転すると「9」になりラベルが壊れます。文字認識で左右反転も同罪。「この変換をしてもラベルは本当に不変か?」を必ず自問してください。

4. 現実のデータの落とし穴 — クラス不均衡

実務のデータはきれいに1/3ずつではありません。不良品検査なら99%が「正常」、医療画像なら陽性はごく一部。ここで「精度」だけを見ていると重大な事故が起きます。

注意 — 精度99%のダメなモデル 99%が正常クラスのデータでは、何でも「正常」と答えるだけのモデルが精度99%を達成してしまう。肝心の不良品は1つも見つけられないのに、である。対策は ①少数クラスのオーバーサンプリングや損失の重み付け、②少数クラス向けのデータ拡張、③そもそも精度ではなく適合率・再現率で評価する(モデル評価)。

5. まとめ

一歩先へ — ゼロショット分類の時代 CLIP のような画像とテキストを同じ埋め込み空間に押し込む基盤モデルは、クラス名を文章で与えるだけで学習なしに分類できる(ゼロショット分類)。「大規模に事前学習した表現を使い回す」という転移学習の思想を極限まで進めた形であり、次章以降の検出・セグメンテーションでも事前学習済みバックボーンは常に主役である。