JEPA4Japan · チュートリアル

第26章―自分の動画を凍結評価する

1,673文字 4分で読めます #LeVJEPA#JEPA#自己教師あり動画学習#SIGReg

線形プローブ、注意機構付きプローブ、検索、密な特徴の検査を作り、データ漏洩を防ぐ分割を用います。

コース進捗 コース目次 34レッスン中 34件を公開中

第0部―まず地図を広げる

  1. 01 第0章―始める前に:この講座でできるようになること 公開中
  2. 02 第1章―同じ動画を、二つの窓から見る 公開中
  3. 03 第2章―Yann LeCun の研究路線をたどる 公開中
  4. 04 第3章―名前に迷わないための JEPA 家系図 公開中

第1部―簡単な目的で、なぜ動画が分かるのか

  1. 05 第4章―動画は自分で問題を作れる 公開中
  2. 06 第5章―全ピクセルではなく、意味を残す 公開中
  3. 07 第6章―二枚は同じに。でも全部を白紙にはしない 公開中
  4. 08 第7章―SIGReg:点の雲を影から調べる 公開中
  5. 09 第8章―一行の目的関数で LeVJEPA を読む 公開中

第2部―一本の動画を一台のエンコーダーへ

  1. 10 第9章―大域ビューと局所ビューの作り方 公開中
  2. 11 第10章―動画を時空間の小片に切る 公開中
  3. 12 第11章―一台のエンコーダー、一つの投影ヘッド、一枚の要約札 公開中
  4. 13 第12章―一回の前向き計算を端から端まで 公開中
  5. 14 第13章―95%捨てると、なぜかよく見える 公開中
  6. 15 第14章―ブロック因果注意:同じ時刻は見える、未来は見えない 公開中
  7. 16 第15章―RoPE、1フレーム tubelet、思いがけない密特徴 公開中

第3部―実験を読めてこそ、論文を読んだと言える

  1. 17 第16章―五段のアブレーションが答えること 公開中
  2. 18 第17章―同じ周回数は、同じ費用ではない 公開中
  3. 19 第18章―ImageNet、K400、SSv2 は何を試すか 公開中
  4. 20 第19章―論文の結果を帳簿にする 公開中
  5. 21 第20章―まだ言ってはいけない結論 公開中

第4部―公式リポジトリから自分の実験へ

  1. 22 第21章―公式リポジトリの見取り図 公開中
  2. 23 第22章―Walking Tours:10本の長編を学習データにするまで 公開中
  3. 24 第23章―既定設定を読み、学習を始める 公開中
  4. 25 第24章―うそをつかない小さな動作確認から始める 公開中
  5. 26 第25章―学習なしで公開重みから特徴を出す 公開中
  6. 27 第26章―自分の動画を凍結評価する 現在のレッスン

第5部―表現を世界モデル構想へ戻す

  1. 28 第27章―大事な境界:LeVJEPA は計画器ではない 公開中
  2. 29 第28章―LeVJEPA を次の世界モデルへつなぐ 公開中
  3. 30 第29章―入門から論文まで、10の研究プロジェクト 公開中

付録―必要なときに開く技術リュック

  1. 31 付録A―これだけは要る数学道具箱 公開中
  2. 32 付録B―完全テンソル形状表 公開中
  3. 33 付録C―用語集と論文年表 公開中
  4. 34 付録D―再現とレビューのチェックリスト 公開中

凍らせてから測る

  1. 先に分ける人物や元動画をまたがせない
  2. 目を凍らせるエンコーダーは更新しない
  3. 小さく読むプローブだけを学習
  4. 偽物も試す漏洩と近道を探す
  5. 条件を残す平均・ばらつき・失敗例
凍結評価は、教科書を書き換えずに小さな索引だけ作り、「どんな情報を引けるか」を測る試験です。

隣のページを答えにしない

一本の長い動画を二秒ずつ切り、窓を無作為に訓練用と試験用へ配ると、高得点が出やすくなります。試験片が訓練片の一秒後なら、背景、人物、透かし、撮影癖がほぼ同じだからです。モデルが動作を読んだのか、隣のページを覚えただけなのか分かりません。

