ajaudio / studyAUDIO-JEPA · RESEARCH NOTES
23 phút đọc · Toàn văn
Mục lục bài · 8 mục

Nguồn toán và deep learning cho lớp 1#

Cập nhật: 11/10/2026. Ghi chú này đối chiếu nguồn gốc cho ba cụm kiến thức còn mỏng trong 01 — Nền tảng và 08 — Lộ trình và tự kiểm tra: bài 6 về xác suất và loss; bài 7 về hình học biểu diễn; bài 8 về gradient, kiến trúc và adaptation. 06 — Giải phẫu paper được dùng để giữ mọi ví dụ sát cấu hình đã nộp.

Phạm vi phải giữ đúng khi dạy#

Paper dùng encoder ViT-Base từ checkpoint Audio-JEPA đã tiền huấn luyện trên AudioSet. Ở downstream, nhãn là bona fide/spoof, loss là weighted cross-entropy, không có predictor hay target encoder của JEPA trong detector. Quy ước nhãn là (y=1) bona fide; điểm báo cáo là (s=z_B-z_S). Đây là encoder đã học bằng JEPA được dùng cho detector supervised; kết quả detector không đo predictor error và không phải một thí nghiệm mới về objective JEPA. Các số cấu hình trong ví dụ phía dưới lấy từ mục 2–3 của 06 — Giải phẫu paper.

Lỗ hổng trong học liệu hiện tại#

Nơi đang cóĐã đúngCần thêm để người học tự suy ra
01 §6, posterior odds và weighted CEPhân biệt posterior với LLR; nhắc class weighting làm đổi mục tiêuDẫn xuất nghiệm population của weighted CE; chỉ ra logit difference cộng prior huấn luyện và weight ratio; điều kiện để hiệu chỉnh prior; ví dụ số có đủ xác suất
01 §6 và 08 bài DConditional mean là nghiệm squared loss; không kết luận encoder quên chi tiếtChứng minh bằng khai triển bình phương; phân biệt target prediction với toàn bộ thông tin của hidden state; ví dụ mà prediction trung bình nhưng representation vẫn giữ một biến phụ
01 §7, effective rankĐã nêu hai cách chuẩn hóa spectrum và caveat hằng-zeroGắn SVD của ma trận mẫu với eigenvalues covariance; nêu rank sau centering bị chặn bởi (n-1); tính PCA đầy đủ; chỉ ra effective rank cao không hàm ý có label information
01 §7, CKA và linear probeĐã nêu rằng tương đồng/probe không chứng minh usefulnessViết công thức linear CKA, một ví dụ tính được bằng tay, và định nghĩa linear probe chính xác; đối chiếu với frozen nonlinear head của paper
01 §8Có tên CNN, Transformer, CE, AdamWChain rule/backprop bằng một forward pass và gradient số; convolution chia sẻ gradient qua vị trí; tính một attention output; so Adam+L2 với AdamW bằng một bước
06 §3, adaptation trong paperGhi frozen và fine-tuned; ghi số tham số head và encoderNói rõ frozen không đồng nghĩa linear probe, số trainable params không phải inference params, và LoRA là một họ adaptation khác chứ không phải recipe đã chạy
08 bài kiểm traRecall câu hỏi bao quát tốtThêm bài yêu cầu tự tính posterior sau weighting, covariance/effective rank, CKA, backprop và update AdamW; yêu cầu nêu giả định cùng phản ví dụ

Nguồn gốc và mức đã đọc#

