JEPA4Japan · チュートリアル

付録B―完全テンソル形状表

2,135文字 6分で読めます #LeVJEPA#JEPA#自己教師あり動画学習#SIGReg

[B,T,C,H,W] から多視点、疎トークン、[CLS]、投影器、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. 動画箱B,T,C,H,W
  2. 大小の窓大域1、局所 V
  3. 小片へ切る一辺16画素
  4. 5%だけ残す学習時の疎な列
  5. 要約を並べるV+1,B,K
テンソル形状表は貨物の送り状です。入口と出口だけでなく、門を通るたびに軸の名前を照合します。

走るのに間違っている計算

空港で「旅客・時刻・色・高さ・幅」の順に積んだ荷物を、検査機の前で「旅客・色・時刻・高さ・幅」へ並べ替えます。札だけを書き換え、箱を動かさなければ、機械は色を時間として読みます。寸法がたまたま合えば、例外すら出ません。

だから 5次元テンソル とだけ覚えず、各軸の名前、値域、型を最初の標本で断言します。

記号の旅券

記号意味論文・公開設定でよく使う値
B各装置のバッチサイズリポジトリ既定 96。全体の実効バッチサイズは別計算
V一動画あたりの局所視点数統制比較は主に 4、リポジトリ既定は 10
T入力フレーム数16
C色チャンネル数3
Hg,Wg大域視点の高さ・幅224,224
Hl,Wl局所視点の高さ・幅96,96
P空間パッチの一辺16
τチューブレットの時間幅1。一トークンは一時刻
DViT の隠れ幅ViT-B は 768、公開 ViT-L は 1024
K投影器の出力幅256
ρトークン削減率0.95
MSIGReg の無作為方向数1024
QSIGReg の積分点数17

論文のある比較条件と、公開リポジトリの既定値は同じ実験設定ではありません。特に V=4 と V=10 は、条件を添えればどちらも正しい値です。

読み込みから多視点まで

一つのエピソードから抜いた元の動画窓は、通常次の順です。

[T,C,H_raw,W_raw]

同じ T フレームへ空間変換を施し、標本をまとめると、公開ローダーは次の二箱を返します。

名前形中身
global_frame[B,T,C,224,224]近い全景一つ。局所用の強い光度変換はしない
local_frames[B,V,T,C,96,96]独立した空間切り抜き V 個と光度変換

エンコーダー直前で軸を並べ替えます。

global_video = rearrange(global_frame, "b t c h w -> b c t h w")
local_video = rearrange(local_frames, "b v t c h w -> (b v) c t h w")

大域入力は [B,C,T,224,224]、局所入力は [B·V,C,T,96,96] です。視点軸を一時的にバッチ軸へ畳むことで、全局所窓を同じエンコーダーへまとめて通し、出力後に B,V,D へ戻せます。

パッチ数の算数

τ=1 なので時間は16区画のままです。空間パッチは16×16画素。

大域パッチ数 = 16 × (224/16) × (224/16) = 16 × 14 × 14 = 3136
局所パッチ数 = 16 × ( 96/16) × ( 96/16) = 16 ×  6 ×  6 =  576

パッチ埋め込み後、[CLS] を加える前は次の形です。

枝全パッチ数形
大域3136[B,3136,D]
局所576[B·V,576,D]

τ=2 にすれば時間区画は8となり、数も一トークンが覆う時間も変わります。LeVJEPA の既定は τ=1。V-JEPA や VideoMAE の設定を無断で混ぜません。

95%落とした学習時

公式実装の保持数は次です。

keep_len = round(N_patches × (1 - ρ))

各標本で独立に無作為な保持集合を作ります。

枝元のパッチ残るパッチ[CLS] 込みの列長
大域3136round(156.8)=157158
局所576round(28.8)=2930

これは学習時だけの形です。評価・推論ではトークンを落とさないので、16×224×224を入れた公開 ViT-L は3137トークンを返します。学習時の158を配布重みの出力長と書けば、密特徴の並べ直しが壊れます。

[CLS] から損失まで

既定削減率での学習時の流れです。

global_tokens : [B,      158,D]
local_tokens  : [B·V,     30,D]
global_cls    : [B,        1,D]
local_cls     : [B,        V,D]
all_cls       : [B,      V+1,D]
projected_z   : [B,      V+1,K]

実装は embeddings[:, :1] で大域埋め込み [B,1,K] を取り、全部の [B,V+1,K] と比べます。大域と自分自身の差は常に0ですが、公式式・実装では平均に含まれます。

SIGReg の前に軸を替えます。

[B,V+1,K] -> [V+1,B,K]

同じ動画の似た視点を独立標本として数えず、各視点位置について異なる B 本の動画から分布を作るためです。

SIGReg の内側

入力を [S,B,K]、S=V+1 とします。

段階形意味
無作為な単位方向 A[K,M]M=1024 本の懐中電灯
射影 z @ A[S,B,M]各標本が各方向へ落とす影
積分点を掛ける[S,B,M,Q]Q=17 個の周波数
cos/sin の標本平均[2,S,M,Q]経験特性関数の実部と虚部
正規分布の指紋との差[S,M,Q]視点・方向・積分点ごとの差
最終損失[]重み付き平均のスカラー

分散処理で all-reduce するのは [2,S,M,Q] の経験特性関数です。全 [B,K] 埋め込みを交換しないので、通信量がおおむね標本数と埋め込み幅に依存しない、という論文の説明につながります。

公開モデルを読む形

Hugging Face 版の入力は [B,C,T,H,W]。[1,3,16,224,224] を公開 ViT-L/16 に入れると、次の形です。

last_hidden_state: [1,3137,1024]
pooler_output:     [1,1024]

静止画を16回複製しても、出力形式は動画トークン列です。形式が動画になっただけで、実際の運動を観測したことにはなりません。

最低限の五つの断言

assert global_frame.ndim == 5 and global_frame.shape[1:3] == (16, 3)
assert local_frames.ndim == 6 and local_frames.shape[2:4] == (16, 3)
assert global_frame.shape[-2:] == (224, 224)
assert local_frames.shape[-2:] == (96, 96)
assert torch.isfinite(loss).all()

正規化前後の dtype/min/max/mean/std も出します。uint8 の0〜255を、そのまま正規化済み浮動小数点だと思って入れる失敗も「動いてしまう」からです。

形の根拠

送り状の三行

  1. ローダーは [B,T,C,H,W]、エンコーダーは [B,C,T,H,W] です。
  2. 95%削減は学習時だけで、公開重みの推論は3137個すべてを返します。
  3. SIGReg の標本軸は異なる動画であり、一動画の視点数ではありません。

荷ほどき問題

  1. 局所視点がエンコーダー入口で [B·V,C,T,96,96] になるのはなぜですか。
  2. 大域学習列が158、公開重みの出力が3137になる違いは何ですか。
  3. [B,V+1,K] を [B(V+1),K] とみなして SIGReg へ入れると、何を取り違えますか。
送り状と照合する
  1. 視点をバッチ軸へ一時的に畳み、共有エンコーダーでまとめて処理するからです。
  2. 学習は157パッチだけ残して [CLS] を足し、評価は3136パッチをすべて残して [CLS] を足します。
  3. 同じ動画の強く相関した視点を別標本として数え、分布と見かけの標本数を変えてしまいます。