そこで、切る順序を逆にします。先に元動画、人物、場所、撮影日などの独立したまとまりで訓練・検証・試験へ分け、その後に各群から短い窓を切ります。

問いごとに物差しを替える

前処理、モデル版、フレーム率を固定し、エンコーダーの全パラメータで requires_grad=False を確認します。その上で、知りたいことに合う読み出し器を選びます。

線形プローブ。 [CLS] の [B,1024] 埋め込みに線形層だけを学習します。もっとも弱い読み出しなので、「情報が素直に並んでいるか」を見やすい方法です。不均衡データなら正解率だけでなく、バランス正解率やマクロF1も示します。

**注意機構付きプローブ。**論文のプローブは、学習可能な問いベクトルで全3,137トークンを交差注意により読みます。得た値を問いへ残差加算し、二層 MLP、GELU、LayerNorm、線形分類器へ通します。線形プローブより表現力が高いので、両者の数値を同じ物差しとして混ぜません。

検索。 [CLS] を L2 正規化して余弦類似度で並べ、Recall@1/5 や mAP を測ります。同じ元動画から来た近接窓を検索候補に残すと、内容ではなく重複を当てる試験になります。

密な課題。 [CLS] を外し、残る特徴を [B,16,14,14,1024] に戻します。軽い分割頭、追跡頭、問いとパッチの類似度を試せます。ただし [CLS] は動画全体を読める一方、各時刻のパッチは未来を読めません。オンライン状態を測るときは該当時刻のパッチを使います。

@torch.inference_mode()
def extract_features(model, raw_bcthw):
    mean = raw_bcthw.new_tensor([.485, .456, .406])[None, :, None, None, None]
    std = raw_bcthw.new_tensor([.229, .224, .225])[None, :, None, None, None]
    out = model(pixel_values=(raw_bcthw - mean) / std)
    summary = torch.nn.functional.normalize(out.pooler_output, dim=-1)
    patches = out.last_hidden_state[:, 1:].reshape(-1, 16, 14, 14, 1024)
    return summary.cpu(), patches.cpu()

ここでは入力がすでに [0,1]、224×224だと仮定しています。標準化量やクラス重みは訓練群だけから計算し、ハイパーパラメータは訓練・検証群で決めます。試験群を見るのは最後の一度だけです。少なくとも三つの乱数種で、平均、標準偏差、クラス別標本数、混同行列を残します。試験群が小さければブートストラップ信頼区間も添えます。

ごまかし発見用の四試験

  1. **ラベルをシャッフルする。**それでも偶然水準を大きく上回るなら、分割や保存済み特徴に漏洩があります。
  2. **一枚を16回繰り返す。**動画結果がほぼ変わらなければ、外観だけで解けているかもしれません。
  3. **同じ16枚を逆順・無作為順にする。**画像集合は同じままなので、時間順序への感度を切り分けられます。
  4. **単純な基準と比べる。**無作為初期化の同型モデル、色ヒストグラム、単純な運動量などを下回るなら、どれほど複雑なプローブを使っても結論は弱いままです。

論文の69.5と55.0は、著者が特定の注意機構付き凍結プローブで報告した値です。自分のデータ、分割、読み出し器が違えば、新しい実験です。「再現した」や「上回った」とは書かず、条件ごとの結果として扱います。

参照した仕様

採点表に残す三行

  1. 元動画や人物を先に分け、その後で短い窓を作ると、近接した重複の漏洩を防げます。
  2. 線形プローブ、注意機構付きプローブ、検索、密な特徴の評価は、それぞれ異なる問いに答えます。
  3. [CLS] は全区間の要約です。各時刻の因果的な状態を見るならパッチ特徴を使います。

試験監督の三問

  1. 同じ長編の隣り合う二秒を、訓練と試験へ無作為に分けてはいけないのはなぜですか。
  2. ラベルを乱しても高得点なら、まず何を疑いますか。
  3. [B,3137,1024] から時空間の小片へ戻す形は何ですか。
採点する
  1. 背景、人物、動きがほぼ重なり、モデルが同じ内容を覚えて答えられるからです。
  2. データ分割、特徴のキャッシュ、評価手順の漏洩です。
  3. [CLS] を除き、[B,16,14,14,1024] へ並べ直します。