NguồnVị trí đã đọcClaim mà nguồn hỗ trợGiới hạn cần dạy cùng
Goodfellow, Bengio & Courville, Deep LearningChương 2, trọng tâm §§2.7–2.8 và 2.12: eigen-decomposition, SVD, PCASVD áp dụng cho ma trận chữ nhật; singular values là căn eigenvalues của (X^\top X); PCA có thể nhìn như nén có mất mátPCA tối ưu reconstruction/variance dưới giả định tuyến tính; không tối ưu label usefulness
Deep Learning, chương 3§§3.3, 3.5–3.8, 3.11, 3.13: phân phối, conditional probability, expectation/covariance, Bayes, entropy/CENối prior, likelihood và posterior; nền tảng entropy và log-scoreBayes không tự nói mô hình học đã đúng phân phối; phải tách population identity với estimator hữu hạn
Deep Learning, chương 6Đọc chọn lọc §§6.2.1–6.2.2 về cost/output units và §§6.5.1–6.5.7 về computational graph, chain rule, backprop, ví dụ MLPCross-entropy xuất phát từ likelihood; gradient của mạng tính hiệu quả bằng reverse-mode chain rule trên graphBackprop chỉ tính gradient; AdamW/SGD mới dùng gradient để đổi tham số. Trang chương rất lớn, nên theo section thay vì coi việc mở trang là đã đọc hết chương
Deep Learning, chương 8§§8.1, 8.3, 8.5, 8.7.1 về empirical risk, minibatch SGD, adaptive rates/Adam, BatchNormTraining tối ưu empirical surrogate; Adam dùng moments thích nghi; BatchNorm dùng batch statistics lúc train và running statistics lúc eval theo recipe chuẩnĐây là sách 2016; AdamW được đối chiếu với paper gốc và docs PyTorch hiện hành, không suy từ “weight decay” chung
Deep Learning, chương 9§§9.1–9.3 và 9.5 về convolution, locality, sharing, pooling và biến thểCNN đưa prior locality, shared weights và equivariance lên dữ liệu có lướiTính chất equivariance phụ thuộc stride, padding, sampling và boundary; audio spectrogram có trục thời gian/tần số không đồng nghĩa ảnh tự nhiên
Deep Learning, chương 10§§10.1–10.3, 10.7–10.11 về computational graph tuần tự, RNN/BiRNN, phụ thuộc dài và tối ưuNền tảng chuỗi, unfolding và gradient qua thời gianChương 10 chủ yếu là recurrent/recursive nets; dùng Vaswani et al. cho self-attention/Transformer, không gán Transformer cho Ch.10
Mahajan, McGill, MMSE estimationĐọc toàn §6.1 và ví dụ BPSK/Poisson ở §§6.2–6.3Chứng minh conditional expectation tối ưu squared error bằng phân rã loss; có ví dụ non-Gaussian cụ thểTối ưu là trên hàm dự đoán có thể dùng thông tin điều kiện; không phải định lý về mọi thông tin trong encoder
Roy & Vetterli, The Effective RankĐọc toàn bài 5 trang, §§1–4; trọng tâm định nghĩa/tính chất §2, diễn giải vận hành §3Bản gốc định nghĩa entropy của singular-value distribution (p_i=\sigma_i/\sum_j\sigma_j); chứng minh (1\le erank(A)\le rank(A)); bất biến với nhân (A) bởi scalar khác 0Định nghĩa gốc không phải mặc định của mọi thư viện. Bài không tuyên bố rank biểu diễn đo usefulness cho detector
Kornblith et al., Similarity of Neural Network Representations Revisited, PMLRĐọc phần chính toàn văn 11 trang, §§1–7 và kết luận; không dùng abstract thay cho cơ chếĐịnh nghĩa CKA từ HSIC/Gram matrices; phân tích invariance; thực nghiệm độ chính xác của CKA trong tìm layer correspondence“Layer correspondence” không đồng nghĩa phân loại tốt, causal use hay không collapse; paper tự gọi bài toán similarity là ill-defined và để mở lựa chọn kernel/weighting
Vaswani et al., Attention Is All You NeedĐọc chọn lọc §§3.2.1–3.2.3, 3.5, §4 và bảng complexityScaled dot-product, multi-head, positional encoding; dense self-attention có chi phí pairwise (O(N^2d))Bài gốc đánh giá sequence transduction/dịch máy; cung cấp cơ chế, không bằng chứng cho speech deepfake detection
Loshchilov & Hutter, Decoupled Weight Decay RegularizationĐọc phần chính §§2–4.3 và kết luận; trọng tâm thuật toán, mệnh đề phân biệt adaptive L2/decayAdamW tách shrinkage tham số khỏi gradient đưa vào first/second moments; adaptive preconditioning làm nó khác L2Kết quả benchmark paper gốc là các recipe/dataset của chính bài; không chứng minh AdamW tốt nhất cho mọi downstream
Hu et al., LoRAĐọc cơ chế §§1, 3–4.1, phân tích rank ở §7.2 và kết luận; kiểm công thức factorization và cách merge(W=W_0+BA); freeze (W_0), học hai ma trận hạng thấp; có thể gộp update vào (W_0) khi triển khaiKết quả là chủ yếu trên language models; ví dụ speech bên dưới chỉ tính số tham số, không dự báo chất lượng LoRA cho Audio-JEPA
PyTorch CrossEntropyLoss 2.14Đọc công thức logits, class weight và reductionAPI nhận raw logits; class-index target có loss nhân (w_y); default mean chia tổng loss cho tổng weight target hợp lệCách mean này khác mean đơn giản trên batch; phải kiểm đúng label order và reduction của code
PyTorch LayerNorm 2.14 và BatchNorm1d 2.14Đọc chiều tính statistic, train/eval behaviorLayerNorm dùng các chiều cuối do normalized_shape chỉ định, thống kê từ từng input ở cả train/eval; BatchNorm1d lấy thống kê minibatch theo channel và mặc định dùng running stats lúc evalTên normalization không đủ; shape, padding, chế độ eval và biến thể ảnh hưởng phép tính thực
PyTorch Conv1d 2.14Đọc công thức forward và stride/paddingAPI neural “convolution” thực hiện cross-correlation hợp lệKernel không bị lật; cần nói rõ phép toán khi tính ví dụ
PyTorch AdamW 2.14Đọc update equation và weight_decay behaviorDecay không đi vào momentum/variance; thứ tự update được ghi trong pseudocodeCần đọc implementation/version nếu so khớp chính xác một implementation khác

Bài 6 — Từ Bayes tới weighted CE và squared loss#

1. Tách bốn đại lượng#

Giữ (y=1) là bona fide và (y=0) là spoof.

  • Prior huấn luyện: (\pi_y=P_{\mathrm{train}}(y)).
  • Class-conditional: (p(x\mid y)), đặc trưng của audio khi biết lớp.
  • Posterior: (P_{\mathrm{train}}(y\mid x)), phụ thuộc cả prior lẫn class-conditional.
  • Logit (z_y): số thực chưa chuẩn hóa của mô hình. Với softmax hai lớp, xác suất mô hình gán là (q_y=\exp(z_y)/\sum_j\exp(z_j)).

Bayes cho:

Ptrain(y=1∣x)Ptrain(y=0∣x)=p(x∣1)p(x∣0)π1π0. \frac{P_{\mathrm{train}}(y=1\mid x)}{P_{\mathrm{train}}(y=0\mid x)} =\frac{p(x\mid 1)}{p(x\mid 0)}\frac{\pi_1}{\pi_0}.

Lấy log:

logit⁡Ptrain(1∣x)=log⁡p(x∣1)p(x∣0)⏟LLR+log⁡π1π0. \operatorname{logit}P_{\mathrm{train}}(1\mid x) =\underbrace{\log\frac{p(x\mid 1)}{p(x\mid 0)}}_{\text{LLR}} +\log\frac{\pi_1}{\pi_0}.

LLR chỉ gồm class-conditional. Posterior odds còn cộng prior odds. Chọn quyết định lại cần cả chi phí: nếu (C_{\mathrm{FA}}) là phí gọi spoof là bona fide và (C_{\mathrm{Miss}}) là phí gọi bona fide là spoof, Bayes chọn lớp bona fide khi

log⁡p(x∣1)p(x∣0)>log⁡CFAπ0CMissπ1. \log\frac{p(x\mid 1)}{p(x\mid 0)} >\log\frac{C_{\mathrm{FA}}\pi_0}{C_{\mathrm{Miss}}\pi_1}.

Vì vậy, xác suất train, LLR và score cho một operating point là ba thứ khác nhau.

2. Từ cross-entropy tới hiệu logit#

Với hai logits (z_B,z_S):

qB=ezBezB+ezS,log⁡qBqS=zB−zS. q_B=\frac{e^{z_B}}{e^{z_B}+e^{z_S}},\qquad \log\frac{q_B}{q_S}=z_B-z_S.

Do đó score paper (s=z_B-z_S) chính là log-odds của phân phối softmax mà mô hình biểu diễn. Logit (z_B) đứng riêng không phải log-odds: cộng cùng một hằng số vào cả hai logits giữ nguyên softmax nhưng đổi từng logit. Với nhãn bona fide, loss một mẫu là

ℓ=−log⁡qB=log⁡(1+ezS−zB). \ell=-\log q_B=\log(1+e^{z_S-z_B}).

Ví dụ (z_B=1,z_S=0): (q_B=e/(e+1)=0.7311), (\ell=-\log(0.7311)=0.3133). API PyTorch nhận hai logits này trực tiếp, không đưa softmax vào trước CrossEntropyLoss.

3. Dẫn xuất class weight dịch odds như thế nào#

Giả sử tối thiểu hóa population weighted CE với weight dương cố định (w_1,w_0). Tại một (x), gọi (p_1=P_{\mathrm{train}}(1\mid x)), (p_0=P_{\mathrm{train}}(0\mid x)), (q=P_{\mathrm{model}}(1\mid x)). Phần loss có điều kiện, bỏ hằng số không phụ thuộc (q), là

Jx(q)=−w1p1log⁡q−w0p0log⁡(1−q). J_x(q)=-w_1p_1\log q-w_0p_0\log(1-q).

Đạo hàm:

dJxdq=−w1p1q+w0p01−q=0⟹q∗=w1p1w1p1+w0p0. \frac{dJ_x}{dq}=-\frac{w_1p_1}{q}+\frac{w_0p_0}{1-q}=0 \quad\Longrightarrow\quad q^*=\frac{w_1p_1}{w_1p_1+w_0p_0}.

Suy ra

log⁡q∗1−q∗=log⁡p(x∣1)p(x∣0)+log⁡π1π0+log⁡w1w0. \log\frac{q^*}{1-q^*} =\log\frac{p(x\mid 1)}{p(x\mid 0)} +\log\frac{\pi_1}{\pi_0} +\log\frac{w_1}{w_0}.

Với nhãn paper, trong điều kiện nghiệm lý tưởng, score (z_B-z_S) bằng LLR cộng log prior bona/spoof trong train cộng log weight bona/spoof. Nó không tự là calibrated LLR và không tự là posterior triển khai.

Nếu chỉ đổi prior khi triển khai và class-conditionals giữ nguyên, có thể sửa log-odds:

log⁡Odeploy=s−log⁡w1w0+log⁡π1,deployπ0,deploy−log⁡π1,trainπ0,train. \log O_{\mathrm{deploy}} =s-\log\frac{w_1}{w_0} +\log\frac{\pi_{1,\mathrm{deploy}}}{\pi_{0,\mathrm{deploy}}} -\log\frac{\pi_{1,\mathrm{train}}}{\pi_{0,\mathrm{train}}}.

Điều kiện “class-conditionals giữ nguyên” là label shift. Khi generator, corpus, codec, speaker hay channel làm (p(x\mid y)) đổi, prior correction không khôi phục LLR mới. Domain shift trong đề tài có thể làm đổi chính class-conditional; cần hiệu chỉnh bằng dữ liệu phát triển đại diện hoặc xác nhận assumptions, không chỉ thay prior.

Đây là population derivation với class weights cố định, model đủ linh hoạt và nghiệm được tối ưu. Finite data, regularization, head misspecification, optimization chưa hội tụ, weighting theo mẫu phụ thuộc (x), và batch reduction đều có thể khiến logits thực tế lệch công thức. Với PyTorch class-index targets, reduction='mean' chia tổng weighted losses cho tổng class weights trong batch; minibatch objective vì thế là một random ratio, không luôn trùng chính xác population risk. Ví dụ batch chỉ có một mẫu nhãn (y): weighted mean là (w_y\ell/w_y=\ell), nên weight triệt tiêu hoàn toàn trong batch đó. Kiểm sampler, class composition mỗi batch, reduction và gradient accumulation trong code trước khi diễn giải hiệu ứng của weight.

4. Ví dụ số hoàn chỉnh: prior và weight cùng dịch score#

Cho train prior (\pi_1=0.1,\pi_0=0.9), (w_1=9,w_0=1), và tại một quan sát rời rạc (x):

p(x∣1)=0.4,p(x∣0)=0.1. p(x\mid 1)=0.4,\qquad p(x\mid 0)=0.1.

LLR là (\log(0.4/0.1)=\log 4=1.3863). Posterior odds train chưa weighting là

0.1(0.4)0.9(0.1)=49,Ptrain(1∣x)=413=0.3077. \frac{0.1(0.4)}{0.9(0.1)}=\frac{4}{9}, \quad P_{\mathrm{train}}(1\mid x)=\frac{4}{13}=0.3077.

Sau weighting, odds nhân thêm (9), thành (4), nên nghiệm weighted CE là (q^*_1=4/(1+4)=0.8) và logit difference là (\log 4=1.3863). Nó tình cờ bằng LLR ở ví dụ này vì log prior odds (\log(1/9)) và log weight ratio (\log 9) triệt tiêu nhau. Không nên suy từ số trùng tình cờ này rằng weighted CE luôn cho LLR.

Giả sử triển khai có prior (P(1)=0.99,P(0)=0.01) nhưng giữ đúng hai class-conditionals trên. Posterior odds là (0.99(0.4)/(0.01(0.1))=396), do đó posterior bona fide là (396/397=0.9975). Score train log-odds (1.3863) chưa cho xác suất triển khai (0.9975). Prior correction ở trên khôi phục (\log 396), nhưng nếu (p(x\mid y)) đã đổi thì phép tính này sai.

5. Vì sao squared loss dự đoán conditional mean nhưng không chứng minh encoder quên#

Với target vector (T), context (C=c), và một dự đoán (a), đặt (\mu=E[T\mid C=c]). Khai triển:

E[∥T−a∥2∣C=c]=E[∥T−μ∥2∣C=c]+∥a−μ∥2, E[\|T-a\|^2\mid C=c] =E[\|T-\mu\|^2\mid C=c]+\|a-\mu\|^2,

vì số hạng chéo có kỳ vọng bằng 0. Do đó nghiệm duy nhất theo giá trị dự đoán là (a=\mu) (ngoại trừ điểm/nhánh có xác suất 0). Đây là tính chất của output predictor dưới squared loss.

Ví dụ (T\in{-1,+1}) đều xác suất (1/2), không có thông tin trong (C). Dự đoán (a=0) có MSE ((1+1)/2=1); (a=+1) có MSE ((0+4)/2=2); (a=-1) cũng bằng 2. Trung bình 0 tối ưu dù 0 không phải một target quan sát được.

Phản ví dụ cho suy luận “vậy encoder xóa mọi chi tiết không đoán được”: target của objective có thể là (T=(A,V)), trong đó context cho biết (A), còn (V) là một bit đối xứng độc lập; input/context còn chứa chi tiết (U) không liên quan đến (T). Encoder có thể xuất (H=(A,U)), predictor xuất ((A,0)), đạt đúng conditional mean tối ưu mà (U) vẫn nằm trong một chiều của (H). Loss không thưởng hay phạt chiều (U) nếu predictor không cần dùng nó. Trong Audio-JEPA target là learned embedding, vì vậy còn phải hỏi target encoder biểu diễn gì, mask đưa gì vào context, chiều nào predictor sử dụng, và chi tiết nào downstream label cần. Conditional expectation tự nó không chứng minh representation đã xóa forensic information.

Bài tự làm 6: Với (\pi_1=0.25,\pi_0=0.75,w_1=3,w_0=1), (p(x\mid1)=0.2,p(x\mid0)=0.1), hãy tính LLR, posterior train, posterior weighted-optimum, rồi viết công thức odds deploy nếu prior bona fide là 0.9 và class-conditionals vẫn giữ nguyên. Nêu một lý do vì sao công thức có thể không mô tả logits hữu hạn của paper.

Bài 7 — Vector, covariance, PCA, effective rank, CKA và probe#

1. Nối data matrix, SVD, covariance và PCA#

Xếp (n) ví dụ theo hàng thành (X\in\mathbb R^{n\times d}). Trừ mean từng cột để được (X_c). Sample covariance là

C=1n−1Xc⊤Xc. C=\frac{1}{n-1}X_c^\top X_c.

Nếu (X_c=U\Sigma V^\top), thì

C=VΣ⊤Σn−1V⊤,λi(C)=σi(Xc)2n−1. C=V\frac{\Sigma^\top\Sigma}{n-1}V^\top,\qquad \lambda_i(C)=\frac{\sigma_i(X_c)^2}{n-1}.

Eigenvectors của covariance là hướng PCA; eigenvalues là phương sai theo hướng. SVD singular values không phải covariance eigenvalues: chúng khác nhau bởi bình phương và hệ số (n-1). Do đã center, (X_c) bị ràng buộc tổng mỗi cột bằng 0, nên

rank⁡(Xc)=rank⁡(C)≤min⁡(d,n−1). \operatorname{rank}(X_c)=\operatorname{rank}(C)\le \min(d,n-1).

PCA top-(k) giữ nhiều variance nhất và tối thiểu hóa squared reconstruction error trong các phép chiếu tuyến tính hạng (k). Nó không biết nhãn fake/genuine. Nếu label nằm ở một hướng phương sai nhỏ còn source/channel nằm ở hướng lớn, PCA có thể bỏ đúng cue cần cho detector.

2. PCA tính tay trên bốn embedding#

Lấy bốn vector đã center:

x1=(2,0), x2=(−2,0), x3=(0,1), x4=(0,−1). x_1=(2,0),\ x_2=(-2,0),\ x_3=(0,1),\ x_4=(0,-1).

Khi đó

Xc⊤Xc=[8002],C=13[8002]=[8/3002/3]. X_c^\top X_c= \begin{bmatrix}8&0\\0&2\end{bmatrix}, \quad C=\frac{1}{3}\begin{bmatrix}8&0\\0&2\end{bmatrix} =\begin{bmatrix}8/3&0\\0&2/3\end{bmatrix}.

Hướng PCA thứ nhất là (e_1=(1,0)); eigenvalues là (8/3) và (2/3). Thành phần thứ nhất giữ (8/(8+2)=80%) sample variance. Bỏ (e_2) làm mất tổng squared norm (1^2+(-1)^2=2), trung bình (2/4=0.5) trên ví dụ; tổng squared norm trung bình ban đầu là ((4+4+1+1)/4=2.5), nên mất đúng 20%.

3. Effective rank có hai mẫu spectrum cần phân biệt#

Bản gốc Roy–Vetterli định nghĩa, cho ma trận khác 0 với singular values (\sigma_i):

pi(σ)=σi∑jσj,reff,σ(A)=exp⁡(−∑ipi(σ)log⁡pi(σ)). p_i^{(\sigma)}=\frac{\sigma_i}{\sum_j\sigma_j},\qquad r_{\mathrm{eff},\sigma}(A)= \exp\left(-\sum_i p_i^{(\sigma)}\log p_i^{(\sigma)}\right).

Nếu nghiên cứu “effective rank của covariance” theo eigenvalue spectrum (\lambda_i\ge0), thường dùng:

pi(λ)=λi∑jλj=λitr⁡(C),reff,λ(C)=exp⁡(−∑ipi(λ)log⁡pi(λ)). p_i^{(\lambda)}=\frac{\lambda_i}{\sum_j\lambda_j} =\frac{\lambda_i}{\operatorname{tr}(C)},\qquad r_{\mathrm{eff},\lambda}(C)= \exp\left(-\sum_i p_i^{(\lambda)}\log p_i^{(\lambda)}\right).

Với covariance lấy từ centered data, (p_i^{(\lambda)}=\sigma_i^2/\sum_j\sigma_j^2). Vì vậy đây là entropy của variance/squared singular values, khác entropy của singular values gốc. Khi báo một con số, phải ghi rõ ma trận được phân tích, cách center/scale, singular-value hay eigenvalue spectrum, log base, và cách xử lý zero.

Trên ví dụ PCA:

  • Singular values của (X_c) là ((\sqrt 8,\sqrt 2)), nên xác suất chuẩn hóa là ((2/3,1/3)) và effective rank singular-value là (1.8899).
  • Covariance eigenvalues là ((8/3,2/3)), xác suất là ((0.8,0.2)) và covariance effective rank là (1.6494).

Hai con số khác nhau dù cùng đến từ bốn mẫu. Roy–Vetterli loại trừ ma trận toàn zero: nếu mọi (\sigma_i=0), mẫu số chuẩn hóa bằng 0 và entropy không xác định. Ghi “undefined”/NA, hoặc công bố rõ quy ước riêng; không âm thầm xem là entropy 0.

Đừng suy kích thước phân tích chỉ từ số utterance trong ghi chép. 06 — Giải phẫu paper nêu preflight v41 trên 64 VoxPopuli clips và centered effective rank 263.1, nhưng không ghi rõ ma trận đưa vào phép tính có hàng là clip, token, time window hay mẫu sau một bước pooling nào. Nếu đúng là ma trận có một hàng cho mỗi 64 clip, centered rank tối đa là 63 và effective rank không thể là 263.1; khi ấy cần kiểm lại object, trục, phép biến đổi và tên metric. Nếu mỗi clip đóng góp nhiều token/window, giới hạn (n-1) phải dùng số hàng thực tế sau khi xác định rõ đơn vị quan sát. Hiện tại con số này chưa đủ để gọi là mâu thuẫn hay bằng chứng collapse.

Counterexample usefulness: một representation nhiễu độc lập với label có covariance xấp xỉ (10^{-8}I_{100}). Tổng variance chỉ (10^{-6}), nhưng covariance effective rank bằng 100 vì 100 eigenvalues bằng nhau. Nếu (I(H;Y)=0), không có chiều nào giúp detection. Rank đo phân bố tương đối của năng lượng, không đo scale hay liên hệ với nhãn. Luôn xem thêm trace/variance, spectrum tuyệt đối, probes và domain.

4. Linear CKA: ví dụ nhỏ và phạm vi diễn giải#

Với ma trận activations đã center theo sample, hàng là cùng các ví dụ, linear CKA là

CKA⁡(X,Y)=∥X⊤Y∥F2∥X⊤X∥F∥Y⊤Y∥F. \operatorname{CKA}(X,Y)= \frac{\|X^\top Y\|_F^2} {\|X^\top X\|_F\|Y^\top Y\|_F}.

Có thể tính tương đương từ Gram matrices theo ví dụ và HSIC đã chuẩn hóa. X và Y phải là activation của cùng tập mẫu theo cùng thứ tự. Linear CKA bất biến với orthogonal transform và isotropic scaling; nó không bất biến với mọi phép biến đổi tuyến tính khả nghịch. Kornblith et al. xây CKA để tìm tương ứng giữa layers trong các setting có chiều rộng lớn; bài cũng nói “similarity” là câu hỏi không được định nghĩa duy nhất.

Ví dụ hai cột centered (X=(-1,0,1)^\top), (Y=(1,-2,1)^\top). Ta có (X^\top Y=0), (X^\top X=2), (Y^\top Y=6); do đó linear CKA (=0^2/(2\cdot6)=0). Nếu (Y=3X), tử là (6^2=36), mẫu là (2\cdot18=36), CKA bằng 1. Giá trị 1 nói hai cấu trúc trên những mẫu đó giống sau scale; không nói label trong (Y) dễ dự đoán. Cho label độc lập với (X) vẫn có CKA((X,X))=1.

Vì vậy CKA không tự chứng minh encoder hữu ích cho deepfake, không chứng minh collapse/no-collapse, và không chứng minh detector dùng một nuisance. “Có thể decode source từ embedding” cũng chỉ là decodability; reliance của head cần một can thiệp/permutation hoặc thiết kế đối chứng để xem quyết định có đổi.

5. Linear probe không phải frozen detector bất kỳ#

Linear probe: giữ encoder cố định, lấy representation (h), học duy nhất một classifier tuyến tính (Wh+b) cho nhãn. Thay pooling trainable, LayerNorm trainable, attentive statistics hoặc MLP phi tuyến làm đánh giá không còn là linear probe, dù encoder vẫn frozen.

Phản ví dụ XOR: bốn điểm (h=(\pm1,\pm1)), nhãn (y=1) khi (h_1h_2=+1), còn (y=0) khi (h_1h_2=-1). Hai lớp nằm trên hai đường chéo đối nhau nên một đường thẳng không tách hoàn hảo; đặc trưng phi tuyến (\phi(h)=h_1h_2) cùng threshold 0 tách hoàn hảo. Một MLP có thể học phép biến đổi đó trong khi encoder frozen.

Trong paper, frozen detector kết hợp softmax-weighted sum của 13 layer sequences, attentive mean/std pooling và MLP có GELU. Vì backend học phi tuyến, cách gọi chính xác là “frozen encoder + nonlinear trained detector head”, không phải “linear probe”. Frozen chỉ mô tả gradient update cho encoder; forward inference vẫn chạy encoder ViT-Base 85.4M parameters. Head báo cáo 495,632 parameters, nên khoảng 0.496M trainable không làm inference model chỉ còn 0.5M.

Bài tự làm 7: Với centered matrix có (n=8) utterances, (d=20), hãy cho rank covariance tối đa; nếu eigenvalues covariance là ((9,1,0,\ldots)), tính covariance effective rank; nêu thông tin nào còn thiếu trước khi gọi embedding “tốt cho detection”.

Bài 8 — Chain rule, CNN, attention, AdamW và adaptation#

1. Backprop bằng một mạng hai lớp nhỏ#

Backprop là cách tái sử dụng đạo hàm trung gian trong reverse-mode chain rule trên computational graph. Nó không chọn hướng hay độ lớn learning rate; optimizer làm việc đó. Xét:

h=ReLU⁡(wx+b),zB=vBh,zS=vSh, h=\operatorname{ReLU}(wx+b),\quad z_B=v_Bh,\quad z_S=v_Sh,

với input (x=2), (w=0.5), (b=0), (v_B=1), (v_S=0), nhãn bona fide. Forward: (h=1), logits ((1,0)), (p_B=0.7311,p_S=0.2689), CE (=0.3133). Với softmax CE:

∂L∂zB=pB−1=−0.2689,∂L∂zS=pS=0.2689. \frac{\partial L}{\partial z_B}=p_B-1=-0.2689,\qquad \frac{\partial L}{\partial z_S}=p_S=0.2689.

Truy ngược:

∂L∂vB=−0.2689h=−0.2689,∂L∂vS=0.2689h=0.2689; \frac{\partial L}{\partial v_B}=-0.2689h=-0.2689,\quad \frac{\partial L}{\partial v_S}=0.2689h=0.2689;
∂L∂h=vB(−0.2689)+vS(0.2689)=−0.2689;∂L∂w=−0.2689⋅1⋅x=−0.5379,∂L∂b=−0.2689. \frac{\partial L}{\partial h} =v_B(-0.2689)+v_S(0.2689)=-0.2689; \quad \frac{\partial L}{\partial w}=-0.2689\cdot1\cdot x=-0.5379,\quad \frac{\partial L}{\partial b}=-0.2689.

Hệ số ReLU là 1 vì pre-activation đang dương. Từ đây SGD với (\eta=0.1) sẽ cập nhật (w) thành (0.5538), còn backprop chỉ trả gradient (-0.5379). Ở điểm ReLU đúng 0, đạo hàm không khả vi và framework chọn một subgradient theo convention.

2. CNN: local filter và gradient được cộng qua vị trí#

CNN hợp với dữ liệu dạng lưới nhờ receptive field cục bộ và kernel dùng chung. Với một chiều, input ([1,2,0,1]), kernel ([1,-1]), stride 1, valid, phép cross-correlation của PyTorch cho:

y=[1−2, 2−0, 0−1]=[−1,2,−1]. y=[1-2,\ 2-0,\ 0-1]=[-1,2,-1].

Đặt (L=\tfrac12\sum_i y_i^2=3); gradient theo từng kernel weight cộng contribution từ mọi vị trí sử dụng weight đó:

∂L∂k0=∑iyixi=(−1)(1)+(2)(2)+(−1)(0)=3, \frac{\partial L}{\partial k_0} =\sum_i y_ix_i=(-1)(1)+(2)(2)+(-1)(0)=3,
∂L∂k1=∑iyixi+1=(−1)(2)+(2)(0)+(−1)(1)=−3. \frac{\partial L}{\partial k_1} =\sum_i y_ix_{i+1}=(-1)(2)+(2)(0)+(-1)(1)=-3.

Đây là chain rule cùng parameter sharing. Với log-mel, hai trục là time/frequency; kernel nhỏ tạo prior cục bộ nhưng không biết cue nào forensic. PyTorch “Conv1d” định nghĩa (\star) là cross-correlation, nên không lật kernel trong ví dụ.

3. Scaled dot-product attention ra số thế nào#

Một query chấm key bằng dot product, chia (\sqrt{d_k}), softmax để thành trọng số, rồi trộn value:

Attention⁡(Q,K,V)=softmax⁡(QK⊤/dk)V. \operatorname{Attention}(Q,K,V) =\operatorname{softmax}\left(QK^\top/\sqrt{d_k}\right)V.

Lấy (d_k=1), query (q=1), hai key (k_1=1,k_2=0), value (v_1=(2,0),v_2=(0,2)). Scores là ((1,0)); softmax là ((0.7311,0.2689)); output là

0.7311(2,0)+0.2689(0,2)=(1.4622,0.5378). 0.7311(2,0)+0.2689(0,2)=(1.4622,0.5378).

Self-attention dense nối mọi cặp token, phần tương tác tăng theo (N^2); positional encoding đưa vị trí vào vì nội dung token riêng không ghi nó nằm ở đâu. Trọng số attention là hệ số trộn của một lớp. Suy luận rằng chúng là lời giải thích nhân quả cho logit cuối là quá mạnh: value projection, residual, normalization, MLP và nhiều layer còn biến đổi output sau đó.

4. AdamW khác L2-Adam ở bước nào#

Ở Adam với L2 penalty, gradient dùng cho moments là (g+\lambda\theta). Ở AdamW, weight decay shrink (\theta) riêng, còn (g) và moments chỉ nhận gradient loss. Đây là khác biệt quan trọng với adaptive preconditioning; với SGD thường, L2 có thể tương đương weight decay sau khi đổi hệ số theo learning rate.

Ví dụ một tham số (\theta_0=2), gradient loss bằng 0, (\eta=0.1,\lambda=0.1,\beta_1=0.9,\beta_2=0.999), moments ban đầu bằng 0, (\epsilon) bỏ qua vì rất nhỏ:

  • Adam+L2 với penalty (\frac{\lambda}{2}\theta^2): gradient tổng (=0+0.1(2)=0.2). Ở bước đầu bias correction cho (\hat m=0.2,\hat v=0.04), nên Adam step xấp xỉ (0.1(0.2/\sqrt{0.04})=0.1), ra (\theta_1\approx1.90).
  • AdamW: loss-gradient bằng 0, nên Adam step bằng 0; decay riêng cho (\theta_1=2-\eta\lambda\theta_0=2-0.02=1.98).

Một bước này chỉ cô lập cơ chế bằng số, không dự báo hiệu quả huấn luyện nhiều bước. Nhưng nó bắt được vì sao thêm (\lambda\theta) vào gradient không tương đương AdamW.

5. Frozen, fine-tuning, LoRA và inference cost#

  • Frozen encoder: gradient chỉ cập nhật backend. Chi phí backward/optimizer của encoder giảm; forward encoder vẫn chạy khi train/inference.
  • Full fine-tuning: cho phép update toàn encoder cùng backend; số trainable params lớn và dễ overfit/shift theo dữ liệu nhỏ hơn.
  • Linear probe: frozen encoder cộng classifier tuyến tính duy nhất trên representation đã định nghĩa.
  • LoRA: với (W_0\in\mathbb R^{d\times k}), giữ (W_0) frozen và học (\Delta W=BA), (B\in\mathbb R^{d\times r}, A\in\mathbb R^{r\times k}). Số trainable tham số là (r(d+k)) thay vì (dk) cho projection đó.

Ví dụ projection (768\times768), rank (r=8): full projection có (768^2=589{,}824) tham số; LoRA có (8(768+768)=12{,}288), tức khoảng 2.08% số tham số của projection. Đây là phép tính parameter count, chưa bảo đảm cùng EER. Encoder gốc vẫn phải tính forward; LoRA giảm trainable parameters và có thể merge (BA) vào (W_0) cho dense inference. Paper hiện tại không chạy LoRA.

Một cụm dễ gây nhầm khác là BatchNorm/LayerNorm. Với input sequence, BatchNorm1d lấy thống kê theo channel qua các mẫu/bước thời gian của minibatch và mặc định dùng running estimates ở eval; LayerNorm với normalized_shape là embedding width lấy thống kê các chiều cuối của từng input ở cả train/eval. Nói “có normalization” chưa đủ để tái lập input/output behavior.

Bài tự làm 8: (a) Tính gradient logits của softmax CE nếu (p=(0.6,0.4)), nhãn lớp 0. (b) Tính output Conv1d input ([2,1,0]), kernel ([1,2]), valid/stride 1. (c) Với projection (512\times512), LoRA rank 4 học bao nhiêu tham số và chiếm bao nhiêu phần trăm projection? (d) Giải thích tại sao frozen 85.4M ViT không phải model inference 0.5M.

Đáp án ngắn cho bài tập#

Bài 6. LLR (=\log 2=0.6931). Posterior odds train (=(0.25\cdot0.2)/(0.75\cdot0.1)=2/3), nên posterior (=0.4). Weighted odds nhân (3), thành 2, nên posterior (=2/3) và logit difference optimum (=\log2). Với prior deploy 0.9/0.1, posterior deploy odds (=(0.9\cdot0.2)/(0.1\cdot0.1)=18), probability (18/19=0.9474). Logits hữu hạn có thể lệch vì finite data, model misspecification/regularization hoặc class-conditional shift.

Bài 7. Rank tối đa là (\min(20,7)=7). Với eigenvalue mass ((0.9,0.1)), (r_{\mathrm{eff}}=\exp[-0.9\log0.9-0.1\log0.1]\approx1.384). Cần biết scale/trace, spectrum được định nghĩa ra sao, label relation, domain, split/leakage, probe capacity và uncertainty trước khi gọi useful.

Bài 8. (a) Gradient logits là ((0.6-1,0.4)=(-0.4,0.4)). (b) Cross-correlation cho ([2(1)+1(2),1(1)+0(2)]=[4,1]). (c) (4(512+512)=4096) tham số, so với (512^2=262144), bằng (1.5625%). (d) Frozen chỉ ngừng học trọng số encoder; forward mỗi utterance vẫn phải qua encoder để tạo embedding.

Các câu nên dùng để tự kiểm tra mức hiểu#

  1. Với class weights, hãy chỉ ra chính xác hạng số nào trong logit optimum đến từ LLR, prior train và weights.
  2. Nêu assumptions của prior correction. Cho ví dụ shift làm hỏng giả định class-conditional.
  3. Tính effective rank từ ((\sigma_i)), rồi tính lại từ ((\sigma_i^2)); giải thích vì sao không được gọi hai số bằng cùng nhãn mơ hồ.
  4. Một covariance gần (10^{-8}I_{100}) có covariance effective rank bao nhiêu? Nó nói gì và không nói gì về detector?
  5. CKA=1 có thể xảy ra trong khi classifier useless khi nào? CKA=0 có chứng minh độc lập nhân quả không?
  6. Vì sao probe trên frozen encoder vẫn có thể là nonlinear evaluation? Chỉ vào đúng lớp của backend trong paper.
  7. Backprop trả gradient nào; AdamW làm thêm những phép cập nhật nào?
  8. Với speech spectrogram, hai chiều convolution dùng chung filter tạo inductive bias gì; khi dịch theo time/frequency, giả định ấy có thể đúng/sai thế nào?
  9. LoRA rank thấp giảm tập tham số trainable của projection ra sao; điều gì vẫn phải tính ở inference?

Các câu trả lời cần tách ba mức: công thức suy ra được, giả định để công thức áp dụng, và điều phải đo trên detector. Điều này nối trực tiếp mục tiêu của lộ trình: đưa ra claim, phản ví dụ và phép kiểm phù hợp.

↓ Bản Markdown nguyên gốcGiữ nguyên nội dung · Công thức, bảng và nguồn đầy đủ.Các chat bàn giao được mở trong Codex.

Gõ từ khóa để tìm bài học và đoạn liên quan.