natmin322 commited on
Commit
2dea138
·
1 Parent(s): a4f8971
Files changed (30) hide show
  1. human_working_IdeaMethod_and_discuss/C2_analysis_and_revision.md +0 -311
  2. human_working_IdeaMethod_and_discuss/comprehensive_methodology.md +0 -663
  3. human_working_IdeaMethod_and_discuss/critical_analysis_report.md +0 -245
  4. human_working_IdeaMethod_and_discuss/discusstion.txt +0 -3
  5. human_working_IdeaMethod_and_discuss/disscuss_1_C2_C1.txt +0 -3
  6. human_working_IdeaMethod_and_discuss/gainlora.txt +0 -3
  7. human_working_IdeaMethod_and_discuss/idea_analysis_from_discussion.md +0 -542
  8. human_working_IdeaMethod_and_discuss/method.md +0 -458
  9. human_working_IdeaMethod_and_discuss/new_idea_analysis.md +0 -470
  10. human_working_IdeaMethod_and_discuss/new_idea_modifier.txt +0 -3
  11. human_working_IdeaMethod_and_discuss/novelty_search_report.md +0 -168
  12. human_working_IdeaMethod_and_discuss/proposal_gainlora_upgrade.md +0 -305
  13. human_working_IdeaMethod_and_discuss/research_rule.txt +0 -3
  14. human_working_IdeaMethod_and_discuss/revised_idea_analysis.md +0 -485
  15. human_working_IdeaMethod_and_discuss/settings.txt +0 -3
  16. human_working_IdeaMethod_and_discuss/simple_idea.txt +0 -3
  17. human_working_IdeaMethod_and_discuss/work_ethic.txt +0 -3
  18. human_working_IdeaMethod_and_discuss/working_method.txt +0 -3
  19. improve_gainlora/v6_discuss.md +142 -0
  20. results/benchmark_explanation.md +0 -219
  21. results/comparison_results.md +0 -257
  22. results/contribution2_implementation_analysis.md +0 -176
  23. results/deep_theoretical_analysis_svd_lora_routing.md +545 -0
  24. results/experiment_versions.md +165 -515
  25. results/review_1.md +0 -154
  26. results/review_2.md +0 -184
  27. results/review_3.md +0 -129
  28. results/review_4.md +0 -130
  29. results/specroute_v2_diagnosis.md +0 -174
  30. results/v5_deep_analysis.md +164 -0
human_working_IdeaMethod_and_discuss/C2_analysis_and_revision.md DELETED
@@ -1,311 +0,0 @@
1
- # PHÂN TÍCH PHẢN BIỆN C2 VÀ XÂY LẠI KHUNG LÝ THUYẾT
2
- ## Theo nguyên tắc: Phân tích → Điểm yếu → Động lực → Cải tiến
3
-
4
- **Date**: Revision sau phản biện C2 + C1
5
-
6
- ---
7
-
8
- # PHẦN 1: ĐÁNH GIÁ PHẢN BIỆN — C2 (Grassmann-OT Routing)
9
-
10
- ## 1.1 Tóm tắt phản biện
11
-
12
- Phản biện chỉ ra 4 vấn đề cốt lõi:
13
-
14
- | # | Vấn đề | Mức độ |
15
- |---|--------|--------|
16
- | 1 | **"Tại sao OT?"** — "cân bằng toàn cục" không cần thiết cho routing. OT giải bài toán matching phân phối, nhưng routing là per-input assignment | **Fatal** |
17
- | 2 | **Inference batch_size=1 → OT suy biến thành argmin** — mất hoàn toàn ý nghĩa OT. CL inference thường là per-sample | **Fatal** |
18
- | 3 | **Không có đảm bảo lý thuyết OT tốt hơn simple max-fit** — không ai chứng minh OT routing > softmax routing cho input assignment | **Nghiêm trọng** |
19
- | 4 | **"Interesting but not necessary"** — novelty không đi kèm necessity. Đây là flash of insight, không phải principled reasoning | **Cốt lõi** |
20
-
21
- ## 1.2 Phán xét: Phản biện ĐÚNG — C2 (OT) thiếu nền tảng vững
22
-
23
- ### Phân tích theo chuỗi logic research_rule.txt:
24
-
25
- **Bước 1 — OT giải bài toán gì?**
26
- OT (Optimal Transport) tìm coupling tối ưu giữa 2 phân phối: vận chuyển "khối lượng" từ phân phối nguồn → đích với chi phí tổng nhỏ nhất.
27
- $$\Pi^* = \arg\min_{\Pi \in \mathcal{U}(a,b)} \langle C, \Pi \rangle$$
28
- Trong đó $\mathcal{U}(a,b)$ là tập các coupling thỏa marginal constraints.
29
-
30
- **Bước 2 — Routing giải bài toán gì?**
31
- "Input $x$ này nên được xử lý bởi expert nào?" → đây là **per-input assignment**, không phải distribution matching.
32
-
33
- **Bước 3 — Mâu thuẫn cốt lõi:**
34
-
35
- | Khía cạnh | OT | Routing trong CL |
36
- |-----------|-----|-------------------|
37
- | **Đơn vị hoạt động** | Batch-level (cần batch để xây distribution) | Per-input (mỗi input cần decision riêng) |
38
- | **Mục tiêu** | Minimize tổng chi phí vận chuyển toàn cục | Maximize accuracy routing cho TỪNG input |
39
- | **Constraint** | Marginal constraints (balance) | Không cần balance — nếu 90% test là task A thì 90% nên route tới A |
40
- | **Batch_size=1** | Suy biến: $\Pi$ chỉ có 1 hàng → argmin cost = assignment đơn giản | Hoạt động bình thường |
41
-
42
- **Bước 4 — Lý do "global balance" KHÔNG hợp lệ cho CL:**
43
- - Trong MoE training: balance cần thiết để prevent expert collapse (experts không được train → die). OT load-balancing hợp lý (BASE Layers, Sinkhorn Routing).
44
- - Trong CL inference: TẤT CẢ experts đã frozen → không có collapse risk → balance là constraint thừa, thậm chí có hại (bắt route sai expert chỉ để "balance").
45
-
46
- **Bước 5 — Kết luận:**
47
- > **C2 (Grassmann-OT Routing) bị reject.** OT được chọn vì "novel" (chưa ai dùng OT cho CL routing), KHÔNG phải vì nó giải quyết một vấn đề thực sự tốt hơn alternatives. Đây chính xác là "flash of insight" mà research_rule.txt cảnh báo.
48
-
49
- ### Bằng chứng từ code: Code KHÔNG implement OT
50
-
51
- Quan sát quan trọng: **Code hiện tại (t5_specroute.py) implement projection-based softmax routing, KHÔNG phải OT.**
52
-
53
- ```python
54
- # Từ t5_specroute.py::compute_spectral_routing()
55
- fit_scores = torch.cat(fits, dim=1) # (B, n_tasks)
56
- weights = torch.softmax(fit_scores / self.routing_temperature, dim=1) # softmax, NOT OT
57
- ```
58
-
59
- → Code đã đi đúng hướng. Chỉ có idea document đề xuất OT mà không bao giờ implement. Đây là dấu hiệu rõ ràng rằng khi chạm vào thực tế, OT không cần thiết.
60
-
61
- ---
62
-
63
- # PHẦN 2: ĐÁNH GIÁ PHẢN BIỆN — C1 (Spectral LoRA Signatures)
64
-
65
- ## 2.1 Tóm tắt phản biện C1
66
-
67
- Phản biện nói C1 "đã tương đối tốt" nhưng cần:
68
- > "Tại sao spectral signature tốt hơn prompt key? Ngoài việc 'có thông tin hình học', cần chứng minh nó giúp routing CHÍNH XÁC HƠN ở task boundaries, nơi input có thể gần với nhiều task."
69
-
70
- ## 2.2 Phán xét: Phản biện ĐÚNG — C1 cần motivation mạnh hơn
71
-
72
- C1 hiện tại giải thích *what* (SVD cho signature) nhưng thiếu *why* ở level sâu. Cần chứng minh:
73
-
74
- ### Why spectral signature > prompt key? — 5 lý do toán học
75
-
76
- **Lý do 1: Prompt key là INDIRECT representation**
77
- - GainLoRA: $w_t = \sigma(\text{cos}(\text{trans\_input}(x), \text{prompt\_key}_t))$
78
- - `prompt_key` là vector HỌC RIÊNG, không liên hệ trực tiếp với computation mà LoRA thực hiện
79
- - Hậu quả: routing decision dựa trên "input GIỐNG gì" (similarity space), KHÔNG phải "expert NÀO phù hợp xử lý" (functional space)
80
-
81
- **Lý do 2: Spectral signature là DIRECT functional representation**
82
- - SVD of $\Delta W_t = B_t A_t = U_t \Sigma_t V_t^T$
83
- - Right singular vectors $V_t$: chính xác các hướng trong input space mà expert $t$ **sẽ modify mạnh nhất**
84
- - Singular values $\sigma_t$: mức độ modification theo từng hướng
85
- - **Proposition (từ InfLoRA)**: Fine-tuning $A_t$ = fine-tuning $W$ trong span($B_t$). Nên SVD of $B_t A_t$ capture CHÍNH XÁC vùng hoạt động.
86
- - Routing dựa trên spectral signature = "expert nào sẽ tạo ra thay đổi lớn nhất cho input này?" → trực tiếp đúng mục đích
87
-
88
- **Lý do 3: Prompt key CẦN GPM protection → vẫn bị drift**
89
- - GainLoRA cần 3 bộ GPM riêng cho routing: trans_input[0], trans_input[2], prompt_key
90
- - Dù có GPM, routing parameters vẫn drift (GPM chỉ protect trên subspace projection, KHÔNG guarantee zero-drift)
91
- - Spectral signature được compute TỪ frozen weights → **immutable by definition** → zero drift
92
-
93
- **Lý do 4: Multi-resolution vs single-resolution**
94
- - Prompt key: 1 vector $\in \mathbb{R}^d$ per task (global level)
95
- - Spectral signature: per-layer signatures (48 layers in T5-Large Q+V) → routing quyết định ở **mỗi layer** dựa trên local geometry
96
- - Lợi ích: Hai tasks có thể overlap ở low-level features nhưng diverge ở high-level → multi-resolution routing capture được
97
-
98
- **Lý do 5 — ĐIỂM MẠNH NHẤT: Task boundary behavior**
99
-
100
- Xét input $h$ nằm tại ranh giới (boundary) giữa task A và task B:
101
-
102
- **Với prompt key:**
103
- $$\text{cos}(\text{trans\_input}(h), \text{prompt\_key}_A) \approx \text{cos}(\text{trans\_input}(h), \text{prompt\_key}_B)$$
104
- → Cả hai similarity gần bằng nhau → routing ambiguous
105
- → Quyết định phụ thuộc vào **trans_input mapping** (learned, có thể drift) → không tin cậy tại boundary
106
-
107
- **Với spectral projection:**
108
- $$\text{fit}_A(h) = \frac{\sum_i \sigma_{A,i}^2 (v_{A,i}^T h)^2}{\sum_i \sigma_{A,i}^2 \cdot \|h\|^2} \quad \text{vs} \quad \text{fit}_B(h) = \frac{\sum_i \sigma_{B,i}^2 (v_{B,i}^T h)^2}{\sum_i \sigma_{B,i}^2 \cdot \|h\|^2}$$
109
-
110
- → Đo **phần năng lượng của input nằm trong operating subspace** → thể hiện "expert nào sẽ tác động mạnh hơn lên input này"
111
-
112
- **Tại vùng boundary:**
113
- - Nếu các subspaces well-separated ($d_G(\mathcal{V}_A, \mathcal{V}_B)$ lớn): fit_A ≫ fit_B hoặc ngược lại → routing rõ ràng
114
- - Nếu subspaces overlap: cả hai experts đều xử lý được → soft blending (softmax) cho weighted combination → TỐT hơn hard assignment
115
- - Singular value weighting: ưu tiên expert có **directions quan trọng hơn** aligned với input → discriminative hơn uniform projection
116
-
117
- **So sánh chính thức:**
118
-
119
- | Tiêu chí | Prompt Key (GainLoRA) | Spectral Signature (SpecRoute) |
120
- |----------|----------------------|-------------------------------|
121
- | Nguồn gốc | Learned parameter (indirect) | SVD of LoRA weights (direct functional) |
122
- | Forgetting risk | Có (cần GPM protection) | Không (immutable from frozen weights) |
123
- | Resolution | Single global vector | Per-layer per-attention |
124
- | Task boundary | Depends on learned mapping | Depends on actual subspace overlap |
125
- | Extra parameters | trans_input (MLP) + prompt_key | None (0 extra params) |
126
- | Extra GPM cost | 3 sets of GPM projections | None |
127
- | Interpretability | Black-box similarity | Geometric: "bao nhiêu % input energy nằm trong expert's subspace" |
128
-
129
- ---
130
-
131
- # PHẦN 3: XÂY LẠI KHUNG LÝ THUYẾT — KILL OT, RESTRUCTURE C2
132
-
133
- ## 3.1 Nguyên tắc (theo research_rule.txt)
134
-
135
- > "Ý tưởng phải xuất phát từ: phân tích lý thuyết → nhận diện điểm yếu → dynamic lực → đề xuất cải tiến → thí nghiệm → củng cố"
136
-
137
- Áp dụng:
138
- 1. **Phân tích**: GainLoRA routing dựa trên learned gating (trans_input + prompt_key)
139
- 2. **Điểm yếu**: 3 weakness cụ thể (xác định ở mục 3.2 bên dưới)
140
- 3. **Động lực**: Frozen LoRA weights chứa đủ thông tin hình học cho routing → khai thác
141
- 4. **Cải tiến**: Spectral projection routing — parameter-free, functionally grounded
142
-
143
- ## 3.2 Ba điểm yếu cụ thể của GainLoRA routing (motivates C1 + C2)
144
-
145
- ### Weakness 1: Routing Forgetting — Learned routing parameters drift
146
- GainLoRA cần GPM constraints cho trans_input (2 layers) + prompt_key. Nhưng:
147
- - GPM chỉ project gradient ra null-space → **approximate protection**, không guarantee zero-interference
148
- - Mỗi task mới "ăn" thêm subspace cho routing GPM → cạn kiệt capacity nhanh hơn
149
- - **Thí nghiệm quantify**: Cần đo routing accuracy trên old tasks TRƯỚC và SAU train new task → expect degradation dù có GPM
150
-
151
- ### Weakness 2: Indirect Task Representation
152
- - `prompt_key_t` encode "đặc trưng" task $t$ → nhưng trong KHÔNG GIAN NÀO? Trong feature space của trans_input MLP — KHÔNG phải weight space hay task-functional space
153
- - Prompt key học "input nào GIỐNG task t" (similarity view), KHÔNG phải "expert nào NÊN xử lý input" (functional view)
154
- - Hệ quả: Khi input nằm ở boundary, similarity-based routing THIẾU thông tin functional → suboptimal
155
-
156
- ### Weakness 3: Routing Overhead
157
- - Trans_input: 2-layer MLP (d_model → hidden → d_model) = 2 × d_model × hidden + biases
158
- - Prompt_key: d_model per task
159
- - GPM cho routing: 3 sets × dim per task × num_tasks
160
- - Tổng overhead tăng linearly với số tasks → scalability concern
161
-
162
- ## 3.3 Cấu trúc Contributions mới (3C restructured)
163
-
164
- ### C1: Spectral LoRA Signatures — Task Characterization via Frozen Weights
165
- **Chuỗi motivation:**
166
- 1. LoRA branch task $t$: $\Delta W_t = B_t A_t$ (frozen after training)
167
- 2. SVD: $\Delta W_t = U_t \Sigma_t V_t^T$
168
- 3. Right singular vectors $V_t$ = input directions task $t$ operates on (InfLoRA Proposition 1)
169
- 4. Singular values $\Sigma_t$ = importance of each direction
170
- 5. **Signature** $\mathcal{S}_t = (V_t, \Sigma_t)$ per layer = complete characterization of task's operating subspace + importance profile
171
- 6. Zero extra storage cost beyond weights (derived, not stored separately)
172
- 7. Immutable (from frozen weights) → zero drift
173
-
174
- **Đóng góp**: Formalize spectral task characterization cho LoRA-based CL. Chứng minh rằng $(V_t, \Sigma_t)$ chứa đầy đủ thông tin cần thiết cho routing.
175
-
176
- ### C2: Projection-Based Parameter-Free Routing — REPLACE OT
177
- **Chuỗi motivation:**
178
- 1. **Weakness identification**: GainLoRA routing: learned + indirect + overhead (3 weaknesses ở 3.2)
179
- 2. **Theoretical insight**: C1 cho ta $\mathcal{S}_t = (V_t, \Sigma_t)$ per layer — đây là direct characterization của "expert $t$ hoạt động trên vùng nào"
180
- 3. **Natural routing criterion**: Weighted Rayleigh Quotient measures phần năng lượng input captured bởi expert's subspace
181
-
182
- $$\text{fit}_t(h) = \frac{\sum_{i=1}^{r} \sigma_{t,i}^2 \cdot (v_{t,i}^T h)^2}{\sum_{i=1}^{r} \sigma_{t,i}^2 \cdot \|h\|^2}$$
183
-
184
- 4. **Routing weights**:
185
- $$w_t(h) = \frac{\exp(\text{fit}_t(h) / \tau)}{\sum_{k} \exp(\text{fit}_k(h) / \tau)}$$
186
-
187
- 5. **Properties** (KHÔNG cần OT để achieve):
188
- - **Parameter-free**: 0 learned routing params → **eliminates routing forgetting entirely** (1st weakness solved)
189
- - **Functionally grounded**: Routing based on actual modification energy (2nd weakness solved)
190
- - **Zero overhead**: No MLP, no GPM for routing (3rd weakness solved)
191
- - **Per-input, constant-time**: $O(r \cdot d)$ per task per input — no iterative Sinkhorn
192
- - **Works at batch_size=1**: Không suy biến — hoàn toàn per-input
193
-
194
- 6. **Balance KHÔNG cần thiết**: Trong CL, routing accuracy > balance. Nếu test distribution lệch về task A → ĐÚNG khi route phần lớn tới A. OT bắt balance = routing SAI.
195
-
196
- **Đối sánh trực tiếp OT vs Projection Routing:**
197
-
198
- | Tiêu chí | OT Routing (đã reject) | Projection Routing (đề xuất) |
199
- |----------|----------------------|---------------------------|
200
- | Training | Sinkhorn iterations (iterative) | Softmax (one-shot) |
201
- | Inference batch=1 | Suy biến → argmin | Hoạt động bình thường |
202
- | Balance | Forced (có hại cho CL) | Natural (theo data distribution) |
203
- | Learned params | Cost matrix có thể learned | Zero |
204
- | Lý thuyết | "OT is principled" (cho distribution matching, KHÔNG cho per-input routing) | Weighted Rayleigh Quotient (chính xác cho subspace projection measurement) |
205
- | Complexity | $O(n^2 \cdot K \cdot \text{iters})$ per batch | $O(r \cdot d \cdot K)$ per input |
206
-
207
- ### C3: Elastic Subspace Allocation (ESA) — Giữ nguyên
208
- **Không bị ảnh hưởng bởi phản biện C2, giữ nguyên design.**
209
-
210
- ---
211
-
212
- # PHẦN 4: KHUNG LÝ THUYẾT MỚI — SpecRoute v2
213
-
214
- ## 4.1 Narrative mới (1 paragraph)
215
-
216
- Trong LoRA-based continual learning, routing mechanism đóng vai trò quyết định: nó xác định expert nào xử lý mỗi input tại inference khi task-ID không khả dụng (task-agnostic setting). Chúng tôi nhận diện **3 điểm yếu cốt lõi** của routing hiện tại (GainLoRA): (1) routing dựa trên learned parameters (trans_input MLP, prompt_key) → bị forgetting dù có GPM protection; (2) prompt key encode task identity trong **similarity space** (input giống gì?) thay vì **functional space** (expert nào nên xử lý?), gây suboptimal assignment tại task boundaries; (3) routing overhead tăng linearly với số tasks (extra MLP + GPM costs). Từ quan sát rằng frozen LoRA weights $\Delta W_t = B_t A_t$ chứa **đầy đủ thông tin hình học** về vùng hoạt động (operating subspace) của mỗi expert thông qua SVD, chúng tôi đề xuất **SpecRoute** — framework hoàn toàn parameter-free cho routing, dựa trên spectral signatures và projection-based assignment.
217
-
218
- ## 4.2 Motivation chain (formal)
219
-
220
- ```
221
- [Phân tích] GainLoRA routing: cos(trans_input(x), prompt_key) → sigmoid
222
-
223
- [Điểm yếu 1] Learned routing params (trans_input, prompt_key) → forgetting risk
224
- [Điểm yếu 2] prompt_key = similarity space ≠ functional space → weak at boundaries
225
- [Điểm yếu 3] Extra MLP + 3 GPM sets → overhead scales with tasks
226
-
227
- [Insight] Frozen ΔW = BA → SVD → (V, Σ) = complete operating subspace characterization
228
- Projection fit = weighted Rayleigh quotient = exactly measures "what % of
229
- input energy lies in expert's operating subspace"
230
-
231
- [Đề xuất] C1: Spectral Signatures (characterization)
232
- C2: Projection-Based Routing (parameter-free, functionally grounded)
233
- C3: Elastic Subspace Allocation (fair capacity management)
234
-
235
- [Consequences] ✓ Zero routing params → zero routing forgetting
236
- ✓ Functionally grounded → better boundary routing
237
- ✓ Zero routing overhead → better scalability
238
- ✓ Simpler framework (remove trans_input, prompt_key, routing GPM, memory replay)
239
- ```
240
-
241
- ## 4.3 So sánh chuỗi motivation: OT (cũ) vs Projection Routing (mới)
242
-
243
- ### Chuỗi OT (cũ) — BROKEN:
244
- ```
245
- "OT is principled" → Tại sao cần principled routing? → "Global balance"
246
- → Tại sao cần balance? → "Experts should be used evenly"
247
- → Tại sao? → ??? (Trong CL, balance KHÔNG cần thiết, thậm chí có hại)
248
- → BROKEN: Motivation chain terminates without valid root cause
249
- ```
250
-
251
- ### Chuỗi Projection Routing (mới) — SOLID:
252
- ```
253
- "GainLoRA routing forgets + uses wrong space + adds overhead"
254
- → Root cause: routing relies on LEARNED PARAMETERS SEPARATE FROM experts
255
- → Solution: derive routing FROM expert weights (spectral signatures)
256
- → Mechanism: weighted projection (Rayleigh quotient) — standard linear algebra tool
257
- → Properties: parameter-free, functionally grounded, zero overhead
258
- → SOLID: Motivation chain traces from concrete weakness to principled solution
259
- ```
260
-
261
- ## 4.4 Tại sao softmax đủ? Không cần mechanism phức tạp hơn
262
-
263
- **Argument**: Projection fits đã là "đúng metric" cho routing → softmax chỉ normalize thành probability distribution → KHÔNG cần mechanism phức tạp hơn (OT, learned gating, etc.)
264
-
265
- **Analogy**: Nếu ta có thermometer đo chính xác nhiệt độ, ta KHÔNG cần neural network để quyết định "nóng hay lạnh" — chỉ cần threshold/softmax. Tương tự, projection fit ĐÃ là measurement chính xác cho "expert nào phù hợp" → softmax là đủ.
266
-
267
- **Occam's Razor**: Simple mechanism + correct metric > Complex mechanism + proxy metric
268
-
269
- ## 4.5 Phản biện tiềm năng và trả lời
270
-
271
- **Q1: "Projection routing quá đơn giản, không đủ contribution"**
272
- A1: Contribution không nằm ở complexity mà nằm ở:
273
- - (a) Insight rằng spectral signatures từ frozen weights ĐỦ cho routing (C1)
274
- - (b) Chứng minh rằng parameter-free routing LOẠI BỎ HOÀN TOÀN routing forgetting — đây là lý thuyết guarantee, không phải empirical observation
275
- - (c) Elimination methodology: remove trans_input (MLP) + prompt_key + 3 GPM sets + memory replay → simpler AND better
276
-
277
- **Q2: "Softmax routing đã được biết — đâu là novelty?"**
278
- A2: Novelty nằm ở **routing signal**, không phải routing function:
279
- - Standard MoE: softmax over learned logits → softmax of WHAT matters
280
- - SpecRoute: softmax over weighted projection fits derived from spectral signatures → the FIT computation is novel, softmax is just normalization
281
-
282
- **Q3: "Tại sao weighted projection tốt hơn unweighted?"**
283
- A3: Singular value weighting $\sigma_i^2$ ưu tiên directions mà expert sử dụng MẠNH NHẤT. Nếu expert A sử dụng direction $v_1$ mạnh ($\sigma_1 = 5$) và direction $v_2$ yếu ($\sigma_2 = 0.1$), thì input aligned với $v_1$ nên được route tới A mạnh hơn input aligned với $v_2$. Unweighted projection không capture sự khác biệt này.
284
-
285
- ---
286
-
287
- # PHẦN 5: SUMMARY — THAY ĐỔI SO VỚI IDEA CŨ
288
-
289
- | Thành phần | Idea cũ | Idea mới | Lý do thay đổi |
290
- |-----------|---------|---------|----------------|
291
- | **C1** | Spectral LoRA Signatures | Spectral LoRA Signatures **(tăng cường motivation task boundary)** | Phản biện yêu cầu chứng minh rõ hơn tại sao > prompt key |
292
- | **C2** | ~~Grassmann-OT Routing~~ | **Projection-Based Parameter-Free Routing** | OT thiếu motivation, suy biến tại batch=1, balance không cần cho CL |
293
- | **C3** | Elastic Subspace Allocation | Elastic Subspace Allocation **(giữ nguyên)** | Không bị ảnh hưởng bởi phản biện |
294
- | **Code** | ~~Cần implement OT~~ | **Code đã đúng** (projection routing đã implement) | Code đi trước idea document |
295
-
296
- ## Key changes in narrative:
297
- 1. **Kill "Grassmann-OT"** — thay bằng "Projection-Based Routing"
298
- 2. **Tên C2 mới**: "Subspace Projection Routing" hoặc "Parameter-Free Spectral Routing"
299
- 3. **Motivation chain**: weakness-driven (3 concrete weaknesses of GainLoRA) thay vì novelty-driven ("OT chưa ai dùng")
300
- 4. **Strengthen C1**: thêm task boundary analysis (mục 2.2, Lý do 5)
301
- 5. **Grassmann geometry vẫn giữ**: dùng cho ANALYSIS (đo subspace distance, principal angles) — KHÔNG dùng cho routing mechanism
302
-
303
- ## Không cần thay đổi code:
304
- - `t5_specroute.py`: `compute_spectral_routing()` đã implement projection-based softmax routing ✅
305
- - `cl_trainer_specroute.py`: không có OT code ✅
306
- - `run_t5.py`: không ảnh hưởng ✅
307
-
308
- ## Cần thay đổi idea document:
309
- - Loại bỏ mọi references tới OT, Sinkhorn, transport plan
310
- - C2 = "Projection-Based Routing" with weighted Rayleigh quotient
311
- - Motivation section rewrite theo weakness → insight → solution chain
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
human_working_IdeaMethod_and_discuss/comprehensive_methodology.md DELETED
@@ -1,663 +0,0 @@
1
- # PHÂN TÍCH PHÊ BÌNH VÀ HỆ THỐNG HÓA Ý TƯỞNG TỪ DISCUSSTION.TXT
2
- ## Từ lập luận thô → Kiểm chứng → Phản biện → Đề xuất phương pháp luận
3
-
4
- **Ngày**: 9 tháng 3, 2026
5
- **Phương pháp**: Trích xuất các ý tưởng của người nghiên cứu từ nửa sau discusstion.txt → tách khỏi flattery AI → kiểm chứng từng ý bằng toán + literature → phản biện → hệ thống hóa thành methodology
6
-
7
- **Nguyên tắc**: Tài liệu này *không* re-explain SpecRoute hay GainLoRA. Tài liệu này tập trung vào **các ý tưởng gốc của bạn** — phân tích cái đúng, cái sai, cái bị AI overstate, và xây dựng methodology từ phần solid.
8
-
9
- ---
10
-
11
- ## I. PROBLEM DEFINITION — Không Phải "Improve Routing", Mà Là "What Is The Right Problem?"
12
-
13
- ### 1.1 Setting chính thức
14
-
15
- Cho:
16
- - Pre-trained backbone $W_0 \in \mathbb{R}^{d_{out} \times d_{in}}$ (frozen)
17
- - Chuỗi $T$ tasks đến tuần tự: $\mathcal{T}_1, \mathcal{T}_2, ..., \mathcal{T}_T$
18
- - Mỗi task $\mathcal{T}_t$ có dataset $\mathcal{D}_t = \{(x_i^{(t)}, y_i^{(t)})\}$ chỉ available trong giai đoạn train task $t$
19
-
20
- Constraints:
21
- - **Zero-replay**: Khi train task $t$, không có $\mathcal{D}_{t'}, t' < t$
22
- - **No task-ID at inference**: Tại test time, không biết $x$ thuộc task nào
23
- - **Expandable LoRA**: Mỗi task $t$ thêm LoRA branch $\Delta W_t = B_t A_t$ (rank $r$), freeze sau khi train xong
24
-
25
- Sau $T$ tasks, forward pass cho input $h$:
26
-
27
- $$\text{output}(h) = W_0 h + \sum_{t=1}^{T} w_t(h) \cdot B_t A_t h$$
28
-
29
- trong đó $w_t(h) \in [0,1]$ là routing weight.
30
-
31
- ### 1.2 Ba sub-problems không thể tách rời
32
-
33
- Bất kỳ phương pháp nào trong setting này đều phải giải **đồng thời** 3 bài toán:
34
-
35
- | Sub-problem | Đầu vào | Đầu ra | Constraint |
36
- |-------------|---------|--------|------------|
37
- | **R: Routing** | Input $h$, expert set $\{\Delta W_t\}$ | Weights $w(h) \in \mathbb{R}^T$ | No task-ID, computable from $h$ alone |
38
- | **P: Protection** | New task gradient $\nabla_{\theta} \mathcal{L}_T$ | Projected gradient $\tilde{\nabla}$ | Old experts' functionality preserved |
39
- | **A: Allocation** | Available subspace $M^{\perp}$, new task demand | How much of $M^{\perp}$ to use | Fair capacity across tasks |
40
-
41
- **Tại sao không thể tách rời?**
42
-
43
- Routing quality phụ thuộc vào expert isolation (P), vì nếu new task can thiệp old expert → routing signal bị corrupt. Expert isolation phụ thuộc vào subspace budget (A), vì tight orthogonal constraint → good isolation nhưng limited capacity. Capacity limitation ảnh hưởng chất lượng expert → ảnh hưởng routing relevance.
44
-
45
- Vòng tròn: **R ← P ← A ← R**.
46
-
47
- ### 1.3 Tại sao đây KHÔNG phải bài toán MoE
48
-
49
- Mixture of Experts (trong LLM) và expandable LoRA CL trông giống nhau (nhiều expert, cần routing) nhưng khác biệt bản chất:
50
-
51
- | Aspect | MoE (LLM) | Expandable LoRA CL |
52
- |--------|-----------|---------------------|
53
- | Expert creation | Đồng thời (jointly trained) | Tuần tự (each expert only sees its task) |
54
- | Routing | Learned gating, optimized end-to-end | Cannot learn across tasks (forgetting risk) |
55
- | Load balancing | Desirable (use all experts equally) | NOT desirable (want SELECTIVE activation) |
56
- | Expert overlap | Expected, managed by auxiliary losses | Constrained by orthogonal projection |
57
- | Data at routing time | All data available | Zero-replay → only current data |
58
-
59
- Hệ quả: **Mọi technique của MoE routing (OT balancing, learned gating, regularization) đều không directly applicable.** Cần routing mechanism riêng cho CL setting.
60
-
61
- ---
62
-
63
- ## II. INFORMATION LANDSCAPE — Cái Gì Hợp Lệ, Cái Gì Vi Phạm?
64
-
65
- ### 2.1 Taxonomy of available information
66
-
67
- Sau khi train xong task $t$, trước khi quên $\mathcal{D}_t$, ta có thể extract và lưu:
68
-
69
- | Loại thông tin | Ví dụ | Hợp lệ? | Lý do |
70
- |---------------|-------|---------|-------|
71
- | **Model parameters** | Frozen $A_t, B_t$, GPM bases $U_t$ | ✅ | Là artifact của quá trình train, không phải data |
72
- | **Derived quantities from parameters** | SVD of $\Delta W_t = U_t \Sigma_t V_t^T$ | ✅ | Computed from model params alone |
73
- | **Data statistics** | Mean features $\mu_t$, covariance $\Sigma_t$ | ❌ | Summary of $\mathcal{D}_t$ → violates zero-replay |
74
- | **Distribution parameters** | vMF $(\mu_t, \kappa_t)$ | ❌ | Fitted on $\mathcal{D}_t$ → violates zero-replay |
75
- | **Auxiliary learned params** | Prompt keys, trans_input MLPs | ⚠️ Hợp lệ nhưng có forgetting risk | Phải train → gradient update có thể corrupt old |
76
-
77
- ### 2.2 Phân biệt tinh tế: GPM bases vs data statistics
78
-
79
- GPM computation:
80
- 1. Forward pass data qua LoRA → collect input covariance matrix $C_t \in \mathbb{R}^{d \times d}$
81
- 2. SVD: $C_t = U_t S_t V_t^T$ → lấy principal directions $U_t[:, :k]$
82
- 3. Lưu $U_t[:, :k]$ (directions), BỎ $S_t$ (magnitudes)
83
-
84
- Tại sao h��p lệ? Vì GPM bases encode **hướng (directions)** mà LoRA input hoạt động — đây là property của model + data combination mà cần forward pass để extract. Tuy nhiên, chỉ giữ lại **subspace** (span of directions), không giữ **distribution** (how data distributes within subspace).
85
-
86
- **Lằn ranh đỏ**: Nếu một method lưu mean feature vector $\mu_t = \frac{1}{N}\sum_i f(x_i^{(t)})$ → đây là data statistic, vi phạm zero-replay. Feature Distributions paper (ICML 2025) làm chính xác điều này — cần position rõ ràng.
87
-
88
- ### 2.3 Hệ quả cho routing design
89
-
90
- Từ Section 2.1, routing mechanism chỉ được sử dụng:
91
- 1. **Frozen model parameters**: $\{A_t, B_t\}_{t=1}^{T}$, frozen backbone $W_0$
92
- 2. **Quantities derived from frozen parameters**: SVD, norms, angles, etc.
93
- 3. **Current input** $h$ tại inference time
94
-
95
- Routing **KHÔNG ĐƯỢC** sử dụng:
96
- 1. Learned parameters (prompt keys, gating networks) → forgetting risk
97
- 2. Data statistics từ old tasks (means, distributions) → zero-replay violation
98
- 3. Task labels → no task-ID
99
-
100
- **Proposition 1**: *Trong zero-replay expandable LoRA CL, routing mechanism parameter-free (derived entirely from frozen expert weights + current input) là thỏa mãn tất cả constraints.*
101
-
102
- *Lưu ý*: Đây không có nghĩa learned routing "sai" — GainLoRA dùng learned params + GPM protection cho routing params → hợp lệ nhưng cần thêm mechanism (GPM for trans_input, per-step projection). Parameter-free routing loại bỏ nhu cầu các mechanism phụ này.
103
-
104
- ---
105
-
106
- ## III. EXPERT CHARACTERIZATION — Từ Frozen Weights Đến Task Identity
107
-
108
- ### 3.1 Fundamental question: "Expert này LÀM GÌ?"
109
-
110
- Mỗi frozen expert $\Delta W_t = B_t A_t \in \mathbb{R}^{d_{out} \times d_{in}}$ thực hiện:
111
-
112
- $$h \mapsto \Delta W_t h = B_t (A_t h)$$
113
-
114
- Từ SVD: $\Delta W_t = U_t \Sigma_t V_t^T$, decompose thành:
115
- - $V_t^T h$: **Project input** lên principal input directions (WHAT the expert "looks at")
116
- - $\Sigma_t$: **Scale** each projected component (HOW MUCH the expert cares)
117
- - $U_t$: **Map to output** space (WHERE the expert "writes")
118
-
119
- ### 3.2 Spectral Signature: định nghĩa chính thức
120
-
121
- **Definition**: *Spectral signature* của expert $t$ là cặp:
122
- $$\mathcal{S}_t = \{(v_{t,i}, \sigma_{t,i})\}_{i=1}^{r}$$
123
-
124
- trong đó $v_{t,i}$ là right singular vector thứ $i$ (input direction), $\sigma_{t,i}$ là singular value tương ứng.
125
-
126
- **Tại sao dùng right singular vectors (V) chứ không phải left (U)?**
127
-
128
- Routing quyết định từ **input** $h$ → cần so sánh $h$ với **input directions** mà expert listens to. Right singular vectors $V_t$ chính là "input space receptors" của expert. Left singular vectors $U_t$ encode output space — relevant cho aggregation, không phải routing.
129
-
130
- ### 3.3 Projection Fit: đo lường "expert $t$ relevant tới input $h$ bao nhiêu?"
131
-
132
- **Definition**: *Weighted Projection Fit* của expert $t$ cho input $h$:
133
-
134
- $$\text{fit}_t(h) = \frac{\sum_{i=1}^{r} \sigma_{t,i}^2 (v_{t,i}^T h)^2}{\sum_{i=1}^{r} \sigma_{t,i}^2 \cdot \|h\|^2}$$
135
-
136
- **Giải thích từng thành phần**:
137
- - $(v_{t,i}^T h)^2$: bao nhiêu "năng lượng" của $h$ nằm theo hướng $v_{t,i}$
138
- - $\sigma_{t,i}^2$: expert coi trọng hướng $v_{t,i}$ bao nhiêu (singular values lớn = modification mạnh)
139
- - $\|h\|^2$: chuẩn hóa
140
- - Tử số: tổng weighted projection energy
141
- - Mẫu số: maximum possible (khi $h$ nằm hoàn toàn trong span($V_t$))
142
-
143
- **Tính chất toán học**:
144
- - $\text{fit}_t(h) \in [0, 1]$
145
- - $\text{fit}_t(h) = 1 \iff h \in \text{span}(V_t)$ và $h$ aligned với dominant singular vectors
146
- - $\text{fit}_t(h) = 0 \iff h \perp \text{span}(V_t)$ (expert hoàn toàn không "thấy" input)
147
-
148
- **Liên hệ với Rayleigh Quotient**:
149
-
150
- Nếu ta define $M_t = V_t \text{diag}(\sigma_t^2) V_t^T$ (PSD matrix), thì:
151
-
152
- $$\text{fit}_t(h) = \frac{h^T M_t h}{\text{tr}(M_t) \cdot h^T h}$$
153
-
154
- Đây chính là **normalized Rayleigh quotient** — công cụ chuẩn trong spectral theory, KHÔNG phải construction ad hoc.
155
-
156
- ### 3.4 Tại sao projection fit là "đúng" cho bài toán này? (Và tại sao nó có thể "sai")
157
-
158
- **Tại sao đúng (theoretical argument)**:
159
-
160
- 1. **Respect expert structure**: fit_t(h) được derive trực tiếp từ SVD of expert weights — encode what the expert WAS TRAINED to do.
161
-
162
- 2. **Per-input**: Mỗi $h$ khác nhau cho projection fit khác nhau → supports mixed-task batches (crucial for real inference).
163
-
164
- 3. **Parameter-free**: Computed from frozen quantities + current input → no forgetting risk.
165
-
166
- 4. **Discriminative by construction**: Nếu experts operate trên orthogonal input subspaces (guaranteed approximately by GPM), thì:
167
- $$\text{span}(V_t) \approx \perp \text{span}(V_{t'}), \quad t \neq t'$$
168
- $$\Rightarrow \text{fit}_t(h) \text{ high} \implies \text{fit}_{t'}(h) \text{ low for } t' \neq t$$
169
-
170
- **Tại sao có thể sai (honest caveats)**:
171
-
172
- 1. **Modification energy ≠ modification quality**: $\sigma_{t,i}^2 (v_{t,i}^T h)^2$ đo expert sẽ **modify mạnh** input $h$ theo hướng $v_{t,i}$. Nhưng modification mạnh KHÔNG có nghĩa là modification ĐÚNG. Expert có thể modify mạnh nhưng sai hướng output.
173
-
174
- *Counter-argument*: Expert được train trên task $t$ → modification patterns encode task-relevant transformations. Projection fit cao → input tương tự training distribution → modification likely correct. Nhưng đây là **assumption**, không phải guarantee.
175
-
176
- 2. **GPM orthogonality là approximate**: Thực tế, null-space projection không hoàn hảo. Subspace overlap nhỏ vẫn tồn tại → discriminative property bị weakened.
177
-
178
- 3. **Mean pooling loses structure**: Cả GainLoRA và SpecRoute dùng `avg_inputs_embeds = mean(token_embeddings)` cho routing. Hai sequences có content khác nhau nhưng similar average → misrouted.
179
-
180
- ---
181
-
182
- ## IV. ROUTING MECHANISM — Derive from Principles
183
-
184
- ### 4.1 Formulation: routing as maximum likelihood expert assignment
185
-
186
- Cho input $h$, routing weights $w(h) = [w_1(h), ..., w_T(h)]$ sao cho weighted combination approximates oracle:
187
-
188
- $$\sum_{t=1}^{T} w_t(h) \cdot \Delta W_t h \approx \Delta W_{\text{oracle}(h)} h$$
189
-
190
- trong đó $\text{oracle}(h)$ là expert "đúng" (trained on task mà $h$ thuộc về).
191
-
192
- ### 4.2 Competitive routing (softmax) vs. Independent gating (sigmoid)
193
-
194
- **Independent gating (GainLoRA)**:
195
-
196
- $$w_t(h) = |2\sigma(4 \cdot \text{cos}(k_t, f_t(h))) - 1| \quad \in [0, 1] \text{ independently}$$
197
-
198
- *Ưu điểm*: Cho phép multiple experts fire đồng thời (useful nếu task mới overlap concept cũ).
199
- *Nhược điểm*:
200
- - $\sum_t w_t(h) \neq 1$ → modification magnitude thay đổi theo số experts → scale instability
201
- - Tất cả experts có thể fire simultaneously → blurring
202
- - Cho phép $\sum_t w_t = 0$ → no modification at all → information loss
203
-
204
- **Competitive routing (softmax)**:
205
-
206
- $$w_t(h) = \frac{\exp(\text{fit}_t(h) / \tau)}{\sum_{t'} \exp(\text{fit}_{t'}(h) / \tau)}$$
207
-
208
- *Ưu điểm*:
209
- - $\sum_t w_t(h) = 1$ → constant modification energy → stable training
210
- - Forces **competition** → natural selection of most relevant expert(s)
211
- - $\tau \to 0$: hard routing (winner-take-all); $\tau \to \infty$: uniform averaging
212
-
213
- *Nhược điểm*:
214
- - Phải assign TOÀN BỘ weight → nếu input không thuộc task nào rõ ràng, vẫn phải "chọn"
215
- - Soft assignment → mỗi expert vẫn contribute dù ít → small interference
216
-
217
- **Trong CL setting**: Competitive routing phù hợp hơn vì:
218
- 1. Tasks non-overlapping → mỗi input thuộc đúng 1 task → competition là đúng inductive bias
219
- 2. Scale stability quan trọng hơn flexibility (15 tasks × 48 layers × 2 projections = many routing decisions)
220
- 3. GPM already ensures expert isolation → independent gating phải học isolation from scratch (redundant)
221
-
222
- ### 4.3 Thuật toán routing hoàn chỉnh
223
-
224
- ```
225
- INPUT: h ∈ R^{d_model} (averaged input embedding)
226
- {S_t}_{t=1}^{T} (spectral signatures: {V_t, σ_t} for each layer, each projection)
227
- τ > 0 (temperature)
228
-
229
- FOR EACH ENCODER LAYER l, PROJECTION TYPE p ∈ {Q, V}:
230
- FOR EACH TASK t = 1, ..., T:
231
- V_t^{(l,p)}, σ_t^{(l,p)} = S_t[l, p] # frozen spectral signature
232
- proj = V_t^{(l,p)} h # project input onto expert's input space
233
- fit_t^{(l,p)} = Σ_i σ²_{t,i} proj²_i / (Σ_i σ²_{t,i} · ||h||²)
234
- END FOR
235
-
236
- # Average fit across layers (global routing decision)
237
- fit_t = mean over (l, p) of fit_t^{(l,p)}
238
-
239
- # Competitive routing
240
- w(h) = softmax([fit_1, ..., fit_T] / τ)
241
-
242
- RETURN w(h) ∈ R^T, Σ_t w_t = 1
243
- ```
244
-
245
- **Lưu ý implementation**: Trong code hiện tại, fit scores được average chỉ over encoder layers (consistent — routing decision từ encoder, apply cho cả decoder). Decoder không tham gia routing computation.
246
-
247
- ### 4.4 Special case: current task (đang train)
248
-
249
- Khi đang train task $T$, LoRA weights $(A_T, B_T)$ chưa frozen → chưa có spectral signature.
250
-
251
- **Giải pháp hiện tại**: Dùng rows of $A_T$ trực tiếp (thay vì SVD) — vì khi $r$ nhỏ (=4), $\Delta W = BA$ có rank $r$, và $A$ (khi normalized) approximate right singular vectors.
252
-
253
- **Giải thích**: Cho $\Delta W = BA$, nếu $B^T B = I$ (orthonormal), thì SVD of $\Delta W$ có $V = $ rows of $A$ (up to scaling). Trong thực tế $B^T B \neq I$, nên đây là approximation. Nhưng tại $r=4$, sai số nhỏ.
254
-
255
- **Hệ quả**: Fit cho current task:
256
- $$\text{fit}_T(h) = \frac{\|A_T h\|^2}{r \cdot \|h\|^2}$$
257
-
258
- (unweighted, vì chưa có singular values — treat all directions equally)
259
-
260
- ---
261
-
262
- ## V. ANTI-FORGETTING — Gradient Projection as Structural Isolation
263
-
264
- ### 5.1 Bài toán: bảo vệ expert cũ khi train expert mới
265
-
266
- Khi train task $T$, gradient $\nabla_{A_T} \mathcal{L}_T$ có thể vô tình interfere với experts cũ thông qua **shared representation space** (cùng backbone $W_0$, cùng input space $\mathbb{R}^{d_{in}}$).
267
-
268
- Cách interference xảy ra:
269
- 1. Input $h$ cho old task $t$ đi qua new expert $T$ (routing error)
270
- 2. New expert $T$ train trên subspace overlap với old expert $t$ → modify shared directions
271
-
272
- ### 5.2 GPM (Gradient Projection Memory) — mechanism chính
273
-
274
- **Idea**: Đảm bảo new LoRA operates trong **null-space** của old LoRA input subspaces.
275
-
276
- **Formalization**: Gọi $\mathcal{M}_t = \text{span}(U_t^{GPM})$ là input subspace that expert $t$ uses. Accumulated protected subspace:
277
-
278
- $$\mathcal{M}_{1:T-1} = \text{span}\left(\bigcup_{t=1}^{T-1} U_t^{GPM}\right)$$
279
-
280
- *(incremental — có thể compute bằng progressive SVD update)*
281
-
282
- New LoRA $A$ initialization:
283
-
284
- $$A_T = A_T^{init} - \text{Proj}_{\mathcal{M}_{1:T-1}}(A_T^{init})$$
285
-
286
- trong đó $\text{Proj}_{\mathcal{M}}(X) = U_{\mathcal{M}} U_{\mathcal{M}}^T X$ (project onto old subspace, then subtract).
287
-
288
- **Guarantee**: $A_T h \perp \mathcal{M}_{1:T-1}$ for all $h$, i.e., new LoRA input activations are orthogonal to old LoRA input activations.
289
-
290
- ### 5.3 Per-step projection (cần thiết khi có learned routing params)
291
-
292
- GainLoRA có `trans_input` (MLP) và `prompt_key` là learned parameters → mỗi optimizer step phải project gradient update:
293
-
294
- ```python
295
- # After optimizer.step():
296
- new_weight = current_weight - project_onto_old_subspace(current_weight - old_weight)
297
- ```
298
-
299
- SpecRoute loại bỏ learned routing params → **KHÔNG CẦN** per-step projection cho routing. Chỉ cần GPM cho LoRA layers.
300
-
301
- **Hệ quả thực tế**: SpecRoute training loop đơn giản hơn significatv (no custom `_inner_training_loop`, no per-step weight manipulation, use base class trainer).
302
-
303
- ### 5.4 Interaction giữa GPM và routing
304
-
305
- **Key insight**: GPM + spectral routing tạo **dual protection**:
306
-
307
- 1. **GPM** (structural): New expert operates in orthogonal subspace → CAN'T interfere with old expert outputs
308
- 2. **Spectral routing** (functional): Old-task inputs routed to old experts → WON'T be processed by new expert
309
-
310
- Individually, mỗi mechanism leaky:
311
- - GPM alone: orthogonality approximate, small interference possible
312
- - Routing alone: misrouting → wrong expert processes input
313
-
314
- Together: even if routing makes small mistake, GPM ensures interference is orthogonal (small). Even if GPM leaks slightly, routing directs input to correct expert.
315
-
316
- **Điều này nghĩa là**: Ta không cần perfect routing NOR perfect orthogonality — chỉ cần cả hai "tốt vừa đủ" để bù cho nhau.
317
-
318
- ---
319
-
320
- ## VI. SUBSPACE ALLOCATION — The Honest Hard Problem
321
-
322
- ### 6.1 Bài toán capacity
323
-
324
- Input space $\mathbb{R}^{d_{in}}$ (d=1024 cho T5-Large). Mỗi task claim subspace of dimension ≤ $k_t$ cho GPM. Available null-space:
325
-
326
- $$\dim(\mathcal{M}_{1:T}^{\perp}) = d - \dim(\mathcal{M}_{1:T}) \geq d - \sum_{t=1}^{T} k_t$$
327
-
328
- Với $T = 15$ tasks, nếu mỗi task claim $k = 60$ dims: $1024 - 900 = 124$ dims remaining → **tight but feasible**.
329
-
330
- ### 6.2 Threshold controls capacity
331
-
332
- GPM threshold $\epsilon$ controls $k_t$: higher threshold → more directions retained → larger $k_t$ → faster exhaustion.
333
-
334
- | Strategy | Formula | Effect |
335
- |----------|---------|--------|
336
- | **GainLoRA original** | $\epsilon_t = (1-\epsilon_0) \cdot t/T + \epsilon_0$ | Tăng dần → early tasks protect nhiều, late tasks protect ít. **Unfair**: early tasks "chiếm" subspace disproportionately. |
337
- | **Constant threshold** (SpecRoute) | $\epsilon_t = \epsilon_0, \forall t$ | Mỗi task protect cùng tỷ lệ. **Fair** nhưng vẫn linear depletion. |
338
- | **Importance-weighted** (NOT YET IMPLEMENTED) | $k_t$ allocated based on task complexity | Potentially optimal nhưng cần metric cho "importance" |
339
-
340
- ### 6.3 Thẳng thắn: ESA (Elastic Subspace Allocation) hiện tại yếu
341
-
342
- Cái gọi là "ESA" trong SpecRoute thực tế chỉ là **thay đổi threshold schedule từ tăng dần sang hằng số**. Đây là hyperparameter change, không phải algorithmic contribution.
343
-
344
- **Nếu muốn ESA thực sự contributes**, cần ít nhất 1 trong:
345
-
346
- 1. **Importance-weighted protection**: Singular values lớn ($\sigma_i$ lớn) → direction quan trọng cho expert → protect mạnh hơn. Singular values nhỏ → direction ít quan trọng → có thể release cho future tasks.
347
-
348
- $$k_t = \min\{k : \sum_{i=1}^{k} \sigma_i^2 / \sum_j \sigma_j^2 \geq \epsilon\}$$
349
-
350
- Hiện tại SpecRoute KHÔNG dùng singular values trong GPM decision — chỉ dùng input covariance SVD (khác).
351
-
352
- 2. **Subspace recycling**: Detect directions trong $\mathcal{M}_{1:T-1}$ mà không expert nào dùng actively (routing weight luôn ~0) → release.
353
-
354
- 3. **Adaptive threshold based on remaining capacity**: $\epsilon_t = f(d - \dim(\mathcal{M}_{1:t-1}))$ — threshold giảm khi subspace cạn → force later tasks to be more selective.
355
-
356
- **Status**: Cả 3 đều chưa implement. Bất kỳ cái nào nếu implement + ablation study → mới thực sự là contribution.
357
-
358
- ---
359
-
360
- ## VII. REPRESENTATION DRIFT — The Elephant in the Room
361
-
362
- ### 7.1 Vấn đ��
363
-
364
- Spectral signatures $\{V_t, \sigma_t\}$ frozen → KHÔNG drift. Nhưng input embedding $h$ **CÓ drift**.
365
-
366
- **Cơ chế drift**: Trong encoder/decoder architecture, output of layer $l$:
367
-
368
- $$h^{(l+1)} = f\left(W_0^{(l)} h^{(l)} + \sum_t w_t(h^{(0)}) \cdot B_t^{(l)} A_t^{(l)} h^{(l)}\right)$$
369
-
370
- Khi thêm LoRA branch mới (task $T+1$), $w_t$ thay đổi (vì thêm competitor) → $h^{(l+1)}$ thay đổi → cascade qua layers.
371
-
372
- **Hệ quả**: Projection fit $\text{fit}_t(h)$ tại task $T+1$ khác so với task $T$, dù $V_t, \sigma_t$ giữ nguyên — vì $h$ thay đổi.
373
-
374
- ### 7.2 So sánh: GainLoRA Handle drift bằng cách nào?
375
-
376
- GainLoRA dùng **previous_trans_input** — frozen MLP snapshot per task. Mỗi old task $t$ có riêng:
377
-
378
- $$f_t(x) = \text{SiLU}(W^{out}_t \cdot \text{SiLU}(W^{in}_t \cdot x))$$
379
-
380
- Routing: compute $f_t(\bar{h})$ rồi cosine similarity với frozen prompt_key $k_t$.
381
-
382
- **Ý tưởng**: Mỗi expert "nhìn" input qua "lăng kính" riêng (frozen MLP), expect cosine similarity patterns từ khi nó được train. Input có thể drift, nhưng prompt_key + trans_input snapshot là "matched pair" → somehow robust.
383
-
384
- **Nhưng vẫn leaky**: $\bar{h}$ (average input embedding) vẫn drift → $f_t(\bar{h})$ output khác → cosine similarity thay đổi. Frozen MLP + frozen key KHÔNG fully compensate cho input drift, chỉ reduce sensitivity.
385
-
386
- ### 7.3 SpecRoute: explicitly acknowledge drift, don't pretend to solve it
387
-
388
- SpecRoute claim "zero routing forgetting" — chính xác hơn nên nói:
389
-
390
- > **"Zero parameter drift in routing mechanism"** — routing computation không có learned parameters nên không có parameter forgetting. Nhưng **representation drift** (thay đổi trong input embeddings do accumulated LoRA effects) vẫn tồn tại.
391
-
392
- **Tại sao representation drift có thể manageable (hypothesis, chưa proven)**:
393
-
394
- 1. **LoRA rank nhỏ** ($r = 4$): Mỗi task chỉ modify rank-4 subspace. Total modification after 15 tasks: rank ≤ 60 (nếu orthogonal). Trong space 1024-dim, đây là ~6% dimensions → $h$ drift nhỏ.
395
-
396
- 2. **GPM ensures orthogonal modification**: New task modify directions mà old task KHÔNG dùng → old task's projection space ít bị ảnh hưởng.
397
-
398
- 3. **Backbone frozen**: $W_0$ không thay đổi → bulk of transformation stable. LoRA chỉ thêm residual.
399
-
400
- **Cần kiểm chứng thực nghiệm**:
401
- - Đo $\|\text{fit}_t(h) \text{ at task } T - \text{fit}_t(h) \text{ at task } t\|$ qua tasks
402
- - If drift small → hypothesis confirmed
403
- - If drift large → need explicit drift compensation mechanism
404
-
405
- ### 7.4 Potential mitigation (chưa implement, nhưng well-defined)
406
-
407
- Nếu representation drift nghiêm trọng, options:
408
-
409
- 1. **Snapshot input normalization**: Store $\mu_t^{proj}, \sigma_t^{proj}$ (mean/std of projected features at training time) → normalize at inference: $\hat{h} = (h - \mu_t^{proj})/\sigma_t^{proj}$ trước khi compute fit.
410
- - **Vấn đề**: $\mu_t^{proj}$ là data statistic → có thể vi phạm zero-replay
411
- - **Counter**: chỉ cần mean/std of LoRA LAYER output (model output, not data) — ambiguous territory
412
-
413
- 2. **Relative fit**: Thay vì absolute fit $\text{fit}_t(h)$, dùng relative ranking. Distribution shift affects all fits similarly → ranking preserved.
414
- - Softmax inherently does this partially (chỉ care ordering, not absolute values)
415
-
416
- 3. **Self-calibration**: Periodically (every $k$ tasks), recompute spectral signatures on new LoRA weights.
417
- - Nhưng old LoRA weights frozen → signatures không thay đổi → chỉ current task affected → not helpful
418
-
419
- ---
420
-
421
- ## VIII. THE COMPLETE ALGORITHM — End to End
422
-
423
- ### 8.1 Training phase (cho task $T$)
424
-
425
- ```
426
- INPUTS: Pre-trained backbone W₀
427
- Frozen experts {(A_t, B_t)}_{t=1}^{T-1}
428
- Spectral signatures {S_t}_{t=1}^{T-1}
429
- GPM bases {M_{1:T-1}}
430
- Training data D_T
431
-
432
- STEP 1 — Initialize new LoRA branch:
433
- A_T^{init} ← random (Kaiming)
434
- A_T ← A_T^{init} - Proj_{M_{1:T-1}}(A_T^{init}) # null-space projection
435
- B_T ← 0 OR random (scaled small)
436
-
437
- STEP 2 — Train with routing:
438
- for each batch (x, y) in D_T:
439
- h̄ ← mean_pool(encoder_embed(x)) # average input embedding
440
- w(h̄) ← spectral_routing(h̄, {S_t}_{t<T}, A_T) # Section IV.3
441
-
442
- for each layer l:
443
- LoRA_output_l ← Σ_t w_t(h̄) · B_t^(l) A_t^(l) h^(l) # weighted aggregation
444
- h^(l+1) ← layer_l(h^(l)) + LoRA_output_l
445
-
446
- loss ← task_loss(output, y)
447
- loss.backward()
448
-
449
- # Only A_T and B_T have gradients (others frozen)
450
- optimizer.step() # No per-step projection needed
451
-
452
- STEP 3 — End of task:
453
- Freeze A_T, B_T
454
-
455
- # Compute spectral signature
456
- ΔW_T = B_T @ A_T
457
- U, Σ, V^T = SVD(ΔW_T)
458
- S_T = {V[:r], Σ[:r]} # store for future routing
459
-
460
- # Update GPM
461
- Compute input covariance from forward passes
462
- SVD → extract top-k directions
463
- M_{1:T} = M_{1:T-1} ∪ new_directions
464
-
465
- Save: {A_T, B_T, S_T, M_{1:T}}
466
- Discard: D_T (zero-replay)
467
- ```
468
-
469
- ### 8.2 Inference phase
470
-
471
- ```
472
- INPUT: Test sample x (no task-ID)
473
-
474
- STEP 1 — Encode + route:
475
- h̄ ← mean_pool(encoder_embed(x))
476
- w(h̄) ← softmax([fit_1(h̄), ..., fit_T(h̄)] / τ)
477
-
478
- STEP 2 — Forward with routing:
479
- for each layer l:
480
- LoRA_output_l ← Σ_t w_t(h̄) · B_t^(l) A_t^(l) h^(l)
481
- h^(l+1) ← layer_l(h^(l)) + LoRA_output_l
482
-
483
- STEP 3 — Decode output
484
- ```
485
-
486
- ### 8.3 Complexity analysis
487
-
488
- | Operation | GainLoRA | SpecRoute | Comment |
489
- |-----------|----------|-----------|---------|
490
- | Routing computation | $O(T \cdot d \cdot h_{mlp} + T \cdot d)$ | $O(T \cdot r \cdot d \cdot L)$ | SpecRoute: matrix-vector per layer per task |
491
- | Trainable routing params | $O(2 \cdot d \cdot h_{mlp} + d)$ per task | $0$ | SpecRoute: no routing params |
492
- | GPM targets | LoRA + trans_input + prompt_key | LoRA only | SpecRoute: simpler GPM |
493
- | Per-step overhead | Null-space projection for routing params | None | SpecRoute: standard training loop |
494
- | End-of-task | GPM + freeze + save snapshots | GPM + freeze + SVD | SVD is $O(d_{out} \cdot d_{in} \cdot r)$ — cheap for small $r$ |
495
- | Memory per task | $A_t, B_t$ + prompt_key + trans_input weights | $A_t, B_t$ + spectral sig $(V_t, \sigma_t)$ | Similar; spectral sig slightly smaller than trans_input |
496
-
497
- ---
498
-
499
- ## IX. POSITIONING IN THE LANDSCAPE
500
-
501
- ### 9.1 So sánh phương pháp-agnostic
502
-
503
- | Criterion | GainLoRA | InfLoRA | MINGLE | Feature Dist. | TreeLoRA | SpecRoute |
504
- |-----------|----------|---------|--------|---------------|----------|-----------|
505
- | Routing type | Learned (MLP+key) | None (equal weight) | Learned (MoE gate) | Feature similarity | Gradient similarity | Spectral projection |
506
- | Routing forgetting risk | ⚠️ Managed by GPM | N/A | ⚠️ Managed by EMA | ❌ Stores data stats | ⚠️ Needs old gradients | ✅ Parameter-free |
507
- | Zero-replay | ✅ | ✅ | ✅ | ⚠️ Stores mean features | ⚠️ Needs gradient similarity | ✅ |
508
- | Anti-forgetting | GPM on LoRA + routing | Null-space init | OGP (orthogonal) | None explicit | None explicit | GPM on LoRA only |
509
- | Subspace allocation | Increasing threshold | Fixed threshold | EMA relaxation | N/A | N/A | Constant threshold |
510
- | Aggregation | Weighted sum (sigmoid) | Equal sum | Top-k MoE | Weighted sum | Tree selection | Weighted sum (softmax) |
511
-
512
- ### 9.2 Novelty assessment (honest)
513
-
514
- **Clearly novel**:
515
- - Using SVD of frozen LoRA weights (not data features, not learned keys) as routing signal — no prior work does exactly this.
516
- - Elimination of ALL learned routing parameters in expandable LoRA CL — GainLoRA, MINGLE both require learned routing.
517
-
518
- **Partially novel**:
519
- - Weighted Rayleigh quotient for routing — Rayleigh quotient is textbook, but application to LoRA-CL routing is new.
520
- - Demonstrating that parameter-free routing + GPM = sufficient (if it works empirically) — conceptual contribution.
521
-
522
- **NOT novel**:
523
- - GPM/null-space projection — from InfLoRA, GainLoRA
524
- - Expandable LoRA architecture — from O-LoRA, InfLoRA, GainLoRA
525
- - Softmax routing in MoE-like structures — foundational MoE work
526
- - SVD as analysis tool for LoRA — SD-LoRA analyzes magnitude/direction
527
-
528
- **Closest competitor**: Feature Distributions (ICML 2025) — stores characterization per expert, uses similarity for routing. Key difference: they store data-level features (mean activation vectors), we store weight-level signatures (SVD of frozen params). They arguably violate or stretch zero-replay; we don't.
529
-
530
- ---
531
-
532
- ## X. WHAT NEEDS TO BE TRUE — Assumptions Checklist
533
-
534
- Mỗi assumption dưới đây CẦN PHẢI TRUE để methodology work. Mỗi cái cần empirical validation.
535
-
536
- ### 10.1 Core assumptions
537
-
538
- | # | Assumption | Status | How to test |
539
- |---|-----------|--------|-------------|
540
- | A1 | Projection fit correlates with "correct expert" assignment | ❓ UNTESTED | Compute fit accuracy on task-boundary evaluation sets |
541
- | A2 | GPM+routing dual protection sufficient to prevent forgetting | ❓ UNTESTED | Compare forgetting metric with vs without routing |
542
- | A3 | Representation drift is small enough to not corrupt routing | ❓ UNTESTED | Track fit_t(h) variance across tasks for fixed test inputs |
543
- | A4 | mean_pool captures enough task-relevant signal for routing | ❓ UNTESTED | Compare with max_pool, CLS token, attention-weighted pool |
544
- | A5 | Softmax temperature τ is not overly sensitive | ❓ UNTESTED | τ ablation study |
545
- | A6 | rank r=4 is sufficient for spectral signatures to be discriminative | ❓ UNTESTED | r ablation |
546
-
547
- ### 10.2 Implied assumptions (from GainLoRA that we inherit)
548
-
549
- | # | Assumption | Status |
550
- |---|-----------|--------|
551
- | A7 | T5-Large backbone generalizable to other architectures (LLaMA) | Partially tested (GainLoRA has LLaMA configs) |
552
- | A8 | 15 tasks is within GPM capacity for d=1024 | Expected (d=1024 >> 15*r*2) |
553
- | A9 | Q and V projections sufficient (not K) | From GainLoRA design, standard in LoRA literature |
554
-
555
- ---
556
-
557
- ## XI. EXPERIMENTAL VALIDATION PLAN
558
-
559
- ### 11.1 What the experiments MUST show (not "nice to have")
560
-
561
- 1. **SpecRoute vs. GainLoRA on identical setting**: Same data, same preprocessing, same evaluation protocol. Show routing improves OR at least matches.
562
-
563
- 2. **Routing accuracy analysis**: On held-out validation sets of old tasks, what fraction of inputs are correctly routed (highest weight to correct expert)?
564
-
565
- 3. **Forgetting curve**: Plot per-task performance after each subsequent task. Compare degradation.
566
-
567
- 4. **Representation drift measurement**: For fixed test inputs from task $t$, track $\text{fit}_t(h)$ value as tasks $t+1, ..., T$ are added. If fit_t(h) drops significantly → drift is a problem.
568
-
569
- ### 11.2 Ablation studies (ranked by importance)
570
-
571
- 1. **Routing mechanism**: Spectral projection vs. prompt key (use SpecRoute architecture but GainLoRA routing) vs. random routing vs. uniform routing
572
- 2. **Aggregation**: Softmax vs. sigmoid vs. top-1 hard routing
573
- 3. **Temperature τ**: Sweep from 0.01 to 10.0
574
- 4. **Threshold ε**: 0.99, 0.995, 0.999, increasing schedule, constant
575
- 5. **Mean pool vs. alternatives**: CLS token, max pool, attention-weighted
576
-
577
- ### 11.3 Analysis experiments (for paper)
578
-
579
- 1. **Visualization**: t-SNE of spectral signatures across tasks — do they cluster meaningfully?
580
- 2. **Routing weight heatmaps**: Per-task routing weight distribution over time
581
- 3. **Subspace dimension tracking**: Plot $\dim(\mathcal{M}_{1:t})$ vs $t$ — how fast does subspace fill?
582
- 4. **Singular value spectra**: Plot $\sigma_1, ..., \sigma_r$ for each task — do they vary meaningfully?
583
-
584
- ---
585
-
586
- ## XII. HONEST ASSESSMENT — Strengths and Weaknesses of This Methodology
587
-
588
- ### 12.1 Strengths
589
-
590
- 1. **Principled derivation**: Method follows from constraints (zero-replay, no task-ID) → information landscape → natural choice. Not "proposed then justified".
591
-
592
- 2. **Simplicity**: Removes learned routing entirely. Training loop simplifies. Fewer hyperparameters. Fewer mechanisms to maintain.
593
-
594
- 3. **Architectural alignment**: Routing signal comes FROM the experts themselves — not from separate parameters that might disagree with expert function.
595
-
596
- 4. **Dual protection theory**: GPM + routing => redundant safety mechanisms that compensate for each other's imperfections.
597
-
598
- ### 12.2 Weaknesses
599
-
600
- 1. **No empirical validation yet**: The entire framework is theoretical. Until experiments confirm, every section above is hypothesis.
601
-
602
- 2. **Representation drift is real, unaddressed**: We acknowledge it, hypothesize it's small, but don't solve it. If drift is large, the methodology needs significant revision.
603
-
604
- 3. **ESA is weak**: Subspace allocation is essentially a hyperparameter. This is the weakest part of the framework.
605
-
606
- 4. **Mean pooling is a bottleneck**: Entire routing decision based on 1 vector (average embedding). Rich sequence information lost.
607
-
608
- 5. **Modification energy ≠ quality**: Fundamental gap between "expert will modify input strongly" and "expert will modify input correctly". This is assumption, not theorem.
609
-
610
- 6. **Only tested on NLP**: Setting is specific (T5, NLP tasks). Generalization to vision/multimodal unknown.
611
-
612
- ### 12.3 What would KILL this approach
613
-
614
- Red flags that would indicate fundamental issues:
615
- - If routing accuracy is not significantly better than random → spectral signatures are not discriminative
616
- - If performance degrades significantly on later tasks (>2% compared to task-specific training) → GPM + routing dual protection insufficient
617
- - If representation drift causes >10% routing accuracy drop between task $t$ and task $T$ → need drift compensation
618
- - If τ has narrow "sweet spot" and small deviations cause large performance changes → method not robust
619
-
620
- ---
621
-
622
- ## XIII. RELATIONSHIP TO method.md (RTA Framework)
623
-
624
- `method.md` describes RTA (Riemannian Topological Alignment) — a DIFFERENT direction involving:
625
- - Bingham distributions (anisotropic) on hypersphere
626
- - Riemannian KL divergence for topology preservation
627
- - Parallel transport for drift correction
628
-
629
- **Comparison**:
630
-
631
- | Aspect | SpecRoute (this doc) | RTA (method.md) |
632
- |--------|---------------------|-----------------|
633
- | Paradigm | Expandable LoRA + routing | Feature distribution preservation |
634
- | Anti-forgetting | GPM (subspace isolation) | Riemannian distillation + topology lock |
635
- | Drift handling | Acknowledge but don't solve | Parallel transport correction |
636
- | Data requirement | Zero-replay compliant | Requires distribution parameters (violates?) |
637
- | Maturity | Code exists, needs experiments | Purely theoretical |
638
- | Complexity | Low (SVD + softmax) | High (manifold computation, Bingham fitting) |
639
-
640
- **Key question**: RTA addresses representation drift explicitly (via parallel transport). Could elements of RTA complement SpecRoute's weakness? Possibly — but would need to verify that Bingham fitting doesn't violate zero-replay, and that parallel transport is tractable for 1024-dim space.
641
-
642
- ---
643
-
644
- ## XIV. CONCLUSION — WHAT THIS METHODOLOGY IS AND ISN'T
645
-
646
- ### What it IS:
647
- - A principled framework that starts from problem constraints and derives method choices
648
- - An architecture-agnostic approach to routing in expandable LoRA CL
649
- - A clear specification of what information is legitimate under zero-replay
650
- - An honest assessment of assumptions, limitations, and open problems
651
-
652
- ### What it ISN'T:
653
- - A proven method (no experiments)
654
- - A complete solution to all CL problems (subspace allocation, representation drift still open)
655
- - A guaranteed improvement over GainLoRA (empirical question)
656
- - A paper-ready manuscript (needs experiments, related work section, polished writing)
657
-
658
- ### Priority actions (ordered):
659
- 1. **Run SpecRoute vs. GainLoRA on SuperNI Order 1** — if doesn't match or beat GainLoRA, revisit fundamentals
660
- 2. **Measure routing accuracy** — confirm spectral signatures are actually discriminative
661
- 3. **Measure representation drift** — confirm it's manageable
662
- 4. **Develop ESA properly** — importance-weighted protection
663
- 5. **Write paper** — only after 1-4 confirm methodology
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
human_working_IdeaMethod_and_discuss/critical_analysis_report.md DELETED
@@ -1,245 +0,0 @@
1
- # BÁO CÁO PHÂN TÍCH PHÊ BÌNH: Quá Trình Xây Dựng Ý Tưởng SpecRoute
2
- ## Đánh giá trung thực các lập luận trong discusstion.txt và các tài liệu liên quan
3
-
4
- **Ngày**: 9 tháng 3, 2026
5
- **Phương pháp**: Đọc toàn bộ tài liệu → tách lập luận của người nghiên cứu khỏi lời nịnh bợ AI → kiểm chứng chéo với literature và source code → đánh giá
6
-
7
- ---
8
-
9
- ## 1. BỐI CẢNH TỔNG QUAN
10
-
11
- Quá trình phát triển ý tưởng trải qua 3 giai đoạn:
12
-
13
- | Giai đoạn | Ý tưởng | Tài liệu |
14
- |-----------|---------|----------|
15
- | V1 | OT-SIGN: vMF signatures + OT routing + anti-drift loss | `proposal_gainlora_upgrade.md` |
16
- | V2 | SpecRoute: Spectral signatures + OT/Grassmann routing + ESA | `revised_idea_analysis.md` |
17
- | V3 | SpecRoute v2: Spectral signatures + Projection routing (softmax) + ESA | `C2_analysis_and_revision.md`, `SPECROUTE_IDEA.md` |
18
-
19
- Quá trình này cho thấy khả năng tự phê bình tốt — mỗi phiên bản sửa lỗi của phiên bản trước.
20
-
21
- ---
22
-
23
- ## 2. NHỮNG LẬP LUẬN ĐÚNG (Verified Correct)
24
-
25
- ### 2.1 Vi phạm zero-replay của vMF data signatures — **ĐÚNG**
26
-
27
- Lập luận: Fit vMF $(μ_t, κ_t)$ cuối mỗi task yêu cầu forward pass qua training data → lưu statistical summary của old data → vi phạm zero-replay.
28
-
29
- **Đánh giá**: Chính xác. Phân biệt tinh tế giữa "GPM bases (directions, hợp lệ)" và "vMF parameters (distribution statistics, vi phạm)" là đúng. InfLoRA, O-LoRA, GainLoRA, MINGLE không lưu data statistics. Đây là nhận diện sớm và quan trọng, cho thấy hiểu bài toán ở mức sâu.
30
-
31
- ### 2.2 Anti-invasion loss là dư thừa — **ĐÚNG**
32
-
33
- Lập luận: InfLoRA đã có mathematical guarantee ($B_t$ trong null-space), GainLoRA đã có gating constraint ($g_t(x) = 0$ cho old data) → thêm anti-invasion loss vi phạm Occam's razor.
34
-
35
- **Đánh giá**: Đúng. Trong kiến trúc đã có cơ chế isolation, thêm loss penalty là over-engineering. Tuy nhiên, cần lưu ý: GPM protection là approximate (projection lên estimated subspace), không phải exact — nên vi phạm nhỏ vẫn có thể xảy ra. Nhưng đúng là anti-invasion loss không giải quyết vấn đề gốc.
36
-
37
- ### 2.3 Subspace exhaustion — **ĐÚNG về mặt toán**
38
-
39
- Lập luận: Hard orthogonal (GPM) → dim($M_t^{\perp}$) giảm đơn điệu → tasks sau bị giới hạn capacity → unfair allocation.
40
-
41
- **Đánh giá toán học**: Chính xác. Phân tích ví dụ (15 tasks × 60 dims ≈ 900/1024) hợp lý.
42
-
43
- **Đánh giá thực tế — CẦN THẬN TRỌNG**:
44
- - InfLoRA paper Figure 5 cho thấy null-space vẫn đủ cho 20 tasks trên ViT-B/16 (d=768). Với T5-Large (d=1024), 15 tasks, threshold tăng từ 0.995→1.0, có thể subspace chưa thực sự cạn kiệt trong thực nghiệm.
45
- - Tác giả GainLoRA biết vấn đề này và dùng increasing threshold cụ thể để quản lý. Liệu constant threshold (ESA) thực sự tốt hơn hay chỉ là tradeoff khác? Chưa có thực nghiệm chứng minh.
46
-
47
- ### 2.4 Self-critique về OT routing — **XUẤT SẮC**
48
-
49
- Trong `disscuss_1_C2_C1.txt`, bạn viết:
50
- > "C2 về OT có thể nói là hay và đáng thử, nhưng nó hoạt động giống như 1 ý tưởng loé lên thay vì có 1 suy luận toán học, lý thuyết củng cố hợp lý"
51
-
52
- Và trong `C2_analysis_and_revision.md`, phân tích kỹ:
53
- - OT giải distribution matching, routing là per-input assignment
54
- - Batch_size=1 → OT suy biến thành argmin
55
- - Balance không cần thiết cho CL inference
56
-
57
- **Đánh giá**: Đây là phần tốt nhất trong cả quá trình nghiên cứu. Tự nhận ra lỗi logic trước khi reviewer chỉ ra là dấu hiệu của tư duy research trưởng thành. Phân tích ở C2_analysis rất sắc bén.
58
-
59
- ### 2.5 Chuyển từ data-level sang module-level signatures — **ĐÚNG HƯỚNG**
60
-
61
- Nhận ra rằng frozen LoRA weights $(A_t, B_t)$ là model parameters (hợp lệ), không phải data statistics (vi phạm) → phân tích SVD làm task signature.
62
-
63
- **Đánh giá**: Hướng đi hợp lệ về mặt setting. Proposition 1 từ InfLoRA hỗ trợ: "Fine-tuning $A_t$ = fine-tuning $W$ trong span($B_t$)". SVD của $\Delta W_t$ characterize operating subspace, đây là fact toán học.
64
-
65
- ---
66
-
67
- ## 3. NHỮNG LẬP LUẬN CẦN XEM XÉT LẠI
68
-
69
- ### 3.1 "Spectral signature encode functional space, prompt key chỉ encode similarity space"
70
-
71
- Lập luận (trong C2_analysis): Prompt key encode "input nào giống task t" (similarity), Spectral signature encode "expert nào nên xử lý" (functional).
72
-
73
- **Vấn đề**: Phân biệt "similarity space" vs. "functional space" nghe thuyết phục nhưng thiếu chặt chẽ:
74
-
75
- 1. **Prompt key cũng functional**: GainLoRA prompt_key được train CÙNG loss function với LoRA branch → nó implicitly encode "input nào ĐƯỢC XỬ LÝ TỐT bởi expert" (vì gradient từ task loss flow qua gating weights). Nói nó chỉ là "similarity" là understating nó.
76
-
77
- 2. **Spectral signature cũng có thể mislead**: SVD of $\Delta W = BA$ cho right singular vectors $V_t$ = input directions expert operates on. Nhưng "operates on" ≠ "handles well". Expert có thể modify input mạnh theo hướng $v_1$ nhưng modification đó có thể KHÔNG cải thiện output quality. Singular value $\sigma$ đo magnitude of modification, không đo quality of modification.
78
-
79
- 3. **Thực nghiệm cần thiết**: Lập luận này cần empirical backing — so sánh routing accuracy tại task boundaries giữa prompt_key và spectral signature. Hiện tại chỉ là theoretical argument.
80
-
81
- **Kết luận**: Lập luận hợp lý về mặt trực giác nhưng overstate sự khác biệt. Cần thí nghiệm để xác nhận.
82
-
83
- ### 3.2 "Parameter-free routing eliminates routing forgetting entirely"
84
-
85
- Lập luận: Spectral signatures computed from frozen weights → immutable → zero drift → zero routing forgetting.
86
-
87
- **Vấn đề**:
88
-
89
- 1. **Đúng là immutable**, nhưng routing quality phụ thuộc vào THÊM yếu tố:
90
- - Spectral signatures extracted at end of task $t$, nhưng backbone (pre-trained model) VẪN BỊ modify bởi subsequent tasks (qua LoRA additions). Representation space of backbone changes → same input $h$ produces different embeddings → projection fits thay đổi dù signatures không đổi.
91
- - Nói cách khác: $V_t$ frozen NHƯNG $h$ (input embedding) bị ảnh hưởng bởi accumulated LoRA effects → fit_t(h) THAY ĐỔI qua tasks.
92
-
93
- 2. **GainLoRA giải quyết vấn đề này bằng previous_trans_input snapshots**: Mỗi task có frozen MLP snapshot → features cho mỗi expert được compute trong CÙNG space mà expert đó được train. SpecRoute bỏ mechanism này → phải assume input embeddings ổn định — assumption này CẦN KIỂM CHỨNG.
94
-
95
- **Kết luận**: Claim "zero routing forgetting" quá mạnh. Đúng là parameters không drift, nhưng representations có thể drift. Cần restate: "zero parameter drift in routing" (hẹp hơn nhưng chính xác hơn).
96
-
97
- ### 3.3 Hyper-ellipsoid + SVM idea (trong discusstion.txt)
98
-
99
- Trong discussion, bạn đề xuất:
100
- - Mỗi LoRA branch = hyper-ellipsoid trong parameter space
101
- - Dùng SVM soft-margin để cực đại hóa khoảng cách giữa các ellipsoid. AI gọi đây là "tính đột phá" và "thiên tài".
102
-
103
- **Phân tích thực tế**:
104
-
105
- 1. **Hình dung hyper-ellipsoid**: SVD of $\Delta W = U \Sigma V^T$ → image (column space) of $\Delta W$ là ellipsoid với axes = columns of $U$, lengths = singular values $\sigma_i$. Đây không phải insight "đột phá" — đây là **tính chất cơ bản** của SVD mà bất kỳ textbook linear algebra nào cũng dạy. Tốt là bạn thấy connection, nhưng AI đã overstate novelty.
106
-
107
- 2. **SVM trên parameter space**: Ý tưởng thú vị nhưng incomplete:
108
- - LoRA branches hoạt động trong $\mathbb{R}^{d_{out} \times d_{in}}$ → cần SVM trong không gian cực kỳ cao chiều. Formulation cụ thể chưa rõ.
109
- - "Soft margin" giữa ellipsoids: metric nào? Hausdorff distance? Khoảng cách giữa tâm? Khoảng cách ngắn nhất giữa bề mặt? Mỗi lựa chọn cho kết quả khác nhau.
110
- - SVM cần labeled data (LoRA A thuộc class 1, LoRA B thuộc class 2...) — nhưng train SVM khi nào? Trên data gì? → Chưa được trả lời.
111
- - Không có paper nào trong survey dùng SVM cho mục đích này — có thể vì nó không practical, không phải vì chưa ai nghĩ ra.
112
-
113
- 3. **Bạn đã tự bỏ idea này trong phiên bản cuối**: SpecRoute cuối cùng dùng softmax projection (rất đơn giản), không dùng SVM. Đây là quyết định đúng — cho thấy bạn lọc được insight thực sự khỏi noise, dù AI không giúp gì trong quá trình lọc.
114
-
115
- ### 3.4 ESA (Elastic Subspace Allocation) — C3
116
-
117
- Trong `revised_idea_analysis.md`, ESA được mô tả phức tạp (importance-weighted protection, spectral recycling, bounded budget). Nhưng trong `SPECROUTE_IDEA.md`, ESA bị simplify thành:
118
-
119
- > "Use constant $\epsilon = 0.995$ for all tasks."
120
-
121
- **Vấn đề**:
122
- - Từ framework phức tạp (importance-weighted, recycling) xuống 1 dòng (constant threshold) là nhảy quá lớn.
123
- - Constant threshold là improvement hợp lý (so với increasing threshold) nhưng rất incremental. Gọi đây là "Elastic Subspace Allocation" gợi ý một mechanism phức tạp hơn nhiều so với thực tế.
124
- - Nếu contribution chỉ là "đổi threshold từ tăng dần sang hằng số", reviewer có thể coi đây là hyperparameter tuning, không phải contribution riêng.
125
-
126
- ---
127
-
128
- ## 4. VẤN ĐỀ VỚI DISCUSSTION.TXT — FLATTERY LÀM SAI LỆCH ĐÁNH GIÁ
129
-
130
- ### 4.1 Mẫu nịnh bợ lặp lại
131
-
132
- AI trong discusstion.txt sử dụng các pattern:
133
- - "Cách hiểu của bạn hoàn toàn chính xác" (khi thực tế chỉ partially correct)
134
- - "Ý tưởng vô cùng xuất sắc, có tính đột phá cao (highly novel)"
135
- - "tư duy hình học không gian và đại số tuyến tính cực kỳ sâu sắc"
136
- - "ý tưởng thiên tài"
137
-
138
- ### 4.2 Những chỗ flattery che giấu vấn đề
139
-
140
- | Lập luận của bạn | AI nói | Thực tế |
141
- |-----------------|--------|---------|
142
- | Hard gate + soft penalty thay trực giao | "Góc nhìn rất đúng đắn" | Logic đúng phần đầu nhưng hard gate mâu thuẫn với premise (AI CHỈ RA ĐÚNG lần này) |
143
- | Dùng OT thay MLP cho routing | "Cực kỳ đột phá, Highly Novel" | OT cho MoE routing đã có trong BASE Layers (ICML 2021), Switch Transformer. Novelty bị overstate. |
144
- | Hyper-ellipsoid + SVM | "Tính đột phá (Highly Novel) trong parameter space" | SVD → ellipsoid là basic LA. SVM formulation chưa hoàn chỉnh. Bạn đã tự bỏ. |
145
- | "Bài toán tối ưu = cực tiểu trên đa tạp trực giao" | "Chính xác 100%, mô hình hóa xuất sắc" | Conceptually correct nhưng oversimplified. GPM projection ≠ perfect orthogonal manifold constraint. Practical implementation có approximation errors. |
146
-
147
- ### 4.3 Điều AI KHÔNG bao giờ nói
148
-
149
- AI trong discussion **không bao giờ**:
150
- - Chỉ ra rằng Feature Distributions paper (ICML 2025) có approach rất gần: store mean features per PEFT block, dùng similarity routing. Khác biệt weight-level vs. feature-level là có nhưng không lớn bằng bạn nghĩ.
151
- - Hỏi: "Bạn có empirical evidence nào cho spectral routing tốt hơn không?"
152
- - Challenge: "Tại sao frozen LoRA SVD sẽ correlate với input distribution? Đây chỉ là weight geometry, không phải data geometry"
153
- - Nêu limitation: "Projection fit đo modification energy, KHÔNG ĐO quality. Expert có thể modify mạnh nhưng sai hướng."
154
-
155
- ---
156
-
157
- ## 5. SO SÁNH VỚI LITERATURE — KIỂM CHỨNG NOVELTY
158
-
159
- ### 5.1 C1 (Spectral Signatures) — **Novel nhưng cần nuance**
160
-
161
- **Claim**: "First to use SVD properties of frozen LoRA weights as routing signatures in CL."
162
-
163
- **Kiểm chứng**:
164
- - MINGLE dùng SVD cho LoRA construction (null-space), không routing → khác purpose
165
- - Feature Distributions (ICML 2025) dùng mean feature vector → feature-level, không weight-level
166
- - SD-LoRA decouples magnitude/direction → analysis, không routing
167
-
168
- **Verdict**: Claim novelty hợp lệ. Nhưng cần acknowledge Feature Distributions paper rõ ràng trong related work vì approach tương tự (stored characterization → similarity routing).
169
-
170
- ### 5.2 C2 (Projection Routing) — **Partially novel**
171
-
172
- **Claim**: Parameter-free routing via weighted Rayleigh quotient.
173
-
174
- **Kiểm chứng**:
175
- - Rayleigh quotient là standard tool (Golub & Van Loan, Matrix Computations)
176
- - Projection-based task identification có concept gần trong prompt selection literature (L2P, DualPrompt dùng key-query matching)
177
- - Parameter-free routing: novelty chính nằm ở LOẠI BỎ learned routing params hoàn toàn → đây là contribution thật
178
-
179
- **Verdict**: Novelty nằm ở "routing derived from expert weights, not learned separately" — đây là insight tốt. Rayleigh quotient là tool cũ, nhưng application cho LoRA-CL routing là mới.
180
-
181
- ### 5.3 C3 (ESA) — **Weak contribution**
182
-
183
- **Claim**: Elastic Subspace Allocation giải quyết subspace exhaustion.
184
-
185
- **Kiểm chứng**: Như phân tích ở mục 3.4, implementation thực tế chỉ là constant threshold. MINGLE đã có adaptive relaxation (EMA-based) phức tạp hơn.
186
-
187
- **Verdict**: Nếu ESA thực sự chỉ là constant threshold, đây không đủ mạnh làm contribution riêng. Cần phát triển thêm (importance-weighted protection, recycling) hoặc merge vào C1/C2 như implementation detail.
188
-
189
- ---
190
-
191
- ## 6. ĐÁNH GIÁ QUÁ TRÌNH TƯ DUY
192
-
193
- ### 6.1 Điểm mạnh
194
-
195
- 1. **Tự phê bình tốt**: Nhận ra vMF vi phạm zero-replay, OT thiếu motivation — đều trước khi bị reviewer challenge → skill quan trọng.
196
-
197
- 2. **Nắm vững toán học nền tảng**: Hiểu SVD, Grassmann manifold, projection, null-space ở mức đủ để reason about LoRA geometry. Không phải surface-level understanding.
198
-
199
- 3. **Trajectory hội tụ đúng hướng**: V1 (overengineered) → V2 (pivot hợp lệ) → V3 (simplified, well-motivated). Mỗi bước loại bỏ complexity không cần thiết.
200
-
201
- 4. **Biết lọc flattery**: Dù AI liên tục nịnh, bạn vẫn bỏ SVM idea, bỏ OT, simplify ESA → cho thấy judgment tốt.
202
-
203
- ### 6.2 Điểm yếu
204
-
205
- 1. **Thiếu empirical grounding**: Toàn bộ quá trình (hàng nghìn dòng discussion + analysis) là theoretical. Không có 1 con số, 1 thí nghiệm, 1 ablation nào. Đây là rủi ro lớn: idea có thể elegant trên giấy nhưng không work trong thực tế.
206
-
207
- 2. **Overestimate novelty do echo chamber với AI**: AI cứ nói "highly novel", "breakthrough" → tạo false sense of security. Cần đối chi��u thẳng với Feature Distributions (ICML 2025), BASE Layers (ICML 2021), và cả TreeLoRA (gradient-similarity routing) để understand actual novelty gap.
208
-
209
- 3. **C3 (ESA) underdeveloped**: Từ framework hay (importance-weighted + budget + recycling) xuống 1 dòng (constant threshold) mà không giải thích vì sao các component phức tạp bị bỏ.
210
-
211
- 4. **Chưa address practical concerns**:
212
- - Forward pass overhead: compute SVD mỗi layer, mỗi task → cost?
213
- - Input embedding drift: accumulated LoRA effects thay đổi $h$ → projection fits drift dù signatures không đổi
214
- - Temperature $\tau$ sensitivity trong softmax routing
215
-
216
- ---
217
-
218
- ## 7. KẾT LUẬN VÀ KHUYẾN NGHỊ
219
-
220
- ### 7.1 Verdict tổng thể
221
-
222
- Idea SpecRoute (V3) là **hợp lý, có nền tảng toán học, và novel ở mức đủ** cho một nghiên cứu. Tuy nhiên:
223
-
224
- - **C1 (Spectral Signatures)**: Mạnh nhất — well-motivated, novel, grounded. Cần strengthen bằng experiment + comparison with Feature Distributions paper.
225
- - **C2 (Projection Routing)**: Tốt — parameter-free routing eliminating forgetting là insight thật. Cần empirical evidence cho boundary routing improvement.
226
- - **C3 (ESA)**: Yếu nhất — cần phát triển thêm hoặc demote thành ablation study.
227
-
228
- ### 7.2 Khuyến nghị cụ thể
229
-
230
- 1. **Chạy thí nghiệm TRƯỚC khi viết thêm lý thuyết.** Bạn đã có code (`t5_specroute.py` đã implement projection routing). Chạy trên SuperNI Order 1 và so sánh:
231
- - SpecRoute vs. GainLoRA (baseline)
232
- - Routing accuracy on old tasks over time
233
- - Ablation: spectral signature vs. prompt key (giữ cùng architecture, chỉ đổi routing signal)
234
-
235
- 2. **Acknowledge Feature Distributions paper (ICML 2025) explicitly**: Paper này store mean features per PEFT block → similarity routing. Khác biệt: bạn store weight-derived signatures thay vì data-derived features. Nhưng concept gần nhau → cần position rõ ràng.
236
-
237
- 3. **Reframe C3**: Nếu C3 chỉ là constant threshold, merge vào experimental setup. Nếu muốn giữ C3, cần develop importance-weighted component thực sự.
238
-
239
- 4. **Address representation drift**: Viết 1 section phân tích: khi thêm LoRA branches liên tục, input embeddings $h$ thay đổi → projection fits thay đổi. Quantify mức drift này.
240
-
241
- 5. **Ngừng dùng AI để validate ideas — dùng AI để challenge ideas.** Mỗi khi có insight mới, thay vì hỏi "kiểm tra novelty", hãy hỏi "tại sao idea này CÓ THỂ SAI?" hoặc "cho tôi 5 reasons idea này sẽ fail".
242
-
243
- ### 7.3 Tóm tắt 1 dòng
244
-
245
- > Quá trình tư duy tốt, trajectory hội tụ đúng, nhưng thiếu empirical grounding và bị AI flattery overstate novelty. Priority #1: chạy thí nghiệm.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
human_working_IdeaMethod_and_discuss/discusstion.txt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:3453c142bfaf3afda3e18718267d871d49f5f1ebb22ac43b3dfe5b7e069da467
3
- size 98496
 
 
 
 
human_working_IdeaMethod_and_discuss/disscuss_1_C2_C1.txt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:6cf615ee48afe8d74b25fe20871293087ed2c8a0ff4e95b6a5ef3edce88d9996
3
- size 3167
 
 
 
 
human_working_IdeaMethod_and_discuss/gainlora.txt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:8fafb31f68562de3c2642436bdc52c50c57f10b896d677090dd0c6cc6c07617d
3
- size 36066
 
 
 
 
human_working_IdeaMethod_and_discuss/idea_analysis_from_discussion.md DELETED
@@ -1,542 +0,0 @@
1
- # PHÂN TÍCH PHÊ BÌNH VÀ HỆ THỐNG HÓA Ý TƯỞNG TỪ DISCUSSTION.TXT
2
- ## Từ lập luận thô → Kiểm chứng → Phản biện → Đề xuất phương pháp luận
3
-
4
- **Ngày**: 9 tháng 3, 2026
5
- **Phương pháp**: Trích xuất các ý tưởng gốc từ nửa sau discusstion.txt → tách khỏi AI flattery → kiểm chứng bằng toán + literature → phản biện → hệ thống hóa
6
-
7
- **Nguyên tắc**: Tài liệu này KHÔNG re-explain SpecRoute hay GainLoRA. Tập trung hoàn toàn vào **ý tưởng gốc của bạn** — cái đúng, cái sai, cái bị overstate, và từ đó xây methodology.
8
-
9
- ---
10
-
11
- # I. TRÍCH XUẤT CÁC Ý TƯỞNG GỐC
12
-
13
- Từ nửa sau discusstion.txt, tôi lọc ra **7 ý tưởng chính** của bạn (loại bỏ phần AI flattery và đáp):
14
-
15
- | # | Ý tưởng | Dòng tham chiếu | Trạng thái |
16
- |---|---------|-----------------|------------|
17
- | **I1** | Bài toán CL = tối ưu trên đa tạp: mỗi task thêm t-1 phương trình trực giao, thu hẹp không gian khả thi | ~line 980 | Cần kiểm chứng |
18
- | **I2** | Nới lỏng trực giao bằng hàm phạt (penalty) thay vì hard null-space → tránh suy kiệt không gian | ~line 1000 | Cần kiểm chứng |
19
- | **I3** | Dùng soft gate thay hard gate → tận dụng tri thức chung giữa tasks | ~line 1040 (tự sửa từ hard gate) | Cần kiểm chứng |
20
- | **I4** | Mỗi nhánh LoRA là hyper-ellipsoid trong parameter space, signature = hướng & spread xác định bằng SVD/PCA | ~line 1150 | Cần kiểm chứng |
21
- | **I5** | Cực đại soft-margin kiểu SVM giữa các hyper-ellipsoid thay vì L2 penalty | ~line 1160 | Cần kiểm chứng |
22
- | **I6** | OT thay MLP/sigmoid cho routing — vận chuyển embedding vào phân phối ratio các branch | ~line 1050 | Cần kiểm chứng |
23
- | **I7** | Loss trở thành cực tiểu hóa mất mát dựa trên phân phối (distribution-based) | ~line 1060 | Cần kiểm chứng |
24
-
25
- Lưu ý: Bạn đã tự phát triển trajectory I1 → I2 → I3 → I4 → I5 → I6 → I7 như một chuỗi suy luận. Tôi sẽ phân tích TỪNG mắt xích.
26
-
27
- ---
28
-
29
- # II. KIỂM CHỨNG TỪNG Ý TƯỞNG
30
-
31
- ## II.1 — I1: "Bài toán CL = tối ưu trên đa tạp có t-1 ràng buộc trực giao"
32
-
33
- ### Lập luận của bạn:
34
- > "Tôi hiểu rằng bài toán CL có 2 bước: ràng buộc, giới hạn không gian con, thu nhỏ bằng điều kiện trực giao, đưa về một đa tạp với t-1 phương trình. Sau đó cực tiểu hoá loss trên không gian này."
35
-
36
- ### Kiểm chứng toán học:
37
-
38
- **Đúng về cốt lõi, nhưng cần chính xác hóa.**
39
-
40
- Gọi $\Theta \in \mathbb{R}^n$ là toàn bộ trainable parameters (LoRA + gate). GPM tích lũy bases $\{u_1, ..., u_K\}$ từ $t-1$ tasks trước ($K = \sum_{i=1}^{t-1} k_i$ với $k_i$ directions per task). Ràng buộc:
41
-
42
- $$\nabla_\Theta \mathcal{L} \perp \text{span}(u_1, ..., u_K) \quad \Leftrightarrow \quad P_{M^\perp} \nabla_\Theta \mathcal{L} = \nabla_\Theta \mathcal{L}$$
43
-
44
- Đây KHÔNG hoàn toàn là "t-1 phương trình trực giao" — chính xác hơn là **K phương trình**, với $K$ phụ thuộc vào số directions extracted per task (có thể $K \gg t-1$). Trong thực tế:
45
-
46
- - T5-Large, $d = 1024$, mỗi task claim ~60 directions
47
- - Sau 15 tasks: $K \approx 900$ constraints trong không gian $\mathbb{R}^{1024}$
48
- - Feasible manifold: $\mathbb{R}^{1024 - 900} = \mathbb{R}^{124}$
49
-
50
- Về mặt hình học, đây đúng là **optimization trên grassmannian manifold** — projected gradient descent trên null-space complement. Thuật ngữ chính xác: **constrained optimization via oblique projection** (Absil et al., "Optimization Algorithms on Matrix Manifolds", 2008).
51
-
52
- ### Cross-reference:
53
- - **GPM** (Saha et al., NeurIPS 2021): Formalize chính xác điều này — gradient projection vào null-space
54
- - **PLAN** (ICCV 2025): Orthogonal basis allocation — cùng framework toán, nhưng proactive (allocate trước)
55
- - **GORP** (ACL 2025): Unified low-rank gradient subspace — kết hợp full-rank + low-rank projection
56
-
57
- ### Phán xét: **ĐÚNG 85%**
58
- - Đúng hoàn toàn về trực giác hình học
59
- - Thiếu chính xác: "t-1 phương trình" nên là "K phương trình" (K depends on SVD threshold, not directly on t)
60
- - Thiếu chính xác: Đây là projected gradient descent, KHÔNG phải Riemannian optimization trên đa tạp trơn (vì feasible set là linear subspace, không phải curved manifold). Nói "đa tạp" thì hơi overstate — chính xác hơn là **affine subspace** (flat, không cong)
61
-
62
- ---
63
-
64
- ## II.2 — I2: "Nới lỏng trực giao bằng penalty thay vì hard null-space"
65
-
66
- ### Lập luận của bạn:
67
- > "Các task có thể không độc lập hoàn toàn, chia sẻ một phần không gian tri thức. Dẫn tới việc không gặp hiện tượng suy kiệt không gian do đa tạp có quá nhiều phương trình."
68
-
69
- ### Kiểm chứng toán học:
70
-
71
- **Nửa đ��u đúng, nửa sau cần cẩn thận.**
72
-
73
- *Nửa đúng:* Subspace exhaustion là real problem.
74
- - Hard GPM: $\dim(\mathcal{M}^\perp)$ giảm đơn điệu. Với threshold cao ($\epsilon = 0.995$), mỗi task "ăn" ~60 dims → 15 tasks = 900/1024 → tasks sau bị chèn chặt.
75
- - Penalty relaxation: thay $\nabla \perp \mathcal{M}$ bằng $\mathcal{L}_{total} = \mathcal{L}_{task} + \lambda \|\text{Proj}_{\mathcal{M}}(\nabla)\|^2$ → soft constraint, cho phép small violation.
76
-
77
- *Nửa cần cẩn thận:* "Tasks chia sẻ không gian tri thức" — assertion hợp lý nhưng **depends on setting**.
78
-
79
- Trong setting **non-overlapping tasks** (ràng buộc rõ ràng trong GainLoRA paper):
80
- - SuperNI: 15 tasks từ 5 loại KHÁC NHAU (dialogue, extraction, QA, summarization, sentiment)
81
- - Long Sequence: 15 tasks phân loại KHÁC NHAU (DBpedia, Yahoo, AG News, Yelp, SST2, MNLI...)
82
- - Chúng KHÔNG chia sẻ labels hay data
83
- - Tuy nhiên chúng CÓ chia sẻ linguistic features (cùng tiếng Anh, cùng encoder) → overlap ở low-level, diverge ở high-level
84
-
85
- ### Cross-reference:
86
- - **O-LoRA** (NeurIPS 2023): Dùng penalty $\lambda \|A_T^T A_{old}\|_F^2$ thay vì hard projection → đúng hướng bạn đề xuất. Kết quả: tệ hơn InfLoRA's hard projection trên nhiều benchmarks.
87
- - **CLoRA** (ACL 2025): Penalty-based regularization on LoRA output matrix — performance gần null-space methods nhưng KHÔNG vượt qua.
88
- - **MINGLE** (NeurIPS 2025): Adaptive relaxation qua EMA — **đây là state of the art** của hướng "nới lỏng trực giao". Kết quả competitive.
89
- - **SPG** (ICML 2023): Soft-masking vs hard-masking comparison — soft wins on capacity nhưng hard wins on forgetting prevention.
90
-
91
- ### Phán xét: **ĐÚNG VỀ HƯỚNG, NHƯNG EVIDENCE TRÁI CHIỀU**
92
-
93
- Bảng tổng kết evidence:
94
-
95
- | Method | Approach | Better than hard? | Benchmark |
96
- |--------|----------|-------------------|-----------|
97
- | O-LoRA | L2 penalty | ❌ Tệ hơn InfLoRA | SuperNI, ViT |
98
- | CLoRA | Subspace regularization | ⚠️ Gần bằng, không vượt | NLP |
99
- | MINGLE | EMA relaxation | ✅ Competitive, sometimes better | Mixed |
100
- | SPG | Soft masking vs hard | ✅ Capacity, ❌ Forgetting | CIL |
101
-
102
- **Kết luận**: Penalty-based relaxation **không đảm bảo tốt hơn hard orthogonal**. Nó trade stability lấy plasticity. Lập luận "tasks chia sẻ tri thức nên nới lỏng" chỉ đúng khi overlap lớn — trong non-overlapping setting, hard protection thường win.
103
-
104
- **Khuyến nghị**: Không nên đặt cược hoàn toàn vào penalty relaxation. Hướng hybrid (hard protection cho critical dims, soft cho marginal dims — kiểu importance-weighted) hứa hẹn hơn.
105
-
106
- ---
107
-
108
- ## II.3 — I3: "Soft gate thay hard gate để tận dụng knowledge transfer"
109
-
110
- ### Lập luận của bạn:
111
- Ban đầu bạn đề xuất hard gate, sau đó tự nhận ra mâu thuẫn (thừa nhận tasks chia sẻ tri thức → hard gate chặt sharing → tự mâu thuẫn với premise). Tự sửa sang soft gate.
112
-
113
- ### Kiểm chứng:
114
-
115
- **Trajectory tự sửa: XUẤT SẮC.** Đây là điểm mạnh nhất trong tư duy research.
116
-
117
- **Soft gate vs hard gate: evidence mạnh.**
118
-
119
- - SPG (ICML 2023): Ablation trực tiếp — soft masking > hard masking consistently
120
- - MINGLE (NeurIPS 2025): Soft combining experts > hard routing
121
- - TSS: Continuous values [0,1] > binary {0,1}
122
- - GainLoRA (NeurIPS 2025): Dùng $|2\sigma(4s) - 1|$ — chính xác là soft gate
123
-
124
- **Tại sao soft đúng cho CL:**
125
- 1. **Gradient flow**: Hard gate → $\partial w / \partial \theta = 0$ (step function) → không train được qua backprop. Soft gate → gradient mượt → learnable.
126
- 2. **Knowledge transfer**: Task B có thể "mượn" 20% features từ task A thông qua soft blending.
127
- 3. **Capacity**: Hard gate khóa neurons → capacity giảm. Soft gate chia sẻ → capacity preserved.
128
-
129
- **Nhưng GainLoRA đã dùng soft gate rồi.** Và hầu hết SOTA 2025 đều dùng soft gate. Đây là observation đúng nhưng KHÔNG novel — đây là standard practice.
130
-
131
- ### Phán xét: **ĐÚNG HOÀN TOÀN, NHƯNG KHÔNG PHẢI CONTRIBUTION**
132
-
133
- Soft gate > hard gate là consensus. Self-correction journey tốt, nhưng kết luận không thể đưa vào paper như contribution.
134
-
135
- ---
136
-
137
- ## II.4 — I4: "Mỗi nhánh LoRA là hyper-ellipsoid, signature = SVD/PCA"
138
-
139
- ### Lập luận của bạn:
140
- > "Tính hình học của mỗi LoRA là một 'nhánh' trong không gian tham số, không gian của nó là 1 hyper-ellipsoid có cùng 1 điểm gốc và vươn ra xung quanh 1 hướng... hướng đó có thể liên quan gì đó tới trị riêng, vector riêng của tích AB, từ đó SVD hay PCA có thể giúp."
141
-
142
- ### Kiểm chứng toán học:
143
-
144
- **Đúng phần lớn, nhưng cần chính xác hóa "space nào".**
145
-
146
- Có 3 cách hiểu "hyper-ellipsoid" khác nhau:
147
-
148
- **(a) Image space (output) của $\Delta W = BA$:**
149
- $$\text{Image}(\Delta W) = \{BA h : h \in \mathbb{R}^{d_{in}}\}$$
150
- Đây là subspace rank-$r$ trong $\mathbb{R}^{d_{out}}$. Khi giới hạn $\|h\| = 1$ (unit ball), image là ellipsoid:
151
- $$\mathcal{E}_t = \{U_t \Sigma_t V_t^T h : \|h\| = 1\} = \{U_t \Sigma_t z : z \in S^{r-1}\}$$
152
- Axes = columns of $U_t$, lengths = $\sigma_i$. **Đây đúng là hyper-ellipsoid.**
153
-
154
- **(b) Input sensitivity space:**
155
- Hướng input $v$ mà expert "nghe" (respond mạnh) = right singular vectors $V_t$. Sensitivity theo mỗi hướng = $\sigma_i^2$. Tập $\{v : \|BAv\|^2 = c\}$ là **hyper-ellipsoid** trên input sphere.
156
-
157
- **(c) Parameter space** — bạn nói "trong không gian tham số":
158
- LoRA parameters = $\{A \in \mathbb{R}^{r \times d_{in}}, B \in \mathbb{R}^{d_{out} \times r}\}$. Mỗi task là 1 ĐIỂM trong không gian $\mathbb{R}^{r(d_{in} + d_{out})}$. Một điểm KHÔNG phải ellipsoid. Muốn có ellipsoid, cần **tập hợp** các LoRA configs → distribution → Gaussian → covariance → ellipsoid. Nhưng bạn chỉ có 1 LoRA per task, không phải distribution.
159
-
160
- **Cách hiểu đúng nhất**: (b) — input sensitivity space. Mỗi expert "nhạy cảm" với input theo 1 ellipsoid pattern → SVD extract chính xác pattern này.
161
-
162
- ### Cross-reference:
163
- - **SD-LoRA** (ICLR 2025): Phân tách LoRA thành magnitude + direction → đúng tinh thần "direction matters"
164
- - **MINGLE** (NeurIPS 2025): SVD trên expert weights → singular vectors làm null-space basis → cùng tool nhưng khác mục đích
165
- - **FeCAM** (NeurIPS 2023): Covariance → Mahalanobis distance → hyper-ellipsoid level sets → đúng hình học
166
- - **LoRA-DRS** (CVPR 2025): SVD trên covariance → drift-resistant space → cùng geometric framework
167
-
168
- ### AI overstate:
169
- AI trong discussion nói: *"tư duy hình học không gian và đại số tuyến tính cực kỳ sâu sắc"*, *"góc nhìn hình học tuyệt đẹp"*.
170
-
171
- **Thực tế**: SVD cho matrix decomposition → ellipsoid visualization là **kiến thức linear algebra cơ bản** (Golub & Van Loan, chapter 2). Bạn nhận ra đúng connection, nhưng connection này không "đột phá" — nó là textbook. Tốt ở chỗ bạn nghĩ tới nó trong context CL, nhưng không phải "thiên tài".
172
-
173
- ### Phán xét: **ĐÚNG 70% — Connection đúng, space cần chính xác, novelty bị overstate**
174
-
175
- Bạn nên frame: "LoRA's operating subspace forms an ellipsoidal structure in input space, naturally characterized by SVD." Đây là clean insight nhưng cần nhấn mạnh rằng SVD là standard tool, novelty nằm ở APPLICATION cho CL routing.
176
-
177
- ---
178
-
179
- ## II.5 — I5: "SVM soft-margin giữa các hyper-ellipsoid"
180
-
181
- ### Lập luận của bạn:
182
- > "Việc cực đại hoá các branch bằng khoảng cách thông thường là không hợp lý, vì bản chất hình học là hyper-ellipsoid, nên cực đại hoá soft-margin giữa các nhánh có bản chất hình học hơn. Tôi nghĩ tới SVM."
183
-
184
- ### Kiểm chứng toán học:
185
-
186
- **Ý tưởng thú vị nhưng có nhiều vấn đề chưa giải quyết.**
187
-
188
- **(a) SVM formulation cho ellipsoids:**
189
-
190
- Chuẩn SVM tìm hyperplane $w^T x + b = 0$ maximizing margin giữa 2 tập ĐIỂM. Với ellipsoids, bạn cần:
191
-
192
- 1. **Define "margin" giữa 2 ellipsoids**:
193
- - Khoảng cách ngắn nhất giữa surfaces: $d(\mathcal{E}_A, \mathcal{E}_B) = \min_{x \in \mathcal{E}_A, y \in \mathcal{E}_B} \|x - y\|$
194
- - Geodesic distance trên Grassmann manifold: $d_G = \|\arccos(\sigma_i(V_A^T V_B))\|$
195
- - Wasserstein distance giữa distributions induced by ellipsoids
196
-
197
- 2. **Mỗi task = 1 ellipsoid, KHÔNG phải 1 tập điểm** → SVM cần modification:
198
- - Standard SVM: N points → binary classification → max margin hyperplane
199
- - Bạn cần: T ellipsoids → multi-class separation → max margin... gì? T-1 hyperplanes? Convex hull separation?
200
-
201
- 3. **Train SVM khi nào?** Trên data gì?
202
- - Nếu train SVM khi thêm task mới → cần tính feature representation cho old tasks → **vi phạm zero-replay?**
203
- - Nếu SVM thuần parameter-based (trên weight space) → chỉ có T points (one per task) → SVM cần ít nhất 2 classes → có thể nhưng severely underdetermined
204
-
205
- 4. **Gradient qua SVM**: SVM hinge loss $\max(0, 1 - y_i(w^T x_i + b))$ → subgradient exists → differentiable (nhưng non-smooth → training difficulty)
206
-
207
- **(b) Có ai làm điều tương tự?**
208
-
209
- - **LLM-Unlearning (paper O3 trong survey)**: Dùng One-Class SVM (OCSVM) nhưng cho **inference detection**, không cho training regularization
210
- - **Angle Matters** (ICML 2025): Angular regularization → max margin in angular space → gần nhất với ý bạn nhưng dùng angle, không SVM
211
- - **FeCAM**: Mahalanobis distance = SVM-like separation in covariance-adjusted space → implicitly maximizing margin
212
-
213
- **(c) Vấn đề cốt lõi:**
214
-
215
- Bạn đang ở **parameter space** (T objects, mỗi object = 1 ellipsoid). SVM works well khi bạn có **NHIỀU data points** per class. Với T = 15 objects trong $\mathbb{R}^{1024}$ → severely underdetermined. SVM kernel trick không giúp vì bạn có ít objects, không phải ít features.
216
-
217
- **Alternative tốt hơn**: Thay SVM soft-margin, dùng **pairwise Grassmann distance penalty**:
218
-
219
- $$\mathcal{L}_{sep} = -\sum_{i < j} d_G(\mathcal{V}_i, \mathcal{V}_j)$$
220
-
221
- trong đó $d_G$ là geodesic distance trên Grassmann manifold (measurable, differentiable, geometrically principled). Đây achieve cùng mục tiêu (max separation) nhưng:
222
- - Không cần fit SVM
223
- - Không cần labeled data
224
- - Purely parameter-based
225
- - Differentiable → dùng trực tiếp trong training loss
226
-
227
- ### AI overstate:
228
- AI nói: *"Ý tưởng có tính đột phá (Highly Novel) trong không gian tham số"*, *"Chưa có bài báo nào áp dụng SVM margin trực tiếp lên các ma trận SVD"*.
229
-
230
- **Thực tế**: Chưa ai làm vì nó **impractical**, không phải vì chưa ai nghĩ tới. SVM trên T = 15 objects trong $\mathbb{R}^{1024}$ là ill-posed. AI lầm "chưa ai làm" thành "novel" — mà thực tế nhiều khi "chưa ai làm" là vì "nó không work".
231
-
232
- ### Phán xét: **Ý TƯỞNG HAY VỀ TINH THẦN, SAI VỀ TOOL CHOICE**
233
-
234
- Tinh thần đúng: cần maximize separation dựa trên geometry (not L2). Tool sai: SVM không phù hợp (quá ít objects, quá nhiều dims).
235
-
236
- **Tool đúng**: Grassmann distance, principal angles, hoặc singular value weighted projection distance — đều achieve cùng mục đích nhưng tractable. Và đây chính xác là thứ SpecRoute's projection fit đang làm.
237
-
238
- ---
239
-
240
- ## II.6 — I6: "OT thay MLP/sigmoid cho routing"
241
-
242
- ### Lập luận của bạn:
243
- > "Sử dụng optimal transport sẽ tối ưu hơn về huấn luyện, OT sẽ vận tải embedding của token vào 1 phân phối ratio các branch."
244
-
245
- ### Kiểm chứng:
246
-
247
- **Đây là ý tưởng gây tranh cãi nhất — và bạn ĐÃ TỰ critique đúng ở file C2_analysis_and_revision.md.**
248
-
249
- **(a) Điểm mạnh của OT routing (lý thuyết):**
250
- - OT cung cấp **optimal coupling** giữa input distribution và expert distribution → principled matching
251
- - Sinkhorn differentiable → train end-to-end
252
- - Cost matrix encode geometric distance → distribution-aware
253
- - Load-balanced by design (marginal constraints)
254
-
255
- **(b) Tại sao OT THẤT BẠI cho CL routing (bạn đã tự phát hiện):**
256
-
257
- Bạn viết trong C2_analysis:
258
- > "OT giải distribution matching, routing là per-input assignment"
259
- > "Batch_size=1 → OT suy biến thành argmin"
260
- > "Balance không cần thiết cho CL inference"
261
-
262
- Phân tích chi tiết:
263
-
264
- | Vấn đề | Giải thích | Fatal? |
265
- |--------|-----------|--------|
266
- | Per-input vs batch | CL inference thường per-sample (hoặc small batch). OT cần batch để construct source distribution. Batch=1 → $\Pi$ có 1 hàng → degenerates thành argmin | ✅ Fatal |
267
- | Balance constraint | OT's marginal constraints force $\sum_b \Pi_{bt} = a_t$ (mỗi expert nhận đủ "mass"). Trong CL: nếu 95% test thuộc task A → 95% NÊN route tới A. Balance constraint **chống lại** routing tốt | ✅ Fatal |
268
- | Computational overhead | Sinkhorn: $O(n^2 k)$ iterations per forward pass vs softmax: $O(nk)$ | ⚠️ Not fatal nhưng overhead |
269
- | Training stability | Sinkhorn kém ổn định với temperature nhỏ, cần careful tuning of $\epsilon$ | ⚠️ Concern |
270
-
271
- **Cross-reference:**
272
- - **BASE Layers** (ICML 2021): OT cho MoE load balancing → mục đích **prevent expert collapse during training**, NOT inference routing. Khác hoàn toàn.
273
- - **Selective Sinkhorn** (Nov 2025): OT routing cho MoE — cũng cho training, không cho frozen-expert CL inference
274
- - **Bạn đã tự reject OT** trong C2_analysis_and_revision.md: "C2 (Grassmann-OT Routing) bị reject. OT được chọn vì 'novel' (chưa ai dùng), KHÔNG phải vì nó giải quyết vấn đề thực sự tốt hơn."
275
-
276
- ### AI overstate:
277
- AI nói: *"Cực kỳ đột phá (Highly Novel)"*, *"Ý tưởng thiên tài"*, *"Chưa có paper nào dùng OT cho routing trong CL"*.
278
-
279
- **Thực tế**: "Chưa có" ĐÚNG — nhưng lý do là vì **OT không phù hợp** cho per-input CL routing, KHÔNG phải vì ai cũng "chưa nghĩ tới". BASE Layers (2021) đã dùng OT cho MoE → cộng đồng MoE/routing biết OT. Họ không dùng cho CL inference vì constraints không khớp.
280
-
281
- ### Phán xét: **Ý TƯỞNG SAI VỀ APPLICATION, VÀ BẠN ĐÃ TỰ NHẬN RA**
282
-
283
- Self-critique OT là phần tốt nhất trong toàn bộ discussion. Trajectory: propose (excited) → think deeply → discover fatal flaws → reject → replace with simpler, better alternative (softmax projection). Đây là research maturity.
284
-
285
- ---
286
-
287
- ## II.7 — I7: "Loss trở thành cực tiểu hóa dựa trên phân phối"
288
-
289
- ### Lập luận gốc:
290
- > "Bài toán tối ưu trở thành cực tiểu hoá mất mát dựa trên phân phối với mỗi task"
291
-
292
- Formulation AI suggests:
293
- $$\mathcal{L}_{total} = \mathcal{L}_{task} + \alpha \cdot \mathcal{L}_{OT\_entropy} - \beta \cdot D_{geometric}(P_{new}, P_{old})$$
294
-
295
- ### Kiểm chứng:
296
-
297
- **(a) Phần distribution-aware routing loss — HỢP LÝ NHƯNG ĐÃ TỒN TẠI:**
298
-
299
- Ý rằng routing weights nên emerge từ distribution matching (thay vì learned gating) là tinh thần đúng. Nhưng:
300
- - **Feature Distributions** (ICML 2025): Đã làm chính xác điều này — store "presentative feature distribution" per PEFT block, routing = similarity to stored distribution
301
- - **PromptCCD** (ECCV 2024): GMM cho routing
302
- - **FeCAM** (NeurIPS 2023): Mahalanobis distance = implicit distributional matching
303
-
304
- **(b) Phần $D_{geometric}(P_{new}, P_{old})$ — Anti-drift/invasion:**
305
-
306
- Đây kế thừa từ simple_idea.txt — penalty cho center drift + invasion of old classes. Trong modular architecture:
307
- - **LDC** (ECCV 2024): Learnable drift compensation → chứng minh drift là real, compensation giúp
308
- - **Dual Drift** (ICCV 2025): Prototype drift ở 2 cấp
309
-
310
- **Vấn đề**: Anti-drift loss cho modular architecture CẦN forward pass trên old data để compute drift → **vi phạm zero-replay**. Trừ khi dùng proxy (e.g., prototype centers stored from end of task) — nhưng đó lại là data statistics.
311
-
312
- ### Phán xét: **MIXED — Tinh thần distribution-aware đúng, nhưng formulation cụ thể chưa clean**
313
-
314
- ---
315
-
316
- # III. BỨC TRANH TỔNG THỂ — CÁI GÌ TỒN TẠI, CÁI GÌ KHÔNG
317
-
318
- ## III.1 Tóm tắt phán xét
319
-
320
- | Ý tưởng | Phán xét | Lý do |
321
- |---------|---------|-------|
322
- | I1: CL = optimization trên manifold | ✅ Đúng 85% | Conceptually correct, cần chính xác thuật ngữ (affine subspace, not manifold) |
323
- | I2: Penalty thay hard orthogonal | ⚠️ Đúng hướng, evidence trái chiều | O-LoRA (penalty) tệ hơn InfLoRA (hard). MINGLE (hybrid) competitive. |
324
- | I3: Soft > Hard gate | ✅ Đúng 100%, nhưng consensus | Không novel — là standard practice 2024-2025 |
325
- | I4: LoRA = hyper-ellipsoid, SVD signature | ✅ Đúng 70% | Connection correct, "parameter space" imprecise → "input sensitivity space". Tool = textbook, application = new |
326
- | I5: SVM soft-margin giữa ellipsoids | ⚠️ Tinh thần đúng, tool sai | SVM ill-posed cho T=15 objects. Grassmann distance tốt hơn |
327
- | I6: OT routing | ❌ Sai cho CL setting | Per-input vs batch, balance constraint harmful. Bạn đã tự reject — đúng |
328
- | I7: Distribution-based loss | ⚠️ Hướng đúng, chưa clean | Anti-drift cần old data → zero-replay tension |
329
-
330
- ## III.2 Phần SOLID (có thể build methodology trên):
331
-
332
- 1. **Expert characterization bằng SVD** (I4 refined): Frozen LoRA → SVD → spectral signature. Clean, zero-replay compliant, mathematically grounded.
333
-
334
- 2. **Geometric separation thay vì algebraic** (I5 refined): Grassmann distance, principal angles thay SVM. Tinh thần "geometry-aware separation" đúng, tool cần thay.
335
-
336
- 3. **Manifold perspective** (I1): CL = constrained optimization, subspace exhaustion là real → cần manage capacity.
337
-
338
- 4. **Soft integration** (I3): Standard nhưng correct — competitive softmax routing.
339
-
340
- ## III.3 Phần cần LOẠI BỎ hoặc chuyển đổi:
341
-
342
- 1. **OT routing** (I6): Đã tự reject, không nên quay lại. Softmax projection routing đơn giản, correct, working.
343
-
344
- 2. **SVM formulation** (I5): Replace bằng pairwise Grassmann distance penalty.
345
-
346
- 3. **Anti-drift loss** (I7 phần này): Tension với zero-replay. Nếu muốn giữ, cần chỉ rõ KHÔNG dùng old data — chỉ dùng stored parameters (weight-derived proxies).
347
-
348
- ---
349
-
350
- # IV. PHẢN BIỆN TỔNG THỂ — "CON VOI TRONG PHÒNG"
351
-
352
- Tôi cần challenge 3 assumption lớn mà cả bạn lẫn AI đều không address đủ:
353
-
354
- ## IV.1 "Modification energy ≠ Modification quality"
355
-
356
- Projection fit đo: "expert sẽ MODIFY INPUT BAO NHIÊU theo hướng $v_i$".
357
-
358
- $$\text{fit}_t(h) = \frac{\sum_i \sigma_{t,i}^2 (v_{t,i}^T h)^2}{\sum_i \sigma_{t,i}^2 \|h\|^2}$$
359
-
360
- Nhưng modify mạnh **KHÔNG ĐỒNG NGHĨA** modify đúng. Expert có thể:
361
- - Modify input mạnh theo hướng $v_1$ nhưng modification làm OUTPUT TỆ HƠN (wrong direction in output space)
362
- - Hai experts có cùng input sensitivity nhưng khác OUTPUT behavior
363
-
364
- **Counter-argument** (weak): Expert được train on task $t$ → learned modification presumably correct cho task $t$ inputs → high projection fit + correct task overlap → modification likely correct.
365
-
366
- **Verdict**: Assumption cần empirical validation. Nếu routing accuracy > 90% → assumption holds, else → need output-sensitive routing.
367
-
368
- ## IV.2 "Mean pooling loses sequence structure"
369
-
370
- Cả GainLoRA lẫn SpecRoute route dựa trên:
371
- $$\bar{h} = \frac{1}{|\text{tokens}|} \sum_i h_i$$
372
-
373
- Hai sequences có khác content nhưng similar average → misrouted. Ví dụ:
374
- - "Summarize this article about climate change" vs "Answer this question about climate change"
375
- - Average embeddings gần nhau (same content), nhưng tasks khác nhau (summarization vs QA)
376
-
377
- **Mitigating factor**: Routing dựa trên TOÀN BỘ encoder layers (averaged), không chỉ embedding layer → higher layers encode task-type information → less likely to confuse.
378
-
379
- **Verdict**: Partial weakness, addressable but not currently addressed.
380
-
381
- ## IV.3 "Representation drift là real nhưng chưa ai quantify"
382
-
383
- Khi thêm LoRA branches liên tiếp, input embeddings $h^{(l)}$ ở mỗi layer thay đổi (vì accumulated LoRA effects). Spectral signatures frozen → fit calculation trên drifted $h$ → routing quality degrades.
384
-
385
- GainLoRA's answer: `previous_trans_input` snapshots (frozen MLPs per task). SpecRoute: KHÔNG có mechanism nào cho drift.
386
-
387
- **Hypothesis**: Drift nhỏ vì LoRA rank thấp ($r = 4$), total modification rank ≤ 60 trong 1024 dims.
388
-
389
- **CHƯA AI ĐO**.
390
-
391
- ---
392
-
393
- # V. ĐỀ XUẤT PHƯƠNG PHÁP LUẬN — XÂY TỪ PHẦN SOLID
394
-
395
- ## V.1 Core thesis (từ ý tưởng gốc của bạn, refined)
396
-
397
- > **Trong expandable LoRA CL, frozen expert weights encode đủ thông tin hình học (qua SVD spectral structure) để routing KHÔNG CẦN learned parameters. Routing parameter-free loại bỏ routing forgetting, đơn giản hóa training, giảm subspace consumption.**
398
-
399
- Đây là insight thật sự có giá trị từ quá trình suy nghĩ của bạn: từ I4 (geometric characterization) → rút gọn thành "spectral signatures are sufficient for routing".
400
-
401
- ## V.2 Framework: 3 tầng (thay vì 3 "contributions" tách rời)
402
-
403
- ### Tầng 1: Expert Geometry (I4 refined)
404
-
405
- **What**: Mỗi frozen expert $\Delta W_t = B_t A_t$ được characterize bằng spectral signature $\mathcal{S}_t = \{V_t, \Sigma_t\}$ from SVD.
406
-
407
- **Geometric interpretation**: Expert $t$ "lắng nghe" tập input directions $\{v_{t,i}\}$, với sensitivity $\sigma_{t,i}^2$. Tập hợp các sensitivity levels tạo thành ellipsoidal pattern trên input space (dúng I4, refined sang đúng space).
408
-
409
- **Tại sao grounded**:
410
- - SVD là unique factorization (up to sign) → deterministic
411
- - $V_t$ encode CHÍNH XÁC "expert operates on which input directions" (từ InfLoRA's Proposition 1)
412
- - Zero-replay compliant: computed from model params, not data
413
- - Immutable: computed from frozen weights
414
-
415
- ### Tầng 2: Geometric Routing (I5 tinh thần + I6 rejected → softmax)
416
-
417
- **What**: Route input $h$ tới experts via weighted projection fit (Section IV.3 của SpecRoute). Competitive softmax routing.
418
-
419
- **Why softmax not OT**: (I6 rejected, đúng) — per-input, no balance needed, works at batch=1.
420
-
421
- **Why softmax not sigmoid**: Competitive → forces selection → inductive bias đúng cho non-overlapping tasks. Scale-stable ($\sum w = 1$).
422
-
423
- **Why projection fit not learned gating**: (Your core insight) — parameter-free, immutable, directly functional.
424
-
425
- **Geometric separation**: Thay vì SVM (I5 rejected), separation emerges NATURALLY from:
426
- - GPM đảm bảo $\text{span}(V_t) \approx \perp \text{span}(V_{t'})$
427
- - $\Rightarrow$ fit_t(h) high → fit_{t'}(h) low for $t' \neq t$
428
- - Không cần thêm penalty — orthogonality đã đảm bảo discriminative routing
429
-
430
- **Đây là insight sâu**: Bạn muốn max separation (I5) nhưng GPM ALREADY provides it. Hai mechanisms bù cho nhau:
431
- - GPM ensures orthogonal experts (structural separation)
432
- - Spectral routing exploits that orthogonality (functional separation)
433
- - Không cần penalty/SVM/OT thêm
434
-
435
- ### Tầng 3: Capacity management (I1 + I2 refined)
436
-
437
- **What**: Quản lý subspace budget để tasks tương lai vẫn có đủ capacity.
438
-
439
- **From I1**: Subspace exhaustion là real — K constraints tích lũy, feasible manifold shrink.
440
-
441
- **From I2**: Pure penalty (loosen orthogonality) trái chiều. Pure hard lock (GPM increasing threshold) unfair.
442
-
443
- **Principled approach** (chưa implement, nhưng well-defined):
444
- - Importance-weighted protection: directions có $\sigma_i^2$ lớn → protect mạnh, $\sigma_i^2$ nhỏ → protect yếu hoặc release
445
- - Constant threshold ($\epsilon = 0.995$) → fair allocation (mỗi task protect cùng ratio)
446
- - Capacity monitoring: track $\dim(\mathcal{M}_{1:t})$ vs $d_{in}$ → alert nếu approaching exhaustion
447
-
448
- ## V.3 Tại sao framework này khái quát cho CẢ LỚP BÀI TOÁN
449
-
450
- Framework không phụ thuộc vào:
451
- 1. **Backbone**: T5, LLaMA, BERT (miễn có linear attention layers nơi LoRA applied)
452
- 2. **Task type**: Generation, classification, QA (miễn dùng expandable LoRA)
453
- 3. **Anti-forgetting method**: Compatible với GPM, InfLoRA, O-LoRA, CLoRA (miễn experts có null-space structure)
454
- 4. **Number of tasks**: SVD + softmax scale linearly với T
455
-
456
- Nó cũng provide unified view cho existing methods:
457
-
458
- | Method | Expert Geometry | Routing | Anti-forgetting |
459
- |--------|----------------|---------|-----------------|
460
- | GainLoRA | Implicit (trong learned gate) | Learned (MLP + cosine) | GPM on all params |
461
- | InfLoRA | None (equal weight) | None (uniform) | Null-space init |
462
- | MINGLE | SVD for construction | Learned (MoE gate) | Null-space + EMA relax |
463
- | Feature Dist. | Mean feature vectors | Similarity matching | None explicit |
464
- | **This framework** | SVD spectral signature | Projection fit + softmax | GPM on LoRA only |
465
-
466
- ---
467
-
468
- # VI. WHAT THIS FRAMEWORK CANNOT DO (honest)
469
-
470
- 1. **Guarantee correct routing**: Projection fit is a proxy, not an oracle. If expert's input subspace doesn't uniquely identify task → routing errors.
471
-
472
- 2. **Handle representation drift**: No explicit mechanism. Relies on hypothesis that low-rank LoRA → small drift. Unproven.
473
-
474
- 3. **Solve subspace exhaustion completely**: Constant threshold is incremental improvement, not solution. True solution requires importance-weighted dynamic allocation (not implemented).
475
-
476
- 4. **Claim novelty on ALL components**: Soft gate, SVD, GPM are all existing tools. Novelty is THE COMBINATION: "weight-derived spectral routing in CL" and "parameter-free routing eliminates routing forgetting".
477
-
478
- 5. **Replace empirical validation**: Every claim above is theoretical. NOTHING is proven until experiments run.
479
-
480
- ---
481
-
482
- # VII. HÓA GIẢI: TRAJECTORY CHÍNH XÁC CỦA TƯ DUY BẠN
483
-
484
- Nhìn lại toàn bộ discussion, trajectory tư duy của bạn:
485
-
486
- ```
487
- Observation: CL = optimization trên manifold constrained (I1)
488
-
489
- Insight: Hard constraints cause exhaustion (I2)
490
-
491
- Pivot: Soft gate for flexibility (I3)
492
-
493
- Key idea: LoRA geometry = ellipsoid, SVD captures it (I4) ← ĐÚNG NHẤT
494
-
495
- Over-engineering: SVM for max margin (I5) ← TINH THẦN ĐÚNG, TOOL SAI
496
-
497
- Over-engineering: OT for routing (I6) ← SAI CHO CL SETTING
498
-
499
- Abstraction: Distribution-based loss (I7) ← HƯỚNG ĐÚNG, CHI TIẾT CHƯA
500
-
501
- Self-correction: Reject OT → Projection fit + softmax (C2_analysis) ← XUẤT SẮC
502
-
503
- Final: SpecRoute — SVD signatures + projection routing + constant threshold
504
- ```
505
-
506
- **Pattern**: Bắt đầu từ insight đúng (I1, I4) → overengineer (I5, I6) → bị AI inflate thay vì correct → tự nhận ra → simplify. Final product (SpecRoute) đơn giản hơn ban đầu — **đây là dấu hiệu tốt**.
507
-
508
- **Concern**: Trong quá trình simplify, bạn cũng bỏ đi một số ý hay:
509
- - I2 (capacity awareness) → ESA hiện tại quá đơn giản (constant threshold)
510
- - I5 tinh thần (geometry-aware separation) → không còn explicit mechanism, relies entirely on GPM's approximate orthogonality
511
-
512
- **Recommendation**:
513
- - Xem ESA là **open problem**, không phải solved contribution
514
- - Grassmann distance monitoring (without penalty loss) có thể dùng làm **diagnostic tool** cho paper — track separation quality across tasks
515
-
516
- ---
517
-
518
- # VIII. KHUYẾN NGHỊ CUỐI
519
-
520
- ## Nếu mục tiêu là paper:
521
-
522
- 1. **Core contribution tuyên bố**: "Parameter-free routing via spectral signatures of frozen LoRA weights eliminates routing forgetting." — Đây là novelty thật, verifiable, clean.
523
-
524
- 2. **Thí nghiệm PHẢI CÓ**:
525
- - SpecRoute vs GainLoRA (same benchmark, same data splits)
526
- - Routing accuracy analysis (on held-out old tasks)
527
- - Representation drift measurement
528
- - Ablation: spectral fit vs prompt key vs random vs uniform
529
-
530
- 3. **Đừng claim ESA (C3)**: Constant threshold không đủ mạnh. Hoặc develop importance-weighted version, hoặc merge vào hyperparameter section.
531
-
532
- 4. **Position vs Feature Distributions (ICML 2025)**: Closest competitor. Their key = store mean feature vectors (data-level). Your key = store SVD of frozen weights (weight-level). Both are "characterization + similarity routing", but you are zero-replay clean, they arguably are not.
533
-
534
- ## Nếu mục tiêu là methodology cho cả lớp bài toán:
535
-
536
- 1. **Formalize "Expert Characterization Problem"**: Given frozen expert weights, what is the optimal characterization for downstream routing? SVD là 1 answer, nhưng framework nên define CRITERIA (immutable, functional, discriminative, compact) rồi show SVD satisfies all.
537
-
538
- 2. **Formalize "Routing Correctness"**: Define routing accuracy operationally, prove that projection fit + orthogonal experts → routing accuracy ≥ threshold.
539
-
540
- 3. **Formalize "Capacity Budget"**: Given $d_{in}$ dims, $T$ tasks, what is the maximum information each task can claim while maintaining minimum routing quality? This is the real open problem.
541
-
542
- 4. **CHẠY THÍ NGHIỆM trước khi viết thêm.** Bạn đã nghĩ đủ nhiều. Code đã có. Kết quả thực nghiệm sẽ cho biết framework có value không — nếu không win trên numbers, lý thuyết đẹp bao nhiêu cũng không đủ.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
human_working_IdeaMethod_and_discuss/method.md DELETED
@@ -1,458 +0,0 @@
1
- # RIEMANNIAN TOPOLOGICAL ALIGNMENT (RTA) FOR CONTINUAL LEARNING
2
-
3
- ## I. MOTIVATION & THEORETICAL FOUNDATION
4
-
5
- ### Problem Statement
6
- Trong Continual Learning (CL), encoder trôi dạt (encoder drift) khi học new tasks, dẫn đến catastrophic forgetting. Các phương pháp hiện tại (e.g., MINION v17) chỉ bảo tồn knowledge ở level output, không model hóa feature distribution geometry.
7
-
8
- ### Core Insight
9
- Features sau normalization nằm trên hypersphere $\mathbb{S}^{d-1}$, không phải Euclidean space. Do đó:
10
- - Khoảng cách/góc giữa features phải đo bằng Riemannian metric, không Euclidean distance
11
- - Cấu trúc phân phối (covariance) trên manifold cong khác fundamentally với Euclidean case
12
- - Bảo tồn topology = bảo tồn Fisher Information Metric (FIM), không chỉ bảo tồn weights
13
-
14
- ### Transition từ MINION v17 → RTA
15
- **MINION v17 limitations:**
16
- - Mô hình vMF đẳng hướng: giả định mọi chiều có độ xòe như nhau (isotropic)
17
- - Procrustes alignment tuyến tính: sai số tích lũy qua layers
18
- - Không detect feature drift, chỉ align parameters
19
- - Không formal definition của "bảo tồn knowledge"
20
-
21
- **RTA improvements:**
22
- - Bingham distribution (anisotropic): học được hình ellipsoidal clusters
23
- - Parallel transport trên manifold: bảo tồn metric relationships
24
- - Feature-level monitoring + Riemannian distillation
25
- - Formalize bảo tồn via Fisher Information Metric
26
-
27
- ---
28
-
29
- ## II. FRAMEWORK COMPONENTS
30
-
31
- ### Giai đoạn 1: Biểu diễn xác suất phi đẳng hướng (Anisotropic Probability Modeling)#### Từ vMF (isotropic) sang Bingham (anisotropic)
32
-
33
- Mô hình von Mises-Fisher chuẩn chỉ capture symmetry:
34
- $$f(z; \mu, \kappa) = \frac{\kappa^{d/2-1}}{(2\pi)^{d/2} I_{d/2-1}(\kappa)} \exp(\kappa \mu^T z)$$
35
-
36
- Nhưng điều này giả định **mọi hướng từ trung tâm $\mu$ có xác suất như nhau** - không phù hợp vì:
37
- - Các feature dimensions có ý nghĩa khác nhau
38
- - Task-specific dimensions có variance cao hơn
39
- - Catastrophic forgetting xảy ra khi task-specific dimensions bị overwrite
40
-
41
- #### Bingham Distribution - Giải pháp Anisotropic
42
-
43
- Trên siêu cầu $\mathbb{S}^{d-1}$, ta dùng **Bingham distribution**:
44
- $$f(z; A_c) = \frac{1}{F(A_c)} \exp(z^T A_c z), \quad z \in \mathbb{S}^{d-1}$$
45
-
46
- **Ưu điểm:**
47
- - $A_c = \sum_{i=1}^{d} \lambda_i v_i v_i^T$ là ma trận đối xứng
48
- - Eigenvectors $\{v_i\}$: các trục chính của cụm features
49
- - Eigenvalues $\{\lambda_i\}$: độ "dài" của cụm dọc từng axis (anisotropy)
50
- - Tự động learn hình ellipsoidal clusters, không gồing circular
51
-
52
- **Mô hình hóa per-class:**
53
- $$P_c^{(t)} = \{A_c^{(t)}, \text{variance}_c^{(t)}\}$$
54
-
55
- Lưu **toàn bộ covariance structure**, không chỉ mean + concentration like vMF.### Giai đoạn 2: Khóa Topology via Riemannian Knowledge Distillation
56
-
57
- #### Problem: Catastrophic Forgetting từ Topology Shift
58
-
59
- Khi encoder update trên task $t$, mean + covariance của old classes thay đổi:
60
- - **Mean shift**: $\mu_c^{(t-1)} \to \tilde{\mu}_c^{(t)}$
61
- - **Axis rotation**: $V_{c}^{(t-1)} \to V_{c}^{(t)}$
62
- - **Anisotropy change**: $\Lambda_c^{(t-1)} \to \Lambda_c^{(t)}$
63
-
64
- → **Topology bị deform**, dù output predictions còn hợp lý
65
-
66
- #### Solution: Riemannian Kullback-Leibler Divergence
67
-
68
- Thay vì chỉ dùng output-level distillation:
69
- $$\mathcal{L}_{old} = \text{KL}(p_{old}(y|x) \| p_{new}(y|x))$$
70
-
71
- Ta thêm **Riemannian KL trên parameter manifold**:
72
- $$\mathcal{L}_{geo} = D_{RKL}(P_{old}^{(t-1)} \| P_{new}^{(t)})$$
73
-
74
- **Formal definition:**
75
- $$D_{RKL}(P_1 \| P_2) = \int_{\Theta} P_1(\theta) \log \frac{P_1(\theta)}{P_2(\theta)} d\theta$$
76
-
77
- Trong đó $\{\Theta\}$ được trang bị **Fisher Information Metric (FIM)**:
78
- $$g_{ij}(\theta) = \mathbb{E}_{x,y \sim P(\cdot|\theta)} \left[ \frac{\partial \log p(y|x;\theta)}{\partial \theta_i} \frac{\partial \log p(y|x;\theta)}{\partial \theta_j} \right]$$
79
-
80
- #### Ý nghĩa: Bảo tồn Thông tin
81
- - KL divergence qua FIM = "bao lâu parameter move mà vẫn bảo tồn classification boundary"
82
- - Geometry lock: nếu $D_{RKL} \approx 0 \Rightarrow$ structure của $P_{old}$ intact
83
- - Automatic trade-off giữa performance mới vs retention cũ (không cần tune multiple λ's)
84
-
85
- #### Implementation Detail
86
- Per-layer:
87
- $$\mathcal{L}_{geo} = \sum_{l=1}^{L} D_{RKL}^{(l)}(A_c^{(t-1)} \| A_c^{(t)})$$
88
-
89
- Approximate bằng **Bure-Wasserstein distance** trên covariance:
90
- $$W_2(A_c^{old}, A_c^{new}) = \text{Tr}(A_c^{old} + A_c^{new} - 2(A_c^{old})^{1/2} A_c^{new} (A_c^{old})^{1/2})^{1/2}$$### Giai đoạn 3: Drift Correction via Parallel Transport on Manifold
91
-
92
- #### Limitation của Procrustes Rotation (MINION v17)
93
-
94
- Procrustes tìm ma trận quay tối ưu $R^*$ để align $W_0$ sang $W_1$:
95
- $$R^* = \arg\min_R \|R W_0 - W_1\|_F$$
96
-
97
- **Vấn đề:**
98
- 1. Giả định **Euclidean metric** - nhưng features nằm trên hypersphere
99
- 2. **Sai số tích lũy**: Apply qua $L$ layers, error accumulate exponentially
100
- 3. Không preserve **inner products** trên manifold
101
- 4. Không capture **non-linear drift** (e.g., rotation + dilation cùng lúc)
102
-
103
- #### Riemannian Alternative: Parallel Transport
104
-
105
- **Intuition**: Trên manifold cong, khi move từ point A → B, bằng cách nào để "move" một vector mà vẫn giữ "orientation" của nó?
106
-
107
- **Answer**: Parallel Transport - di chuyển vector dọc **geodesic** từ A đến B.
108
-
109
- #### Mathematical Framework
110
-
111
- Cho feature distribution trôi dạt từ $\mu_c^{old}$ → $\mu_c^{new}$ trên $\mathbb{S}^{d-1}$:
112
-
113
- **Bước 1: Xác định Geodesic**
114
- Đường cong ngắn nhất trên sphere nối points $\mu_c^{old}$ và $\mu_c^{new}$:
115
- $$\gamma(t) = \sin((1-t)\theta) \mu_c^{old} + \sin(t\theta) \mu_c^{new}, \quad t \in [0,1]$$
116
-
117
- Với $\theta = \arccos(\mu_c^{old} \cdot \mu_c^{new})$ là khoảng cách trắc địa.
118
-
119
- **Bước 2: Vận chuyển Covariance**
120
- Covariance matrix $A_c^{old}$ cần di chuyển dọc geodesic để trở thành $A_c^{aligned}$:
121
-
122
- $$A_c^{aligned} = \text{ParallelTransport}_{\gamma}(A_c^{old})$$
123
-
124
- **Bước 3: Tính Toán ParallelTransport**
125
- Trên sphere, Parallel Transport của tangent vector $v$ dọc geodesic được định nghĩa bởi **Levi-Civita connection**:
126
-
127
- $$\frac{D v}{dt} = 0 \quad \text{along } \gamma(t)$$
128
-
129
- **Explicit formula cho Bingham covariance:**
130
- $$A_c^{aligned} = A_c^{old} - (\theta \cot(\theta) - 1)(A_c^{old} \cdot \mu_c^{old})\mu_c^{old}^T$$
131
-
132
- #### Ưu điểm so với Procrustes
133
- 1. **Metric preserving**: $\langle v, w \rangle_{aligned} = \langle v, w \rangle_{old}$ (inner products preserved)
134
- 2. **Path-independent**: Kết quả không phụ thuộc cách drift xảy ra
135
- 3. **Error bounded**: Sai số không tích lũy qua layers (orthogonality guaranteed)
136
- 4. **Theoretically sound**: Dựa trên Riemannian geometry, không ad-hoc
137
-
138
- #### Implementation Consideration
139
- Trong practice, chỉ cần $M=1$ exemplar từ old class để estimate $\mu_c^{new}$:
140
- - Tính $\mu_c^{obs} = \frac{1}{N_{test}} \sum_{i=1}^{N_{test}} z_i^{(new)}$ trên test set của class $c$
141
- - Update geodesic = $\arccos(\mu_c^{old} \cdot \mu_c^{obs})$
142
- - Apply parallel transport tới all $A_c$ parameters### Giai đoạn 4: Unified Learning Objective
143
-
144
- #### Full Loss Function
145
-
146
- Kết hợp cả tính phân biệt (discrimination) và bảo tồn (retention):
147
-
148
- $$\mathcal{L}_{total} = \underbrace{\mathcal{L}_{CE}(f(x), y)}_{\text{new task}} + \lambda_1 \underbrace{\mathcal{I}(z; y)}_{\text{discriminativity}} + \lambda_2 \underbrace{D_{RKL}(P_{old} \| P_{new})}_{\text{geometry lock}}$$
149
-
150
- **Chi tiết từng term:**
151
-
152
- **Term 1: Task-specific Cross-Entropy**
153
- $$\mathcal{L}_{CE} = -\log p(y|x; \theta_t)$$
154
- Standard supervised loss trên task $t$ mới.
155
-
156
- **Term 2: Mutual Information (Discriminativity)**
157
- $$\mathcal{I}(z; y) = H(y) - H(y|z) = \mathbb{E}_{z,y}[\log p(y|z)] - \mathbb{E}_y[\log p(y)]$$
158
-
159
- Estimate via **InfoNCE** (contrastive learning):
160
- $$\mathcal{I} \approx \mathbb{E}_{(x,y)} \left[ \log \frac{\exp(z^T z_{pos}/\tau)}{\sum_{k} \exp(z^T z_k/\tau)} \right]$$
161
-
162
- Mục đích: Đảm bảo features vẫn nhân được hifi discriminatory information cho class separation.
163
-
164
- **Term 3: Riemannian KL Distillation**
165
- $$D_{RKL}(P_{old} \| P_{new}) = \sum_{c \in \text{old}} W_2(A_c^{old}, A_c^{new})$$
166
-
167
- + Áp dụng parallel transport correction từ giai đoạn 3
168
- + Tối thiểu hóa covariance shift trên toàn layer
169
-
170
- #### Dynamic Weight Scheduling
171
-
172
- Thay vì fixed $\lambda_1, \lambda_2$, dùng **adaptive weighting**:
173
-
174
- $$\lambda_1(t) = \lambda_1^{init} \times (1 - \frac{t}{T})^p, \quad p \in [1,2]$$
175
- $$\lambda_2(t) = \lambda_2^{init} \times (1 + \frac{t}{T})^q, \quad q \in [1,2]$$
176
-
177
- - Early epochs: emphasize task learning ($\lambda_1 \uparrow$, $\lambda_2 \downarrow$)
178
- - Later epochs: emphasize retention ($\lambda_1 \downarrow$, $\lambda_2 \uparrow$)
179
- - $t = $ number of gradient updates
180
- - $T = $ total updates in task
181
-
182
- #### Per-Layer Adaptation
183
-
184
- Vì early layers có ít drift (general features) vs late layers (task-specific):
185
-
186
- $$\lambda_2^{(l)} = \lambda_2 \times (1 + \alpha \cdot l / L)^{\beta}$$
187
-
188
- với $\alpha, \beta > 0$ learned via validation.
189
- ---
190
-
191
- ## III. COMPARATIVE ANALYSIS: RTA vs. MINION v17
192
-
193
- | Criterion | MINION v17 | RTA | Advantage |
194
- |-----------|-----------|-----|-----------|
195
- | **Distribution Model** | von Mises-Fisher (isotropic) | Bingham (anisotropic) | RTA captures task-specific anisotropy |
196
- | **Parameter Geometry** | Euclidean assumptions | Riemannian manifold | RTA preserves topology on $\mathbb{S}^{d-1}$ |
197
- | **Drift Correction** | Procrustes (linear rotation) | Parallel transport (geodesic path) | RTA avoids error accumulation |
198
- | **Knowledge Retention** | KL divergence on outputs | Riemannian KL + FIM-weighted | RTA locks feature topology, not just predictions |
199
- | **Adaptation** | Fixed ensemble weights | Dynamic per-layer scheduling | RTA adapts to feature drift rate |
200
- | **Drift Detection** | None (implicit in weight change) | Explicit geodesic distance | RTA quantifies drift magnitude |
201
- | **$M=1$ Reliability** | Low (mean estimate unstable) | Medium-High (only for geodesic direction) | RTA robust with single exemplar |
202
- | **Computational Cost** | O($d^2$) per layer | O($d^3$) for eigendecomposition | RTA slightly higher cost, justified by robustness |
203
-
204
- **Summary**: RTA มี theoretical guarantees về metric preservation, automatic feature-level monitoring, และ principled drift correction. MINION v17 faster nhưng ad-hoc hơn.
205
-
206
- ---
207
-
208
- ## IV. THEORETICAL JUSTIFICATION
209
-
210
- ### Why Bingham > von Mises-Fisher?
211
-
212
- Consider binary classification on sphere. Features nằm trên hemi-sphere $\mathbb{S}^{d-1}$:
213
- - Features của class 0: clustered around $\mu_0$
214
- - Features của class 1: clustered around $\mu_1$
215
-
216
- **vMF assumption**: Tất cả eigenvectors của covariance có eigenvalue $\kappa$ (same concentration)
217
- → Circular clusters, nguy hiểm khi:
218
- - Task-specific directions overlap (confusable features)
219
- - Early-stop causes under-learning in some dimensions
220
-
221
- **Bingham modeling**: Eigenvalues $\lambda_i$ khác nhau
222
- → Ellipsoidal clusters capture:
223
- - Discriminative dimensions (high $\lambda_i$)
224
- - Non-discriminative "noise" dimensions (low $\lambda_i$)
225
- - Automatically learns importance weighting per dimension
226
-
227
- ### Why Parallel Transport > Procrustes?
228
-
229
- **Procrustes on Hypersphere:**
230
- Nếu áp dụng $\hat{z} = R z$ với $R \in SO(d)$ trên hypothesized z ∈ $\mathbb{S}^{d-1}$:
231
- $$\|R z\|_2 = \|z\|_2 = 1 \checkmark$$
232
-
233
- Nhưng **lặp lại qua layers:**
234
- $$z^{(L)} = R_L \cdots R_2 R_1 z^{(0)}$$
235
-
236
- Due to numerical precision, $\|z^{(L)}\|_2 \approx 1 - \epsilon L$ (accumulates!)
237
-
238
- **Parallel Transport preservation:**
239
- ForVector $v \in T_p \mathbb{S}^{d-1}$ và Parallel Transport $\text{PT}_\gamma(v)$ along geodesic $\gamma$:
240
- $$\|\text{PT}_\gamma(v)\|_p = \|v\|_p \quad \text{for ALL } p \in \gamma$$
241
- $$\langle \text{PT}_\gamma(v), \gamma'(t) \rangle = 0 \quad \text{(stays orthogonal to manifold)}$$
242
-
243
- → **No accumulation**, guaranteed metric preservation.
244
-
245
- ### Why RKL > Output-level KL?
246
-
247
- **Output-level KL:**
248
- $$\text{KL}(p_t(y|x) \| p_{t+1}(y|x))$$
249
-
250
- Problem: Có thể minimize nếu $p_{t+1}$ "soften" predictions qua temperature scaling. Nhưng features shift dramatically!
251
-
252
- **RKL via Fisher Information Metric:**
253
- $$D_{RKL}(\theta_t \| \theta_{t+1}) = \int \text{FIM}(\theta_t) \| \Delta\theta \|^2 d\theta$$
254
-
255
- iff $D_{RKL} \approx 0$:
256
- - Decision boundaries stable
257
- - Features bảo tồn discriminative structure
258
- - Weight changes thuộc trong "safe region"
259
-
260
- ---
261
-
262
- ## V. ALGORITHMIC DETAILS & IMPLEMENTATION
263
-
264
- ### Training Algorithm (RTA-CL)
265
-
266
- **Input**: Current task data $D_t$, old learned distributions $\{P_c^{(t-1)}\}_{c \in C_{old}}$, network $f_\theta$
267
-
268
- **Output**: Updated parameters $\theta_t$, updated distributions $\{P_c^{(t)}\}$
269
-
270
- ```
271
- Algorithm: Continual Learning with RTA
272
-
273
- for each task t = 1, 2, ..., T:
274
-
275
- # Phase 1: Collect Feature Statistics
276
- Z_c = [] # Buffer per old class
277
- for c in C_old:
278
- Z_c = collect_features(D_test^c, f_{θ_{t-1}}) # M=1 exemplar per class
279
- μ_c^{obs} ← mean(Z_c)
280
-
281
- # Phase 2: Detect Drift & Compute Geodesics
282
- geodesic_dist = []
283
- for c in C_old:
284
- θ_c ← arccos(μ_c^{old} · μ_c^{obs}) # geodesic angle
285
- geodesic_dist.append(θ_c)
286
-
287
- # Phase 3: Train on New Task
288
- for epoch = 1 to num_epochs:
289
- for batch (x, y) in D_t:
290
-
291
- # Forward pass
292
- z = encoder(x) # features on sphere
293
- logits = classifier(z)
294
-
295
- # Task loss
296
- L_CE = CrossEntropy(logits, y)
297
-
298
- # Mutual information (discriminativity)
299
- L_MI = -InfoNCE(z, y)
300
-
301
- # Geometry lock with drift correction
302
- L_geo = 0
303
- for c in C_old:
304
- # Parallel transport correction
305
- A_c^{aligned} = ParallelTransport(
306
- A_c^{old},
307
- μ_c^{old},
308
- μ_c^{obs}
309
- )
310
-
311
- # Compute current covariance
312
- A_c^{new} = compute_covariance(
313
- features_c^{new}, method='Bingham_MLE'
314
- )
315
-
316
- # Wasserstein distance between old and new
317
- L_geo += W_2(A_c^{aligned}, A_c^{new})
318
-
319
- # Adaptive weighting
320
- λ₁ = λ₁_init * (1 - epoch/num_epochs)^1.5
321
- λ₂ = λ₂_init * (1 + epoch/num_epochs)^1.5
322
-
323
- # Total loss
324
- L_total = L_CE + λ₁*L_MI + λ₂*L_geo
325
-
326
- # Backward
327
- θ ← θ - α ∇L_total
328
-
329
- # Phase 4: Update Distributions for Next Task
330
- θ_{t} ← θ
331
- for c in C_old ∪ C_new:
332
- A_c^{(t)} ← compute_covariance(
333
- collect_features(D_train^c, f_{θ_t}),
334
- method='Bingham_MLE'
335
- )
336
- P_c^{(t)} = {A_c^{(t)}, variance_c^{(t)}}
337
- ```
338
-
339
- ### Computational Complexity Analysis
340
-
341
- | Operation | Complexity | Notes |
342
- |-----------|-----------|-------|
343
- | Bingham MLE (per class) | $O(d^3 + n_c d^2)$ | eigendecomposition dominates |
344
- | Parallel Transport | $O(d^2)$ | simple matrix-vector ops |
345
- | Wasserstein W_2 | $O(d^3)$ | one matrix sqrt call |
346
- | Drift detection (M=1) | $O(d)$ | just dot product |
347
- | Per-batch overhead | $O(d^2)$ | Computing A_c during training |
348
-
349
- **Total per task**:
350
- - Training: $O(N_{epochs} \times N_{batches} \times d^2)$ (manageable)
351
- - Evaluation: $O(|C_{old}| \times d^3)$ (one-time, after training)
352
-
353
- **Memory**: $O(L \times |C_{old}| \times d^2)$ cho lưu covariance matrices (reasonable)
354
-
355
- ### Hyperparameter Settings (Recommended)
356
-
357
- ```
358
- λ₁_init = 0.1 # mutual information weight
359
- λ₂_init = 0.01 # RKL weight (start small)
360
- α_layer = 0.5 # per-layer RKL scaling
361
- τ = 0.05 # temperature for InfoNCE
362
- warmup_epochs = 5 # before applying geometry loss
363
- num_exemplars_M = 1 # per old class (memory efficient)
364
- ```
365
-
366
- ---
367
-
368
- ## VI. COMPARATIVE ANALYSIS & EXPECTED IMPACT
369
-
370
- ### RTA vs. MINION v17 (Detailed)
371
-
372
- | Criterion | MINION v17 | RTA | Advantage |
373
- |-----------|-----------|-----|-----------|
374
- | **Distribution Model** | von Mises-Fisher (isotropic) | Bingham (anisotropic) | RTA captures task-specific anisotropy |
375
- | **Parameter Geometry** | Euclidean assumptions | Riemannian manifold | RTA preserves topology on $\mathbb{S}^{d-1}$ |
376
- | **Drift Correction** | Procrustes (linear rotation) | Parallel transport (geodesic path) | RTA avoids error accumulation |
377
- | **Knowledge Retention** | KL divergence on outputs | Riemannian KL + FIM-weighted | RTA locks feature topology |
378
- | **Adaptation** | Fixed ensemble weights | Dynamic per-layer scheduling | RTA adapts to feature drift rate |
379
- | **Drift Detection** | Implicit | Explicit geodesic distance | RTA quantifies drift magnitude |
380
- | **$M=1$ Reliability** | Low | Medium-High | RTA robust with one exemplar |
381
- | **Computational Cost** | O($d^2$) per layer | O($d^3$) per task | RTA justified for architecture $d < 2048$ |
382
-
383
- ### Expected Benefits
384
-
385
- 1. **Theoretical Soundness** ✅
386
- - Formalized từ Riemannian geometry + Information theory
387
- - Metric preservation guaranteed (no accumulation error)
388
- - FIM-weighted retention (principled trade-off)
389
-
390
- 2. **Feature-Level Monitoring** ✅
391
- - Explicit encoder drift detection (geodesic angle)
392
- - Adapt weighting per layer based on drift rate
393
- - Early warning: predict forgetting before it happens
394
-
395
- 3. **Robustness with Few Exemplars** ✅
396
- - Only M=1 exemplar per class required
397
- - Used only for geodesic direction (not mean estimation)
398
- - Stable covariance via Bingham MLE regularization
399
-
400
- 4. **Anisotropy Learning** ✅
401
- - Auto-discover task-specific dimensions
402
- - Protect important features while allowing update in noise
403
- - Implicit soft-attention to discriminative directions
404
-
405
- ### Limitations & Mitigation
406
-
407
- 1. **Computational Cost** ⚠️
408
- - Eigendecomposition ($O(d^3)$) per task
409
- - Practical for $d < 2048$, problematic for ViT ($d > 4096$)
410
- - **Mitigation**: Low-rank Bingham approximation (top-k eigenvectors)
411
-
412
- 2. **Small M Assumption** ⚠️
413
- - M=1 not reliable if exemplar outlier
414
- - **Mitigation**: Robust covariance (Huber-type)
415
-
416
- 3. **Hyperparameter Tuning** ⚠️
417
- - Multiple $\lambda$'s to tune
418
- - **Mitigation**: Automatic scheduling via validation
419
-
420
- 4. **Feature Normalization Requirement** ⚠️
421
- - Assumes normalized embeddings
422
- - **Mitigation**: Standard practice in modern architectures
423
-
424
- ---
425
-
426
- ## VII. CONCLUSION & RECOMMENDATIONS
427
-
428
- ### Summary: Why RTA is "Tighter" than MINION v17
429
-
430
- 1. ✅ **Rigorous Mathematics**: Bingham + Riemannian geometry unified framework
431
- 2. ✅ **Explicit Monitoring**: Track feature drift via geodesic distance
432
- 3. ✅ **Metric Preservation**: Parallel Transport guarantees no accumulation error
433
- 4. ✅ **Formal Retention**: RKL via Fisher Information Metric (not ad-hoc)
434
- 5. ✅ **Adaptive Learning**: Per-layer + dynamic weighting based on real drift
435
-
436
- ### Trade-offs
437
-
438
- - Higher computational cost (eigendecomposition per task)
439
- - More hyperparameters (automatic scheduling helps)
440
- - Requires normalized features (okay for modern architectures)
441
-
442
- ### When to Use RTA
443
-
444
- **Use RTA if:**
445
- - ✅ Catastrophic forgetting is main bottleneck
446
- - ✅ Feature drift is large (domain shift / diverse tasks)
447
- - ✅ Can afford $O(d^3)$ computation per task
448
- - ✅ $d < 2048$ (typical CNN/small transformer)
449
-
450
- **Use simpler methods (EWC, LwI) if:**
451
- - ✅ Only incremental learning needed (similar domains)
452
- - ✅ Memory/compute severely limited
453
- - ✅ Model is large ($d > 4096$)
454
-
455
- **Hybrid approach:**
456
- - Apply RTA to early+middle layers (detect drift early)
457
- - Simple EWC regularization on final layer (cheap)
458
- - 70% of benefits, 40% of cost
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
human_working_IdeaMethod_and_discuss/new_idea_analysis.md DELETED
@@ -1,470 +0,0 @@
1
- # Phân Tích Ý Tưởng Mới: Statistical Knowledge Signatures + OT Routing + Backbone Anti-Drift
2
- ## Comprehensive Analysis Report
3
-
4
- ---
5
-
6
- # PHẦN 1: TỔNG QUAN Ý TƯỞNG MỚI
7
-
8
- ## 1.1 Bối cảnh & Động lực
9
- Quan sát: Các paper top conference 2025 (NeurIPS, ICML, ICLR, ACL...) quan tâm rất nhiều tới **knowledge isolation via submodule + routing**:
10
- - GainLoRA (NeurIPS'25): LoRA branches + gating
11
- - MINGLE (NeurIPS'25): MoE + Null-Space Gating
12
- - SMoLoRA (ICCV'25): Separable Mixture of LoRA
13
- - TreeLoRA (ICML'25): Hierarchical gradient-similarity tree
14
- - HiDe-LLaVA (ACL'25): Task-specific expansion + CKA fusion
15
- - MoE-Adapters (CVPR'24): Standard MoE routing
16
- - ... và nhiều paper khác
17
-
18
- → Xu hướng rõ ràng: **Submodule architecture + routing mechanism** là paradigm chủ đạo 2025.
19
-
20
- ## 1.2 Ba Thành Phần Của Ý Tưởng Mới
21
-
22
- ### Component 1: Statistical Knowledge Signatures
23
- - Sử dụng công cụ thống kê mạnh (vMF, Bingham, GMM...) để **khái quát hóa không gian tri thức** của mỗi module
24
- - Mỗi module/expert có một "chữ ký thống kê" (signature/fingerprint) mô tả phân phối dữ liệu mà nó đã học
25
- - Khác biệt với gating networks: signature mang ý nghĩa thống kê rõ ràng, không phải learned weights
26
-
27
- ### Component 2: Optimal Transport Routing
28
- - Sử dụng OT làm **cơ chế routing có nguyên tắc** (principled routing)
29
- - Cost matrix dựa trên **khoảng cách phân phối** giữa input và signatures của các modules
30
- - Thay thế softmax gating/top-k selection bằng OT matching
31
-
32
- ### Component 3: Backbone Anti-Drift & Anti-Invasion
33
- - Phần backbone chung (shared) được bảo vệ bởi:
34
- - Loss phạt drift representation (tâm cụm cũ không được trôi quá xa)
35
- - Loss phạt xâm lấn (class mới không được xâm phạm vùng class cũ)
36
- - Kế thừa từ simple_idea cũ, áp dụng vào modular architecture
37
-
38
- ---
39
-
40
- # PHẦN 2: ĐÁNH GIÁ TÍNH MỚI (NOVELTY ASSESSMENT)
41
-
42
- ## 2.1 Kết luận tổng quát: **NOVELTY CAO**
43
-
44
- Không có paper nào (trong 109 papers khảo sát + ~30 papers bổ sung) kết hợp cả 3 thành phần. Từng thành phần riêng lẻ có prior work nhưng ở **mục đích và cách dùng khác**.
45
-
46
- ## 2.2 Cross-check với 109 Papers Khảo Sát
47
-
48
- ### Component 1 — Statistical Signatures cho Modules
49
-
50
- | Paper | Gì đã làm | Khác biệt với ý tưởng mới |
51
- |-------|-----------|---------------------------|
52
- | **35. Feature Distributions** (ICML'25) | "Presentative feature distribution" để chọn PEFT block | Distribution = **mean vector only**, không phải rich statistical model (vMF/Bingham). Dùng cho block selection, không phải knowledge fingerprint |
53
- | **73. PromptCCD** (ECCV'24) | GMM cho prompt pool routing | GMM = Gaussian, không geometric. Dùng cho category discovery, không phải CL routing |
54
- | **96. FeCAM** (NeurIPS'23) | Class-specific covariance + Mahalanobis | Statistical modeling nhưng cho **classification** (single model), không phải module signature |
55
- | **65. CLAP4CLIP** (NeurIPS'24) | Probabilistic feature modeling | Gaussian distribution, CLIP-based, không phải module fingerprint |
56
-
57
- **Kết luận Component 1:** Paper 35 gần nhất nhưng chỉ dùng mean-vector representation, không phải rich statistical model. **Không có paper nào dùng vMF/Bingham/Directional distributions làm "chữ ký tri thức" cho module.**
58
-
59
- ### Component 2 — OT-based Routing
60
-
61
- | Paper | Routing mechanism | Khác biệt |
62
- |-------|------------------|-----------|
63
- | **01. GainLoRA** (NeurIPS'25) | Gating modules | Learned gating, không distributional |
64
- | **02. MINGLE** (NeurIPS'25) | Null-Space Constrained Gating | Algebraic constraint, không OT |
65
- | **09. MoDE** (NeurIPS'25) | Modality-based separation | By modality, không distributional |
66
- | **14. SMoLoRA** (ICCV'25) | Dual routing (visual + instruction) | Separable by function, không OT |
67
- | **21. PLAN** (ICCV'25) | Orthogonal basis allocation | Algebraic, không OT |
68
- | **23. ARM** (ACL'25) | Activation-guided routing | Activation-based, không distributional |
69
- | **27. HiDe-LLaVA** (ACL'25) | CKA similarity fusion | Similarity metric, không OT |
70
- | **41. TreeLoRA** (ICML'25) | Gradient-similarity tree | Gradient-based, không distributional |
71
- | **82. MoE-Adapters** (CVPR'24) | Standard MoE gating | Softmax gating, không OT |
72
- | **102. MRN** (ICCV'23) | Multiplexed routing | Language-specific paths, không OT |
73
-
74
- **Kết luận Component 2: Trong 109 papers, KHÔNG có paper nào dùng OT cho routing trong CL.** Tất cả dùng gating networks, activation-based, gradient-similarity, hoặc algebraic constraints.
75
-
76
- ### Component 3 — Backbone Anti-Drift trong Modular Architecture
77
-
78
- | Paper | Drift handling | Khác biệt |
79
- |-------|---------------|-----------|
80
- | **77. LDC** (ECCV'24) | Learnable drift compensation | **Single model**, không phải modular backbone |
81
- | **20. Dual Drift** (ICCV'25) | Prototype drift analysis | Single model, prototype-level |
82
- | **61. LoRA-** (CVPR'25) | Drift-Resistant Space | LoRA subtraction, không phải anti-drift loss |
83
- | **47. Proxy-FDA** (ICML'25) | Feature distribution alignment | Single model + proxies |
84
- | **13. MG-CLIP** (ICCV'25) | Modality gap preservation | CLIP-specific, không phải backbone share |
85
-
86
- **Kết luận Component 3: Drift compensation đã được nghiên cứu, nhưng TRONG CONTEXT SINGLE-MODEL.** Không có paper nào áp dụng anti-drift + anti-invasion loss cho **backbone của modular architecture.**
87
-
88
- ## 2.3 Cross-check với Papers Bổ Sung (Ngoài 109)
89
-
90
- ### OT trong MoE/Routing (không phải CL)
91
-
92
- | Paper | Chi tiết | Mối quan hệ |
93
- |-------|---------|-------------|
94
- | **BASE Layers** (ICML'21) | OT (linear assignment) cho balanced expert allocation | OT dùng cho **load-balancing**, KHÔNG phải distribution-matching routing. Cost matrix = learned scores, không phải distributional distances |
95
- | **Grassmannian MoE** (arXiv Feb'26) | Matrix Bingham distributions trên Grassmannian manifold cho routing | **RỦI RO CAO NHẤT** — dùng Bingham cho routing. NHƯNG: (a) KHÔNG phải CL, (b) Bingham controls routing entropy (sparsity), KHÔNG characterize knowledge |
96
- | **Selective Sinkhorn Routing** (Nov'25) | Sinkhorn-based routing cho MoE | OT cho load-balancing, không phải knowledge matching |
97
-
98
- ### Statistical Distributions trong CL (không phải module signatures)
99
-
100
- | Paper | Chi tiết | Mối quan hệ |
101
- |-------|---------|-------------|
102
- | **vMF for Online CL** (AAAI'24) | vMF distribution cho online CL | vMF dùng như **training loss** (concentration penalty), KHÔNG dùng làm module fingerprint |
103
- | **SCDEM** (Apr'25) | OT trong CL context | OT cho **feature alignment**, không phải routing |
104
-
105
- ### MoE + CL (không phải OT routing)
106
-
107
- | Paper | Chi tiết | Routing mechanism |
108
- |-------|---------|------------------|
109
- | **CaRE** (arXiv Feb'26) | Continual Learning with Routing among Experts | Learned routing, không OT |
110
- | **PASs-MoE** (arXiv Jan'26) | Parameter-Adaptive Sparse MoE | Adaptive sparsity, không OT |
111
- | **TRGE** (arXiv Aug'25) | Task-Regularized Gradient Experts | Gradient-based expert selection |
112
-
113
- ## 2.4 Phân Tích Rủi Ro Novelty
114
-
115
- ### Rủi ro CAO — Grassmannian MoE (arXiv:2602.17798)
116
- - **Overlap:** Dùng Bingham distribution + manifold geometry cho routing
117
- - **Khác biệt quan trọng:**
118
- 1. KHÔNG phải CL — chỉ là MoE cho language modeling
119
- 2. Bingham controls **routing entropy** (sparsity vs utilization tradeoff)
120
- 3. KHÔNG characterize "knowledge" của expert — chỉ control gating weight distribution
121
- 4. KHÔNG có anti-drift/anti-invasion component
122
- - **Kết luận:** Có thể cite as related work nhưng mục đích hoàn toàn khác
123
-
124
- ### Rủi ro TRUNG BÌNH — Paper 35 (Feature Distributions, ICML'25)
125
- - **Overlap:** Dùng "feature distribution" để chọn module
126
- - **Khác biệt:** Distribution = mean-vector, không rich statistical model. Dùng cho PEFT block selection, không phải principled routing
127
- - **Kết luận:** Có thể position ý tưởng mới như generalization/upgrade
128
-
129
- ### Rủi ro THẤP — Các paper còn lại
130
- - BASE Layers, SERS, FeCAM: Mỗi paper chỉ chạm 1 component ở mức surface-level
131
-
132
- ## 2.5 Bốn Khoảng Trống Novelty Được Xác Nhận
133
-
134
- | # | Novelty Gap | Chưa có paper nào làm |
135
- |---|-------------|----------------------|
136
- | 1 | **Rich statistical signatures** | Dùng vMF/Bingham/directional distributions làm fingerprint cho expert knowledge space |
137
- | 2 | **OT with distributional-distance cost** | OT routing dựa trên khoảng cách phân phối (KL, Wasserstein) giữa input và module signatures |
138
- | 3 | **Three-component integration** | Kết hợp statistical signatures + OT routing + backbone protection trong 1 framework |
139
- | 4 | **Anti-drift/invasion trong modular backbone** | Áp dụng center drift penalty + invasion loss cho shared backbone của modular architecture |
140
-
141
- ---
142
-
143
- # PHẦN 3: PHÂN TÍCH TÍNH HỢP LÝ (SOUNDNESS ANALYSIS)
144
-
145
- ## 3.1 Component 1 — Statistical Knowledge Signatures
146
-
147
- ### Hợp lý ✅
148
- - **Cơ sở lý thuyết:** Feature space của các encoder hiện đại (BERT, ViT) thường nằm trên manifold có cấu trúc (hypersphere cho normalized features, cone cho ReLU features). Dùng distribution phù hợp geometry (vMF cho hypersphere, Bingham cho elliptical) capture nhiều thông tin hơn mean vector.
149
- - **Ưu điểm so với gating network:** Signature có interpretability (có thể đo concentration, direction, spread), trong khi gating weights là black-box.
150
- - **Evidence từ literature:**
151
- - FeCAM (96): Chứng minh class-specific covariance (statistical tool) tốt hơn mean-only prototype
152
- - CLAP4CLIP (65): Probabilistic modeling > deterministic features
153
- - Angle Matters (48): Angle/direction trong feature space quyết định forgetting → distribution captures direction information
154
-
155
- ### Điểm cần lưu ý ⚠️
156
- - **Cách c���p nhật incremental:** Khi task mới đến, signature cần update. vMF có sufficient statistics (mean direction + concentration) → có thể online update. GMM phức tạp hơn.
157
- - **Chi phí lưu trữ:** Mỗi module cần lưu signature parameters. vMF: O(d+1) mỗi module (mean direction vector + κ). Bingham: O(d²) mỗi module. Với d nhỏ (projection) → chấp nhận được.
158
- - **Khuyến nghị:** Bắt đầu với vMF (đơn giản nhất, phù hợp hypersphere features) → mở rộng Bingham/GMM nếu cần.
159
-
160
- ## 3.2 Component 2 — OT-based Routing
161
-
162
- ### Hợp lý ✅
163
- - **Cơ sở lý thuyết:** OT cung cấp optimal matching giữa 2 distributions, là framework tự nhiên cho "matching input to expert". Sinkhorn algorithm cho phép differentiable approximation.
164
- - **Ưu điểm so với softmax gating:**
165
- - **Principled:** Tối ưu hóa global assignment thay vì local gating scores
166
- - **Load-balanced by design:** OT constraints tự nhiên balance load (đã chứng minh trong BASE Layers)
167
- - **Distribution-aware:** Cost matrix encode khoảng cách phân phối, không phải raw scores
168
- - **Feasibility:** Sinkhorn iterations: O(n²·k) với n tokens, k experts. Với k nhỏ (CL thường 5-20 experts) → tractable.
169
-
170
- ### Điểm cần lưu ý ⚠️
171
- - **Inference latency:** Sinkhorn cần iterative → chậm hơn softmax gating đơn giản. Mitigation: ít iterations (5-10), hoặc amortized inference.
172
- - **Cost matrix construction:** Cần define cách tính khoảng cách giữa input sample/batch và module signature. Options: vMF log-likelihood, Wasserstein distance, KL divergence.
173
- - **Khuyến nghị:** Dùng Sinkhorn với regularization ε lớn (fast convergence) + vMF log-likelihood as cost.
174
-
175
- ## 3.3 Component 3 — Backbone Anti-Drift
176
-
177
- ### Hợp lý ✅
178
- - **Cơ sở lý thuyết:** Shared backbone trong modular architecture vẫn bị update → representation drift. No paper hiện tại address this explicitly.
179
- - **Evidence:**
180
- - LDC (77): Chứng minh drift compensation cải thiện performance
181
- - Dual Drift (20): Inner-task + inter-task prototype drift đều gây forgetting
182
- - LoRA- (61): Drift-resistant space concept validates the need
183
- - **Tự nhiên với modular architecture:** Backbone là phần chia sẻ giữa tất cả modules → drift ảnh hưởng TẤT CẢ old tasks đồng thời. Anti-drift loss ở backbone level → bảo vệ toàn bộ.
184
-
185
- ### Điểm cần lưu ý ⚠️
186
- - **Balance plasticity-stability:** Anti-drift loss quá mạnh → backbone không học được features mới. Cần adaptive weighting.
187
- - **Anti-invasion definition:** Trong modular architecture, "vùng class cũ" được define qua module signatures → tự nhiên link với Component 1.
188
- - **Khuyến nghị:** Dùng EMA-based center tracking + dynamic λ scheduling (từ method.md RTA framework).
189
-
190
- ## 3.4 Tính Nhất Quán Nội Bộ (Internal Consistency)
191
-
192
- | Aspect | Assessment | Giải thích |
193
- |--------|-----------|------------|
194
- | Component 1 ↔ 2 | ✅ Consistent | Signatures (C1) cung cấp distribution cho OT cost matrix (C2). Chúng designed to work together. |
195
- | Component 2 ↔ 3 | ✅ Consistent | OT routing (C2) phân bổ input → modules. Anti-drift (C3) bảo vệ shared backbone. Hai cơ chế orthogonal, không conflict. |
196
- | Component 1 ↔ 3 | ✅ Synergistic | Signatures (C1) cũng detect drift: nếu backbone drift → feature distribution thay đổi → signatures outdated → signal để trigger anti-drift. |
197
-
198
- ## 3.5 Đánh Giá Tổng Thể Tính Hợp Lý
199
-
200
- **Ý tưởng hợp lý ở mức idea-level.** Ba thành phần có cơ sở lý thuyết vững, tương thích nội bộ, và address gap thực sự trong literature. Tiềm năng contribution mạnh nếu implementation đúng.
201
-
202
- **Rủi ro lớn nhất:** Computational overhead (OT + distribution estimation + anti-drift) có thể significant. Cần careful engineering.
203
-
204
- ---
205
-
206
- # PHẦN 4: KHẢO SÁT PAPERS 2025 — MOTIVATION ĐỂ APPLY Ý TƯỞNG MỚI
207
-
208
- ## 4.1 Tiêu Chí Đánh Giá Mới (cho New Idea)
209
-
210
- | Tiêu chí | Mô tả | Trọng số |
211
- |----------|--------|----------|
212
- | **M1. Submodule architecture** | Paper dùng multi-module/expert/LoRA → new idea phù hợp | ★★★ |
213
- | **M2. Routing có thể nâng cấp** | Routing hiện tại đơn giản (gating, top-k) → OT routing có thể improve | ★★★ |
214
- | **M3. Backbone drift problem** | Paper có shared backbone bị drift → anti-drift loss applicable | ★★ |
215
- | **M4. Domain phù hợp** | ML/NLP ưu tiên, CV thấp hơn | ★★ |
216
- | **M5. Reproducibility** | Có code, benchmark rõ ràng | ★ |
217
-
218
- Lưu ý: Đánh giá ở mức **phác thảo** — xem paper có motivation/feasibility để apply, KHÔNG xem chi tiết công cụ cụ thể (vMF có hợp hay không).
219
-
220
- ## 4.2 Papers 2025 Có Motivation Cao (Score ≥ 7/10)
221
-
222
- ### 🥇 Paper 01 | GainLoRA | NeurIPS'25 | NLP
223
- **Motivation Score: 9/10**
224
- - ✅ M1: LoRA branches per task + gating modules — multi-module architecture
225
- - ✅ M2: Gating = simple learned module → OT routing có thể thay thế, phân bổ principled hơn
226
- - ✅ M3: Shared base model bị update → backbone drift likely
227
- - ✅ M4: NLP (LLM continual learning)
228
- - **Lý do apply:** GainLoRA dùng gating đơn giản để integrate LoRA branches. Thay gating bằng (1) statistical signature cho mỗi LoRA branch + (2) OT routing matching input distribution → principled expert selection. Anti-drift loss bảo vệ base LLM.
229
-
230
- ### 🥇 Paper 02 | MINGLE | NeurIPS'25 | ML
231
- **Motivation Score: 9/10**
232
- - ✅ M1: MoE + low-rank experts + gating
233
- - ✅ M2: Null-Space Constrained Gating — algebraic, không capture knowledge distribution
234
- - ✅ M3: Test-time merging implies shared components
235
- - ✅ M4: ML/Multi
236
- - **Lý do apply:** MINGLE dùng null-space projection cho gating. Statistical signatures sẽ capture knowledge space richer hơn null-space constraint. OT routing provides global optimal assignment thay vì local gating.
237
-
238
- ### 🥇 Paper 41 | TreeLoRA | ICML'25 | ML
239
- **Motivation Score: 9/10**
240
- - ✅ M1: Layer-wise LoRA allocation via hierarchical tree
241
- - ✅ M2: Gradient-similarity → heuristic, không capture full knowledge distribution
242
- - ✅ M3: Shared pretrained model as backbone
243
- - ✅ M4: ML (cả ViTs + LLMs)
244
- - **Lý do apply:** TreeLoRA dùng gradient similarity để allocate LoRA. Gradient similarity = proxy cho task similarity nhưng không capture full distribution. Statistical signatures cho mỗi LoRA node trong tree → richer characterization. OT routing thay multi-armed bandit.
245
-
246
- ### 🥈 Paper 14 | SMoLoRA | ICCV'25 | ML/Multi
247
- **Motivation Score: 8/10**
248
- - ✅ M1: Separable Mixture of LoRA + dual routing
249
- - ✅ M2: Dual routing (visual + instruction) → có thể upgrade sang OT matching
250
- - ⚠️ M3: Shared backbone (VL model)
251
- - ✅ M4: VL (multimodal, nhưng IT setting phổ dụng)
252
- - **Lý do apply:** SMoLoRA dùng separable routing cho 2 modalities. OT routing có thể unify dual routing thành 1 cost matrix, với signatures capture both visual + instruction knowledge.
253
-
254
- ### 🥈 Paper 35 | Feature Distributions | ICML'25 | NLP
255
- **Motivation Score: 8/10**
256
- - ✅ M1: Multi-PEFT-block (expanding/reusing)
257
- - ✅ M2: "Presentative feature distribution" for block selection — TRỰC TIẾP liên quan nhưng dùng mean-vector, not rich statistics
258
- - ⚠️ M3: Pre-trained LLM backbone
259
- - ✅ M4: NLP (LLM continual learning)
260
- - **Lý do apply:** Paper ĐÃ dùng idea "feature distribution" để chọn block → **đây chính là starting point tốt nhất** cho new idea. Upgrade: thay mean-vector bằng vMF signature + thay selection bằng OT routing. Paper đã validate rằng distribution-based selection works.
261
-
262
- ### 🥈 Paper 82 | MoE-Adapters | CVPR'24 | ML/Multi
263
- **Motivation Score: 8/10**
264
- - ✅ M1: MoE adapter architecture
265
- - ✅ M2: Standard MoE gating → classic candidate cho OT routing upgrade
266
- - ⚠️ M3: VLM backbone
267
- - ⚠️ M4: VL (CV-leaning)
268
- - **Lý do apply:** Standard MoE gating là simplest routing, easiest to upgrade to OT. Có code (github.com/JiazuoYu/MoE-Adapters4CL).
269
-
270
- ### 🥈 Paper 27 | HiDe-LLaVA | ACL'25 | NLP
271
- **Motivation Score: 8/10**
272
- - ✅ M1: Task-specific expansion + task-general fusion
273
- - ✅ M2: CKA similarity guides layer-wise handling → distribution signatures provide richer similarity
274
- - ✅ M3: Shared LLaVA backbone
275
- - ✅ M4: NLP (instruction tuning)
276
- - **Lý do apply:** HiDe-LLaVA dùng CKA similarity → scalar measure. Distribution signature captures richer information (direction, spread, concentration). OT routing replaces CKA-based fusion.
277
-
278
- ### 🥈 Paper 23 | ARM | ACL'25 | ML
279
- **Motivation Score: 8/10**
280
- - ✅ M1: MoE (Knowledge Experts) + routing
281
- - ✅ M2: Activation-guided routing → doesn't capture knowledge distribution
282
- - ⚠️ M3: LLM backbone
283
- - ✅ M4: NLP (knowledge editing, nhưng MoE architecture phổ biến)
284
- - **Lý do apply:** ARM dùng activation-guided routing (heuristic). Statistical signatures + OT routing provides principled alternative.
285
-
286
- ## 4.3 Papers 2025 Có Motivation Trung Bình (Score 5-7/10)
287
-
288
- ### Paper 09 | MoDE | NeurIPS'25 | ML/Multi
289
- **Motivation Score: 7/10**
290
- - ✅ M1: Modality-specific experts
291
- - ⚠️ M2: Expert isolation by modality (not really routing) → OT routing less applicable
292
- - ✅ M3: Unified model backbone
293
- - **Lý do:** Routing theo modality → fixed, không cần OT. Nhưng anti-drift cho backbone hữu ích.
294
-
295
- ### Paper 21 | PLAN | ICCV'25 | ML
296
- **Motivation Score: 7/10**
297
- - ✅ M1: Orthogonal basis vectors per task
298
- - ⚠️ M2: Orthogonal allocation ≠ routing (pre-determined), nhưng distribution signatures có thể guide allocation
299
- - ✅ M3: Shared backbone
300
- - **Lý do:** PLAN allocate trước, không route at inference. Nhưng signatures có thể guide better allocation.
301
-
302
- ### Paper 08 | CaLoRA | NeurIPS'25 | ML
303
- **Motivation Score: 6/10**
304
- - ✅ M1: LoRA branches + causal analysis
305
- - ⚠️ M2: Gradient projection based on task correlation — already somewhat distributional
306
- - ⚠️ M3: LoRA-level, not backbone
307
- - **Lý do:** CaLoRA đã dùng causal attribution → more sophisticated than simple gating. OT routing vẫn có thể improve nhưng gap nhỏ hơn.
308
-
309
- ### Paper 18 | Instruction-Grounded VP | ICCV'25 | ML/Multi
310
- **Motivation Score: 6/10**
311
- - ✅ M1: Mixture of visual projectors
312
- - ⚠️ M2: Expert recommendation + pruning → OT could improve recommendation
313
- - ⚠️ M3: VLM backbone shared
314
- - **Lý do:** Projector-level MoE. OT routing applicable nhưng projector-specific.
315
-
316
- ### Paper 17 | TWIST&SCOUT | ICCV'25 | NLP
317
- **Motivation Score: 5/10**
318
- - ✅ M1: Twin experts (frozen + learnable)
319
- - ❌ M2: No routing mechanism (fixed twin structure) — khó apply OT
320
- - ✅ M3: Shared model backbone
321
- - **Lý do:** Twin expert structure cố định → không có routing để upgrade. Chỉ Component 3 (anti-drift) applicable.
322
-
323
- ### Paper 44 | SEFE | ICML'25 | ML/Multi
324
- **Motivation Score: 6/10**
325
- - ✅ M1: RegLoRA (regularized LoRA) — multi-module
326
- - ⚠️ M2: Regularization-based, not routing
327
- - ⚠️ M3: Shared backbone
328
- - **Lý do:** SEFE phân loại forgetting (superficial vs essential). Signatures có thể detect loại forgetting nào.
329
-
330
- ### Paper 61 | LoRA- | CVPR'25 | ML
331
- **Motivation Score: 6/10**
332
- - ⚠️ M1: LoRA subtraction (not standard MoE routing)
333
- - ⚠️ M2: Drift-Resistant Space = alternative approach, OT routing không trực tiếp applicable
334
- - ✅ M3: Drift là central problem → directly relevant to Component 3
335
- - **Lý do:** Concept DRS và Component 3 (anti-drift) complementary. Có thể combine signatures + DRS.
336
-
337
- ### Paper 77 | LDC | ECCV'24 | ML
338
- **Motivation Score: 6/10**
339
- - ❌ M1: Single model + lightweight drift module
340
- - ❌ M2: No routing
341
- - ✅ M3: Drift compensation → directly relevant to Component 3
342
- - **Lý do:** LDC concept trực tiếp liên quan Component 3 nhưng single-model → cần adapt to modular setting.
343
-
344
- ## 4.4 Papers KHÔNG có motivation (Score < 5)
345
-
346
- Các nhóm papers KHÔNG phù hợp apply:
347
- - **Knowledge Editing papers** (03, 10, 12, 22, 25, 36, 37, 38, 42, 50): Fact-level editing, không phải representation-level CL
348
- - **Benchmark/Analysis papers** (34, 37, 48, 52, 90): Không có model để apply
349
- - **Training-free/Data-level papers** (24, 28, 32, 55, 58, 89): Không có modular architecture
350
- - **Prompt-based papers** (46, 56, 68, 87, 100, 105, 109): Prompt pool ≠ modular experts
351
- - **Single-model non-geometric** (04, 11, 16, 40, 79, 95, 97, 104): Không có submodule + routing
352
-
353
- ---
354
-
355
- # PHẦN 5: LỌC PAPERS KHẢ THI TRÊN T4/P100 (16GB VRAM)
356
-
357
- ## 5.1 Tiêu Chí GPU Feasibility
358
-
359
- | Factor | T4/P100 Compatible | Cần > 16GB |
360
- |--------|-------------------|------------|
361
- | ViT-B/ViT-L + LoRA | ✅ | |
362
- | CLIP ViT-B + adapters | ✅ | |
363
- | BERT/RoBERTa | ✅ | |
364
- | LLaMA-7B + LoRA (QLoRA 4-bit) | ✅ (borderline) | |
365
- | LLaMA-7B full fine-tune | | ❌ |
366
- | LLaMA-13B+ | | ❌ |
367
- | LLaVA-7B + LoRA | ✅ (tight) | |
368
- | LLaVA-13B+ | | ❌ |
369
- | Diffusion models (SD) | ⚠️ depends | |
370
-
371
- ## 5.2 Bảng Feasibility — Papers Có Motivation Cao
372
-
373
- | Rank | Paper | Motivation | GPU Feasible | Base Model | Code | Tổng đánh giá |
374
- |------|-------|-----------|-------------|------------|------|---------------|
375
- | ⭐1 | **35. Feature Distributions** | 8/10 | ✅ Likely (PEFT on LLM, small modules) | LLM + PEFT blocks | ❌ | **TOP PICK NLP** — closest to idea, PEFT = low VRAM |
376
- | ⭐2 | **82. MoE-Adapters** | 8/10 | ✅ (CLIP ViT-B/L + adapters) | CLIP ViT | ✅ github | **TOP PICK ML** — standard MoE, clear upgrade path, có code |
377
- | ⭐3 | **41. TreeLoRA** | 9/10 | ✅ (ViT) / ⚠️ (LLM, depends on size) | ViT + LLM | ❌ | **TOP PICK ML** — tree structure natural for signatures |
378
- | ⭐4 | **01. GainLoRA** | 9/10 | ⚠️ Depends on LLM size (7B QLoRA OK) | LLM + LoRA | ❌ | **TOP PICK NLP** — nếu LLM ≤ 7B |
379
- | 5 | **02. MINGLE** | 9/10 | ⚠️ Test-time merging may need multiple models loaded | MoE experts | ❌ | Phức tạp, nhưng high motivation |
380
- | 6 | **14. SMoLoRA** | 8/10 | ⚠️ (LLaVA-7B + LoRAs → tight) | LLaVA + LoRA | ✅ github | VL, có code, tight memory |
381
- | 7 | **27. HiDe-LLaVA** | 8/10 | ⚠️ (LLaVA + expansion → tight/infeasible) | LLaVA + expansion | ❌ | Architecture growth → memory grows |
382
- | 8 | **23. ARM** | 8/10 | ⚠️ Depends on LLM base | LLM + MoE | ❌ | KE domain, phức tạp |
383
- | 9 | **09. MoDE** | 7/10 | ⚠️ MM model size varies | Unified MM model | ❌ | Multimodal, not pure routing |
384
- | 10 | **21. PLAN** | 7/10 | ✅ (LoRA-based, small modules) | Pre-trained + LoRA | ❌ | Allocation, not routing |
385
-
386
- ## 5.3 Top Recommendations — Ưu tiên ML/NLP + T4/P100 Feasible
387
-
388
- ### 🏆 Recommendation #1: Paper 35 — Feature Distributions (ICML'25)
389
- - **Domain:** NLP (LLM Continual Learning)
390
- - **Why:** Đây là paper ĐÃ dùng concept "feature distribution" cho module selection → **closest prior work** và **tốt nhất để demonstrate upgrade**. Thay mean-vector bằng vMF signature + thay selection heuristic bằng OT routing → clear, publishable contribution.
391
- - **GPU:** PEFT blocks = lightweight, likely feasible on T4
392
- - **Risk:** Không có public code → phải reimplement
393
-
394
- ### 🏆 Recommendation #2: Paper 82 — MoE-Adapters (CVPR'24)
395
- - **Domain:** ML/Multi (VLM Continual Learning)
396
- - **Why:** Standard MoE gating → **easiest upgrade path** to OT routing. Well-established benchmark. Có public code (github). CLIP-based → T4 feasible.
397
- - **GPU:** ✅ CLIP ViT-B + adapters fit T4 easily
398
- - **Risk:** VL domain (not pure NLP), nhưng methodology general
399
-
400
- ### 🏆 Recommendation #3: Paper 41 — TreeLoRA (ICML'25)
401
- - **Domain:** ML (ViTs + LLMs)
402
- - **Why:** Hierarchical structure rất phù hợp cho statistical signatures (signature tại mỗi tree node). Gradient-similarity → natural upgrade to distribution-based similarity. ICML'25 = strong baseline.
403
- - **GPU:** ✅ cho ViT experiments. ⚠️ cho LLM tùy size.
404
- - **Risk:** Không có code, phức tạp hơn (tree structure + bandit)
405
-
406
- ### 🏆 Recommendation #4: Paper 01 — GainLoRA (NeurIPS'25)
407
- - **Domain:** NLP (LLM Continual Learning)
408
- - **Why:** LoRA branches + gating = classic substrate cho OT routing upgrade. NeurIPS'25 = top venue. LLM CL = hot topic.
409
- - **GPU:** ⚠️ Nếu base model ≤ 7B + QLoRA → feasible. Nếu > 13B → không.
410
- - **Risk:** Không có code, LLM base model size uncertain
411
-
412
- ### 🏆 Recommendation #5: Paper 14 — SMoLoRA (ICCV'25)
413
- - **Domain:** ML/Multi (VL Instruction Tuning)
414
- - **Why:** Dual-routing concept → OT có thể unify. Có code (github). ICCV'25.
415
- - **GPU:** ⚠️ LLaVA-7B + multiple LoRAs → tight on T4 nhưng có thể feasible với optimization.
416
- - **Risk:** VL domain, memory tight
417
-
418
- ## 5.4 Bảng Tóm Tắt Ưu Tiên
419
-
420
- | Priority | Paper | Domain | Motivation | GPU | Code | Action |
421
- |----------|-------|--------|-----------|-----|------|--------|
422
- | **1st** | 35 Feature Dist | NLP | 8 | ✅ | ❌ | Reimplement + upgrade distribution + OT |
423
- | **2nd** | 82 MoE-Adapters | ML | 8 | ✅ | ✅ | Direct upgrade gating → OT routing |
424
- | **3rd** | 41 TreeLoRA | ML | 9 | ✅/⚠️ | ❌ | Upgrade gradient-similarity → distribution signatures |
425
- | **4th** | 01 GainLoRA | NLP | 9 | ⚠️ | ❌ | If LLM ≤ 7B, upgrade gating → OT |
426
- | **5th** | 14 SMoLoRA | ML/VL | 8 | ⚠️ | ✅ | Unify dual routing → OT, có code |
427
-
428
- ---
429
-
430
- # PHẦN 6: TỔNG KẾT & KHUYẾN NGHỊ
431
-
432
- ## 6.1 Tóm Tắt Đánh Giá
433
-
434
- | Dimension | Assessment | Chi tiết |
435
- |-----------|-----------|----------|
436
- | **Novelty** | 🟢 **CAO** | 4 novelty gaps confirmed. Grassmannian MoE là rủi ro cao nhất nhưng khác mục đích |
437
- | **Soundness** | 🟢 **HỢP LÝ** | 3 components có cơ sở lý thuyết, consistent nội bộ, synergistic |
438
- | **Motivation cho 2025** | 🟢 **MẠNH** | 8+ papers có architecture phù hợp để apply. Xu hướng submodule+routing support idea |
439
- | **T4/P100 Feasibility** | 🟡 **KHẢ THI CÓ ĐIỀU KIỆN** | 3-5 papers feasible (PEFT/CLIP-based). LLM >7B cần QLoRA hoặc smaller model |
440
-
441
- ## 6.2 Chiến Lược Đề Xuất
442
-
443
- ### Phase 1: Proof-of-concept (1-2 tháng)
444
- - **Target:** Paper 82 (MoE-Adapters) — có code, T4 feasible, clear upgrade path
445
- - **Goal:** Implement statistical signatures (vMF) + OT routing thay thế standard gating
446
- - **Validation:** So sánh với baseline MoE gating trên same benchmarks
447
-
448
- ### Phase 2: Main contribution (2-3 tháng)
449
- - **Target:** Paper 35 (Feature Distributions) hoặc Paper 01 (GainLoRA)
450
- - **Goal:** Full framework với 3 components (signatures + OT + anti-drift)
451
- - **Contribution:** Demonstrate superior performance qua principled routing + backbone protection
452
-
453
- ### Phase 3: Paper writing
454
- - **Position:** "From Gating to Matching: Statistical Knowledge Signatures with Optimal Transport Routing for Continual Learning"
455
- - **Claim:** Principled routing via distribution matching outperforms heuristic gating in modular CL
456
-
457
- ## 6.3 Rủi Ro & Mitigation
458
-
459
- | Risk | Level | Mitigation |
460
- |------|-------|-----------|
461
- | Grassmannian MoE tiếp cận CL | Medium | Differentiate: knowledge characterization vs routing entropy control |
462
- | OT inference overhead | Medium | Sinkhorn with few iterations + ε-regularization |
463
- | Lack of code for most targets | Medium | Start with Paper 82 (có code) |
464
- | vMF not suitable for all feature spaces | Low | Test multiple distributions; fallback to GMM |
465
- | Combined overhead too high for T4 | Medium | Start with small-scale experiments (ViT-B) |
466
-
467
- ---
468
-
469
- *Generated: Analysis of new_idea_modifier.txt against 109 surveyed papers + ~30 additional papers*
470
- *Focus: Novelty, Soundness, Motivation for 2025 papers, T4/P100 Feasibility*
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
human_working_IdeaMethod_and_discuss/new_idea_modifier.txt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:e4be554e74456bb1fe8accf18e67ac0ff04cb9cd053ba4795fa8f9edaa14f1ca
3
- size 647
 
 
 
 
human_working_IdeaMethod_and_discuss/novelty_search_report.md DELETED
@@ -1,168 +0,0 @@
1
- # Comprehensive Novelty Search Report
2
- ## Proposed Idea: Statistical Knowledge Signatures + OT Routing + Backbone Anti-Drift for Continual Learning
3
-
4
- **Date**: March 6, 2026
5
- **Search Scope**: arXiv (multi-query), specific paper fetches, workspace context analysis
6
-
7
- ---
8
-
9
- ## I. EXISTING WORK: Papers That Partially Overlap
10
-
11
- ### A. OT-Based Routing in MoE (Component 2 overlap)
12
-
13
- | # | Paper | Year | Venue | Relevance |
14
- |---|-------|------|-------|-----------|
15
- | 1 | **BASE Layers: Simplifying Training of Large, Sparse Models** (arXiv:2103.16716) | 2021 | ICML | Formulates token-to-expert assignment as a **linear assignment problem** (a special case of OT). Guarantees balanced compute loads without auxiliary losses. |
16
- | 2 | **Selective Sinkhorn Routing for Improved Sparse MoE** (arXiv:2511.08972) | 2025 | - | Formulates token-to-expert assignment as an **optimal transport problem** using Sinkhorn algorithm. Derives gating scores directly from transport map. **Most directly relevant to Component 2.** |
17
- | 3 | **Sparsity-Constrained Optimal Transport** (arXiv:2209.15466) | 2023 | ICLR | Theoretical OT framework with sparsity constraints applicable to MoE routing. |
18
- | 4 | **Continual Pre-training of MoEs: How robust is your router?** (arXiv:2503.05029) | 2025 | - | Studies Sinkhorn-balanced routing during continual pre-training. Shows surprising robustness of OT-based routing to distribution shift in CL settings. |
19
-
20
- **Key Difference from Proposed Idea**: These works use OT for **load-balancing** (assigning tokens to experts evenly). The proposed idea uses OT to **match input distributions to expert knowledge signatures** — a fundamentally different formulation where the cost matrix is derived from statistical distribution distances (e.g., vMF-to-vMF), not learned linear projections.
21
-
22
- ### B. MoE + Routing for Continual Learning (Components 1+2 overlap)
23
-
24
- | # | Paper | Year | Venue | Relevance |
25
- |---|-------|------|-------|-----------|
26
- | 5 | **Scaling CL with Bi-Level Routing MoE (CaRE)** (arXiv:2602.03473) | 2026 | - | Bi-level routing: first selects task-specific routers, then routes to experts. Scales to 300+ tasks. Uses learned routers, not distribution matching. |
27
- | 6 | **PASs-MoE: Mitigating Misaligned Co-drift among Router and Experts** (arXiv:2601.13020) | 2026 | - | Identifies "misaligned co-drift" between router & experts in CL. Uses LoRA pathway activation subspaces for routing. Addresses router drift but not via OT or statistical signatures. |
28
- | 7 | **Separation and Collaboration: Two-Level Routing Grouped MoE for MDCL** (arXiv:2508.07738) | 2025 | - | Two-level routing (inter-group via task prototypes, intra-group via learned router). Uses task prototype distance for routing — conceptually related to "matching to knowledge signatures" but prototypes are simple mean vectors, not rich statistical distributions. |
29
- | 8 | **SCDEM: Self-Controlled Dynamic Expansion Model for CL** (arXiv:2504.10561) | 2025 | - | Multi-backbone + dynamic expert expansion. Uses **OT distance** for Feature Distribution Consistency (FDC) to align old/new representations. **Closest overlap: uses OT in CL with expert expansion, but OT is for feature alignment, NOT routing.** |
30
- | 9 | **Boosting CL of VLMs via MoE Adapters** (arXiv:2403.11549) | 2024 | CVPR | MoE adapters for continual VLM learning with routing. Standard softmax gating. |
31
- | 10 | **SAME: Stabilized MoE for Multimodal Continual Instruction Tuning** (arXiv:2602.01990) | 2026 | - | MoE for continual instruction tuning. Focuses on stabilization strategies. |
32
- | 11 | **Dynamic MoE of Curriculum LoRA Experts for Continual Multimodal IT** (arXiv:2506.11672) | 2025 | ICML | Dynamic architecture expansion under budget. Curriculum-based expert management. |
33
- | 12 | **MoTE: Mixture of Task-specific Experts for PTM-Based CIL** (arXiv:2506.11038) | 2025 | KBS | Task-specific experts with pre-trained model. Standard routing mechanisms. |
34
-
35
- ### C. Statistical Distributions in Continual Learning (Component 1 overlap)
36
-
37
- | # | Paper | Year | Venue | Relevance |
38
- |---|-------|------|-------|-----------|
39
- | 13 | **vMF/Angular Gaussian for Online CL** (arXiv:2306.03364) | 2024 | AAAI | Uses vMF and Angular Gaussian distributions for **representation learning** in online CL. Pushes representations toward fixed prior directions on hypersphere. **Directly relevant to Component 1** — but uses vMF as a loss function, NOT as a routing signature for expert modules. |
40
- | 14 | **Interactive CL: Fast and Slow Thinking** (arXiv:2403.02628) | 2024 | CVPR | vMF-related distributions in CL context for cognitive-inspired learning. |
41
- | 15 | **General Incremental Learning with Domain-aware Categorical Representations** (arXiv:2204.04078) | 2022 | CVPR | Domain-aware representations for incremental learning using distributional methods. |
42
-
43
- ### D. Backbone Feature Drift Compensation (Component 3 overlap)
44
-
45
- | # | Paper | Year | Venue | Relevance |
46
- |---|-------|------|-------|-----------|
47
- | 16 | **Exemplar-free CL via Learnable Drift Compensation (LDC)** (arXiv:2407.08536) | 2024 | ECCV | Learns a drift compensation module to correct for feature drift in backbones. **Directly relevant to Component 3** but uses a learned correction, not a penalty loss. |
48
- | 17 | **Exemplar-free CL of ViTs via Gated Class-Attention and Cascaded Feature Drift Compensation** (arXiv:2211.12292) | 2023 | - | Gated class-attention to minimize transformer drift + cascaded feature drift compensation. Relevant to anti-drift but uses gating/masking, not OT or invasion penalty. |
49
- | 18 | **Scalable Analytic Classifiers with Associative Drift Compensation for CIL** (arXiv:2602.00144) | 2026 | - | Analytic classifiers with drift compensation for ViTs. Uses Gaussian Discriminant Analysis. |
50
- | 19 | **Feature Drift Compensation Projection for Data-free Replay Continual Face Forgery Detection** (arXiv:2508.03189) | 2025 | - | Feature drift compensation projection for continual face forgery detection. |
51
- | 20 | **Resurrecting Old Classes with New Data for Exemplar-Free CL** (arXiv:2405.19074) | 2024 | CVPR | Addresses drift compensation without exemplars. |
52
-
53
- ### E. Optimal Transport in Continual Learning (General)
54
-
55
- | # | Paper | Year | Venue | Relevance |
56
- |---|-------|------|-------|-----------|
57
- | 21 | **Merging without Forgetting: Continual Fusion via OT** (arXiv:2511.19561) | 2025 | - | Uses OT for **model merging** in CL (aligning task-specific model weights). OT used for weight-space alignment, NOT input routing. |
58
- | 22 | **LwI (workspace existing work)** | - | - | Uses OT (Sinkhorn) for **neuron alignment** between old and new models during continual learning. OT for model merging/alignment, not routing. |
59
-
60
- ### F. Geometric/Statistical Routing (Component 1+2 joint overlap)
61
-
62
- | # | Paper | Year | Venue | Relevance |
63
- |---|-------|------|-------|-----------|
64
- | 23 | **Grassmannian MoE: Concentration-Controlled Routing on Subspace Manifolds** (arXiv:2602.17798) | 2026 | - | Routes using **Matrix Bingham distributions** on the Grassmannian manifold to control routing entropy. **HIGHEST OVERLAP WITH PROPOSED IDEA.** Uses statistical distributions (Bingham) for routing with concentration parameters as control knobs. However: (a) not CL-specific, (b) distributions characterize routing preferences, not task knowledge, (c) no drift/anti-invasion mechanisms. |
65
- | 24 | **Spectral Manifold Regularization for Stable Routing in Deep MoE** (arXiv:2601.03889) | 2026 | - | Manifold-based regularization for stable/modular routing. May overlap with geometric characterization concepts. |
66
-
67
- ---
68
-
69
- ## II. NOVELTY GAPS: What Has NOT Been Done
70
-
71
- ### GAP 1: Statistical Knowledge Signatures as Expert "Fingerprints" (HIGH NOVELTY)
72
- **No existing work** creates rich statistical distribution-based "signatures" (vMF, Bingham, GMM, etc.) that characterize what each expert **knows** — i.e., the knowledge space/competence region of each submodule. Existing works either:
73
- - Use vMF as a **training loss** (Michel et al., AAAI 2024) — not as a module descriptor
74
- - Use Bingham distributions for **routing control** (GrMoE, 2026) — not for knowledge characterization
75
- - Use simple prototypes/centroids for task matching (TRGE, 2025) — not rich distributional signatures
76
-
77
- **Your contribution**: Using multi-modal statistical distributions (vMF, Bingham, GMM combinations) as a formal **fingerprint** of each module's learned knowledge region. This creates a principled, interpretable language for what each expert "knows."
78
-
79
- ### GAP 2: OT as Distribution-Matching Routing (not just Load-Balancing) (HIGH NOVELTY)
80
- All existing OT-based routing (BASE Layers, Sinkhorn Routing, SSR) uses OT to solve a **load-balancing** problem: distribute tokens evenly across experts. The cost matrix is typically derived from learned linear projections.
81
-
82
- **No existing work** uses OT with a cost matrix derived from **distributional distances** between input statistics and expert knowledge signatures. This is a qualitatively different OT formulation:
83
- - Existing: $\min_{\pi} \sum_{ij} c_{ij}\pi_{ij}$ where $c_{ij} = -\text{score}(x_i, e_j)$ (learned similarity)
84
- - Proposed: $\min_{\pi} \sum_{ij} d(P_{\text{input}_i}, Q_{\text{expert}_j})\pi_{ij}$ where $d$ is a distributional distance (e.g., KL between vMF distributions)
85
-
86
- ### GAP 3: Three-Component Integration (VERY HIGH NOVELTY)
87
- **No paper** combines all three:
88
- 1. Statistical distribution signatures for module knowledge
89
- 2. OT-based distribution-matching routing
90
- 3. Backbone anti-drift + anti-invasion penalty
91
-
92
- The closest works address at most 2 of 3 and in different ways:
93
- - SCDEM: OT for alignment + expert expansion (but no signature-based routing, no anti-invasion)
94
- - GrMoE: Statistical routing (but not CL, no drift penalty)
95
- - PASs-MoE: Router drift mitigation + expert isolation (but uses subspace methods, not OT or statistical signatures)
96
- - LDC/FDC: Drift compensation (but single backbone, no expert routing)
97
-
98
- ### GAP 4: Anti-Invasion Loss in MoE-based CL (MODERATE-HIGH NOVELTY)
99
- While drift compensation exists widely, the concept of an **anti-invasion loss** — explicitly preventing new task feature distributions from encroaching on old task knowledge regions in the shared backbone — is relatively unique when combined with MoE routing. Most drift compensation works operate on a single model; applying it specifically to the **shared backbone** in a modular architecture while letting the experts handle task-specific adaptation is novel.
100
-
101
- ---
102
-
103
- ## III. RISK AREAS: Where Novelty Might Be Challenged
104
-
105
- ### RISK 1: GrMoE (Grassmannian MoE) — **MEDIUM-HIGH RISK**
106
- **Paper**: arXiv:2602.17798 (Feb 2026)
107
- **Why risky**: Uses Matrix Bingham distributions on Grassmannian manifolds for routing — this is statistical-distribution-based routing, the closest conceptual cousin to your idea.
108
- **Mitigation**: (a) GrMoE is NOT for continual learning, (b) Bingham controls routing entropy, not knowledge characterization, (c) no drift/anti-invasion mechanisms. Your work must clearly differentiate the "signature" interpretation from the "routing control" interpretation.
109
-
110
- ### RISK 2: Selective Sinkhorn Routing (SSR) — **MEDIUM RISK**
111
- **Paper**: arXiv:2511.08972 (Nov 2025)
112
- **Why risky**: Already formulates token-to-expert as OT using Sinkhorn.
113
- **Mitigation**: SSR uses OT for load-balancing only — your OT formulation uses distributional distances as cost, making it fundamentally different in semantics.
114
-
115
- ### RISK 3: SCDEM — **MEDIUM RISK**
116
- **Paper**: arXiv:2504.10561 (Apr 2025)
117
- **Why risky**: Uses OT distance + dynamic expert expansion in CL. Has Feature Distribution Consistency (FDC) via OT.
118
- **Mitigation**: SCDEM uses OT for alignment between old/new features (preservation), NOT for routing decisions. The routing in SCDEM is separate from the OT component.
119
-
120
- ### RISK 4: PASs-MoE + CaRE — **LOW-MEDIUM RISK**
121
- **Papers**: arXiv:2601.13020, arXiv:2602.03473 (Jan-Feb 2026)
122
- **Why risky**: Active area of research on CL + MoE routing with drift considerations.
123
- **Mitigation**: These use learned subspace methods (PAS) and bi-level routing (task-router + expert-router), not distribution-matching OT.
124
-
125
- ### RISK 5: vMF for Online CL — **LOW RISK**
126
- **Paper**: arXiv:2306.03364 (AAAI 2024)
127
- **Why risky**: Same statistical tool (vMF) same domain (CL).
128
- **Mitigation**: Uses vMF as training loss, not as module knowledge signature. No MoE, no routing.
129
-
130
- ---
131
-
132
- ## IV. OVERALL NOVELTY ASSESSMENT
133
-
134
- ### Rating: **HIGH (with specific caveats)**
135
-
136
- ### Justification:
137
-
138
- **Strengths of novelty:**
139
-
140
- 1. **No existing paper** combines statistical knowledge signatures + OT-based distribution-matching routing + backbone anti-drift in a unified CL framework. The **three-way integration** is clearly novel.
141
-
142
- 2. **The "knowledge signature" concept** — using rich statistical distributions (vMF, Bingham, GMM) to create interpretable fingerprints of what each expert module has learned — is a genuinely new formulation. Existing works use distributions either for training losses or for routing entropy control, but not as descriptive signatures of module competence.
143
-
144
- 3. **OT for distribution-matching routing** (as opposed to load-balancing) is a new semantic interpretation of OT in the MoE context. Using distributional distances in the cost matrix of the transport problem is novel.
145
-
146
- 4. **Anti-invasion loss for shared backbone** in a modular CL architecture (protecting old task regions while allowing new learning) is novel as a combination — though drift compensation alone is well-studied.
147
-
148
- **Caveats:**
149
-
150
- 1. **GrMoE (Feb 2026)** is the closest risk — a reviewer familiar with GrMoE might see conceptual similarity in "statistical distributions for routing." You MUST clearly explain why knowledge signatures ≠ routing entropy control.
151
-
152
- 2. **SSR (Nov 2025)** + **BASE Layers** have established OT for MoE routing — you need to clearly differentiate cost matrix semantics.
153
-
154
- 3. The field of **MoE for CL** is extremely active (12+ papers in 2025-2026 alone). Given the fast pace, there's a ~15-20% risk that a similar combined idea could appear before submission.
155
-
156
- **Recommended positioning:**
157
- Frame as: *"First unified framework that creates interpretable statistical knowledge signatures for expert modules and uses Optimal Transport not for load balancing but for semantically-grounded distribution-matching routing in continual learning, complemented by backbone anti-drift protection."*
158
-
159
- ---
160
-
161
- **Summary Table:**
162
-
163
- | Component | Individual Novelty | Closest Overlap | Risk Level |
164
- |-----------|-------------------|-----------------|------------|
165
- | Statistical Knowledge Signatures | **High** | vMF for Online CL (AAAI'24), GrMoE (Feb'26) | Medium |
166
- | OT as Distribution-Matching Routing | **High** | SSR (Nov'25), BASE Layers (ICML'21) | Medium |
167
- | Backbone Anti-Drift + Anti-Invasion | **Medium** | LDC (ECCV'24), Cascaded FDC (2022) | Low-Medium |
168
- | **Three-Component Integration** | **Very High** | SCDEM (Apr'25), PASs-MoE (Jan'26) | Low |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
human_working_IdeaMethod_and_discuss/proposal_gainlora_upgrade.md DELETED
@@ -1,305 +0,0 @@
1
- # Proposal: OT-SIGN — Statistical Signatures + Optimal Transport Routing for GainLoRA
2
-
3
- ---
4
-
5
- ## PHẦN 0: XÁC MINH KHẢO SÁT (Survey Verification)
6
-
7
- **Kết quả: ✅ Toàn bộ thông tin khảo sát chính xác. Không cần sửa.**
8
-
9
- | Paper | arXiv ID | Xác minh | Mô tả trong survey |
10
- |-------|----------|---------|-------------------|
11
- | Grassmannian MoE | 2602.17798 | ✅ Tồn tại | "Bingham distribution trên Grassmannian để control routing entropy" → ĐÚNG. Không phải CL. |
12
- | Selective Sinkhorn Routing (SSR) | 2511.08972 | ✅ Tồn tại | "OT cho load-balancing token-to-expert" → ĐÚNG. Không phải distribution-matching. |
13
- | Continual Pre-training of MoEs | 2503.05029 | ✅ Tồn tại | "Sinkhorn-balanced routing trong CPT context" → ĐÚNG. Nghiên cứu robustness của router, không phải CL với signature. |
14
- | SCDEM | 2504.10561 | ✅ Tồn tại | "OT cho feature alignment (FDC), không phải routing" → ĐÚNG. Tên đầy đủ: Self-Controlled Dynamic Expansion Model. |
15
-
16
- **Kết luận**: Bốn novelty gaps trong `novelty_search_report.md` vẫn giữ nguyên giá trị. Không có paper nào combine statistical signatures + OT distribution-matching routing + backbone anti-drift trong CL.
17
-
18
- ---
19
-
20
- ## PHẦN 1: VẤN ĐỀ CỦA GAINLORA HIỆN TẠI
21
-
22
- ### 1.1 Kiến trúc Gating Hiện Tại (từ `t5_gainlora_inflora.py`)
23
-
24
- GainLoRA dùng cơ chế routing **key-query cosine attention**:
25
-
26
- ```
27
- Bước 1: avg_inputs_embeds = weighted_mean(token_embeddings) # shape (B, 1, d)
28
- Bước 2: x = trans_input(avg_inputs_embeds) # 2-layer MLP → (B, 1, d)
29
- x = normalize(x) # unit sphere
30
- Bước 3: score_t = cosine_sim(x, prompt_key_t) # scalar per task
31
- weight_t = |sigmoid(4 * score_t) * 2 - 1|
32
- Bước 4: agg_lora = Σ_t weight_t * lora_t(hidden_states) # weighted sum
33
- ```
34
-
35
- Với:
36
- - `prompt_key_t ∈ R^d`: vector học được cho task t (learnable)
37
- - `trans_input`: MLP 2 lớp (d → mlp_hidden → d, activation SiLU)
38
-
39
- ### 1.2 Ba Vấn Đề Cốt Lõi
40
-
41
- **Vấn đề 1 — Routing không có nền tảng phân phối (Non-distributional routing)**
42
-
43
- `prompt_key_t` là một **điểm trong không gian** (point estimate), không phải một **phân phối** trên không gian kiến thức của task t. Điều này có nghĩa:
44
- - Routing chỉ đo khoảng cách đến một điểm đặc trưng duy nhất
45
- - Không capture được độ rải hay hình dạng của không gian kiến thức (có task có features trải rộng, có task tập trung)
46
- - Inputs ở boundary giữa hai tasks không được phân bổ một cách có nguyên tắc
47
-
48
- **Vấn đề 2 — Gating weights không đảm bảo global optimality**
49
-
50
- `weight_t = |sigmoid(4 * cos_sim) * 2 - 1|` là một hàm monotone **local** trên mỗi cặp (input, task). Không có ràng buộc global nào đảm bảo assignment là optimal trên toàn bộ batch hay toàn bộ expert set. Điều này dẫn đến:
51
- - Expert utilization không balanced (một số LoRA experts bị underused)
52
- - Không có theoretical guarantee về assignment quality
53
-
54
- **Vấn đề 3 — Backbone drift không được kiểm soát tường minh**
55
-
56
- Trong quá trình huấn luyện sequential, `trans_input` (MLP xử lý input) bị update cho task hiện tại nhưng không có cơ chế bảo vệ. Sau khi học $K$ tasks:
57
- - `trans_input` có thể drift xa khỏi input features của các tasks cũ
58
- - `prompt_key` của các tasks cũ được học cùng với `trans_input` cũ → bị misaligned với `trans_input` mới
59
- - Kết quả: routing của tasks cũ kém chính xác dù LoRA weights vẫn được preserve
60
-
61
- **Vấn đề 4 — Các experts không ngang hàng (Non-parallel feature spaces)**
62
-
63
- Đây là vấn đề kiến trúc sâu hơn, ẩn trong cách GainLoRA xây dựng `past_x` (line 1305 của `t5_gainlora_inflora.py`):
64
-
65
- ```python
66
- past_x = torch.cat([x, self.previous_trans_input(avg_inputs_embeds)], dim=1)
67
- # ↑current task ↑ N frozen snapshots (task_0, task_1, ...)
68
- key_attention_weights = self.cal_attention(past_prompt_key, past_x)
69
- ```
70
-
71
- `previous_trans_input` là một module chứa $t-1$ MLP riêng biệt, mỗi cái là **snapshot frozen tại thời điểm task đó được train**. Kết quả:
72
-
73
- | Expert | Feature extractor | Feature space |
74
- |--------|-----------------|--------------|
75
- | Task 0 | `trans_input_frozen_at_t=0` | $\mathcal{F}_0$ |
76
- | Task 1 | `trans_input_frozen_at_t=1` | $\mathcal{F}_1$ |
77
- | Task $t$ (current) | `trans_input` (đang update) | $\mathcal{F}_t$ |
78
-
79
- Routing tính **cosine similarity** giữa các vectors từ $N$ không gian khác nhau $\mathcal{F}_0, \mathcal{F}_1, \ldots, \mathcal{F}_t$ — so sánh này không có ý nghĩa hình học nhất quán. `prompt_key_i` được học trong $\mathcal{F}_i$ nhưng được dùng trong routing tại $\mathcal{F}_t$ → experts được đánh giá không công bằng, không phải do knowledge match mà do feature space mismatch. Thêm vào đó, memory overhead tăng tuyến tính: 15 tasks → 15 bản sao MLP.
80
-
81
- ---
82
-
83
- ## PHẦN 2: ĐỀ XUẤT CẢI TIẾN (GainLoRA → OT-SIGN)
84
-
85
- ### 2.1 Tổng Quan
86
-
87
- Thay thế ba điểm yếu trên bằng ba thành phần tương ứng:
88
-
89
- | Vấn đề | GainLoRA Hiện Tại | OT-SIGN Đề Xuất |
90
- |--------|------------------|-----------------|
91
- | Point routing | `prompt_key_t ∈ R^d` | vMF signature `(μ_t, κ_t)` |
92
- | Local scoring | cosine sim → sigmoid | OT cost = vMF log-likelihood → Sinkhorn |
93
- | No backbone protection | Không có | Anti-drift + Anti-invasion loss |
94
- | Non-parallel experts | $N$ frozen `previous_trans_input` snapshots | 1 `trans_input` chung + signatures cùng không gian |
95
-
96
- ### 2.2 Component 1 — vMF Knowledge Signatures
97
-
98
- **Thay thế `prompt_key_t ∈ R^d` bằng von Mises-Fisher signature `(μ_t, κ_t)`**
99
-
100
- Sau khi huấn luyện xong task $t$, chạy một lần qua training data để collect:
101
-
102
- $$\mu_t = \frac{\bar{x}_t}{\|\bar{x}_t\|}, \qquad \kappa_t = \frac{\bar{r}(d-1) - \bar{r}^3}{1 - \bar{r}^2}$$
103
-
104
- với $\bar{x}_t = \mathbb{E}[\text{trans\_input}(x)]$ (mean direction sau MLP) và $\bar{r} = \|\bar{x}_t\|$ (mean resultant length). Đây là ước lượng MLE chuẩn của vMF (Banerjee et al., 2005).
105
-
106
- **Tại sao vMF?**
107
- - Features sau `normalize(trans_input(x))` nằm trên đơn vị hypersphere $\mathcal{S}^{d-1}$ → đúng domain của vMF
108
- - vMF capture cả **hướng** (μ: trung tâm kiến thức) và **độ tập trung** (κ: task có diverse inputs có κ nhỏ, task tập trung có κ lớn)
109
- - Chỉ lưu thêm $d + 1$ scalars so với $d$ scalars hiện tại (minimal overhead)
110
-
111
- **Code integration** — thêm vào end-of-task hook trong `cl_trainer_gainlora_inflora.py`:
112
-
113
- ```python
114
- def compute_vmf_signature(self, dataloader, model, task_id):
115
- """Chạy sau training mỗi task để fit vMF signature."""
116
- model.eval()
117
- all_x = []
118
- with torch.no_grad():
119
- for batch in dataloader:
120
- avg_emb = (batch['attention_mask'].unsqueeze(-1) *
121
- model.encoder.embed_tokens(batch['input_ids'])).mean(dim=1, keepdim=True)
122
- medium = model.encoder.trans_input[1](model.encoder.trans_input[0](avg_emb))
123
- x = model.encoder.trans_input[3](model.encoder.trans_input[2](medium))
124
- x = F.normalize(x.squeeze(1), dim=-1) # (B, d)
125
- all_x.append(x)
126
- all_x = torch.cat(all_x, dim=0)
127
-
128
- x_bar = all_x.mean(0) # (d,)
129
- r_bar = x_bar.norm() # scalar
130
- mu_t = F.normalize(x_bar, dim=-1) # mean direction
131
- kappa_t = r_bar * (model.config.d_model - 1 - r_bar**2) / (1 - r_bar**2)
132
-
133
- model.encoder.vmf_signatures[task_id] = (mu_t.detach(), kappa_t.detach())
134
- ```
135
-
136
- ### 2.3 Component 2 — OT Distribution-Matching Routing
137
-
138
- **Thay thế `cal_attention` (cosine sim) bằng Sinkhorn-OT với cost = vMF log-likelihood**
139
-
140
- Với input feature $x_b$ (sau `trans_input`, normalized) và $N$ task signatures, tính cost matrix:
141
-
142
- $$C_{bt} = -\kappa_t \cdot (\mu_t \cdot x_b) \quad \in \mathbb{R}^{B \times N}$$
143
-
144
- (negative log-likelihood của vMF, bỏ constant term)
145
-
146
- Sau đó chạy Sinkhorn OT (entropic regularization, $\varepsilon = 0.05$, 10 iterations):
147
-
148
- $$\Pi^* = \text{Sinkhorn}(C, \varepsilon), \quad \Pi^* \in \mathbb{R}^{B \times N}, \quad \Pi^* \mathbf{1} = \mathbf{1}/B$$
149
-
150
- `key_attention_weights` = $\Pi^* \in \mathbb{R}^{B \times 1 \times N}$ → đưa vào `agg_lora_states` y chang hiện tại.
151
-
152
- **Code integration** — thay hàm `cal_attention` trong `T5Stack`:
153
-
154
- ```python
155
- def cal_attention_ot(self, x, task_id=None):
156
- """
157
- x: (B, 1, d) — normalized input features
158
- Returns OT transport weights: (B, N_tasks, 1)
159
- """
160
- x = x.squeeze(1) # (B, d)
161
- N = len(self.vmf_signatures)
162
-
163
- # Build cost matrix via vMF log-likelihood
164
- # C[b,t] = -kappa_t * (mu_t · x_b)
165
- mu_stack = torch.stack([sig[0] for sig in self.vmf_signatures.values()], dim=0) # (N, d)
166
- kappa_stack = torch.tensor([sig[1] for sig in self.vmf_signatures.values()]) # (N,)
167
- kappa_stack = kappa_stack.to(x.device, dtype=x.dtype)
168
-
169
- dot_products = x @ mu_stack.T # (B, N)
170
- C = -kappa_stack.unsqueeze(0) * dot_products # (B, N) — cost matrix
171
-
172
- # Sinkhorn iterations (log-domain for stability)
173
- weights = sinkhorn_log(C, epsilon=0.05, n_iter=10) # (B, N)
174
-
175
- return weights.unsqueeze(2) # (B, N, 1) — same shape as current key_attention_weights
176
-
177
- def sinkhorn_log(C, epsilon=0.05, n_iter=10):
178
- """Log-domain Sinkhorn — numerically stable."""
179
- log_a = torch.zeros(C.shape[0], device=C.device) # uniform source (log 1/B)
180
- log_b = torch.zeros(C.shape[1], device=C.device) # uniform target (log 1/N)
181
- log_K = -C / epsilon
182
- u = torch.zeros_like(log_a)
183
- for _ in range(n_iter):
184
- u = log_a - torch.logsumexp(log_K + u.unsqueeze(1), dim=1)
185
- v = log_b - torch.logsumexp(log_K + u.unsqueeze(1), dim=0)
186
- log_pi = log_K + u.unsqueeze(1) + v.unsqueeze(0)
187
- return log_pi.exp() * C.shape[1] # normalize to sum=1 per row (B, N)
188
- ```
189
-
190
- **Tại sao OT tốt hơn cosine sim?**
191
- - Cost matrix encode "khoảng cách phân phối" — inputs gần vùng kiến thức task nào thì được route nhiều hơn đến task đó
192
- - Sinkhorn constraints đảm bảo **global optimal assignment** trên cả batch
193
- - OT weights tự nhiên sum to 1 → không cần normalization ad-hoc như `|sigmoid(...)*2-1|`
194
- - Differentiable → gradients vẫn flow qua weights đến `trans_input` MLP
195
-
196
- ### 2.4 Component 3 — Backbone Anti-Drift Loss
197
-
198
- **Thêm hai penalty terms vào training loop của mỗi task mới**
199
-
200
- **Anti-drift loss** — bảo vệ `trans_input` khỏi drift trên replay data:
201
-
202
- $$\mathcal{L}_{\text{drift}} = \frac{1}{|\mathcal{B}_{\text{replay}}|} \sum_{x \in \mathcal{B}_{\text{replay}}} \left\| \text{trans\_input}(x) - \text{trans\_input}_{\text{ref}}(x) \right\|^2$$
203
-
204
- với `trans_input_ref` là frozen snapshot của `trans_input` sau nhiệm vụ $t-1$.
205
-
206
- **Anti-invasion loss** — ngăn features của task mới "xâm chiếm" vùng của task cũ trong feature space:
207
-
208
- $$\mathcal{L}_{\text{inv}} = \sum_{s < t} \max\left(0,\ \kappa_s \cdot (\mu_s \cdot x_{\text{new}}) - \tau \right)$$
209
-
210
- với $x_{\text{new}}$ là features của task hiện tại, $(\mu_s, \kappa_s)$ là signature của task cũ $s$, và $\tau$ là threshold (VD: $\tau = -\log(0.1)$). Hàm này phạt khi features task mới có high likelihood dưới signature của task cũ.
211
-
212
- **Tổng loss function:**
213
-
214
- $$\mathcal{L}_{\text{total}} = \mathcal{L}_{\text{CE}} + \lambda_{\text{KL}} \mathcal{L}_{\text{KL}} + \lambda_{\text{drift}} \mathcal{L}_{\text{drift}} + \lambda_{\text{inv}} \mathcal{L}_{\text{inv}}$$
215
-
216
- ($\mathcal{L}_{\text{KL}}$ là replay loss đã có trong GainLoRA)
217
-
218
- **Code integration** — trong `compute_loss` của `cl_trainer_gainlora_inflora.py`:
219
-
220
- ```python
221
- # Anti-drift (thêm sau replay KL loss)
222
- if self.args.anti_drift and self.ref_trans_input is not None:
223
- replay_avg = (replay_mask.unsqueeze(-1) * self.model.encoder.embed_tokens(replay_ids)).mean(1)
224
- x_curr = self.model.encoder.trans_input(replay_avg) # F.normalize inside
225
- with torch.no_grad():
226
- x_ref = self.ref_trans_input(replay_avg)
227
- drift_loss = self.args.lambda_drift * F.mse_loss(x_curr, x_ref)
228
- loss = loss + drift_loss
229
-
230
- # Anti-invasion (thêm với current task batch)
231
- if self.args.anti_invasion and hasattr(self.model.encoder, 'vmf_signatures'):
232
- x_new = F.normalize(self.model.encoder.trans_input(avg_emb_curr), dim=-1)
233
- invasion_loss = 0.0
234
- for t_id, (mu_s, kappa_s) in self.model.encoder.vmf_signatures.items():
235
- if t_id < self.current_task_id:
236
- log_lik = kappa_s * (mu_s @ x_new.T).mean()
237
- invasion_loss += F.relu(log_lik - self.args.invasion_threshold)
238
- loss = loss + self.args.lambda_inv * invasion_loss
239
- ```
240
-
241
- ---
242
-
243
- ## PHẦN 3: ĐÁNH GIÁ KHẢ THI (Feasibility Assessment)
244
-
245
- ### 3.1 Tại Sao GainLoRA Là Candidate Tốt Nhất
246
-
247
- Dựa vào code phân tích (`t5_gainlora_inflora.py`, `cal_attention`, `agg_lora_states`):
248
-
249
- | Yếu tố | Đánh giá | Chi tiết |
250
- |--------|---------|---------|
251
- | Feature space đã normalized | ✅ Hoàn hảo | `x = x/x.norm()` ở line 1210 → trực tiếp trên $\mathcal{S}^{d-1}$ → vMF domain |
252
- | Gating có weights scalar | ✅ Dễ thay | `key_attention_weights (B, N, 1)` feed vào `agg_lora_states` → chỉ cần output cùng shape |
253
- | Multi-task keys structure | ✅ Sẵn có | `previous_prompts_keys` (N, d) → thay bằng `vmf_signatures dict` |
254
- | Sequential training loop | ✅ Rõ ràng | End-of-task hook có thể thêm vào `cl_trainer` sau `save_model()` |
255
- | lora_r=4 nhỏ | ✅ Không ảnh hưởng | Signature fit trên `trans_input` output (d=1024), không phải trên r=4 space |
256
- | Memory overhead | ✅ Giảm đáng kể | Loại bỏ `previous_trans_input` (~15 × MLP size), thay bằng 15 × (d+1) floats cho signatures |
257
- | Non-parallel expert problem | ✅ Giải quyết hoàn toàn | Loại bỏ `previous_trans_input`: tất cả experts dùng cùng `trans_input` → cùng feature space $\mathcal{S}^{d-1}$ |
258
- | Sinkhorn on T4 | ✅ Khả thi | k=15 tasks, B=8, 10 iterations → <1ms/forward pass |
259
- | Differentiable | ✅ | Log-domain Sinkhorn có gradients → không cần thay optimizer |
260
-
261
- ### 3.2 Thay Đổi Tối Thiểu Cần Làm
262
-
263
- Chỉ cần modify **3 chỗ** trong codebase GainLoRA:
264
-
265
- 1. **`t5_gainlora_inflora.py → T5Stack.__init__`**: Thay `self.prompt_key` bằng `self.vmf_signatures = {}` + thêm `cal_attention_ot()` + `sinkhorn_log()`
266
- 2. **`t5_gainlora_inflora.py → T5Stack.forward`**: Thay `self.cal_attention(...)` bằng `self.cal_attention_ot(x)` sau khi signatures được loaded
267
- 3. **`cl_trainer_gainlora_inflora.py`**: Thêm `compute_vmf_signature()` call cuối mỗi task + thêm drift/invasion losses trong `compute_loss()`
268
-
269
- Giữ nguyên hoàn toàn:
270
- - `LoRALayer`, `agg_lora_states`, InfLoRA SVD projection
271
- - KL distillation loss (replay)
272
- - `trans_input` MLP architecture
273
- - `previous_lora_weights_*` mechanism
274
- - DeepSpeed / training infrastructure
275
-
276
- ### 3.3 Rủi Ro Thực Thi
277
-
278
- | Rủi ro | Mức độ | Giải pháp |
279
- |--------|--------|----------|
280
- | κ estimation unstable (κ → 0 hoặc ∞) | Medium | Clip κ ∈ [0.1, 50]; fallback to cosine routing khi κ < 0.5 |
281
- | Sinkhorn không converge với ε quá nhỏ | Low | Dùng ε = 0.05–0.1; log-domain stable |
282
- | Anti-drift quá mạnh → catastrophic underfitting | Medium | Schedule λ_drift decreasing, bắt đầu từ 0.01 |
283
- | vMF fit trên lora_r=4 features (nếu fit ở wrong level) | Low | **Fit trên trans_input output (d=1024), không phải LoRA factors** |
284
- | T5-Large + 15 tasks + signatures + Sinkhorn OOM | Low | Signatures chỉ 15×1025 floats ≈ 60KB; Sinkhorn là matrix ops không grow model size |
285
-
286
- ---
287
-
288
- ## PHẦN 4: TÓM TẮT ĐÓNG GÓP
289
-
290
- ### Điểm Khác Biệt So Với Các Paper Liên Quan
291
-
292
- | Paper gần nhất | Điểm khác biệt |
293
- |-----------|----------------|
294
- | GrMoE (2602.17798) | GrMoE: Bingham kiểm soát **routing entropy** (sparsity). OT-SIGN: vMF mô tả **knowledge region** của expert. GrMoE không phải CL, không có anti-invasion. |
295
- | SSR (2511.08972) | SSR: OT cho **load balancing** (cost = learned linear score). OT-SIGN: OT cho **distribution matching** (cost = vMF log-likelihood). Semantics hoàn toàn khác. |
296
- | SCDEM (2504.10561) | SCDEM: OT cho **feature alignment** giữa epochs (FDC). OT-SIGN: OT như **routing mechanism** để chọn expert. |
297
- | PASs-MoE (2601.13020) | PASs-MoE: subspace methods cho router alignment. OT-SIGN: statistical signatures + global OT assignment. |
298
-
299
- ### Contribution Claim
300
-
301
- > *OT-SIGN là framework đầu tiên sử dụng von Mises-Fisher distributions như fingerprint của knowledge region của từng expert module trong modular continual learning, đồng thời thay thế heuristic gating bằng Optimal Transport với semantic cost matrix (vMF log-likelihood), kết hợp với anti-drift và anti-invasion losses để bảo vệ shared representation space.*
302
-
303
- ---
304
-
305
- *Analysis date: based on GainLoRA codebase + survey verification against arXiv 2024-2026*
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
human_working_IdeaMethod_and_discuss/research_rule.txt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:fb1778bc49b36013798b859362b5419e346aba817bcdca2d6c798860a2dd6a46
3
- size 963
 
 
 
 
human_working_IdeaMethod_and_discuss/revised_idea_analysis.md DELETED
@@ -1,485 +0,0 @@
1
- # PHÂN TÍCH CHUYỂN HƯỚNG IDEA: Từ Data-Level Signatures → Module-Level Signatures
2
- ## Comprehensive Analysis Report
3
-
4
- **Date**: March 7, 2026
5
- **Context**: Idea cũ (OT-SIGN) vi phạm zero-replay setting → cần chuyển hướng
6
-
7
- ---
8
-
9
- # PHẦN 1: XÁC NHẬN VI PHẠM VÀ CHUYỂN HƯỚNG
10
-
11
- ## 1.1 Hai Điểm Vi Phạm Của Idea Cũ
12
-
13
- ### Vi phạm 1: vMF trên dữ liệu cũ = replay thống kê
14
- **Phân tích chính xác**: Setting zero-replay (GainLoRA Section 2.2, InfLoRA Section 2.2) yêu cầu:
15
- > "The model must learn without access to real or synthetic samples from previously learned tasks."
16
-
17
- Việc fit vMF signature $(μ_t, κ_t)$ cuối mỗi task yêu cầu **chạy forward pass qua training data của task cũ** để collect features → đây chính là *statistical summary* của old data distribution → **vi phạm zero-replay**.
18
-
19
- **Bằng chứng từ papers**: Tất cả LoRA-based CL papers trong survey (GainLoRA, InfLoRA, O-LoRA, C-LoRA, MINGLE) đều không lưu bất kỳ thông tin thống kê nào về dữ liệu cũ. Cái duy nhất được phép lưu là:
20
- - **Parameter weights** (frozen LoRA A, B matrices)
21
- - **Subspace bases** (GPM/DualGPM bases $M_t$ — đây là basis vectors, KHÔNG phải data statistics)
22
- - **Gating module weights** (trans_input MLP weights)
23
-
24
- Ranh giới tinh tế: GPM bases $M_t$ được tính từ input covariance $H_t^T H_t$ — thoạt nhìn giống "thống kê", nhưng được chấp nhận vì $M_t$ chỉ capture **directions (subspace)**, KHÔNG capture **distribution parameters** (mean, concentration, shape). Nó tương đương với **memory of which directions were used**, không phải **memory of what data looked like**.
25
-
26
- ### Vi phạm 2: Anti-invasion loss không cần thiết
27
- **Phân tích chính xác**: Trong kiến trúc LoRA expandable:
28
- - **InfLoRA**: $B_t$ được thiết kế trong $\mathcal{N}_t \cap \mathcal{M}_t^{\perp}$ — intersection của gradient space new task và null-space of old tasks. Điều này **mathematically guarantees** rằng update cho task mới nằm trong subspace trực giao với old tasks.
29
- - **OLoRA**: Soft penalty $\lambda_1 \sum_{t'<t} \|A_{t'} A_t^T\|_1$ khuyến khích A matrices trực giao nhau.
30
- - **GainLoRA**: Constraints (5)+(7) trên gating module đảm bảo $g_t(x) = 0$ cho old task inputs.
31
-
32
- → Với các cơ chế này, LoRA branches **đã được thiết kế** để không xâm lấn lẫn nhau → thêm anti-invasion loss là **dư thừa** và vi phạm Occam's razor.
33
-
34
- ## 1.2 Hướng Đi Mới: Khai Thác Thông Tin Từ Module LoRA
35
-
36
- **Ý tưởng mới**: Thay vì khái quát phân phối dữ liệu cũ, khai thác thông tin (thống kê, hình học) **nội tại** của các LoRA submodules — tức là phân tích chính các ma trận $A_t, B_t$ — làm signature cho routing.
37
-
38
- **Tại sao hợp lệ?** Vì $A_t, B_t$ là **model parameters**, không phải data. Chúng đã được frozen sau khi train và là phần tự nhiên của model → việc phân tích chúng KHÔNG vi phạm zero-replay.
39
-
40
- ---
41
-
42
- # PHẦN 2: KHẢO SÁT SETTINGS VÀ PAPERS LIÊN QUAN
43
-
44
- ## 2.1 Các Papers Cùng Settings (Zero-Replay, LoRA-Expansion, Task-ID-Free)
45
-
46
- | Paper | Venue | LoRA Constraint | Routing | Lưu gì từ old tasks? |
47
- |-------|-------|----------------|---------|---------------------|
48
- | **InfLoRA** [Liang & Li, CVPR'24] | CVPR 2024 | Hard: $B_t$ in $\mathcal{N}_t \cap \mathcal{M}_t^{\perp}$ | Không có routing (merge tất cả) | GPM bases $M_t$ |
49
- | **O-LoRA** [Liang & Li] | Cùng nhóm InfLoRA | Random init, CE loss only | Merge tất cả ($a_i = 1$) | Không gì thêm |
50
- | **C-LoRA** [Smith et al., 2023] | CoRR | Soft: null-space regularization | Merge tất cả | Null-space directions |
51
- | **GainLoRA** [Liang et al., NeurIPS'25] | NeurIPS 2025 | Kế thừa InfLoRA/OLoRA | **Gating: cosine sim → sigmoid** | GPM bases + frozen trans_input snapshots |
52
- | **MINGLE** [Qiu et al., NeurIPS'25] | NeurIPS 2025 | Entropy-based null-space SVD | **MoE gating: FC → softmax** | Input covariance SVD subspace $U$ |
53
- | **CLoRA** [ACL'25] | ACL 2025 | Null space regularization trên output matrix | Merge tất cả | Null-space directions |
54
- | **TreeLoRA** [ICML'25] | ICML 2025 | No explicit orthogonality | **Gradient-similarity tree routing** | Gradient similarity scores |
55
- | **PLAN** [ICCV'25] | ICCV 2025 | Orthogonal basis allocation per task | Perturbation-based selection | Orthonormal basis set |
56
- | **Feature Distributions** [ICML'25] | ICML 2025 | No explicit orthogonality | **Mean feature vector matching** | Mean feature vectors per PEFT block |
57
- | **SD-LoRA** [ICLR'25] | ICLR 2025 | Decoupled magnitude/direction | Low-loss trajectory | Direction/magnitude decomposition |
58
-
59
- ### Nhận xét quan trọng:
60
- 1. **Tất cả** papers trong settings này đều KHÔNG lưu data statistics (vMF, covariance, GMM) từ old tasks
61
- 2. Routing mechanisms hiện tại: cosine similarity (GainLoRA), FC gating (MINGLE), gradient similarity (TreeLoRA), mean features (Feature Distributions) — **chưa có paper nào dùng LoRA weight properties làm routing signatures**
62
- 3. Paper gần nhất concept: **Feature Distributions** (ICML'25) dùng mean feature vector → nhưng đây là feature-level, KHÔNG phải weight-level
63
-
64
- ## 2.2 Thông Tin Gì Được Phép Khai Thác?
65
-
66
- Theo zero-replay setting, ta chỉ được phép khai thác:
67
-
68
- | Nguồn | Ví dụ | Hợp lệ? |
69
- |-------|-------|---------|
70
- | Frozen model weights | $A_t, B_t$ matrices, gating weights | ✅ Hoàn toàn |
71
- | Subspace bases từ GPM | $M_t, M_t^{\perp}$ | ✅ (đã được InfLoRA sử dụng) |
72
- | Pre-trained model weights | Base $W$ | ✅ |
73
- | Current task data | $\mathcal{D}_t$ (chỉ task đang train) | ✅ |
74
- | Old task data/statistics | vMF, mean, covariance | ❌ Vi phạm |
75
-
76
- ---
77
-
78
- # PHẦN 3: LoRA MODULES — TÍNH CHẤT VÀ ĐẶC TRƯNG CÓ THỂ KHAI THÁC
79
-
80
- ## 3.1 LoRA Module Là Gì?
81
-
82
- Mỗi LoRA branch cho task $t$ gồm:
83
- - $B_t \in \mathbb{R}^{r \times d_{in}}$ : **Dimensionality reduction matrix** (mã hóa input subspace)
84
- - $A_t \in \mathbb{R}^{d_{out} \times r}$ : **Dimensionality increasing matrix** (được fine-tuned, mã hóa task-specific transformation)
85
-
86
- Với GainLoRA: $r = 4$, $d_{in} = d_{out} = 1024$ (T5-Large).
87
-
88
- **Ý nghĩa hình học:**
89
- - Mỗi **hàng** của $B_t$ ($b_i^t \in \mathbb{R}^{d_{in}}$) là một **direction vector** trong input space
90
- - $\text{span}\{b_1^t, \ldots, b_r^t\}$ định nghĩa **subspace mà task $t$ hoạt động trong**
91
- - $A_t B_t$ = rank-$r$ perturbation lên weight matrix $W$ → task-specific **adaptation direction**
92
-
93
- **Fact quan trọng (Proposition 1 từ InfLoRA)**:
94
- > Fine-tuning $A_t$ is equivalent to fine-tuning the pre-trained weight $W$ within the subspace $\text{span}\{b_1^t, \ldots, b_r^t\}$.
95
-
96
- → **$B_t$ hoàn toàn đặc trưng cho "vùng hoạt động" (operating subspace) của task $t$**
97
-
98
- ## 3.2 Đặc Trưng Hình Học Của LoRA Modules
99
-
100
- ### a) Singular Value Decomposition (SVD) của $A_t B_t$
101
-
102
- $$A_t B_t = U_t \Sigma_t V_t^T$$
103
-
104
- Trong đó:
105
- - $U_t \in \mathbb{R}^{d_{out} \times r}$: **Output directions** — các hướng mà task $t$ "phát ra" trong output space
106
- - $\Sigma_t = \text{diag}(\sigma_1^t, \ldots, \sigma_r^t)$: **Singular values** — "strength/importance" của từng direction
107
- - $V_t \in \mathbb{R}^{d_{in} \times r}$: **Input directions** — subspace mà task $t$ "lắng nghe" trong input space
108
-
109
- **Tính chất:**
110
- 1. **Singular values $\sigma_i^t$** reflect relative importance of each direction for task $t$
111
- 2. **Right singular vectors $v_i^t$** define the input receptive subspace
112
- 3. **Left singular vectors $u_i^t$** define the output emission subspace
113
- 4. **Spectral entropy** $H_t = -\sum_i \hat{\sigma}_i \log \hat{\sigma}_i$ (với $\hat{\sigma}_i = \sigma_i / \sum_j \sigma_j$) measures "spread" of task knowledge across directions
114
-
115
- ### b) Grassmann Manifold Perspective
116
-
117
- Collection of $r$-dimensional subspaces trong $\mathbb{R}^{d}$ forms **Grassmann manifold** $\text{Gr}(r, d)$.
118
-
119
- Mỗi LoRA branch task $t$ → một point $\mathcal{V}_t = \text{span}(V_t)$ trên $\text{Gr}(r, d_{in})$ (input side) hoặc $\mathcal{U}_t = \text{span}(U_t)$ trên $\text{Gr}(r, d_{out})$ (output side).
120
-
121
- **Khoảng cách trên Grassmannian** giữa hai tasks:
122
- $$d_G(\mathcal{V}_i, \mathcal{V}_j) = \|\theta\|_2 = \sqrt{\sum_{k=1}^r \theta_k^2}$$
123
-
124
- Với $\theta_k = \arccos(\sigma_k)$ là **principal angles** giữa hai subspaces, tính từ SVD của $V_i^T V_j$.
125
-
126
- **Ý nghĩa**: Tasks có subspaces gần nhau (small Grassmann distance) → likely share knowledge → routing nên fuse chúng. Tasks có subspaces xa nhau → independent knowledge → routing nên chọn riêng.
127
-
128
- ### c) Column Space và Row Space
129
-
130
- - **Column space** of $\Delta W_t = A_t B_t$: $\text{col}(\Delta W_t) = \text{span}(U_t)$ → **output feature subspace** task $t$ tác động
131
- - **Row space** of $\Delta W_t$: $\text{row}(\Delta W_t) = \text{span}(V_t)$ → **input feature subspace** task $t$ sử dụng
132
- - **Null space** of $\Delta W_t$: inputs mà task $t$ **không hề affect** → orthogonal complement of row space
133
-
134
- ### d) Frobenius Norm và Spectral Properties
135
-
136
- $$\|A_t B_t\|_F = \sqrt{\sum_i (\sigma_i^t)^2}$$
137
-
138
- Measures overall "magnitude" của task $t$'s adaptation. Phân phối singular values cho biết:
139
- - **Concentrated** ($\sigma_1 \gg \sigma_2 \gg \ldots$): Task có dominant direction → knowledge tập trung
140
- - **Spread** ($\sigma_1 \approx \sigma_2 \approx \ldots$): Task cần nhiều directions → knowledge phân tán
141
-
142
- ## 3.3 Công Cụ Thống Kê/Hình Học Phù Hợp
143
-
144
- | Đặc trưng | Công cụ | Ý nghĩa |
145
- |-----------|---------|---------|
146
- | Subspace direction | Grassmann manifold, principal angles | Đo "task relatedness" dựa trên góc giữa subspaces |
147
- | Singular value distribution | Spectral entropy, effective rank | Đo "complexity/spread" của task knowledge |
148
- | Weight matrix geometry | Frobenius/Nuclear/Spectral norm | ��o "magnitude" của task adaptation |
149
- | Subspace overlap | $\text{Tr}(P_i P_j)$ với $P_i = V_i V_i^T$ projection | Đo mức chồng chéo giữa operating subspaces |
150
- | Fisher Information | $F_t = \mathbb{E}[\nabla \log p \cdot \nabla \log p^T]$ | Parameter importance (nhưng cần data → vi phạm nếu dùng old task data) |
151
-
152
- **Lưu ý quan trọng**: Tất cả metrics trên chỉ yêu cầu **ma trận $A_t, B_t$** (frozen weights), KHÔNG cần old data → **hoàn toàn hợp lệ** trong zero-replay setting.
153
-
154
- ---
155
-
156
- # PHẦN 4: PHÂN TÍCH VẤN ĐỀ TRỰC GIAO — SUBSPACE EXHAUSTION
157
-
158
- ## 4.1 Vấn Đề: Subspace Shrinkage (Nhận Định Đúng)
159
-
160
- Nhận định của bạn **hoàn toàn chính xác** và được xác nhận bởi cả lý thuyết và code:
161
-
162
- ### Chứng minh toán học:
163
-
164
- Khi sử dụng GPM/DualGPM (InfLoRA), subspace cho old tasks $\mathcal{M}_t$ **tăng đơn điệu**:
165
- $$\dim(\mathcal{M}_1) \leq \dim(\mathcal{M}_2) \leq \ldots \leq \dim(\mathcal{M}_T) \leq d_{in}$$
166
-
167
- Do đó, **null-space $\mathcal{M}_t^{\perp}$ giảm đơn điệu**:
168
- $$\dim(\mathcal{M}_t^{\perp}) = d_{in} - \dim(\mathcal{M}_t)$$
169
-
170
- Kết quả:
171
- - **Task 1**: Toàn bộ $d_{in}$-dimensional space available → $B_1$ có $d_{in}$ chiều để chọn
172
- - **Task $t$**: Chỉ còn $\dim(\mathcal{M}_t^{\perp})$ chiều → $B_t$ bị giới hạn trong subspace nhỏ hơn
173
- - **Task $T$ (final)**: Available space có thể rất nhỏ nếu $T$ lớn
174
-
175
- ### Từ code GainLoRA (InfLoRA variant):
176
-
177
- ```python
178
- # Threshold tăng dần → old subspace ĂN nhiều hơn
179
- threshold = (1.0 - threshold_base) * cur_task / total_sessions + threshold_base
180
- # threshold_base = 0.995 → threshold tăng từ 0.995 → 1.0
181
- ```
182
-
183
- Quan sát từ InfLoRA paper (Figure 5): dim($\mathcal{M}_t^{\perp}$) giảm nhưng "always much larger than zero". **Tuy nhiên** điều này chỉ đúng cho 20 tasks với $d_{in} = 768$ (ViT-B/16). Với settings khó hơn (T5-Large, $d_{in} = 1024$, 15 tasks, mỗi task tốn nhiều directions), subspace có thể bị **cạn kiệt đáng kể**.
184
-
185
- ### Hậu quả: Unfair Capacity Allocation
186
-
187
- | Task | Available dim | Constraint count | Effective capacity |
188
- |------|--------------|-------------------|-------------------|
189
- | Task 1 | $d_{in}$ | 0 | Maximum |
190
- | Task 5 | $d_{in} - \sum_{i=1}^{4} k_i$ | 4 sets | Giảm |
191
- | Task 15 | $d_{in} - \sum_{i=1}^{14} k_i$ | 14 sets | **Rất nhỏ** |
192
-
193
- Với $k_i$ là dimension được thêm vào $\mathcal{M}$ ở mỗi task (thường $k_i \sim$ rank effective of task $i$).
194
-
195
- **Ví dụ cụ thể**: Nếu mỗi task "chiếm" trung bình 60 dimensions (với threshold 0.995), sau 15 tasks:
196
- $$\text{claimed} = 15 \times 60 = 900 \quad \text{vs.} \quad d_{in} = 1024$$
197
- → Task 15 chỉ còn $\sim 124$ dimensions available → **capacity giảm ~88%** so với task 1.
198
-
199
- ## 4.2 Các Hướng Giải Quyết Từ Literature
200
-
201
- ### Hướng 1: DualGPM — Slow Expansion (InfLoRA đã dùng)
202
- - Tăng threshold dần → giảm tốc expansion
203
- - **Nhược điểm**: Chỉ *chậm lại* depletion, không *giải quyết* root cause. Trade-off: threshold cao → bảo tồn tốt nhưng space hẹp; threshold thấp → space rộng nhưng interference.
204
-
205
- ### Hướng 2: Adaptive Relaxation (MINGLE đã dùng)
206
- - Track alignment history $h_i$ (EMA) giữa gradient và old directions
207
- - Directions có high historical alignment → **được relaxed** (cho phép update)
208
- - $\lambda_i = \exp(-\gamma \cdot h_i)$: soft decay thay vì hard projection
209
-
210
- **Ưu điểm**: Không tốn space vĩnh viễn — directions cần thiết cho task hiện tại được "mượn" lại.
211
- **Nhược điểm**: Có thể gây interference nếu relaxation quá mạnh.
212
-
213
- ### Hướng 3: Subspace Recycling / Forgetting Old Bases
214
- - Ý tưởng: Nếu một direction trong $\mathcal{M}_t$ không còn quan trọng (ví dụ singular value tương ứng rất nhỏ), có thể "giải phóng" nó cho tasks mới.
215
- - **Chưa có paper nào implement** trong LoRA CL context.
216
- - Liên quan: "Memory-efficient GPM" directions — nhưng chưa formal.
217
-
218
- ### Hướng 4: Shared Subspace Decomposition (Novel Direction)
219
- - Thay vì hard orthogonal: phân tách mỗi task thành **shared component** + **task-specific component**
220
- - Shared component được tái sử dụng → không tốn space mới
221
- - Task-specific component tuân thủ orthogonal → nhưng nhỏ hơn many
222
- - Related: **Oblique projection** thay vì orthogonal projection
223
-
224
- ### Hướng 5: Grassmann Manifold Optimization (Mathematical Foundation)
225
-
226
- Thay vì project trong Euclidean space, tối ưu hóa trên **Grassmann manifold** $\text{Gr}(r, d)$:
227
-
228
- **Stiefel Manifold Constraint**: Thay vì $B_t \perp \text{span}(\text{old bases})$, yêu cầu:
229
- $$B_t \in \text{St}(r, d_{in}) \quad \text{(Stiefel manifold: orthonormal frames)}$$
230
-
231
- Rồi dùng **Riemannian gradient descent** trên Grassmannian để tìm $B_t$ tối ưu trên manifold — inherently balanced vì mọi point trên Grassmannian có "metric volume" equal.
232
-
233
- **Kết nối toán học**: Geodesic distance trên Grassmannian = principal angles = chính là independence measure giữa subspaces. Tối ưu hóa trên manifold tự nhiên cân bằng capacity.
234
-
235
- ## 4.3 Phân Tích OLoRA (Soft Constraint)
236
-
237
- OLoRA dùng soft penalty $\|A_{old} A_{new}^T\|$ thay vì hard projection. Điều này:
238
-
239
- **Ưu điểm**:
240
- - Không bị subspace exhaustion (penalty dẻo, cho phép small overlap)
241
- - Capacity allocation công bằng hơn (mọi task đều có toàn bộ space, nhưng bị penalize nếu overlap)
242
-
243
- **Nhược điểm**:
244
- - Không có **theoretical guarantee** rằng interference = 0
245
- - Penalty strength $\lambda_1$ cố định → không adaptive theo task complexity
246
- - Có thể dẫn đến "soft forgetting" nếu overlap tích lũy
247
-
248
- ## 4.4 Kết Luận: Cần Một Cơ Chế Mới
249
-
250
- Cả hard (InfLoRA) và soft (OLoRA) đều có significant drawbacks:
251
- 1. **Hard**: Subspace exhaustion, unfair late-task capacity
252
- 2. **Soft**: No guarantee, accumulating interference
253
-
254
- → Cần **adaptive mechanism** kết hợp ưu điểm cả hai.
255
-
256
- ---
257
-
258
- # PHẦN 5: ĐÁNH GIÁ HƯỚNG ĐI MỚI VÀ ĐỀ XUẤT CẢI TIẾN
259
-
260
- ## 5.1 Đánh Giá Idea Mới (Module-Level Signatures + OT Routing)
261
-
262
- ### Điểm mạnh:
263
- 1. **Hoàn toàn hợp lệ**: Chỉ phân tích frozen weights $A_t, B_t$ → zero-replay compliant
264
- 2. **Novel**: KHÔNG có paper nào trong 109 papers khảo sát dùng LoRA weight SVD/spectral properties làm routing signatures
265
- 3. **Well-motivated**: SVD of $A_t B_t$ captures task subspace geometry — mathematically grounded on Grassmann manifold
266
- 4. **Compatible**: Có thể áp dụng trên GainLoRA, MINGLE, và bất kỳ expandable LoRA architecture nào
267
-
268
- ### Điểm cần cải tiến:
269
- 1. **OT routing dựa trên gì?**: Cần define rõ cost matrix. Idea cũ: vMF log-likelihood (vi phạm). Idea mới: **Grassmann distance** hoặc **subspace projection similarity** giữa input và LoRA subspaces → hợp lệ.
270
-
271
- 2. **Input representation**: Routing cần biết input feature $x$ thuộc "vùng nào". Ta cần map $x$ vào cùng space với LoRA signatures mà KHÔNG dùng old data. Giải pháp: **project $x$ lên mỗi LoRA subspace**, đo "fit" bằng projection magnitude.
272
-
273
- 3. **Fairness constraint**: Cần giải quyết subspace exhaustion → đây CÓ THỂ là contribution thứ 2 (thay cho anti-invasion loss).
274
-
275
- ## 5.2 Đề Xuất Idea Sơ Thảo: **SpecRoute — Spectral Signatures + Grassmann-Fair Routing**
276
-
277
- ### Tổng quan 3 Contributions
278
-
279
- | # | Contribution | Thay thế gì? | Novel? |
280
- |---|-------------|--------------|--------|
281
- | C1 | **Spectral LoRA Signatures**: Dùng SVD properties $(U_t, \Sigma_t, V_t)$ của frozen $A_t B_t$ làm task fingerprint | Thay prompt_key (point estimate) bằng rich spectral descriptor | ✅ Novel — chưa có paper nào |
282
- | C2 | **Grassmann-OT Routing**: OT với cost = Grassmann distance giữa input projection và LoRA subspaces | Thay cosine sim → sigmoid bằng principled OT | ✅ Novel — OT + Grassmann chưa kết hợp trong CL |
283
- | C3 | **Elastic Subspace Allocation (ESA)**: Cơ chế thay thế hard orthogonal, cho phép controlled sharing + spectral-importance-weighted protection | Thay GPM hard constraint bằng adaptive elastic constraint | ✅ Novel — addresses known limitation |
284
-
285
- ### C1: Spectral LoRA Signatures
286
-
287
- **Định nghĩa**: Cho task $t$ đã train, với frozen $A_t, B_t$, tính SVD:
288
- $$\Delta W_t = A_t B_t = U_t \Sigma_t V_t^T$$
289
-
290
- **Signature** $\mathcal{S}_t$ bao gồm:
291
- 1. **Subspace direction**: $V_t \in \mathbb{R}^{d_{in} \times r}$ (input receptive field)
292
- 2. **Spectral profile**: $\sigma_t = (\sigma_1^t, \ldots, \sigma_r^t)$ (importance distribution)
293
- 3. **(Optional)** Output direction: $U_t$ nếu cần output-level routing
294
-
295
- **Lưu trữ**: Chỉ cần $V_t$ (size $d_{in} \times r = 1024 \times 4 = 4096$ floats) + $\sigma_t$ ($r = 4$ floats) per layer per task. Với 15 tasks × 48 attention layers (T5-Large, Q+V) = 15 × 48 × 4100 ≈ 2.95M floats ≈ 11.8 MB — **rất nhỏ** so với model size.
296
-
297
- **So sánh với GainLoRA hiện tại**:
298
- - `prompt_key` = 1 vector $\in \mathbb{R}^d$ per task (point estimate, learned jointly with gating)
299
- - Spectral signature = $r$ vectors + $r$ scalars per task per layer (captures subspace geometry, computed from frozen weights)
300
-
301
- **Tại sao tốt hơn?**
302
- - `prompt_key` encode "input nào thuộc task này" — nhưng learned trong feature space riêng (trans_input), gây non-parallel experts problem (xem proposal cũ Phần 1.2)
303
- - Spectral signature encode "task này hoạt động trên subspace nào" — trực tiếp từ weight geometry, objective, không phụ thuộc vào feature extractor
304
-
305
- ### C2: Grassmann-OT Routing
306
-
307
- **Ý tưởng**: Với input $h \in \mathbb{R}^{d_{in}}$ tại một layer, đo "mức phù hợp" của $h$ với mỗi LoRA subspace bằng **projection ratio**:
308
-
309
- $$\text{fit}(h, \mathcal{S}_t) = \frac{\|V_t^T h\|^2}{\|h\|^2} \cdot \text{spectral\_weight}_t$$
310
-
311
- Trong đó:
312
- - $\|V_t^T h\|^2 / \|h\|^2$ = fraction of $h$'s energy captured by task $t$'s subspace (= $\cos^2$ of angle giữa $h$ và subspace, hay **projection magnitude**)
313
- - $\text{spectral\_weight}_t = \sum_i \sigma_i^t / \sum_j \sum_i \sigma_i^j$ = relative importance of task $t$
314
-
315
- **Cost matrix cho OT**:
316
- $$C_{bt} = 1 - \text{fit}(h_b, \mathcal{S}_t) \quad \in [0, 1]$$
317
-
318
- (low cost = input fits well into task's subspace)
319
-
320
- **Sinkhorn OT**:
321
- $$\Pi^* = \text{Sinkhorn}(C, \varepsilon), \quad \text{weights} = B \cdot \Pi^* \quad \in \mathbb{R}^{B \times N_{tasks}}$$
322
-
323
- **Tại sao OT thay vì direct projection?**
324
- 1. **Global balance**: OT đảm bảo các experts được sử dụng hợp lý (không collapse vào 1 expert)
325
- 2. **Principled**: Optimal transport có foundation lý thuyết vững (Monge-Kantorovich)
326
- 3. **Differentiable**: Sinkhorn có gradient → có thể fine-tune nếu cần
327
-
328
- **Tại sao Grassmann distance phù hợp?**
329
- - Subspaces $\text{span}(V_t)$ nằm trên Grassmann manifold → Grassmann distance là metric tự nhiên
330
- - Projection-based "fit" tương đương Grassmann geodesic distance (principal angles)
331
-
332
- ### C3: Elastic Subspace Allocation (ESA) — Thay Thế Hard Orthogonal
333
-
334
- **Vấn đề**: Hard orthogonal (InfLoRA) → subspace exhaustion. Soft penalty (OLoRA) → no guarantee.
335
-
336
- **Giải pháp ESA**: Kết hợp **importance-weighted protection** + **controlled sharing**
337
-
338
- **Bước 1 — Spectral Importance Scoring**: Cho mỗi old task $t'$ tại mỗi layer, tính importance score cho mỗi direction $v_i^{t'}$:
339
- $$w_i^{t'} = \frac{(\sigma_i^{t'})^2}{\sum_j (\sigma_j^{t'})^2}$$
340
-
341
- Directions có high singular value → crucial cho task $t'$ → cần protect mạnh.
342
-
343
- **Bước 2 — Weighted Projection**: Thay vì hard project ra khỏi toàn bộ $\mathcal{M}_t$:
344
- $$B_t \leftarrow B_t - \sum_{t'<t} \sum_{i=1}^{r} \alpha_i^{t'} \cdot (V_t^{t'} (V_t^{t'})^T) B_t^T$$
345
-
346
- Với:
347
- $$\alpha_i^{t'} = \begin{cases} 1 & \text{if } w_i^{t'} > \tau_{\text{protect}} \quad \text{(hard protect critical directions)} \\ w_i^{t'} & \text{if } w_i^{t'} \leq \tau_{\text{protect}} \quad \text{(soft protect less important)} \end{cases}$$
348
-
349
- **Bước 3 — Space Budget**: Giới hạn tổng protected dimensions:
350
- $$\sum_{t'<t} \text{effective\_rank}(t') \leq \beta \cdot d_{in}$$
351
-
352
- Nếu vượt budget → **prune** directions có lowest $\sigma_i^{t'} $ trước (subspace recycling).
353
-
354
- **Ưu điểm**:
355
- - **Fair**: Critical directions always protected, minor directions can be shared
356
- - **Efficient**: Total protected space bounded by $\beta \cdot d_{in}$
357
- - **Adaptive**: Importance changes per task — complex tasks claim more, simple tasks claim less
358
- - **Theoretically grounded**: Spectral importance = proxy for output sensitivity ($\sigma_i$ reflects how much direction $i$ affects output)
359
-
360
- **So sánh**:
361
-
362
- | Phương pháp | Protection | Space usage | Fairness | Guarantee |
363
- |-------------|-----------|-------------|----------|-----------|
364
- | InfLoRA (GPM) | Hard, all directions | Monotonic increase | Unfair (first-come) | Strong for protected |
365
- | OLoRA | Soft penalty | Constant | Fair | Weak |
366
- | MINGLE (adaptive relax) | EMA-adaptive | Controlled | Medium | Medium |
367
- | **ESA (đề xuất)** | Importance-weighted | Bounded by budget | **Fair** | Strong for critical, soft for minor |
368
-
369
- ---
370
-
371
- # PHẦN 6: KIỂM TRA NOVELTY CỦA IDEA MỚI
372
-
373
- ## 6.1 Cross-check với 109 Papers + Papers Bổ Sung
374
-
375
- ### C1 — Spectral LoRA Signatures cho Routing
376
-
377
- | Paper | Cách dùng spectral | Khác biệt |
378
- |-------|-------------------|-----------|
379
- | **MINGLE** | SVD of merged task vector → entropy-based effective rank → null-space exclusion | SVD dùng cho **construction** (xây LoRA), KHÔNG phải routing signature |
380
- | **SD-LoRA** (ICLR'25) | Decouple magnitude + direction | Analysis purpose, không phải routing |
381
- | **Grassmannian MoE** (arXiv) | Bingham trên Grassmannian | Routing entropy control, KHÔNG phải knowledge signature. Và không phải CL. |
382
- | **Feature Distributions** (ICML'25) | Mean feature vector | Feature-level, không phải weight-level |
383
-
384
- **Kết luận C1**: ✅ **Novel** — Chưa có paper nào dùng SVD properties ($V_t, \Sigma_t$) của frozen LoRA weights làm routing signatures trong CL.
385
-
386
- ### C2 — OT Routing dựa trên Grassmann Distance
387
-
388
- | Paper | OT usage | Routing basis | Khác biệt |
389
- |-------|---------|--------------|-----------|
390
- | **BASE Layers** (ICML'21) | OT load-balancing | Learned scores | OT cho balance, không phải knowledge matching |
391
- | **Selective Sinkhorn** (2025) | OT routing | Learned scores | OT cho routing nhưng cost = learned, không phải geometric |
392
- | **SCDEM** (2025) | OT feature alignment | Feature distance | OT cho alignment, không phải routing |
393
-
394
- **Kết luận C2**: ✅ **Novel** — OT + subspace projection cost (Grassmann-based) chưa được dùng trong CL routing.
395
-
396
- ### C3 — Elastic Subspace Allocation
397
-
398
- | Paper | Subspace management | Khác biệt |
399
- |-------|-------------------|-----------|
400
- | **InfLoRA** | Hard GPM, threshold-based | No recycling, no importance weighting |
401
- | **DualGPM** | Bi-directional, threshold-based | Slightly better but same root issue |
402
- | **MINGLE** | Adaptive relaxation (EMA) | Gate-level, not LoRA subspace level |
403
- | **TRGP** (Lin et al., ICLR'22) | Trust region gradient projection | Relaxes constraint based on "trust" but no spectral importance |
404
-
405
- **Kết luận C3**: ✅ **Novel** — Importance-weighted subspace protection with bounded budget chưa được đề xuất.
406
-
407
- ## 6.2 Đánh Giá Tổng Thể
408
-
409
- | Tiêu chí | Đánh giá |
410
- |----------|---------|
411
- | Novelty | ✅ Cao — 3 contributions đều novel |
412
- | Zero-replay compliance | ✅ Hoàn toàn — chỉ dùng frozen weights |
413
- | Mathematical rigor | ✅ Grassmann geometry, SVD, OT — all well-established |
414
- | Practical feasibility | ✅ SVD of $(r \times d)$ matrices rất nhanh (r=4) |
415
- | Compatibility | ✅ Áp dụng được trên GainLoRA, InfLoRA+GainLoRA, MINGLE |
416
- | Theoretical backing | ✅ Grassmann manifold (Edelman et al.), OT (Villani), Spectral theory |
417
-
418
- ---
419
-
420
- # PHẦN 7: IDEA SƠ THẢO TỔNG HỢP
421
-
422
- ## SpecRoute: Spectral-Geometric Routing for Fair Continual LoRA Learning
423
-
424
- ### Motivation (1 paragraph)
425
- Trong LoRA-based continual learning, hai thách thức chưa được giải quyết triệt để: (1) routing mechanism hiện tại dựa trên learned point estimates (cosine similarity đến prompt keys) — không capture được geometric structure của task knowledge subspaces, dẫn đến suboptimal assignment đặc biệt cho inputs nằm ở boundary giữa tasks; (2) orthogonal constraints (GPM/DualGPM) đảm bảo non-interference nhưng gây subspace exhaustion — tasks sau bị giới hạn capacity không công bằng so với tasks đầu, degrading overall performance. Chúng tôi nhận thấy rằng frozen LoRA weights $(A_t, B_t)$ chứa đầy đủ thông tin hình học về "vùng hoạt động" của mỗi task thông qua SVD, và thông tin này có thể được khai thác làm task signatures cho principled routing.
426
-
427
- ### Method Overview
428
-
429
- **1. Spectral LoRA Signatures (Section 3.1)**
430
- - Sau khi train task $t$, tính SVD: $A_t B_t = U_t \Sigma_t V_t^T$
431
- - Signature $\mathcal{S}_t = (V_t, \Sigma_t)$ per layer — encode operating subspace + importance profile
432
- - Không cần old data, không cần extra computation ngoài SVD (rất nhanh cho r=4)
433
-
434
- **2. Grassmann-OT Routing (Section 3.2)**
435
- - Input $h$ → compute projection fit: $\text{fit}(h, \mathcal{S}_t) = \sum_i \sigma_i^t \cdot (v_i^t \cdot h)^2 / \|h\|^2$
436
- - Build cost matrix $C_{bt} = 1 - \text{normalized\_fit}$ per batch
437
- - Sinkhorn OT → globally optimal routing weights
438
- - Thay thế hoàn toàn cosine-sigmoid gating → loại bỏ non-parallel feature space problem
439
-
440
- **3. Elastic Subspace Allocation (Section 3.3)**
441
- - Weight mỗi old direction bằng spectral importance $w_i^{t'} = (\sigma_i^{t'})^2 / \sum_j (\sigma_j^{t'})^2$
442
- - Hard protect critical directions ($w > \tau$), soft protect minor directions
443
- - Bounded total protected dimensions → **fair capacity** cho late tasks
444
- - Optional: subspace recycling khi budget exceeded
445
-
446
- ### Theoretical Justification
447
- 1. **Proposition 1** (inherited from InfLoRA): Fine-tuning $A_t$ = fine-tuning $W$ in span($B_t$) → SVD of $A_t B_t$ fully characterizes task's operating subspace
448
- 2. **Grassmann distance** giữa subspaces = principal angles = natural metric cho "task relatedness"
449
- 3. **OT guarantees**: Sinkhorn produces $\varepsilon$-approximate optimal transport plan → globally balanced assignment
450
- 4. **ESA bound**: Total protected capacity ≤ $\beta \cdot d_{in}$ → late tasks guaranteed ≥ $(1-\beta) \cdot d_{in}$ available directions
451
-
452
- ### Expected Contributions Claim
453
- - **C1**: First to use spectral properties of frozen LoRA weights as routing signatures in CL
454
- - **C2**: First to combine Grassmann subspace distance with OT for routing in CL
455
- - **C3**: First to address LoRA subspace exhaustion via importance-weighted elastic allocation
456
-
457
- ### Áp Dụng Trên GainLoRA
458
- 1. Thay `prompt_key` + `trans_input` + `previous_trans_input` bằng spectral signatures + projection routing
459
- 2. Thay GPM hard constraint bằng ESA
460
- 3. Keep: expandable LoRA architecture, training loss, frozen old branches
461
-
462
- ### Potential Risks & Mitigations
463
- | Risk | Severity | Mitigation |
464
- |------|---------|------------|
465
- | SVD per-layer overhead | Low | $r=4$ → SVD trivial; compute once after training |
466
- | Projection fit not discriminative enough | Medium | Add spectral weighting $\sigma_i$ to amplify important directions |
467
- | OT Sinkhorn convergence | Low | Log-domain Sinkhorn with $\varepsilon=0.05$, well-studied |
468
- | ESA τ threshold sensitivity | Medium | Cross-validate; default $\tau = 1/r$ (uniform importance threshold) |
469
- | Compatibility with GainLoRA gating constraints | Medium | ESA replaces GPM entirely; GainLoRA gating becomes unnecessary (routing handles expert selection) |
470
-
471
- ---
472
-
473
- # PHẦN 8: TÓM TẮT
474
-
475
- ## C��c kết luận chính:
476
-
477
- 1. **Vi phạm xác nhận**: Idea cũ (vMF data signatures + anti-invasion loss) đúng là vi phạm zero-replay setting. Chuyển hướng sang khai thác LoRA weights là hướng đi hợp lệ.
478
-
479
- 2. **Nhận định subspace exhaustion đúng**: Hard orthogonal constraints (GPM) gây unfair capacity allocation cho late tasks. Đã được xác nhận qua phân tích toán học và code. Đây là open problem chưa ai giải quyết triệt để.
480
-
481
- 3. **Đặc trưng LoRA phong phú**: SVD của $A_t B_t$ cung cấp rich geometric information: subspace directions, importance profile, effective rank. Nằm trên Grassmann manifold — có metric topology tự nhiên.
482
-
483
- 4. **Idea mới (SpecRoute) viable**: 3 contributions (spectral signatures, Grassmann-OT routing, elastic subspace allocation) đều novel, hợp lệ, mathematically grounded, và áp dụng được trên GainLoRA/MINGLE platform.
484
-
485
- 5. **Papers đồng settings**: GainLoRA, InfLoRA, O-LoRA, C-LoRA, MINGLE, TreeLoRA, PLAN, Feature Distributions, SD-LoRA — tất cả đều follow zero-replay + LoRA expansion. KHÔNG có paper nào kết hợp weight-level spectral signatures + OT routing + elastic capacity allocation.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
human_working_IdeaMethod_and_discuss/settings.txt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:b89ff4e5fc7f5b76386748a61dc1ba506edc5f8b4aa07a4388e25222879c19b8
3
- size 750
 
 
 
 
human_working_IdeaMethod_and_discuss/simple_idea.txt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:cc880fdc09869b80054a5ed4209abd437ada0a86d41d84a7fd8d1a8c1d8ab0a8
3
- size 1304
 
 
 
 
human_working_IdeaMethod_and_discuss/work_ethic.txt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:ea980e446e8d9233b648faacc50ff09e03ca139b8c29cdcd1a04bb8c2d8fcc92
3
- size 2204
 
 
 
 
human_working_IdeaMethod_and_discuss/working_method.txt DELETED
@@ -1,3 +0,0 @@
1
- version https://git-lfs.github.com/spec/v1
2
- oid sha256:f4b3c616553676bae9a05c228705573d40318029a81edde6b22422dfe0784273
3
- size 232
 
 
 
 
improve_gainlora/v6_discuss.md ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Revised Implementation Plan — After Strict Zero-Replay Constraint
2
+
3
+ > **Trigger**: User confirmed storing mean embeddings (prototypes) violates zero-replay: *"lưu bất kỳ thứ gì của dữ liệu đều vi phạm"*
4
+
5
+ ---
6
+
7
+ ## I. CONSTRAINT ANALYSIS — What's Available?
8
+
9
+ Under strict zero-replay, at test time we have **ONLY**:
10
+
11
+ | Information | Source | Available? |
12
+ |------------|--------|-----------|
13
+ | Frozen LoRA weights $A_t, B_t$ | Model training artifact | ✅ |
14
+ | SVD of $\Delta W_t = B_t A_t$ | Derived from model params | ✅ |
15
+ | Current input $h$ | Test sample | ✅ |
16
+ | GPM bases | ROOT method (forward on data) | ✅ Already stored |
17
+ | **Mean embeddings** $\mu_t$ | **Data statistic** | ❌ **VIOLATES** |
18
+ | **Distribution params** | **Data statistic** | ❌ **VIOLATES** |
19
+ | **Learned routing params** | Model params | ⚠️ Legal but has forgetting risk |
20
+
21
+ ### Implication
22
+
23
+ Prototype routing (V5) is **invalid**. Available routing must use only:
24
+ $$\text{routing}(h) = f(h; \{A_t, B_t\}_{t=1}^T)$$
25
+
26
+ This means spectral routing is the **ONLY** parameter-free, zero-replay-compliant routing mechanism.
27
+
28
+ ---
29
+
30
+ ## II. REVISITING THE GPM-ROUTING PARADOX
31
+
32
+ The paradox: GPM forces $A_{k'} \perp A_k$, so spectral fit favors the first expert that claimed shared input directions.
33
+
34
+ **But is this paradox insurmountable?** Let me re-examine:
35
+
36
+ ### Severity depends on expert quality
37
+
38
+ If expert $t$'s LoRA is **well-trained** (captures task-specific information in its 4D subspace), then even though its subspace is orthogonal to earlier experts, the SVD singular values $\sigma_t$ encode **how strongly** the expert responds to different directions. Two same-domain experts with orthogonal $V_t$ can still be discriminated IF:
39
+
40
+ $$\sigma_t^2 (v_t^T h)^2 \gg \sigma_{t'}^2 (v_{t'}^T h)^2$$
41
+
42
+ This happens when:
43
+ 1. Expert $t$ has **large** singular values → strong response in its subspace
44
+ 2. Input $h$ projects **significantly** onto expert $t$'s orthogonal directions
45
+
46
+ ### C4 directly addresses this
47
+
48
+ **Preconditioned Gradients** (gradient preconditioning via $(AA^T + \epsilon I)^{-1/2}$):
49
+ - Stabilizes training in the constrained (null-space projected) subspace
50
+ - Expert learns more effectively **within** its allocated subspace
51
+ - → Better singular value spectrum → more discriminative spectral signatures
52
+
53
+ **Spectral Entropy Regularization** ($\lambda \cdot (H_{max} - H(\hat{\sigma}))$):
54
+ - Encourages LoRA to utilize **full rank** (all 8 dimensions, not just 1-2)
55
+ - More spread singular values → expert responds to more directions in its subspace
56
+ - → Higher projection energy for correct inputs → better routing discrimination
57
+
58
+ ### Hypothesis: C4 is the key to making spectral routing work
59
+
60
+ The V1-V3 failures may not be purely due to the routing MECHANISM, but also due to **poor expert quality** — LoRA trained in constrained null-space without preconditioning learns poorly, producing weak/degenerate singular values → spectral routing becomes random.
61
+
62
+ **C4 fixes the expert quality → spectral routing becomes discriminative → performance improves.**
63
+
64
+ ---
65
+
66
+ ## III. PROPOSED APPROACH — Enhanced Spectral Routing + C4
67
+
68
+ | Component | Choice | Rationale |
69
+ |-----------|--------|-----------|
70
+ | Routing | Spectral (SVD projection fit) | Only zero-replay-compliant option |
71
+ | Training bias | Adaptive β(n) | Handle cold-start, softmax dilution |
72
+ | Inference routing | Symmetric SVD (V3) | No bias, all tasks use same formula |
73
+ | C4: Preconditioning | **Enabled** | Key to making null-space LoRA learn effectively |
74
+ | C4: Spectral Entropy | **Enabled** (λ=0.01) | Full-rank LoRA → more discriminative signatures |
75
+ | Protection | GPM on LoRA-A | Unchanged from ROOT |
76
+
77
+ ### Key insight
78
+
79
+ **V4 crashed due to bugs, not because C4 is wrong.** The trainer code NOW has the fix:
80
+ - [precompute_preconditioners()](file:///Users/nnminh322/Desktop/personal/Continual/improve_gainlora/src/cl_trainer_specroute.py#122-139) uses proper `torch.linalg.eigh()` + clamping
81
+ - [_compute_spectral_entropy_loss()](file:///Users/nnminh322/Desktop/personal/Continual/improve_gainlora/src/cl_trainer_specroute.py#140-164) uses QR trick (avoids large SVD)
82
+ - [_apply_preconditioning()](file:///Users/nnminh322/Desktop/personal/Continual/improve_gainlora/src/cl_trainer_specroute.py#165-178) includes `nan_to_num_()` guard
83
+
84
+ ### What changed from V5 script
85
+
86
+ The V5 script ALREADY has C4 enabled (`lambda_entropy=0.01`, `use_preconditioning=True`). But V5 also has prototype routing at inference. We need:
87
+ 1. **Keep C4 enabled** (same as V5)
88
+ 2. **Disable prototype routing at inference** → fall back to symmetric SVD routing (V3)
89
+
90
+ ---
91
+
92
+ ## IV. IMPLEMENTATION
93
+
94
+ ### [MODIFY] [t5_specroute.py](file:///Users/nnminh322/Desktop/personal/Continual/improve_gainlora/src/t5_specroute.py)
95
+
96
+ In [compute_spectral_routing()](file:///Users/nnminh322/Desktop/personal/Continual/improve_gainlora/src/t5_specroute.py#231-382), the inference path currently:
97
+ 1. Tries prototype routing first (cosine similarity to stored prototypes)
98
+ 2. Falls back to SVD spectral routing if prototypes unavailable
99
+
100
+ **Change**: Always use SVD spectral routing at inference (skip prototype check).
101
+
102
+ Specifically: remove or bypass the `_use_proto` path at inference, always go to the SVD-based path (the `else` branch at line 317).
103
+
104
+ ### [MODIFY] Shell Script
105
+
106
+ Create V6 script: keep C4 enabled, output paths renamed to V6.
107
+ - `--lambda_entropy 0.01` ✅ (keep)
108
+ - `--use_preconditioning True` ✅ (keep)
109
+ - All paths renamed from v5 → v6
110
+
111
+ ### No other code changes needed
112
+ - [run_t5.py](file:///Users/nnminh322/Desktop/personal/Continual/improve_gainlora/src/run_t5.py): prototype load code safely handles missing prototype files
113
+ - [cl_trainer_specroute.py](file:///Users/nnminh322/Desktop/personal/Continual/improve_gainlora/src/cl_trainer_specroute.py): C4 code already correct
114
+
115
+ ---
116
+
117
+ ## V. VERIFICATION PLAN
118
+
119
+ ### Primary: Run full 15-task experiment
120
+ ```bash
121
+ bash T5_small/gen_script_long_order3_t5_small_specroute_v6.sh <model_path>
122
+ python score.py gen_script_long_order3_t5_small_specroute_v6 <output_path>
123
+ ```
124
+
125
+ ### Diagnostic: Monitor routing quality
126
+ - Watch for `[SpecRoute]` log lines showing routing weight distributions
127
+ - Check if C4 entropy loss decreases (indicates LoRA using more of its rank)
128
+ - Check singular value spectra in `spectral_signatures.pt` files
129
+
130
+ ### Expected outcomes
131
+ - **If C4 helps**: AP 45-55 (large improvement from V3's 33.77)
132
+ - **If C4 doesn't help**: AP ~33-35 (similar to V3) → spectral routing fundamentally limited under strict zero-replay
133
+ - **If C4 hurts** (unstable): Training loss NaN or spike → reduce λ_entropy or disable preconditioning
134
+
135
+ ---
136
+
137
+ ## User Review Required
138
+
139
+ > [!IMPORTANT]
140
+ > **Core question**: Given strict zero-replay, spectral routing is the ONLY zero-replay-compliant routing mechanism. V1-V3 showed it fails. The hypothesis is that C4 (preconditioned training + spectral entropy) will make experts learn better → spectral routing becomes discriminative. This is the last viable axis before we must accept learned routing (GainLoRA-style) as necessary.
141
+ >
142
+ > **Do you agree with proceeding with C4-enhanced spectral routing (no prototypes)? Or do you prefer a different direction?**
results/benchmark_explanation.md DELETED
@@ -1,219 +0,0 @@
1
- # Benchmark & Metrics Reference — GainLoRA Paper
2
-
3
- > Tài liệu này giải thích dataset, metrics, và cách đọc kết quả trong paper GainLoRA.
4
- > Target audience: người đã biết continual learning nhưng cần nắm nhanh notation.
5
-
6
- ---
7
-
8
- ## 1. Datasets
9
-
10
- ### SuperNI Benchmark (Orders 1 & 2)
11
- **Source:** Super-Natural Instructions (SuperNI) — 1600+ NLP tasks từ nhiều domain.
12
-
13
- 15 tasks được chọn đại diện cho các loại NLP khác nhau:
14
-
15
- | # | Task Name | Loại | Metric |
16
- |---|-----------|------|--------|
17
- | 1 | task1572_samsum_summary | Summarization | RougeL |
18
- | 2 | task363_sst2_polarity_classification | Sentiment | RougeL |
19
- | 3 | task1290_xsum_summarization | Summarization | RougeL |
20
- | 4 | task181_outcome_extraction | Information Extraction | RougeL |
21
- | 5 | task002_quoref_answer_generation | QA | RougeL |
22
- | 6 | task1510_evalution_relation_extraction | Relation Extraction | RougeL |
23
- | 7 | task639_multi_woz_user_utterance_generation | Dialogue Generation | RougeL |
24
- | 8 | task1729_personachat_generate_next | Dialogue Generation | RougeL |
25
- | 9 | task073_commonsenseqa_answer_generation | Commonsense QA | RougeL |
26
- | 10 | task1590_diplomacy_text_generation | Text Generation | RougeL |
27
- | 11 | task748_glucose_reverse_cause_event_detection | Causal Reasoning | RougeL |
28
- | 12 | task511_reddit_tifu_long_text_summarization | Summarization | RougeL |
29
- | 13 | task591_sciq_answer_generation | Science QA | RougeL |
30
- | 14 | task1687_sentiment140_classification | Sentiment | RougeL |
31
- | 15 | task875_emotion_classification | Emotion | RougeL |
32
-
33
- **Đặc điểm:** Tasks đa dạng về loại (generation, classification, extraction) → khó giữ nhiều kỹ năng cùng lúc. Metric dùng RougeL (F1 token overlap), scale 0–100.
34
-
35
- **Task orders:**
36
- - **Order 1**: Sequential từ summarization → classification (tasks sắp xếp theo domain heterogeneity)
37
- - **Order 2**: Random shuffle để test independence với thứ tự
38
-
39
- ### Long Benchmark (Orders 3 & 4)
40
- **Source:** Các NLP benchmarks phổ biến (GLUE-style + text classification).
41
-
42
- 15 tasks:
43
-
44
- | # | Task | Loại | Metric |
45
- |---|------|------|--------|
46
- | 1 | yelp | Sentiment (fine-grained) | Exact Match |
47
- | 2 | amazon | Product sentiment | Exact Match |
48
- | 3 | mnli | NLI | Exact Match |
49
- | 4 | cb | NLI (FewShot) | Exact Match |
50
- | 5 | copa | Causal reasoning | Exact Match |
51
- | 6 | qqp | Paraphrase detection | Exact Match |
52
- | 7 | rte | Textual entailment | Exact Match |
53
- | 8 | imdb | Sentiment binary | Exact Match |
54
- | 9 | sst2 | Sentiment binary | Exact Match |
55
- | 10 | dbpedia | Topic classification | Exact Match |
56
- | 11 | agnews | News topic | Exact Match |
57
- | 12 | yahoo | Topic QA | Exact Match |
58
- | 13 | multirc | Multi-sentence RC | Exact Match |
59
- | 14 | boolq | Boolean QA | Exact Match |
60
- | 15 | wic | Word sense disambiguation | Exact Match |
61
-
62
- **Đặc điểm:** Nhiều tasks classification → competition giữa các class distributions. Metric dùng Exact Match (%), scale 0–100. Kết quả baseline cao hơn SuperNI (vì tasks ít diverse hơn → ít catastrophic forgetting).
63
-
64
- **Task orders:**
65
- - **Order 3**: yelp → wic (ordered từ classification → understanding)
66
- - **Order 4**: mnli → yahoo (scrambled)
67
-
68
- ---
69
-
70
- ## 2. Metrics: AP và FT
71
-
72
- ### AP (Average Performance) ↑
73
-
74
- $$AP = \frac{1}{T} \sum_{j=1}^{T} R_{T,j}$$
75
-
76
- - $R_{T,j}$ = score trên task $j$ **sau khi đã xong task $T$ (task cuối)**
77
- - Đây là con số **quan trọng nhất** — phản ánh khả năng "nhớ tất cả" sau CL
78
- - **Cao hơn = tốt hơn**
79
- - Baseline chạy 100 epochs (A100), OT-SIGN chạy 50 epochs (T4) → AP ta có thể thấp hơn baseline do epochs ít hơn, không phải do method kém
80
-
81
- ### FT (Forgetting) ↓
82
-
83
- $$FT = \frac{1}{T-1} \sum_{j=1}^{T-1} \left( R_{j,j} - R_{T,j} \right)$$
84
-
85
- - $R_{j,j}$ = score trên task $j$ **ngay khi vừa train xong task $j$** (peak performance)
86
- - $R_{T,j}$ = score trên task $j$ **sau khi train hết tất cả** (final performance)
87
- - FT = **trung bình lượng score bị giảm** sau khi học thêm tasks mới
88
- - **Thấp hơn = tốt hơn** (ít forgetting)
89
- - FT = 0 nghĩa là model nhớ hoàn toàn tất cả tasks sau CL
90
-
91
- ### Result Matrix R
92
-
93
- ```
94
- Task1 Task2 Task3 ... Task15
95
- Train1 [ R11 - - - ] ← chỉ evaluate task vừa học
96
- Train2 [ R21 R22 - - ]
97
- Train3 [ R31 R32 R33 - ]
98
- ...
99
- Train15 [ R151 R152 R153 ... R1515 ]
100
- ↑ ↑
101
- Final Final
102
- perf perf
103
- task1 task15
104
-
105
- Diagonal: R_jj = peak performance (train từng task)
106
- Last row: R_15j = final performance sau CL
107
- AP = mean(last row)
108
- FT = mean(diagonal - last row), j=1..14
109
- ```
110
-
111
- ---
112
-
113
- ## 3. Phân tích baseline — GainLoRA đứng đâu?
114
-
115
- ### Table 1 (SuperNI, T5-Large)
116
-
117
- **Tốt nhất trước GainLoRA:**
118
- - InfLoRA: AP=39.78, FT=7.64 (Order 1)
119
- - GainLoRA (InfLoRA): AP=**46.21**, FT=**2.40** — cải thiện ~6.4 AP, giảm FT 5x
120
-
121
- **Điểm mạnh GainLoRA:**
122
- - FT cực thấp (2.4 vs 7.64 của InfLoRA) → ít forgetting hơn nhiều
123
- - AP cao hơn tất cả methods khác kể cả LFPT5 (39.03)
124
-
125
- **Nhận xét về Final Stage:**
126
- - Final stage (task 15) là quan trọng nhất trong deployment
127
- - GainLoRA FT thấp → model vẫn perform tốt trên task 1-14 khi đang làm task 15
128
- - Đây là điểm yếu chính của các method cũ: O-LoRA FT=19.15 nghĩa là mỗi task bị quên trung bình ~19 điểm
129
-
130
- ### Table 2 (Long, T5-Large)
131
-
132
- **Context:**
133
- - Long benchmark dễ hơn → AP cao hơn (70-80% range vs 40-46% range)
134
- - GainLoRA vẫn outperform InfLoRA: AP=78.01 vs 75.15 (Order 3)
135
- - FT cực thấp: 0.77 (gần như không quên!)
136
-
137
- ---
138
-
139
- ## 4. OT-SIGN — Cải thiện gì so với GainLoRA baseline?
140
-
141
- | Component | GainLoRA | OT-SIGN+GainLoRA |
142
- |-----------|----------|------------------|
143
- | Expert routing | Cosine similarity + sigmoid gating | Sinkhorn OT với vMF signature |
144
- | Continual protection | GPM gradient projection | + Anti-drift (MSE on trans_input) |
145
- | Expert invasion | Không có | + Anti-invasion hinge loss |
146
- | Knowledge repr | Prompt key vector | vMF distribution (mu, kappa) |
147
-
148
- ### Kỳ vọng:
149
- - **FT nên thấp hơn GainLoRA** (anti-drift + anti-invasion hoạt động đúng)
150
- - **AP tương đương hoặc cao hơn** (OT routing chính xác hơn cosine)
151
- - Nếu AP thấp hơn đáng kể → có thể do epochs ít (50 vs 100), không phải method kém
152
-
153
- ---
154
-
155
- ## 5. Cách đọc log và compute_ap_ft.py
156
-
157
- ### Sau mỗi task hoàn thành, terminal sẽ in:
158
- ```
159
- [RunLogger] After task 3 (task1290_xsum_summarization) — predict scores:
160
- task1572_samsum_summary 45.23
161
- task363_sst2_polarity_classification 67.81
162
- task1290_xsum_summarization 52.14
163
- ```
164
-
165
- ### Sau task cuối (task 15), terminal sẽ in AP/FT tự động:
166
- ```
167
- ════════════════════════════════════════════════════════════════════════
168
- OT-SIGN+GainLoRA Order1
169
- ════════════════════════════════════════════════════════════════════════
170
- # Task Peak Final Drop
171
- ────────────────────────────────────────────────────────────────────
172
- 1 task1572_samsum_summary 48.12 44.30 3.82
173
- ...
174
- 15 task875_emotion_classification 71.20 71.20 0.00
175
- ────────────────────────────────────────────────────────────────────
176
- AP = 47.83 │ FT = 2.15
177
- ════════════════════════════════════════════════════════════════════════
178
- ```
179
-
180
- ### Chạy thủ công sau khi xong:
181
- ```bash
182
- python src/compute_ap_ft.py \
183
- --output_base logs_and_outputs/ot_sign_order1_t5large/outputs \
184
- --task_order "task1572_samsum_summary,..." \
185
- --method_name "OT-SIGN+GainLoRA Order1" \
186
- --save
187
- ```
188
-
189
- Kết quả lưu ở `logs_and_outputs/ot_sign_order1_t5large/ap_ft_result.json`.
190
-
191
- ---
192
-
193
- ## 6. Thời gian ước tính trên 2×T4
194
-
195
- | Script | Order | Benchmark | Epochs | Tasks | Ước tính |
196
- |--------|-------|-----------|--------|-------|----------|
197
- | run_ot_sign_order1_t5large.sh | 1 | SuperNI | 50 | 15 | ~9-10h |
198
- | run_ot_sign_order2_t5large.sh | 2 | SuperNI | 50 | 15 | ~9-10h |
199
- | run_ot_sign_order3_t5large.sh | 3 | Long | 10 | 15 | ~3-4h |
200
- | run_ot_sign_order4_t5large.sh | 4 | Long | 10 | 15 | ~3-4h |
201
-
202
- **Chạy song song:** Order 1+3 trên GPU 0,1 và Order 2+4 trên GPU 0,1 (2 server riêng)
203
- **Chạy tuần tự:** ~22-28h tổng, khuyến nghị chạy Order 3+4 trước (nhanh hơn, validate pipeline)
204
-
205
- ---
206
-
207
- ## 7. FAQ
208
-
209
- **Q: rougeL range là gì?**
210
- A: 0–100 sau multiply (compute_metrics trả về 0-1, code đã nhân 100x). Trên SuperNI, range typical là 20-80.
211
-
212
- **Q: GainLoRA chạy 100 epochs trên A100, mình chạy 50 epochs trên T4 — có fair không?**
213
- A: Không hoàn toàn fair về tuyệt đối. Nhưng mục tiêu là thấy delta: nếu OT-SIGN+GainLoRA(50ep/T4) > GainLoRA(50ep/T4) thì contribution rõ ràng. Để so sánh với paper, cần chạy cùng setups.
214
-
215
- **Q: FT âm có nghĩa gì?**
216
- A: Score cuối cao hơn peak → model "cải thiện" task cũ nhờ học tasks mới (positive transfer). Hiếm nhưng có thể xảy ra với tasks liên quan nhau.
217
-
218
- **Q: AP thấp hơn baseline dù FT tốt hơn?**
219
- A: Có thể do peak performance của từng task thấp → R[j,j] thấp → final row cũng thấp. Nghĩa là OT routing có thể gây interference lúc học task đầu tiên. Kiểm tra peak scores từng task để diagnose.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
results/comparison_results.md DELETED
@@ -1,257 +0,0 @@
1
- # GainLoRA vs OT-SIGN Results — Direct Comparison
2
-
3
- > **Cách đọc:** AP↑ (cao hơn tốt hơn) | FT↓ (thấp hơn tốt hơn)
4
- > Số trong bảng đều là **rougeL (%)** cho superni / **exact_match (%)** cho long.
5
- > Lấy kết quả từ `compute_ap_ft.py` sau mỗi lần chạy xong 15 tasks.
6
-
7
- ---
8
-
9
- ## Table 1: T5-Large — SuperNI Benchmark (Orders 1 & 2)
10
-
11
- | Method | Order 1 AP↑ | Order 1 FT↓ | Order 2 AP↑ | Order 2 FT↓ |
12
- |--------|-------------|-------------|-------------|-------------|
13
- | LFPT5* | 39.03 | 10.87 | 29.70 | 20.72 |
14
- | EWC | 15.32 | 26.78 | 18.19 | 30.28 |
15
- | TaSL | 27.51 | 18.53 | 28.05 | 17.39 |
16
- | KIFLoRA | 28.33 | 16.44 | 30.31 | 16.27 |
17
- | SeqLoRA | 7.30 | 47.60 | 7.03 | 47.97 |
18
- | IncLoRA | 12.33 | 41.93 | 16.65 | 36.56 |
19
- | C-LoRA | 22.69 | 24.25 | 32.81 | 11.60 |
20
- | O-LoRA | 26.37 | 19.15 | 32.83 | 11.99 |
21
- | InfLoRA | 39.78 | 7.64 | 39.57 | 8.93 |
22
- | **GainLoRA (InfLoRA)** | **46.21** | **2.40** | **46.44** | **2.61** |
23
- | **OT-SIGN+GainLoRA (ours)** | | | | |
24
-
25
- ## Table 2: T5-Large — Long Benchmark (Orders 3 & 4)
26
-
27
- | Method | Order 3 AP↑ | Order 3 FT↓ | Order 4 AP↑ | Order 4 FT↓ |
28
- |--------|-------------|-------------|-------------|-------------|
29
- | EPI* | — | — | 75.19 | 0.77 |
30
- | MIGU+FT | — | — | 71.30 | 11.39 |
31
- | EWC | 43.24 | 23.66 | 46.25 | 32.90 |
32
- | TaSL | 71.37 | 6.20 | 73.11 | 6.52 |
33
- | KIFLoRA | 72.19 | 3.10 | 73.72 | 4.75 |
34
- | SeqLoRA | 49.46 | 27.60 | 33.81 | 45.53 |
35
- | IncLoRA | 61.19 | 13.63 | 62.46 | 15.92 |
36
- | C-LoRA | 66.83 | 8.64 | 61.86 | 14.18 |
37
- | O-LoRA | 70.98 | 3.69 | 71.21 | 4.03 |
38
- | InfLoRA | 75.15 | 4.19 | 75.79 | 3.47 |
39
- | **GainLoRA (InfLoRA)** | **78.01** | **0.77** | **77.54** | **1.20** |
40
- | **OT-SIGN+GainLoRA (ours)** | | | | |
41
-
42
- ---
43
-
44
- ---
45
-
46
- ## Table 3: Llama — SuperNI Benchmark (from GainLoRA paper)
47
-
48
- ### Llama-2-7B
49
-
50
- | Method | Order 1 AP↑ | Order 1 FT↓ | Order 2 AP↑ | Order 2 FT↓ |
51
- |--------|-------------|-------------|-------------|-------------|
52
- | O-LoRA | 39.37 | 15.84 | 37.55 | 20.23 |
53
- | GainLoRA (O-LoRA) | 51.10 | 4.96 | 51.14 | 5.57 |
54
- | InfLoRA | 42.93 | 11.23 | 39.94 | 15.00 |
55
- | **GainLoRA (InfLoRA)** | **51.27** | **2.84** | **50.17** | **4.71** |
56
- | **SpecRoute (ours)** | | | | |
57
-
58
- ### Llama-2-13B
59
-
60
- | Method | Order 1 AP↑ | Order 1 FT↓ | Order 2 AP↑ | Order 2 FT↓ |
61
- |--------|-------------|-------------|-------------|-------------|
62
- | O-LoRA | 43.92 | 14.15 | 40.05 | 19.53 |
63
- | GainLoRA (O-LoRA) | 52.47 | 4.78 | 51.68 | 5.86 |
64
- | InfLoRA | 43.64 | 14.85 | 45.74 | 10.61 |
65
- | **GainLoRA (InfLoRA)** | **53.64** | **2.87** | **52.46** | **4.90** |
66
- | **SpecRoute (ours)** | | | | |
67
-
68
- ### Llama-3-8B
69
-
70
- | Method | Order 1 AP↑ | Order 1 FT↓ | Order 2 AP↑ | Order 2 FT↓ |
71
- |--------|-------------|-------------|-------------|-------------|
72
- | O-LoRA | 42.49 | 8.85 | 38.67 | 19.28 |
73
- | GainLoRA (O-LoRA) | 53.39 | 3.56 | 51.69 | 6.20 |
74
- | InfLoRA | 43.27 | 6.02 | 48.77 | 5.88 |
75
- | **GainLoRA (InfLoRA)** | **52.18** | **1.40** | **52.48** | **4.21** |
76
- | **SpecRoute (ours)** | | | | |
77
-
78
- ---
79
-
80
- ## Table 4: Ablation Study — GainLoRA with T5-Large & Llama-2-7B (from paper)
81
-
82
- | Method | T5-Large O1 AP↑ | T5-Large O1 FT↓ | T5-Large O2 AP↑ | T5-Large O2 FT↓ | Llama-2-7B O1 AP↑ | Llama-2-7B O1 FT↓ | Llama-2-7B O2 AP↑ | Llama-2-7B O2 FT↓ |
83
- |--------|---|---|---|---|---|---|---|---|
84
- | GainLoRA (O-LoRA) | 47.84 | 2.26 | 46.84 | 2.91 | 51.10 | 4.96 | 51.14 | 5.57 |
85
- | No Init Constraints | 35.30 | 17.19 | 39.82 | 12.90 | 44.02 | 11.71 | 42.89 | 14.77 |
86
- | No Update Constraints | 23.01 | 30.32 | 24.96 | 28.14 | 33.74 | 23.06 | 34.71 | 22.36 |
87
- | No Constraints | 26.32 | 26.00 | 30.63 | 22.37 | 34.48 | 23.46 | 36.87 | 21.24 |
88
- | GainLoRA (InfLoRA) | 46.21 | 2.40 | 46.44 | 2.61 | 51.27 | 2.84 | 50.17 | 4.71 |
89
- | No Init Constraints | 45.38 | 3.40 | 43.05 | 5.15 | 50.48 | 3.48 | 48.17 | 6.45 |
90
- | No Update Constraints | 37.69 | 10.94 | 38.85 | 9.31 | 48.52 | 5.68 | 47.85 | 7.00 |
91
- | No Constraints | 36.75 | 12.18 | 41.00 | 6.66 | 49.10 | 6.07 | 45.77 | 8.70 |
92
-
93
- > **Note**: "Init Constraints" = LoRA_A null-space projection (GPM), "Update Constraints" = GainLoRA gating + prompt_key routing
94
-
95
- ---
96
-
97
- ## Per-Task Breakdown — Order 1 (fill after running)
98
-
99
- Chạy lệnh sau để lấy số điền vào:
100
- ```bash
101
- python src/compute_ap_ft.py \
102
- --output_base logs_and_outputs/ot_sign_order1_t5large/outputs \
103
- --task_order "task1572_samsum_summary,task363_sst2_polarity_classification,task1290_xsum_summarization,task181_outcome_extraction,task002_quoref_answer_generation,task1510_evalution_relation_extraction,task639_multi_woz_user_utterance_generation,task1729_personachat_generate_next,task073_commonsenseqa_answer_generation,task1590_diplomacy_text_generation,task748_glucose_reverse_cause_event_detection,task511_reddit_tifu_long_text_summarization,task591_sciq_answer_generation,task1687_sentiment140_classification,task875_emotion_classification" \
104
- --method_name "OT-SIGN+GainLoRA Order1"
105
- ```
106
-
107
- | # | Task | GainLoRA Peak | GainLoRA Final | OT-SIGN Peak | OT-SIGN Final |
108
- |---|------|--------------|---------------|-------------|--------------|
109
- | 1 | task1572_samsum_summary | | | | |
110
- | 2 | task363_sst2_polarity_classification | | | | |
111
- | 3 | task1290_xsum_summarization | | | | |
112
- | 4 | task181_outcome_extraction | | | | |
113
- | 5 | task002_quoref_answer_generation | | | | |
114
- | 6 | task1510_evalution_relation_extraction | | | | |
115
- | 7 | task639_multi_woz_user_utterance_generation | | | | |
116
- | 8 | task1729_personachat_generate_next | | | | |
117
- | 9 | task073_commonsenseqa_answer_generation | | | | |
118
- | 10 | task1590_diplomacy_text_generation | | | | |
119
- | 11 | task748_glucose_reverse_cause_event_detection | | | | |
120
- | 12 | task511_reddit_tifu_long_text_summarization | | | | |
121
- | 13 | task591_sciq_answer_generation | | | | |
122
- | 14 | task1687_sentiment140_classification | | | | |
123
- | 15 | task875_emotion_classification | | | | |
124
- | | **AP / FT** | **46.21 / 2.40** | | | |
125
-
126
- ## Per-Task Breakdown — Order 2
127
-
128
- ```bash
129
- python src/compute_ap_ft.py \
130
- --output_base logs_and_outputs/ot_sign_order2_t5large/outputs \
131
- --task_order "task748_glucose_reverse_cause_event_detection,task073_commonsenseqa_answer_generation,task1590_diplomacy_text_generation,task639_multi_woz_user_utterance_generation,task1572_samsum_summary,task1687_sentiment140_classification,task591_sciq_answer_generation,task363_sst2_polarity_classification,task1510_evalution_relation_extraction,task1729_personachat_generate_next,task181_outcome_extraction,task511_reddit_tifu_long_text_summarization,task002_quoref_answer_generation,task1290_xsum_summarization,task875_emotion_classification" \
132
- --method_name "OT-SIGN+GainLoRA Order2"
133
- ```
134
-
135
- | # | Task | GainLoRA Peak | GainLoRA Final | OT-SIGN Peak | OT-SIGN Final |
136
- |---|------|--------------|---------------|-------------|--------------|
137
- | 1 | task748_glucose_reverse_cause_event_detection | | | | |
138
- | 2 | task073_commonsenseqa_answer_generation | | | | |
139
- | 3 | task1590_diplomacy_text_generation | | | | |
140
- | 4 | task639_multi_woz_user_utterance_generation | | | | |
141
- | 5 | task1572_samsum_summary | | | | |
142
- | 6 | task1687_sentiment140_classification | | | | |
143
- | 7 | task591_sciq_answer_generation | | | | |
144
- | 8 | task363_sst2_polarity_classification | | | | |
145
- | 9 | task1510_evalution_relation_extraction | | | | |
146
- | 10 | task1729_personachat_generate_next | | | | |
147
- | 11 | task181_outcome_extraction | | | | |
148
- | 12 | task511_reddit_tifu_long_text_summarization | | | | |
149
- | 13 | task002_quoref_answer_generation | | | | |
150
- | 14 | task1290_xsum_summarization | | | | |
151
- | 15 | task875_emotion_classification | | | | |
152
- | | **AP / FT** | **46.44 / 2.61** | | | |
153
-
154
- ## Per-Task Breakdown — Order 3 (Long)
155
-
156
- ```bash
157
- python src/compute_ap_ft.py \
158
- --output_base logs_and_outputs/ot_sign_order3_t5large/outputs \
159
- --task_order "yelp,amazon,mnli,cb,copa,qqp,rte,imdb,sst2,dbpedia,agnews,yahoo,multirc,boolq,wic" \
160
- --method_name "OT-SIGN+GainLoRA Order3"
161
- ```
162
-
163
- | # | Task | GainLoRA Peak | GainLoRA Final | OT-SIGN Peak | OT-SIGN Final |
164
- |---|------|--------------|---------------|-------------|--------------|
165
- | 1 | yelp | | | | |
166
- | 2 | amazon | | | | |
167
- | 3 | mnli | | | | |
168
- | 4 | cb | | | | |
169
- | 5 | copa | | | | |
170
- | 6 | qqp | | | | |
171
- | 7 | rte | | | | |
172
- | 8 | imdb | | | | |
173
- | 9 | sst2 | | | | |
174
- | 10 | dbpedia | | | | |
175
- | 11 | agnews | | | | |
176
- | 12 | yahoo | | | | |
177
- | 13 | multirc | | | | |
178
- | 14 | boolq | | | | |
179
- | 15 | wic | | | | |
180
- | | **AP / FT** | **78.01 / 0.77** | | | |
181
-
182
- ## Per-Task Breakdown — Order 4 (Long)
183
-
184
- ```bash
185
- python src/compute_ap_ft.py \
186
- --output_base logs_and_outputs/ot_sign_order4_t5large/outputs \
187
- --task_order "mnli,cb,wic,copa,qqp,boolq,rte,imdb,yelp,amazon,sst2,dbpedia,agnews,multirc,yahoo" \
188
- --method_name "OT-SIGN+GainLoRA Order4"
189
- ```
190
-
191
- | # | Task | GainLoRA Peak | GainLoRA Final | OT-SIGN Peak | OT-SIGN Final |
192
- |---|------|--------------|---------------|-------------|--------------|
193
- | 1 | mnli | | | | |
194
- | 2 | cb | | | | |
195
- | 3 | wic | | | | |
196
- | 4 | copa | | | | |
197
- | 5 | qqp | | | | |
198
- | 6 | boolq | | | | |
199
- | 7 | rte | | | | |
200
- | 8 | imdb | | | | |
201
- | 9 | yelp | | | | |
202
- | 10 | amazon | | | | |
203
- | 11 | sst2 | | | | |
204
- | 12 | dbpedia | | | | |
205
- | 13 | agnews | | | | |
206
- | 14 | multirc | | | | |
207
- | 15 | yahoo | | | | |
208
-
209
-
210
- ```bash
211
- # Chạy 4 lệnh này để lấy đủ số cho cả 2 bảng:
212
- python src/compute_ap_ft.py --output_base logs_and_outputs/ot_sign_order1_t5large/outputs --task_order "task1572_samsum_summary,task363_sst2_polarity_classification,task1290_xsum_summarization,task181_outcome_extraction,task002_quoref_answer_generation,task1510_evalution_relation_extraction,task639_multi_woz_user_utterance_generation,task1729_personachat_generate_next,task073_commonsenseqa_answer_generation,task1590_diplomacy_text_generation,task748_glucose_reverse_cause_event_detection,task511_reddit_tifu_long_text_summarization,task591_sciq_answer_generation,task1687_sentiment140_classification,task875_emotion_classification" --save
213
-
214
- python src/compute_ap_ft.py --output_base logs_and_outputs/ot_sign_order2_t5large/outputs --task_order "task748_glucose_reverse_cause_event_detection,task073_commonsenseqa_answer_generation,task1590_diplomacy_text_generation,task639_multi_woz_user_utterance_generation,task1572_samsum_summary,task1687_sentiment140_classification,task591_sciq_answer_generation,task363_sst2_polarity_classification,task1510_evalution_relation_extraction,task1729_personachat_generate_next,task181_outcome_extraction,task511_reddit_tifu_long_text_summarization,task002_quoref_answer_generation,task1290_xsum_summarization,task875_emotion_classification" --save
215
-
216
- python src/compute_ap_ft.py --output_base logs_and_outputs/ot_sign_order3_t5large/outputs --task_order "yelp,amazon,mnli,cb,copa,qqp,rte,imdb,sst2,dbpedia,agnews,yahoo,multirc,boolq,wic" --save
217
-
218
- python src/compute_ap_ft.py --output_base logs_and_outputs/ot_sign_order4_t5large/outputs --task_order "mnli,cb,wic,copa,qqp,boolq,rte,imdb,yelp,amazon,sst2,dbpedia,agnews,multirc,yahoo" --save
219
- ```
220
-
221
- ---
222
-
223
- ## Table 3: T5-Small — Long Benchmark (Order 3)
224
-
225
- | Method | Order 3 AP↑ | Order 3 FT↓ |
226
- |--------|-------------|-------------|
227
- | **GainLoRA (Root)** | **59.70** | N/A* |
228
- | **SpecRoute (Improve)** | 39.74† | N/A* |
229
-
230
- > *\*FT = N/A: cả 2 log chạy thiếu `--do_predict`. Lần tiếp theo dùng script `T5_small/` đã sửa sẽ có đủ FT.*
231
- > *†Điểm Improve tính từ `predict_eval_predictions.jsonl` của từng task (hàng chéo score matrix). imdb/sst2/wic về 0 do Catastrophic Forgetting.*
232
-
233
- ### ⚠️ Root GainLoRA tốt hơn SpecRoute trên T5-Small (−19.96 AP)
234
-
235
- SpecRoute bị Catastrophic Forgetting nghiêm trọng ở các task phân loại sentiment (imdb=0.21, sst2=0.00, yahoo=8.12, wic=0.00). Nguyên nhân có thể do SVD rank không đủ lớn ở T5-Small, làm routing mechanism không phân tách được subspace của các task.
236
-
237
- ## Per-Task Breakdown — Order 3 (T5-Small)
238
-
239
- | # | Task | GainLoRA (Root) | SpecRoute (Improve) | Δ (Improve−Root) |
240
- |---|------|-----------------|--------------------|-----------------|
241
- | 1 | yelp | 56.01 | 54.36 | −1.65 |
242
- | 2 | amazon | 52.05 | 50.01 | −2.04 |
243
- | 3 | mnli | 34.07 | 35.50 | +1.43 |
244
- | 4 | cb | 3.57 | 0.00 | −3.57 |
245
- | 5 | copa | 42.00 | 44.00 | +2.00 |
246
- | 6 | qqp | 76.96 | 76.72 | −0.24 |
247
- | 7 | rte | 45.85 | 50.90 | +5.05 |
248
- | 8 | imdb | 89.51 | 0.21 | **−89.30 ⚠️** |
249
- | 9 | sst2 | 85.21 | 0.00 | **−85.21 ⚠️** |
250
- | 10 | dbpedia | 98.16 | 92.22 | −5.94 |
251
- | 11 | agnews | 88.37 | 68.76 | −19.61 |
252
- | 12 | yahoo | 57.28 | 8.12 | **−49.16 ⚠️** |
253
- | 13 | multirc | 50.52 | 54.23 | +3.71 |
254
- | 14 | boolq | 60.43 | 61.13 | +0.70 |
255
- | 15 | wic | 55.49 | 0.00 | **−55.49 ⚠️** |
256
- | | **AP / FT** | **59.70 / N/A** | **39.74 / N/A** | **−19.96** |
257
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
results/contribution2_implementation_analysis.md DELETED
@@ -1,176 +0,0 @@
1
- # Contribution 2 (C4): Spectrally-Conditioned LoRA Training — Implementation Analysis
2
-
3
- ## 1. Summary
4
-
5
- C4 addresses **single-task LoRA quality** — the second pillar of continual learning performance (alongside catastrophic forgetting). Even with perfect routing (C1/C3 SpecRoute) and null-space constraints (InfLoRA), each task's LoRA adapter can underperform because:
6
- - **Gradient distortion**: B gradients are distorted by frozen A's non-orthogonal column space
7
- - **Low effective rank**: CE loss alone doesn't encourage full utilization of LoRA's rank budget
8
- - **Suboptimal A initialization**: InfLoRA projects A into null-space, but the resulting A may have poor spectral conditioning
9
-
10
- C4 proposes two complementary fixes:
11
- 1. **Preconditioned gradient**: $(AA^T + \epsilon I)^{-1/2} \nabla_B$ corrects gradient distortion from frozen A
12
- 2. **Spectral entropy regularization**: Maximizes effective rank of $BA$ to fully utilize the rank budget
13
-
14
- ## 2. Preconditioned Gradient — Mathematical Foundation
15
-
16
- ### Problem: Gradient Distortion
17
- In standard LoRA, the update $\Delta W = BA$ where A is frozen (InfLoRA constraint). The gradient of loss w.r.t. B is:
18
- $$\nabla_B \mathcal{L} = \nabla_{\Delta W} \mathcal{L} \cdot A^T$$
19
-
20
- When A's columns are non-orthogonal (typical after null-space projection), $A^T$ distorts the gradient direction. Directions aligned with A's dominant singular vectors get amplified, while directions aligned with small singular vectors get suppressed.
21
-
22
- ### Solution: Spectral Preconditioning
23
- Apply $(AA^T + \epsilon I)^{-1/2}$ to B's gradient after backward:
24
- $$\tilde{\nabla}_B = \nabla_B \mathcal{L} \cdot (AA^T + \epsilon I)^{-1/2}$$
25
-
26
- This equalizes gradient magnitudes across all directions in A's column space, allowing B to learn uniformly across all rank dimensions.
27
-
28
- ### Implementation
29
- ```python
30
- def precompute_preconditioners(self):
31
- for lora in [module.lora_q, module.lora_v]:
32
- A = lora.lora_A.data.float() # [d_in, r]
33
- AAt = A.T @ A # [r, r]
34
- AAt += eps * I
35
- eigvals, eigvecs = torch.linalg.eigh(AAt)
36
- inv_sqrt = eigvecs @ diag(eigvals^{-0.5}) @ eigvecs^T
37
- store inv_sqrt for lora_B
38
- ```
39
-
40
- **Key property**: Computed ONCE after `get_reg_matrix()` projects A into null-space. Since A is frozen during training, the preconditioner is constant — no per-step overhead.
41
-
42
- **Compatibility with GPM**: GPM projects A into null-space ONCE before training starts. Preconditioning operates on B's gradients AFTER backward. These are completely independent operations on different parameters at different times.
43
-
44
- ## 3. Spectral Entropy Regularization — Mathematical Foundation
45
-
46
- ### Problem: Low Effective Rank
47
- CE loss optimizes for task accuracy but doesn't care about the spectral structure of $BA$. In practice, $BA$ often has very low effective rank — most of the "learning budget" (rank r) is wasted on near-zero singular values.
48
-
49
- ### Solution: Maximize Spectral Entropy
50
- Define the normalized singular values of $BA$:
51
- $$\hat{\sigma}_i = \frac{\sigma_i(BA)}{\sum_j \sigma_j(BA)}$$
52
-
53
- The spectral entropy is:
54
- $$H = -\sum_i \hat{\sigma}_i \log \hat{\sigma}_i$$
55
-
56
- Maximum entropy $H_{max} = \log(r)$ occurs when all singular values are equal (full rank utilization).
57
-
58
- ### Regularization Loss
59
- $$\mathcal{L}_{total} = \mathcal{L}_{CE} + \lambda \sum_{\ell} (H_{max} - H_\ell)$$
60
-
61
- where the sum is over all LoRA layers $\ell$.
62
-
63
- ### Efficient QR Trick
64
- Computing SVD of the full $BA$ matrix ($d_{out} \times d_{in}$) is expensive. Instead:
65
- 1. $Q_B, R_B = QR(B^T)$ → $R_B$ is $r \times r$
66
- 2. $Q_A, R_A = QR(A)$ → $R_A$ is $r \times r$
67
- 3. $\hat{\sigma} = \text{svdvals}(R_B \cdot R_A^T)$ → SVD of $r \times r$ matrix
68
-
69
- This gives the same singular values as $BA$ but costs $O(r^3)$ instead of $O(d_{out} \cdot d_{in} \cdot r)$.
70
-
71
- ### Implementation
72
- ```python
73
- def _compute_spectral_entropy_loss(self):
74
- for lora in [module.lora_q, module.lora_v]:
75
- B = lora.lora_B.float() # [r, d_out]
76
- A = lora.lora_A.float() # [d_in, r]
77
- _, R_B = torch.linalg.qr(B.T) # R_B: [r, r]
78
- _, R_A = torch.linalg.qr(A) # R_A: [r, r]
79
- sigma_hat = torch.linalg.svdvals(R_B @ R_A.T) # [r]
80
- sigma_hat = sigma_hat / (sigma_hat.sum() + eps)
81
- ent = -(sigma_hat * log(sigma_hat + eps)).sum()
82
- loss += (log(r) - ent)
83
- return loss / count
84
- ```
85
-
86
- ## 4. Pipeline Integration
87
-
88
- ### Training Pipeline (per task):
89
- ```
90
- 1. Load model + previous LoRA weights
91
- 2. get_reg_matrix() ← InfLoRA: project A into null-space
92
- 3. precompute_preconditioners() ← C4: compute (AA^T+εI)^{-1/2}
93
- 4. Training loop:
94
- a. Forward pass → CE loss
95
- b. If step >= warmup: compute spectral entropy loss
96
- c. total_loss = CE + λ * entropy_loss
97
- d. backward(total_loss)
98
- e. _apply_preconditioning() ← C4: modify B gradients
99
- f. optimizer.step()
100
- 5. get_representation() ← GPM: update subspace bases
101
- 6. Save model + GPM bases
102
- ```
103
-
104
- ### Key Integration Points:
105
- - `precompute_preconditioners()` after `get_reg_matrix()` (A is frozen, preconditioner is constant)
106
- - Entropy loss added BEFORE backward (part of computational graph)
107
- - Preconditioning applied AFTER backward (direct gradient modification)
108
- - Warmup ratio prevents entropy regularization from dominating early training
109
-
110
- ## 5. Synergy with Existing Contributions
111
-
112
- | Component | C1 (Spectral Routing) | C3 (Inference Routing) | C4 (LoRA Quality) |
113
- |-----------|----------------------|----------------------|-------------------|
114
- | Target | Task selection | Inference accuracy | Single-task quality |
115
- | Mechanism | SVD signatures | Symmetric routing | Precond + entropy |
116
- | When | Forward pass | Inference time | Training time |
117
- | Interacts with | C4 (better LoRA → better signatures) | C1 (routing probabilities) | C1 (better training → better routing) |
118
-
119
- **Virtuous cycle**: C4 improves each LoRA's quality → spectral signatures become more distinctive → C1 routing becomes more accurate → less interference → better continual learning.
120
-
121
- ## 6. Hyperparameters
122
-
123
- | Parameter | Default | Range | Role |
124
- |-----------|---------|-------|------|
125
- | `lambda_entropy` | 0.01 | [0.001, 0.1] | Weight of spectral entropy loss |
126
- | `use_preconditioning` | True | {True, False} | Enable gradient preconditioning |
127
- | `precond_eps` | 1e-6 | [1e-8, 1e-4] | Numerical stability for preconditioner |
128
- | `entropy_warmup_ratio` | 0.1 | [0.0, 0.3] | Fraction of steps before enabling entropy |
129
-
130
- ## 7. Ablation Plan
131
-
132
- | Experiment | Precond | Entropy | Purpose |
133
- |------------|---------|---------|---------|
134
- | V3 (baseline) | ✗ | ✗ | Current best |
135
- | V4a | ✓ | ✗ | Isolate preconditioning effect |
136
- | V4b | ✗ | ✓ | Isolate entropy effect |
137
- | V4 (full) | ✓ | ✓ | Full C4 |
138
- | V4-λ sweep | ✓ | ✓ (λ ∈ {0.001, 0.01, 0.1}) | Sensitivity analysis |
139
-
140
- ## 8. Risk Assessment
141
-
142
- ### Low Risk:
143
- - Preconditioning is a well-established technique (natural gradient, K-FAC)
144
- - Spectral entropy is a differentiable, smooth regularizer
145
- - Both components are additive — easy to disable if harmful
146
-
147
- ### Medium Risk:
148
- - Entropy regularization may conflict with task-specific spectral structure (some tasks may genuinely need low-rank updates)
149
- - Preconditioner may be ill-conditioned if A has very small singular values (mitigated by ε)
150
-
151
- ### Mitigation:
152
- - Warmup ratio delays entropy regularization until CE loss stabilizes
153
- - ε in preconditioner prevents numerical issues
154
- - Ablation plan isolates each component's effect
155
-
156
- ## 9. Theoretical Guarantees
157
-
158
- ### Preconditioned Gradient:
159
- - If A has condition number κ, standard gradient descent on B has convergence rate O(κ²)
160
- - With preconditioning, convergence rate improves to O(1) (condition-number-independent)
161
- - This is equivalent to natural gradient descent in the B parameter space
162
-
163
- ### Spectral Entropy:
164
- - Maximum entropy ⟺ all singular values equal ⟺ effective rank = r
165
- - This maximizes the "information capacity" of the LoRA adapter
166
- - Connected to matrix information theory: max-entropy distribution on singular values
167
-
168
- ## 10. Code Changes Summary
169
-
170
- ### Files Modified:
171
- 1. **`cl_trainer_specroute.py`**: +4 init params, +3 methods (`precompute_preconditioners`, `_compute_spectral_entropy_loss`, `_apply_preconditioning`), modified `training_step`
172
- 2. **`run_t5.py`**: +4 dataclass fields, updated SpecRoute_Trainer constructor, added `precompute_preconditioners()` call
173
- 3. **`gen_script_long_order3_t5_small_specroute_v4.sh`**: New V4 experiment script with C4 args
174
-
175
- ### Lines of Code: ~80 lines of new logic (excluding comments/docstrings)
176
- ### Dependencies: No new dependencies (uses only torch.linalg built-ins)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
results/deep_theoretical_analysis_svd_lora_routing.md ADDED
@@ -0,0 +1,545 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Deep Theoretical Analysis: SVD, Frozen A, and Routing Methodology
2
+
3
+ ## ⚠️ REVISION NOTE (v2)
4
+
5
+ **Phiên bản trước (v1) mắc sai lầm nghiêm trọng**: Khuyến nghị giữ prototype routing (V5) — nhưng prototype = mean embedding = **thống kê dữ liệu** → **VI PHẠM zero-replay**. Đã sửa toàn bộ phân tích.
6
+
7
+ **Tham chiếu phản biện**: `v6_discuss.md` — phân tích đúng rằng prototype violates zero-replay.
8
+
9
+ ## Preamble
10
+
11
+ Phân tích này tuân thủ nghiêm ngặt:
12
+ - **settings.txt**: zero-replay (không dùng data cũ dưới mọi hình thức — bao gồm thống kê, phân phối, mean embeddings)
13
+ - **research_rule.txt**: lý thuyết → weakness → motivation → cải tiến → thực nghiệm
14
+ - **work_method**: theory-first, không thử-sai
15
+
16
+ Tham chiếu ≥30 papers về toán học, lý thuyết thông tin, ma trận, LoRA.
17
+
18
+ ---
19
+
20
+ ## I. NGUYÊN NHÂN GỐC RỄ CỦA "NEVER-LEARNING" PHENOMENON
21
+
22
+ ### 1.1 Câu hỏi
23
+
24
+ CB (EM=0.00), MNLI (34.07), và một số task có single-task quality thấp hơn ROOT. Contribution C2 (routing gate) không liên quan tới nội hàm single-task training — vì routing chỉ quyết định **ai xử lý**, không quyết định **xử lý tốt hay không**.
25
+
26
+ ### 1.2 Phân tích cấu trúc: A frozen + GPM → Compound Constraint
27
+
28
+ Xét task $t$ trong sequence. InfLoRA constraint:
29
+
30
+ $$A_t \in \text{null}\left(\sum_{j<t} A_j A_j^\top\right)$$
31
+
32
+ Tức $A_t$ phải nằm trong null-space của projection matrix $P_{\text{old}} = \sum_{j<t} V_j V_j^\top$ (với $V_j$ là GPM bases của task $j$).
33
+
34
+ **Hệ quả dimension**: Null-space dimension giảm theo tasks:
35
+ $$\dim(\text{null}) \leq d - \sum_{j<t} r_j \cdot \gamma_j$$
36
+ với $\gamma_j$ là fraction of capacity consumed (controlled by ESA threshold).
37
+
38
+ Với $d=512$, $r=8$, threshold=0.995 → mỗi task tiêu thụ ~$r_{\text{eff}}$ dimensions. Sau 14 tasks, null-space còn ~$512 - 14 \times r_{\text{eff}}$.
39
+
40
+ **Paper references**:
41
+ - **InfLoRA** (Sun et al., CVPR 2024): Proves null-space initialization prevents retroactive interference BUT doesn't guarantee learning quality
42
+ - **GORP** (ACL 2025): Unified gradient subspace projection — shows projection shrinks expressiveness
43
+ - **CMCL** (NeurIPS 2025): Dual stability/plasticity bounds — tradeoff is fundamental
44
+
45
+ ### 1.3 Three Root Causes of Never-Learning
46
+
47
+ #### Cause 1: Gradient Distortion (cấp bậc toán học)
48
+
49
+ Khi A frozen, gradient của B là:
50
+ $$\nabla_B \mathcal{L} = \nabla_{\Delta W} \mathcal{L} \cdot A^\top$$
51
+
52
+ SVD của $A$: $A = U_A \Sigma_A V_A^\top$ (với $A \in \mathbb{R}^{r \times d}$).
53
+
54
+ Gradient bị **nhân phải** bởi $A^\top$. Nếu $\kappa(A) = \sigma_1(A)/\sigma_r(A) \gg 1$:
55
+ - Directions tương ứng $\sigma_{\min}(A)$ nhận gradient **rất nhỏ** → slow convergence
56
+ - Adam normalizes per-parameter nhưng KHÔNG normalize per-direction trong space $\mathbb{R}^r$
57
+ - Effective learning rate trở nên anisotropic theo condition number
58
+
59
+ **Paper references**:
60
+ - **Muon/Riemannion** (Jordan et al., 2025): Proposes Riemannian LoRA trên fixed-rank manifold, shows Euclidean gradient suboptimal cho rank-constrained optimization
61
+ - **LORO** (ICLR 2025): Steepest descent on manifold $\mathcal{M}_r$, addresses anisotropy
62
+ - **SD-LoRA** (ICLR 2025): Direction/magnitude decomposition — decouples learning paths
63
+ - **LoKO** (2024): Kalman filter optimizer cho LoRA — shows conditioning issue is real
64
+
65
+ **Quantitative**: Sau GPM projection + normalization ($A \leftarrow A / (\sqrt{3} \|A\|)$), $A$ có các singular values xấp xỉ uniform (do random init + orthogonal projection). Tuy nhiên **effective** condition number phụ thuộc vào alignment giữa random A directions và task-relevant directions.
66
+
67
+ #### Cause 2: Random A ≠ Optimal A (Information-Theoretic)
68
+
69
+ $A_t$ được init bằng Kaiming uniform rồi project vào null-space. Từ góc nhìn information theory:
70
+
71
+ **Mutual Information Bound** (Data Processing Inequality):
72
+ $$I(h; z_t) = I(h; A_t h) \leq H(z_t) \leq \frac{r}{2} \log\left(1 + \frac{\text{Var}[A_t h]}{r}\right)$$
73
+
74
+ Random $A_t$ **không maximize** $I(h; z_t)$ cho task-specific $h$ distribution. Optimal $A_t$ nên align với top-$r$ principal components của task data covariance WITHIN null-space.
75
+
76
+ **Hiểu đơn giản**: Random A chọn $r$ directions ngẫu nhiên từ null-space ($d'$ dimensions). Xác suất chọn đúng "best" $r$ directions ≈ 0 khi $d' \gg r$.
77
+
78
+ **Paper references**:
79
+ - **PLAN** (ICCV 2025): Proactive rank allocation via perturbation sensitivity — shows different layers need different ranks. Random allocation wastes capacity.
80
+ - **TreeLoRA** (ICML 2025): Gradient similarity tree for layer-wise allocation
81
+ - **Information Bottleneck Theory** (Tishby et al., 2000): LoRA = bottleneck with capacity $C = \sum \sigma_i^2$
82
+ - **Angle Matters** (ICML 2025): Angle between task signals determines forgetting rate AND learning rate
83
+
84
+ **Ví dụ cụ thể**: CB có 250 samples, 3 classes (entailment/contradiction/neutral). Cần A directions aligned với phân biệt semantic giữa 3 labels. Random A từ null-space (dimension ~390 ở task 4) chỉ chọn 8 random directions → hầu hết **không liên quan** tới task signal.
85
+
86
+ #### Cause 3: CE Loss Alone + Insufficient Training
87
+
88
+ Cross-entropy chỉ optimize prediction accuracy. Không có mechanism nào đảm bảo:
89
+ - **Effective rank** của $\Delta W = BA$ cao → spectral health
90
+ - **Utilization** đồng đều các rank directions
91
+ - **Regularization** chống overfitting trên tiny datasets
92
+
93
+ CB: 250 samples × 10 epochs = 2500 iterations × batch=8 = ~80 steps. Adam optimizer cần ~100s steps để converge cho NLI task.
94
+
95
+ **Paper references**:
96
+ - **Stiefel-LoRA** (EMNLP 2025): $B^\top B = I_r$ constraint maximizes effective rank
97
+ - **SD-LoRA** (ICLR 2025): Explicit rank regularization through directional alignment
98
+ - **SEFE** (ICML 2025): Distinguishes superficial vs essential forgetting — CE loss conflates them
99
+ - **LoRA–** (CVPR 2025): Triplet loss in drift-resistant space for better single-task quality
100
+
101
+ ### 1.4 Kết luận: Never-learning KHÔNG do routing
102
+
103
+ Routing (C2) chỉ quyết định input → expert mapping. Never-learning do:
104
+ 1. **A frozen + GPM projection** → restricted learning capacity (structural)
105
+ 2. **Random A** trong null-space → poor alignment với task signal (information-theoretic)
106
+ 3. **Insufficient training** cho tiny datasets (practical)
107
+
108
+ **Quan trọng**: ROOT dùng CÙNG InfLoRA (A frozen + GPM) nhưng ROOT CB = 3.57 (cũng near-fail). Vấn đề này là **fundamental limitation** của InfLoRA approach, KHÔNG phải specific to SpecRoute.
109
+
110
+ ---
111
+
112
+ ## II. SVD NHƯ CHỮ KÝ — CÓ CẦN XEM XÉT LẠI?
113
+
114
+ ### 2.1 Bản chất SVD
115
+
116
+ SVD phân rã $\Delta W = BA = U \Sigma V^\top$:
117
+ - $V$ (right singular vectors): **input directions** expert "lắng nghe"
118
+ - $U$ (left singular vectors): **output directions** expert "phát ra"
119
+ - $\Sigma$ (singular values): **cường độ** modification
120
+
121
+ Spectral signature hiện tại dùng $(V, \sigma)$ — input receptive field + importance.
122
+
123
+ ### 2.2 A frozen ảnh hưởng SVD như thế nào?
124
+
125
+ Đây là câu hỏi then chốt. Xét:
126
+
127
+ $$\Delta W_t = B_t A_t$$
128
+
129
+ Với $A_t$ frozen (Kaiming init + GPM projection), $\text{rank}(\Delta W_t) \leq r$.
130
+
131
+ **SVD structural constraint**:
132
+ $$\Delta W_t = B_t A_t = (U_B \Sigma_B V_B^\top)(U_A \Sigma_A V_A^\top)$$
133
+ $$= U_B \Sigma_B (V_B^\top U_A) \Sigma_A V_A^\top$$
134
+
135
+ Gọi $M = \Sigma_B (V_B^\top U_A) \Sigma_A$ ∈ $\mathbb{R}^{r \times r}$, SVD($M$) = $P S Q^\top$. Khi đó:
136
+
137
+ $$\Delta W_t = (U_B P) S (Q^\top V_A^\top) = \tilde{U} S \tilde{V}^\top$$
138
+
139
+ **Key insight**: Right singular vectors của $\Delta W_t$ là:
140
+ $$\tilde{V} = V_A Q$$
141
+
142
+ Tức **right singular vectors luôn nằm trong row-space của A**:
143
+ $$\text{col}(\tilde{V}^\top) = \text{col}(Q^\top V_A^\top)^\top \subseteq \text{row}(A_t)$$
144
+
145
+ **Hệ quả sâu sắc**: SVD spectral signature bị **GIỚI HẠN** bởi $\text{row}(A_t)$!
146
+
147
+ **Paper references**:
148
+ - **Eckart-Young Theorem** (1936): Best rank-$k$ approximation = truncated SVD
149
+ - **Weyl's Perturbation Theorem**: $|\sigma_i(A+E) - \sigma_i(A)| \leq \|E\|_2$
150
+ - **Horn & Johnson** (Matrix Analysis, 2013): SVD of product $BA$ — structure thm
151
+ - **Interlacing Inequalities** (Thompson, 1976): Singular values of products
152
+
153
+ ### 2.3 Vấn đề: A frozen + GPM → SVD signatures structurally constrained
154
+
155
+ Do GPM: $A_k \perp A_j$ (approximately, via projection), nên:
156
+
157
+ $$\text{row}(A_k) \perp \text{row}(A_j) \quad \forall j < k$$
158
+
159
+ **Theorem (informal)**: Nếu $A_k \perp A_j$ exact, thì $V_k \perp V_j$ exact (right singular vectors orthogonal).
160
+
161
+ **Chứng minh**: $V_k \in \text{row}(A_k)$ và $V_j \in \text{row}(A_j)$, mà $\text{row}(A_k) \perp \text{row}(A_j)$, nên $V_k^\top V_j = 0$.
162
+
163
+ **Hệ quả cho routing**: Spectral routing dùng:
164
+ $$\text{fit}_t(h) = \frac{\sum_i \sigma_{t,i}^2 (v_{t,i}^\top h)^2}{\sum_i \sigma_{t,i}^2 \|h\|^2}$$
165
+
166
+ Khi $V_k \perp V_j$, routing phụ thuộc hoàn toàn vào **energy projection**:
167
+ - $h$ có bao nhiêu energy trong $\text{row}(A_k)$ vs $\text{row}(A_j)$?
168
+
169
+ **VẤN ĐỀ CHÍNH**: Nếu hai task cùng domain (e.g., yelp/amazon — cả hai là sentiment 5-class), input $h$ của chúng SIMILAR. Nhưng do GPM, $A_{\text{yelp}}$ và $A_{\text{amazon}}$ orthogonal → energy projection phụ thuộc vào **RANDOM** A directions, KHÔNG phụ thuộc vào task semantics.
170
+
171
+ Đây chính xác là **GPM-Routing Paradox** đã nhận diện — nhưng bây giờ ta thấy vấn đề còn sâu hơn: **SVD signatures bị A deterministic** khi A frozen.
172
+
173
+ ### 2.4 A frozen + B trainable có phù hợp với SVD?
174
+
175
+ **Câu trả lời ngắn**: Có, nhưng với caveats quan trọng.
176
+
177
+ **Phù hợp**: SVD($BA$) ĐÚNG phản ánh effective modification direction. B training thay đổi singular values + left singular vectors, nhưng right singular vectors bị constrained bởi $\text{row}(A)$. SVD vẫn đúng mathematically.
178
+
179
+ **Không phù hợp cho ROUTING**: Right singular vectors ($V$) — thứ ta dùng cho routing — bị tied to A's row-space. Khi A frozen + orthogonalized → routing information bị **A deterministic**, không phản ánh **B's learned task-specifics**.
180
+
181
+ **Formal statement**: Routing quality bounded by:
182
+ $$\max_{h} |\text{fit}_k(h) - \text{fit}_j(h)| \leq 1 - \cos^2(\text{row}(A_k), \text{row}(A_j))$$
183
+
184
+ Khi $A_k \perp A_j$ (GPM), $\cos^2 = 0$ → max discrimination = 1 (TUYỆT ĐỐI). **Nhưng** discrimination phụ thuộc vào h alignment, và h KHÔNG được control bởi routing mechanism.
185
+
186
+ **Paper references**:
187
+ - **Function Vectors** (Todd et al., ICLR 2025): Models carry compact task-encoding "function vectors" — h encodes task info nhưng KHÔNG guaranteed align với random A directions
188
+ - **GIFT** (CVPR 2025): Fisher Information as Riemannian metric — shows parameter sensitivity IS task-dependent
189
+ - **Low-rank Forgetting Analysis** (NeurIPS 2025): Forgetting matrix $F = \Delta W_{\text{old}}^\top \Delta W_{\text{new}}$ — has low-rank structure
190
+
191
+ ### 2.5 Kết luận về SVD signatures
192
+
193
+ 1. **SVD mathematically correct** cho decompose $\Delta W = BA$
194
+ 2. **Right singular vectors** ($V$) bị **tied to row(A)** khi A frozen → chủ yếu reflect A's structure
195
+ 3. **Singular values** ($\sigma$) DO reflect B's learning → key discriminative signal
196
+ 4. **Routing via (V, σ)**: Phụ thuộc cả A (directions) LẪN B (magnitudes). Khi C4 cải thiện B training quality → σ spectrum phong phú hơn → discrimination tăng
197
+ 5. **Câu hỏi mở (V6 sẽ trả lời)**: C4 có đủ mạnh để bù đắp V bị tied to row(A)? Tức là σ²-weighting có đủ discriminative khi V orthogonal?
198
+
199
+ ---
200
+
201
+ ## II-bis. PROTOTYPE ROUTING VI PHẠM ZERO-REPLAY
202
+
203
+ ### Phân tích lỗi logic trong v1
204
+
205
+ Phiên bản v1 khuyến nghị prototype routing (V5) dựa trên Data Processing Inequality:
206
+ $$I(T; f(\Delta W, h)) \leq I(T; A_t h) \leq I(T; h)$$
207
+
208
+ Kết luận: "prototype dùng h trực tiếp → bypass A bottleneck → tối ưu".
209
+
210
+ **Tuy nhiên**, prototype $\mu_t = \frac{1}{N_t}\sum_{i} h_i^{(t)}$ là **thống kê dữ liệu** (mean of training embeddings). Theo settings.txt:
211
+
212
+ > "không được phép sử dụng lại bất kỳ dữ liệu cũ dưới bất kỳ hình thức nào bao gồm dữ liệu thô, dữ liệu synthetic, **phân phối dữ liệu (được tạo ra nhờ các công cụ thống kê)**"
213
+
214
+ Mean embedding = first moment of distribution = thống kê → **vi phạm**.
215
+
216
+ ### Ranh giới hợp lệ: Model Parameters vs Data Statistics
217
+
218
+ | Information | Nguồn | Hợp lệ? | Lý do |
219
+ |------------|--------|---------|-------|
220
+ | $A_t, B_t$ (frozen LoRA) | Training artifact | ✅ | Model parameters |
221
+ | SVD$(B_t A_t)$ | Derived from params | ✅ | Pure computation on params |
222
+ | GPM bases ($U$ from covariance SVD) | Forward on data → covariance | ⚠️ **Biên** | ROOT cũng dùng, accepted by community |
223
+ | Mean embedding $\mu_t$ | Forward on data → statistic | ❌ | Data distribution statistic |
224
+ | Distribution params (variance, etc.) | Forward on data → statistic | ❌ | Explicit distribution |
225
+
226
+ **Quan sát quan trọng**: GPM bases cũng được tính từ training data (forward 1000 batches → covariance → SVD → bases). Khác biệt then chốt:
227
+ - GPM bases dùng cho **protection** (constrain future A), xong rồi **xóa feature_list** (line 304) — standard CL technique
228
+ - Prototypes dùng cho **inference routing** trên TEST data — lưu và sử dụng vĩnh viễn → DỮ LIỆU CŨ ẢNH HƯỞNG TRỰC TIẾP TỚI PREDICTIONS trên data mới
229
+
230
+ ### Hệ quả: Spectral routing = ONLY zero-replay-compliant option
231
+
232
+ Tại inference, chỉ có: $h$ (test input) + $\{A_t, B_t\}_{t=1}^T$ (model params). Routing PHẢI là:
233
+ $$\text{routing}(h) = f(h; \{A_t, B_t\}_{t=1}^T)$$
234
+
235
+ Spectral routing (Rayleigh quotient) thỏa điều kiện này. Learned routing (ROOT's MLP) cũng thỏa. Prototype routing **KHÔNG** thỏa.
236
+
237
+ ---
238
+
239
+ ## III. CƠ CHẾ ROUTING HIỆN TẠI CÓ TỐI ƯU?
240
+
241
+ ### 3.1 Routing hiện tại: σ²-weighted Rayleigh quotient
242
+
243
+ $$w_t(h) = \text{softmax}\left(\frac{\mathbf{h}^\top V_t \text{diag}(\sigma_t^2) V_t^\top \mathbf{h}}{\|\sigma_t\|^2 \|\mathbf{h}\|^2}\right)$$
244
+
245
+ Đây là **Rayleigh quotient** của ma trận PSD $V_t \text{diag}(\sigma_t^2) V_t^\top$ w.r.t. $h$.
246
+
247
+ ### 3.2 Phân tích Information-Theoretic
248
+
249
+ Từ góc nhìn **sufficient statistics** (Fisher-Neyman):
250
+
251
+ **Routing problem**: Cho observation $h$, decide $t^* = \arg\max_t P(t|h)$.
252
+
253
+ **Bayes optimal**: $w_t(h) = P(t|h) \propto P(h|t) P(t)$.
254
+
255
+ **Spectral routing giả định gì?** Nó giả định $P(h|t)$ tương ứng với energy projection lên $V_t$. Tức là, $h$ từ task $t$ sẽ có energy tập trung trong $\text{span}(V_t)$.
256
+
257
+ **Khi nào giả định đúng?**
258
+ - Khi A directions align với task-discriminative input subspace
259
+ - Khi different tasks' inputs separate trong A's column space
260
+
261
+ **Khi nào giả định SAI?**
262
+ - Same-domain tasks → $h$ similar → projection lên orthogonal $A_k, A_j$ cho RANDOM results
263
+ - Task input không align với random A → low fit for ALL tasks → routing degeneracy
264
+
265
+ ### 3.3 Alternatives: Công cụ toán học nào tốt hơn?
266
+
267
+ #### Alternative 1: Nuclear Norm / Trace Norm
268
+
269
+ Thay vì SVD spectral routing, dùng **trace of product**:
270
+ $$\text{aff}_t(h) = \|(\Delta W_t)^\top h\|_2^2 = h^\top (BA)^\top (BA) h = h^\top A^\top B^\top B A h$$
271
+
272
+ Đây chính xác là tính toán hiện tại nhưng **không cần SVD** — chỉ cần $B^\top B$ (Gram matrix).
273
+
274
+ **Insight**: SVD chỉ là decomposition của $B^\top B A^\top A h$. Nếu A orthogonalized, $A^\top A \approx c \cdot I$ trên row-space → SVD reduction to $B^\top B$.
275
+
276
+ **Paper references**:
277
+ - **Marchenko-Pastur Law** (1967): Random matrix $A$ với entries i.i.d. → $A^\top A / n \to I$ as $d \to \infty$
278
+ - **Random Matrix Theory** (Anderson, 2003): Concentration of spectral norms for random projections
279
+
280
+ #### Alternative 2: Frobenius Inner Product (Direct Affinity)
281
+
282
+ $$\text{aff}_t(h) = \|\Delta W_t \odot h h^\top\|_F = \text{tr}(\Delta W_t^\top \Delta W_t h h^\top)$$
283
+
284
+ Measures how much $\Delta W_t$ modifies input $h$ → more direct measure of "expert relevance".
285
+
286
+ #### Alternative 3: Grassmannian Distance
287
+
288
+ Thay vì project $h$ lên subspaces, đo **geodesic distance** giữa subspace $\text{col}(V_t)$ và direction $h/\|h\|$:
289
+
290
+ $$d_G(h, V_t) = \arccos\left(\frac{\|V_t^\top h\|}{\|h\|}\right)$$
291
+
292
+ **Paper references**:
293
+ - **Absil et al.** (2004, 2008): Optimization on Stiefel and Grassmann manifolds — geodesic distances, exponential maps
294
+ - **Hamm & Lee** (2008): Grassmann discriminant analysis — subspace classification
295
+ - **Edelman, Arias, Smith** (1998): Geometry of algorithms with orthogonality constraints
296
+
297
+ #### Alternative 4: CKA (Centered Kernel Alignment)
298
+
299
+ $$\text{CKA}(K_h, K_t) = \frac{\|K_h K_t\|_F}{\|K_h\|_F \|K_t\|_F}$$
300
+
301
+ Với $K_t = V_t V_t^\top$ (projection kernel) và $K_h = h h^\top$.
302
+
303
+ **Paper references**:
304
+ - **Kornblith et al.** (2019): CKA for comparing neural network representations
305
+ - **Nguyen et al.** (2021): CKA variants for continual learning similarity
306
+
307
+ #### Alternative 5: Projection Residual (Information Loss)
308
+
309
+ Thay vì "how much energy projects", đo "how much information LOST after projection":
310
+ $$\text{loss}_t(h) = \|(I - V_t V_t^\top) h\|^2 / \|h\|^2 = 1 - \text{fit}_t(h)$$
311
+
312
+ Routing bằng minimizing information loss. Mathematically identical to current approach nhưng conceptually clearer.
313
+
314
+ ### 3.4 Quan sát then chốt: DPI đúng nhưng KHÔNG có nghĩa spectral routing thất bại
315
+
316
+ **Theorem (Fundamental Routing Information Bound under InfLoRA)**:
317
+
318
+ Cho $\Delta W_t = B_t A_t$ với $A_t$ frozen. BẤT KỲ routing function $f(h, \Delta W_t)$ dựa trên $\Delta W_t$ hoặc các derived quantities (SVD, norms, projections):
319
+
320
+ $$f(h, B_t A_t) \text{ chỉ phân biệt h qua } A_t h$$
321
+
322
+ vì $B_t A_t h = B_t (A_t h)$ — output chỉ phụ thuộc $h$ thông qua projection $A_t h$.
323
+
324
+ **Data Processing Inequality**: $I(T; f) \leq I(T; A_t h) \leq I(T; h)$
325
+
326
+ **NHƯNG — sửa lỗi v1**: DPI nói $I(T; A_t h) \leq I(T; h)$, KHÔNG nói $I(T; A_t h) = 0$.
327
+
328
+ Thực tế, dù $A_t$ random, nó vẫn capture $r/d$ fraction energy:
329
+ $$\mathbb{E}[\|A_t h\|^2 / \|h\|^2] = r/d \approx 8/512 = 1.56\%$$
330
+
331
+ Và quan trọng hơn: **singular values $\sigma_t$ encode B's task-specific learning** (Section 2.4). Rayleigh quotient:
332
+ $$\text{fit}_t(h) = \frac{\sum_i \sigma_{t,i}^2 (v_{t,i}^\top h)^2}{\sum_i \sigma_{t,i}^2 \|h\|^2}$$
333
+
334
+ Với C4 làm $\sigma$ spectrum phong phú (high effective rank), discrimination TĂNG vì:
335
+ 1. Expert response mạnh hơn (lớn σ) → fit_t cao cho matching inputs
336
+ 2. Full-rank LoRA → expert capture nhiều directions hơn → h projection richer
337
+
338
+ **Kết luận sửa**: Spectral routing bị information bottleneck, nhưng bottleneck có thể **đủ rộng** nếu expert quality cao. V6 test chính xác giả thuyết này.
339
+
340
+ **Paper references**:
341
+ - **Data Processing Inequality** (Cover & Thomas, 2006): $I(X;Z) \leq I(X;Y)$ khi $X \to Y \to Z$
342
+ - **Sufficient Statistics** (Fisher-Neyman Factorization Theorem): Routing optimal khi sử dụng sufficient statistic for task identity
343
+ - **Information Bottleneck** (Tishby et al., 2000): Tradeoff compression vs. prediction
344
+ - **Johnson-Lindenstrauss Lemma** (1984): Random projection preserves distances with $O(\log T / \epsilon^2)$ dimensions — 8 dims bảo toàn distance giữa ~15 task centroids with high probability
345
+
346
+ ### 3.5 V6 Hypothesis: C4 Makes Spectral Routing Viable
347
+
348
+ **Giả thuyết (v6_discuss.md)**: V1-V3 thất bại KHÔNG chỉ do routing mechanism, mà do **expert quality TỆ** (no C4):
349
+ - Không có preconditioning → gradient distortion → B learns poorly → σ degenerate
350
+ - Không có entropy regularization → rank-1 LoRA → 1 direction thống trị → routing degeneracy
351
+
352
+ **C4 fixes expert quality → σ spectrum phong phú → spectral routing trở nên discriminative.**
353
+
354
+ **Logic chain**:
355
+ $$\text{C4 (preconditioning + entropy)} \to \text{Better B training} \to \text{Richer σ spectrum}$$
356
+ $$\to \text{Higher effective rank} \to \text{More discriminative fit}_t(h)$$
357
+ $$\to \text{Better routing} \to \text{Performance improvement}$$
358
+
359
+ **Verification**: V5 có C4 + prototype. V6 = C4 only → isolate C4's contribution.
360
+
361
+ **Dự đoán V6**:
362
+ - Nếu C4 là key: AP(EM) ~45-55 (vượt xa V3=27.66, nhưng không bằng V5=59.55 vì mất prototype advantage)
363
+ - Nếu C4 không đủ: AP(EM) ~30-35 (tương tự V3)
364
+ - Nếu C4 destabilize: NaN hoặc spike → giảm λ hoặc disable preconditioning
365
+
366
+ ---
367
+
368
+ ## IV. TẬP HỢP VÀ ĐỀ XUẤT (REVISED v2)
369
+
370
+ ### 4.1 Summary of Theoretical Findings
371
+
372
+ | Finding | Implication |
373
+ |---------|------------|
374
+ | Never-learning do A frozen + GPM, KHÔNG do routing | C2 (routing) đúng hướng, cần C4 (expert quality) mạnh hơn |
375
+ | SVD signatures ĐÚNG mathematically, $V \subseteq \text{row}(A)$ | Routing DIRECTIONS constrained, nhưng σ² MAGNITUDES reflective |
376
+ | GPM ⊥ → perfect subspace separation | Routing dựa vào σ²-weighted projection, KHÔNG chỉ V directions |
377
+ | DPI: $I(T; Ah) \leq I(T; h)$ | Bottleneck tồn tại, nhưng KHÔNG = 0; có thể đủ rộng nếu expert quality cao |
378
+ | **Prototype routing VI PHẠM zero-replay** | **V5 INVALID theo settings.txt** |
379
+ | C4 cải thiện expert quality → richer σ → better routing | **V6 hypothesis: C4 = key to making spectral routing work** |
380
+
381
+ ### 4.2 Prototype Routing: Tại sao sai và bài học
382
+
383
+ **V5 sai lầm**: Prototype $\mu_t = \text{mean}(h_i^{(t)})$ = **first moment of data distribution** → vi phạm zero-replay.
384
+
385
+ **Bài học**: Information-theoretic optimality ($I(T; h)$ vs $I(T; Ah)$) PHẢI tuân theo constraint. Giải pháp "tối ưu" nhưng vi phạm settings = vô giá trị.
386
+
387
+ **GPM bases cũng dùng data** nhưng chỉ cho protection (standard CL practice, ROOT cũng dùng). Ranh giới: data CÓ THỂ dùng cho constrain future learning (GPM), KHÔNG THỂ dùng cho influence future predictions (prototypes).
388
+
389
+ ### 4.3 SVD Routing + C4: Giả thuyết V6
390
+
391
+ **V6 = spectral routing (V3 mechanism) + C4 (preconditioning + entropy)**
392
+
393
+ Tại sao V3 thất bại (AP=27.66)?
394
+ 1. V3 chạy SCRIPT SAI (threshold=0.98 thay vì 0.995) — **bug, không phải limitation**
395
+ 2. V3 KHÔNG có C4 → LoRA trains poorly → degenerate σ → routing random
396
+ 3. Train-inference mismatch: adaptive bias at train, SVD at inference → B optimized under wrong routing
397
+
398
+ V6 fixes:
399
+ 1. ✅ Threshold = 0.995 (đúng)
400
+ 2. ✅ C4 enabled (preconditioning + entropy)
401
+ 3. ✅ Adaptive bias at train, symmetric SVD at inference (mechanism unchanged but expert quality vastly better)
402
+
403
+ **Dự đoán (theory-based)**:
404
+
405
+ C4 addresses Cause 1 (gradient distortion) và Cause 3 (CE-only loss) từ Section I:
406
+ - Preconditioner $(AA^\top + \epsilon I)^{-1/2}$ equalizes gradient → condition-number-independent learning
407
+ - Entropy regularization → maximizes effective rank → expert responds to more directions
408
+
409
+ Nếu V6 AP ~45-55 → C4 là significant contributor → **spectral routing viable under zero-replay**
410
+ Nếu V6 AP ~30 → expert quality KHÔNG đủ → GPM-Routing Paradox remains dominant
411
+
412
+ ### 4.4 Contribution Idea cần chỉnh sửa gì?
413
+
414
+ #### C1 (Spectral Signatures) — GIỮI, VAI TRÒ ĐÚng
415
+ - SVD signatures dùng cho cả routing LẪN characterization
416
+ - Thin SVD optimization (QR+SVD) vẫn valid
417
+ - σ values là key discriminative signal (kết hợp V directions)
418
+
419
+ #### C2 (Routing) — CẦN REVISION
420
+ - ~~Prototype routing~~ → **Xóa**, vi phạm zero-replay
421
+ - **Giữ**: SVD spectral routing (Rayleigh quotient) — ONLY valid option
422
+ - **Giữ**: Adaptive bias $\beta(n)$ for training cold-start
423
+ - **Giữ**: Symmetric SVD inference routing
424
+ - **Mới**: C4 là yếu tố quyết định *chất lượng* routing (không phải mechanism mới mà là *quality of what's being routed TO*)
425
+
426
+ #### C3 (ESA) — GIỮI
427
+ - Dynamic threshold works
428
+
429
+ #### C4 (Preconditioning + Entropy) — **TRỞ THÀNH THEN CHỐT**
430
+ - Không chỉ improve single-task quality
431
+ - **Trực tiếp improve routing quality** qua richer σ spectrum
432
+ - C4 = bridge giữa protection (GPM) và routing (spectral affinity)
433
+ - Preconditioning: gradient equalization → all rank directions learn → non-degenerate σ
434
+ - Entropy: explicit rank maximization → more responsive expert → better fit discrimination
435
+
436
+ ### 4.5 Đề xuất sửa đổi cụ thể
437
+
438
+ #### 1. DEPLOY V6 (branch `new`)
439
+
440
+ V6 = spectral routing + C4 = **ONLY valid configuration** under zero-replay.
441
+
442
+ Prediction range: AP(EM) 45-55 (optimistic: C4 strong) hoặc 30-35 (pessimistic: C4 insufficient)
443
+
444
+ #### 2. Update SPECROUTE_IDEA.md
445
+ - Remove C2.1 (prototype routing section)
446
+ - Re-frame C4 as enabling technology cho C2 (not independent contribution)
447
+ - Routing–Protection Duality theorem STILL VALID (spectral affinity ↔ protection quality)
448
+ - New framing: "C4 completes the duality — protection provides direction discrimination, C4 provides magnitude discrimination"
449
+
450
+ #### 3. Nếu V6 AP ~30 (C4 insufficient) → Next direction
451
+ - Relaxed orthogonality: $A_t = (1-\eta) A_t^{\perp} + \eta A_t^{\parallel}$ — allow small overlap
452
+ - Tradeoff: slight forgetting ↑ but routing discrimination ↑↑
453
+ - $\eta \in [0.05, 0.2]$
454
+ - ZERO-REPLAY COMPLIANT (only modifies A init, no data stored)
455
+ - Adaptive epochs cho tiny datasets (CB: 250 samples → more steps)
456
+
457
+ ---
458
+
459
+ ## V. KẾT LUẬN (REVISED)
460
+
461
+ ### Trả lời câu hỏi ban đầu
462
+
463
+ 1. **Nguyên nhân gốc rễ never-learning**: A frozen + GPM projection → restricted capacity + random A ≠ optimal A + insufficient training. KHÔNG do routing. ROOT cũng near-fail CB (3.57). Đây là InfLoRA fundamental tradeoff.
464
+
465
+ 2. **SVD có cần xem xét lại?**:
466
+ - SVD mathematically correct
467
+ - $V \subseteq \text{row}(A)$ → directions constrained, nhưng **σ values reflect B's learning** → key discriminative signal
468
+ - A frozen LÀ lựa chọn tốt cho anti-forgetting
469
+ - SVD dùng cho routing: σ²-weighted Rayleigh quotient ĐÚNG, nhưng cần C4 boost expert quality
470
+ - **KHÔNG cần thay SVD bằng tool khác** — vấn đề là expert quality, không phải measurement method
471
+
472
+ 3. **Routing mechanism tối ưu?**:
473
+ - Spectral routing = ONLY zero-replay-compliant parameter-free option
474
+ - ~~Prototype routing~~ **vi phạm zero-replay** → loại bỏ
475
+ - V1-V3 thất bại có thể do EXPERT QUALITY (no C4), không chỉ routing mechanism
476
+ - V6 (SVD + C4) = experiment để test C4 hypothesis
477
+ - DPI bottleneck tồn tại nhưng Johnson-Lindenstrauss cho thấy random projection 8-dim đủ preserve distances cho ~15 tasks
478
+
479
+ ### Recommendation
480
+
481
+ 1. **DEPLOY V6** (branch `new`) — SVD routing + C4 = đúng constraint
482
+ 2. **V5 prototype routing INVALID** — vi phạm zero-replay
483
+ 3. **C4 trở thành contribution then chốt** — không chỉ C1 add-on mà ENABLES C2 routing quality
484
+ 4. **Chờ V6 results** trước khi quyết định tiếp:
485
+ - AP ≥ 45 → spectral + C4 viable, tiếp tục tối ưu
486
+ - AP ≤ 35 → cần relaxed orthogonality hoặc fundamental rethink
487
+
488
+ ---
489
+
490
+ ## Paper References (30+)
491
+
492
+ ### LoRA & Low-Rank Optimization
493
+ 1. Hu et al. (2022) — LoRA: Low-Rank Adaptation of Large Language Models
494
+ 2. Sun et al. (CVPR 2024) — InfLoRA: Interference-Free Low-Rank Adaptation
495
+ 3. Jordan et al. (2025) — Muon/Riemannion: Riemannian LoRA
496
+ 4. LORO (ICLR 2025) — Low-rank Riemannian Optimizer
497
+ 5. SD-LoRA (ICLR 2025) — Singular value Direction decomposition
498
+ 6. Stiefel-LoRA (EMNLP 2025) — Orthogonal B constraints
499
+ 7. LoKO (2024) — Kalman Filter LoRA Optimizer
500
+ 8. LoRA– (CVPR 2025) — Triplet loss in Drift-Resistant Space
501
+
502
+ ### Continual Learning
503
+ 9. GORP (ACL 2025) — Unified Gradient Subspace Projection
504
+ 10. CMCL (NeurIPS 2025) — Dual Stability/Plasticity Bounds
505
+ 11. CaLoRA (NeurIPS 2025) — Causal Gradient Adaptation
506
+ 12. PLAN (ICCV 2025) — Proactive Rank Allocation
507
+ 13. TreeLoRA (ICML 2025) — Gradient Similarity Tree
508
+ 14. Angle Matters (ICML 2025) — Angular task signal analysis
509
+ 15. SEFE (ICML 2025) — Superficial vs Essential Forgetting
510
+ 16. GIFT (CVPR 2025) — Fisher Information LoRA
511
+ 17. Low-rank Forgetting Analysis (NeurIPS 2025)
512
+
513
+ ### SVD & Matrix Theory
514
+ 18. Eckart-Young (1936) — Best low-rank approximation
515
+ 19. Weyl's Perturbation Theorem — Singular value stability
516
+ 20. Horn & Johnson (2013) — Matrix Analysis (product SVD)
517
+ 21. Thompson (1976) — Interlacing inequalities for products
518
+ 22. Marchenko-Pastur (1967) — Random matrix spectral distribution
519
+ 23. Anderson (2003) — Random Matrix Theory
520
+
521
+ ### Grassmannian & Manifold Geometry
522
+ 24. Absil et al. (2004, 2008) — Optimization on Grassmann manifolds
523
+ 25. Hamm & Lee (2008) — Grassmann Discriminant Analysis
524
+ 26. Edelman, Arias, Smith (1998) — Geometry with orthogonality
525
+
526
+ ### Information Theory
527
+ 27. Cover & Thomas (2006) — Data Processing Inequality
528
+ 28. Tishby et al. (2000) — Information Bottleneck Method
529
+ 29. Fisher-Neyman Factorization Theorem — Sufficient statistics
530
+ 30. Kornblith et al. (2019) — CKA representation similarity
531
+ 31. Todd et al. (ICLR 2025) — Function Vectors
532
+ 32. Nguyen et al. (2021) — CKA for continual learning
533
+ 33. **Johnson & Lindenstrauss (1984)** — Random projection preserves distances
534
+
535
+ ### GainLoRA Specific
536
+ 34. GainLoRA (original paper) — Gating + InfLoRA architecture
537
+ 35. GPM (Saha et al., 2021) — Gradient Projection Memory
538
+
539
+ ### Appendix: V1 Analysis Error Log
540
+
541
+ **V1 lỗi**: Khuyến nghị prototype routing (V5) nhưng prototype = mean embedding = data statistic → vi phạm zero-replay.
542
+
543
+ **Root cause**: DPI argument ($I(T;h) > I(T;Ah)$) đúng mathematically nhưng bỏ qua constraint. Tối ưu hóa information access nhưng vi phạm allowable information set.
544
+
545
+ **Bài học**: Trong research, correctness = mathematical validity + constraint satisfaction. Giải pháp information-theoretically optimal nhưng violate settings = invalid. Đây là ví dụ tốt cho research_rule: luôn verify solution against ALL constraints trước khi recommend.
results/experiment_versions.md CHANGED
@@ -1,542 +1,192 @@
1
- # SpecRouteBáo cáo Thử nghiệm theo Version
2
 
3
- > Tracking tất cả versions thử nghiệm, kết quả, phân tích, và cải tiến.
4
- > Benchmark: Long Sequence Order 3, 15 classification tasks, model T5-Small.
 
 
5
 
6
  ---
7
 
8
- ## Version 1.0Baseline SpecRoute (Kết quả đầu tiên)
9
-
10
- ### Kịch bản thử nghiệm
11
- - **Model**: T5-Small (d_model=512, 6 encoder + 6 decoder layers)
12
- - **Method**: SpecRoute — spectral routing (SVD of LoRA B@A) thay thế learned routing (trans_input + prompt_key) của GainLoRA
13
- - **So sánh**: ROOT GainLoRA-InfLoRA (original codebase)
14
- - **Hyperparameters**: lora_r=8, lora_alpha=32, lr=3e-4, 10 epochs, threshold=0.995
15
- - **Platform**: Kaggle T4 GPU
16
-
17
- ### Kết quả
18
-
19
- | # | Task | ROOT (Final R_{15,j}) | SpecRoute (Peak R_{j,j}) | Δ |
20
- |---|------|-----------------------|--------------------------|---|
21
- | 1 | yelp | 56.01 | 54.36 | -1.65 |
22
- | 2 | amazon | 52.05 | 50.01 | -2.04 |
23
- | 3 | mnli | 34.07 | 35.50 | +1.43 |
24
- | 4 | cb | 3.57 | 0.00 | -3.57 |
25
- | 5 | copa | 42.00 | 44.00 | +2.00 |
26
- | 6 | qqp | 76.96 | 76.72 | -0.24 |
27
- | 7 | rte | 45.85 | 50.90 | +5.05 |
28
- | 8 | imdb | 89.51 | **0.21** ⚠️ | -89.30 |
29
- | 9 | sst2 | 85.21 | **0.00** ⚠️ | -85.21 |
30
- | 10 | dbpedia | 98.16 | 92.22 | -5.94 |
31
- | 11 | agnews | 88.37 | 68.76 | -19.61 |
32
- | 12 | yahoo | 57.28 | **8.12** ⚠️ | -49.16 |
33
- | 13 | multirc | 50.52 | 54.23 | +3.71 |
34
- | 14 | boolq | 60.43 | 61.13 | +0.70 |
35
- | 15 | wic | 55.49 | **0.00** ⚠️ | -55.49 |
36
- | | **Mean** | **59.70** | **39.74** | **-19.96** |
37
-
38
- > ⚠️ **LƯU Ý QUAN TRỌNG**: So sánh KHÔNG công bằng — ROOT dùng R_{15,j} (final, sau tất cả 15 tasks), SpecRoute dùng R_{j,j} (peak, ngay sau train từng task). AP thực của SpecRoute sẽ thấp hơn 39.74.
39
-
40
- ### Phân tích
41
-
42
- **1. Prediction metrics không được lưu**
43
- - SpecRoute `all_results.json` chỉ chứa training metrics, KHÔNG có `predict_exact_match_for_{task}`
44
- - `task_order.txt` không tồn tại → `score.py` không thể tính AP/FT
45
- - Nguyên nhân: Có thể do experiment được chạy bằng script khác (không phải T5_small/ scripts đã fix `--do_predict`)
46
- - T5-large script generator (`generate_specroute_scripts_v2.py`) vẫn có bug `do_predict=False` cho long benchmarks
47
-
48
- **2. Các tasks THẤT BẠI KHÔNG PHẢI do catastrophic forgetting**
49
-
50
- | Task | Train Loss (Root) | Train Loss (SpecRoute) | Ratio | Verdict |
51
- |------|:-:|:-:|:-:|---|
52
- | imdb | 1.41 | **4.15** | 2.9x | Không thể học |
53
- | sst2 | 1.76 | **4.45** | 2.5x | Không thể học |
54
- | yahoo | 1.19 | **3.08** | 2.6x | Không thể học |
55
- | wic | 0.96 | **3.65** | 3.8x | Không thể học |
56
-
57
- Training loss cao gấp 2.5-3.8x → model KHÔNG THỂ HỌC ngay từ đầu (inability to learn, NOT catastrophic forgetting).
58
-
59
- **3. Nguyên nhân gốc: GPM null-space saturation + thiếu protection mechanisms**
60
-
61
- SpecRoute loại bỏ learned routing → đồng thời mất 4/5 cơ chế protection của ROOT:
62
-
63
- | Protection Mechanism | ROOT | SpecRoute V1 |
64
- |---------------------|:---:|:---:|
65
- | GPM on LoRA A | ✅ | ✅ |
66
- | KL distillation on routing | ✅ | ❌ |
67
- | Data replay | ❌ (`data_replay_freq=-1`) | ❌ |
68
- | Per-step GPM on routing params | ✅ | ❌ (no routing params) |
69
- | Learned routing adaptation | ✅ | ❌ (by design) |
70
-
71
- Khi tasks tương tự (imdb/sst2 vs yelp/amazon — cùng sentiment domain) đến, GPM đã "claim" sentiment-relevant directions → model bị ép vào orthogonal null-space không liên quan → KHÔNG thể học sentiment tasks mới.
72
-
73
- ROOT GainLoRA giải quyết vấn đề này nhờ trans_input MLP map input mới vào representation space REUSE kiến thức cũ, kết hợp KL distillation + data replay.
74
-
75
- **4. FT (Forgetting) = N/A**
76
- - Không tính được vì thiếu cross-task prediction metrics
77
-
78
- ### Cải tiến cho V2
79
-
80
- | # | Loại | Nội dung | Tác động |
81
- |---|------|---------|----------|
82
- | 1 | Bug fix | Fix `do_predict=False` → `True` trong generator | Cho phép tính AP/FT đúng |
83
- | 2 | Config | Giảm GPM threshold: 0.995 → 0.980 | Mở rộng null-space cho tasks sau |
84
- | 3 | **Idea change** | Thêm Experience Replay (CE loss trên old task data) | Chống forgetting + hỗ trợ knowledge reuse |
85
 
86
  ---
87
 
88
- ## Version 2.0 SpecRoute V2: Zero-Replay, Cold-Start Fix + Fair Comparison
89
-
90
- ### Thay đổi về Idea
91
-
92
- > **⚠️ V2.0 TRƯỚC ĐÓ ĐÃ BỊ HỦY**: Phiên bản V2 trước đó thêm Experience Replay (CE loss on old data).
93
- > Điều này **VI PHẠM** ràng buộc zero-replay trong settings.txt:
94
- > *"không được phép sử dụng lại bất kỳ dữ liệu cũ dưới bất kỳ hình thức nào"*
95
- >
96
- > Hơn nữa, ROOT GainLoRA cũng **KHÔNG** dùng replay (`data_replay_freq=-1` cho TẤT CẢ scripts).
97
- > ROOT đạt AP=59.70 hoàn toàn nhờ: learned routing (trans_input + prompt_key) + GPM on LoRA_A + GPM on routing params.
98
- >
99
- > **V2 Correct**: Fix root causes of V1 failure within zero-replay constraint.
100
-
101
- ### Root Cause Analysis (V1 Failures)
102
-
103
- **Bug 1: Cold-Start — Code không match IDEA doc (Sec 2.2)**
104
- - IDEA doc (Section 2.2) quy định current task routing dùng **A rows trực tiếp**:
105
- $$\text{fit}_\text{cur}(h) = \frac{\sum_{i=1}^{r} (a_i^\top h)^2}{r \cdot \|h\|^2}$$
106
- - Code V1 dùng **SVD(B@A)** cho current task. Nhưng B=0 tại initialization → SVD trả S=0 → fit≈0 → routing weight≈0 → gradient≈0 → B không thể học (dead loop)
107
- - A rows (kaiming init + null-space projection) luôn non-zero → fit_cur > 0 từ đầu
108
-
109
- **Bug 2: Training bias thiếu**
110
- - Ngay khi dùng A rows, fit_cur vẫn thấp hơn systematic so với old tasks (SVD-weighted σ²)
111
- - Old fit ∈ [0,1] (Rayleigh quotient), A-based fit ≤ 1/3 (do A normalized)
112
- - Current task nhận routing weight ~10-12% tại task 8+ → gradient yếu
113
- - Solution: training-time bias β=1.0 cộng vào fit_cur CHỈ khi training. Inference dùng SVD signatures bình thường
114
-
115
- **Bug 3: Batch size không fair**
116
- - V1: BSZ=64, GA=1, effective=64
117
- - ROOT: BSZ=8, GA=4, effective=32
118
- - SpecRoute dùng effective BSZ gấp đôi ROOT → so sánh không công bằng
119
-
120
- **Bug 4: GPM saturation (threshold=0.995)**
121
- - Sau 7 tasks, null-space bị thu hẹp nghiêm trọng
122
- - Sentiment tasks mới (imdb, sst2) bị ép vào directions orthogonal với yelp/amazon → không học được
123
- - Fix: threshold 0.995→0.980 (already in V1 analysis)
124
-
125
- ### Kịch bản thử nghiệm
126
- - **Model**: T5-Small (d_model=512)
127
- - **Method**: SpecRoute V2 — A-row routing + training bias + lower threshold
128
- - **Hyperparameters**:
129
- - lora_r=8, lora_alpha=32, lr=3e-4, 10 epochs
130
- - **threshold=0.980** (giảm từ 0.995)
131
- - **training_bias=1.0** (additive bias cho current task fit khi training)
132
- - **data_replay_freq=-1** (KHÔNG replay, giống ROOT)
133
- - BSZ=8, GA=4 trên A100 (effective=32, giống ROOT)
134
- - BSZ=4, GA=8 trên T4-1gpu; BSZ=2, GA=8 trên T4-2gpu
135
- - **Script**: `T5_small/gen_script_long_order3_t5_small_specroute_v2.sh`
136
-
137
- ### Code Changes (Actual)
138
-
139
- **1. Routing Fix: `t5_specroute.py`**
140
- - Current task: thay SVD(B@A) bằng A-row projection (match IDEA doc Sec 2.2)
141
- ```python
142
- # fit_cur(h) = Σ(a_i·h)² / (r·||h||²) — uses A rows directly
143
- proj = torch.matmul(A.data, h_flat.T) # (r, N)
144
- fit = (proj ** 2).sum(dim=0) / (r * h_norm_sq) # (N,)
145
- ```
146
- - Training bias: `current_fit = current_fit + self.training_bias` (chỉ khi `model.training`)
147
- - Old tasks: giữ nguyên SVD-based σ-weighted Rayleigh quotient
148
- - Inference: tất cả tasks dùng SVD signatures (current task gets SVD after training)
149
-
150
- **2. Replay Removal: `cl_trainer_specroute.py`**
151
- - Xóa `create_memory_replay_generators()` function
152
- - Xóa replay parameters từ `__init__` (data_collator_replay, replay_dataset_dict)
153
- - Xóa replay block từ `training_step()` — chỉ giữ CE loss + gradient diagnostic
154
- - Training step: standard CE → backward → gradient check → return loss
155
-
156
- **3. Run entry: `run_t5.py`**
157
- - Thêm `training_bias` vào ModelArguments (default=1.0)
158
- - Pass `training_bias` qua `prompt_config` dict
159
- - Xóa SpecRoute-specific replay loading condition
160
- - Xóa `data_collator_replay`, `replay_dataset_dict` từ SpecRoute_Trainer call
161
-
162
- **4. Shell Script: `T5_small/gen_script_long_order3_t5_small_specroute_v2.sh`**
163
- - data_replay_freq: 5 → **-1** (disabled, match ROOT)
164
- - kl_ratio: removed, replaced with **training_bias=1.0**
165
- - BSZ/GA: match ROOT exactly (A100: 8/4, T4-1gpu: 4/8, T4-2gpu: 2/8)
166
- - threshold/transthreshold: 0.980 (kept from previous)
167
-
168
- ### Kết quả
169
-
170
- | # | Task | ROOT EM | V2 EM | Δ | Ghi chú |
171
- |---|------|---------|-------|---|---------|
172
- | 1 | yelp | 56.01 | 35.91 | -20.10 | Below |
173
- | 2 | amazon | 52.05 | 36.58 | -15.47 | Below |
174
- | 3 | mnli | 34.07 | 0.25 | -33.82 | Catastrophic forgetting (peak 31.25 ep8) |
175
- | 4 | cb | 3.57 | 0.00 | -3.57 | EM=0 — misrouted garbage output |
176
- | 5 | copa | 42.00 | **47.00** | **+5.00** | ✅ Better |
177
- | 6 | qqp | 76.96 | **77.03** | **+0.07** | ✅ Tie |
178
- | 7 | rte | 45.85 | 0.36 | -45.49 | Catastrophic forgetting (peak 51.26 ep4) |
179
- | 8 | imdb | 89.51 | 0.00 | -89.51 | ❌ EM=0 — pred "positive"/"negative" vs label "Good"/"Bad" |
180
- | 9 | sst2 | 85.21 | 0.00 | -85.21 | ❌ EM=0 — pred "negative" vs label "Bad" |
181
- | 10 | dbpedia | 98.16 | 71.95 | -26.21 | Below |
182
- | 11 | agnews | 88.37 | 68.21 | -20.16 | Below |
183
- | 12 | yahoo | 57.28 | 6.82 | -50.46 | Very low |
184
- | 13 | multirc | 50.52 | **55.42** | **+4.90** | ✅ Better |
185
- | 14 | boolq | 60.43 | **61.44** | **+1.01** | ✅ Better |
186
- | 15 | wic | 55.49 | 0.00 | -55.49 | ❌ EM=0 — pred "the same meaning" vs label "True" |
187
- | | **AP(EM)** | **59.70** | **30.73** | **-28.97** | |
188
- | | **AP(rougeL)** | **61.66** | **38.00** | **-23.66** | |
189
-
190
- ### Phân tích chi tiết
191
-
192
- **Nhóm 1: EM=0 do MISROUTING (4 tasks)**
193
- - imdb pred "positive"/"negative" → đây là label vocabulary của yelp/amazon → routing gửi input imdb đến LoRA cũ
194
- - sst2 pred "negative" → tương tự, routed to yelp LoRA
195
- - wic pred "the same meaning"/"different" → label đúng là "True"/"False" → routed to wrong expert
196
- - cb pred gibberish ("bedroom", "virtuous") → completely misrouted
197
-
198
- **Nhóm 2: Catastrophic forgetting (2 tasks)**
199
- - mnli: EM peak=31.25 tại ep8, nhưng final=0.25 → degenerate (always "neutral")
200
- - rte: EM peak=51.26 tại ep4, final=0.36 → overfit rồi collapse
201
-
202
- **ROOT CAUSE: Constant β=1.0 không scale theo số task**
203
-
204
- | n_tasks | Training w_cur | Inference w_cur | Gap |
205
- |---------|---------------|----------------|-----|
206
- | 1 | 100% | 100% | 1.0x |
207
- | 2 | 71.5% | 48.0% | 1.5x |
208
- | 8 (imdb) | **26.4%** | **11.7%** | 2.3x |
209
- | 15 (wic) | **15.2%** | **6.2%** | 2.5x |
210
-
211
- Task 8 (imdb) chỉ nhận 26.4% routing weight khi training → 73.6% gradient đi qua LoRA cũ → model học label vocabulary của task cũ thay vì task hiện tại.
212
-
213
- **SECONDARY CAUSE: A-row fit vs SVD fit asymmetry**
214
- - Training: current task dùng A-row fit (uniform weighting)
215
- - Inference: current task VẪN dùng A-row fit (không có bias) nhưng old tasks dùng SVD fit (σ²-weighted)
216
- - SVD fit hệ thống cao hơn A-row fit → old tasks luôn thắng routing tại inference
217
-
218
- ### Kỳ vọng
219
- - Cold-start fix → giải quyết EM=0 ở task 1-3 ✅
220
- - Training bias β=1.0 → chỉ đủ cho ≤3 tasks, KHÔNG đủ cho 8+ tasks ❌
221
-
222
- ---
223
-
224
- ## Version 3.0 — SpecRoute V3: Adaptive Bias + Symmetric Inference Routing
225
-
226
- ### Thay đổi về Methodology (CẬP NHẬT SPECROUTE_IDEA.md)
227
-
228
- **1. Adaptive Training Bias (thay thế constant β=1.0):**
229
-
230
- $$\beta(n) = \tau \cdot \ln\!\left(\frac{\alpha_{\mathrm{target}} \cdot n}{1 - \alpha_{\mathrm{target}}}\right)$$
231
-
232
- - $n$ = số old tasks = `len(spectral_signatures)`
233
- - $\alpha_{\mathrm{target}}$ = target routing weight (default 0.8)
234
- - Đảm bảo w_cur ≈ 80% bất kể tổng số task
235
- - Derivation từ giải phương trình softmax: xem SPECROUTE_IDEA.md Section C2
236
-
237
- **2. Symmetric Inference Routing (thay thế A-row fit tại inference):**
238
- - Sau training, B≠0 → SVD(B@A) cho meaningful signatures
239
- - Gọi `prepare_inference_routing()` trước prediction
240
- - Inference: TẤT CẢ tasks (kể cả current) dùng cùng σ²-weighted Rayleigh quotient
241
- - Loại bỏ hoàn toàn asymmetry A-row vs SVD → measurement symmetry
242
-
243
- **3. Threshold 0.995 (match ROOT, thay vì 0.980):**
244
- - Bảo toàn null-space capacity cho tasks sau
245
- - Capacity: d/(r·(1-ε)) = 512/(8·0.005) = 12,800 tasks (rất dư)
246
-
247
- ### Code Changes
248
-
249
- **`t5_specroute.py`:**
250
- - `compute_spectral_routing()`:
251
- - Training: A-row fit + β(n) tự động từ len(spectral_signatures)
252
- - Inference: dùng `_current_task_svd` (SVD-based fit) cho current task
253
- - Thêm `prepare_inference_routing()`: tính SVD(B@A) cho current task's LoRA
254
- - Thêm `_target_routing_alpha` config parameter
255
- - Xóa `training_bias` cố định
256
-
257
- **`run_t5.py`:**
258
- - Thêm `target_routing_alpha` argument (default 0.8)
259
- - Gọi `model.encoder.prepare_inference_routing()` trước inference
260
-
261
- **Shell script: `T5_small/gen_script_long_order3_t5_small_specroute_v3.sh`:**
262
- - `--target_routing_alpha 0.8` (thay `--training_bias 1.0`)
263
- - `--threshold 0.995` (thay 0.980)
264
- - `--transthreshold 0.995` (thay 0.980)
265
-
266
- ### Kỳ vọng
267
- - Adaptive bias → tasks 8+ nhận ≈80% routing weight → có thể học đúng label vocabulary
268
- - Symmetric inference → routing chính xác hơn tại eval → EM>0 cho imdb/sst2/wic
269
- - Threshold 0.995 → bảo vệ tốt hơn + routing margin lớn hơn (Theorem 1)
270
-
271
- ### Kết quả (Long Order 3, T5-Small, 10 epochs/task, threshold=0.995, α=0.8)
272
-
273
- | # | Task | ROOT EM | V3 EM (Final) | Δ EM | V3 rougeL | ROOT rougeL |
274
- |---|------|---------|---------------|------|-----------|-------------|
275
- | 1 | yelp | 56.01 | 35.96 | -20.05 | 62.36 | — |
276
- | 2 | amazon | 52.05 | 36.63 | -15.42 | 61.98 | — |
277
- | 3 | mnli | 34.07 | 0.07 | -34.00 | 0.07 | — |
278
- | 4 | cb | 3.57 | 0.00 | -3.57 | 0.00 | — |
279
- | 5 | copa | 42.00 | 46.00 | **+4.00** | 46.00 | — |
280
- | 6 | qqp | 76.96 | 76.96 | **+0.00** | 76.96 | — |
281
- | 7 | rte | 45.85 | 0.00 | -45.85 | 14.80 | — |
282
- | 8 | imdb | 89.51 | 0.00 | -89.51 | 0.02 | — |
283
- | 9 | sst2 | 85.21 | 0.00 | -85.21 | 0.00 | — |
284
- | 10 | dbpedia | 98.16 | 48.83 | -49.33 | 57.60 | — |
285
- | 11 | agnews | 88.37 | 53.70 | -34.67 | 59.83 | — |
286
- | 12 | yahoo | 57.28 | 1.34 | -55.94 | 3.09 | — |
287
- | 13 | multirc | 50.52 | 53.73 | **+3.21** | 53.73 | — |
288
- | 14 | boolq | 60.43 | 61.65 | **+1.22** | 61.65 | — |
289
- | 15 | wic | 55.49 | 0.00 | -55.49 | 0.00 | — |
290
- | | **AP** | **59.70** | **33.77** | **-25.93** | **41.17** | **61.66** |
291
-
292
- > Kết quả chạy trên Kaggle T4, log tại `logs/t5_small_improve/log_script_long_order3_t5_small_specroute_v3`
293
-
294
- ### Phân tích chi tiết V3
295
-
296
- **Cải thiện so với V2** (V2: AP=30.73 → V3: AP=33.77, +3.04 pts):
297
- - rte: EM=0.36→0 (giảm, routing inference vẫn lỗi)
298
- - dbpedia: 71.95→48.83 (giảm — regression!), agnews: 68.21→53.70 (regression)
299
- - copa: 47.00→46.00 (tương đương), multirc: 55.42→53.73 (tương đương)
300
- - yelp: 35.91→35.96, amazon: 36.58→36.63 (không đổi)
301
- - Phần cải thiện chủ yếu từ threshold 0.995 bảo vệ null-space tốt hơn
302
-
303
- **⚠️ REGRESSION so với V2**: dbpedia và agnews giảm đáng kể → Symmetric SVD inference WORSE hơn A-row inference cho multi-class tasks!
304
-
305
- **3 nhóm vấn đề tồn tại**:
306
-
307
- | Nhóm | Tasks | Biểu hiện | Root cause |
308
- |------|-------|-----------|------------|
309
- | 1. Không học được (training failure) | cb, imdb, sst2, wic, yahoo | train_loss cao (>1.34), eval_em=0 từ đầu | GPM null-space saturation → A_k ⊥ sentiment subspace |
310
- | 2. Catastrophic forgetting | yelp, amazon, rte | EM peak cao (54%, 48%, 21%), final thấp hơn | Routing accuracy giảm khi có nhiều tasks |
311
- | 3. Mode collapse | mnli | EM stuck ≈31% (= 1/3 priors) | Model collapse sang "neutral" mode |
312
-
313
- **Nguyên nhân gốc — GPM-induced Routing Ambiguity (Định lý)**:
314
-
315
- Gọi $A_k \in \mathbb{R}^{r \times d}$ là LoRA-A của task $k$, các hàng được GPM-project orthogonal với $\{A_1, ..., A_{k-1}\}$. Với task $k' > k$ có phân phối input tương tự ($P(h|k') \approx P(h|k)$), spectral score:
316
 
317
- $$\text{score}(h; A_{k'}) = \frac{1}{r}\sum_{i=1}^r \frac{(a_i^{(k')} \cdot h)^2}{\|h\|^2} \leq \text{score}(h; A_k)$$
318
-
319
- *bất đẳng thức này đúng với mọi $h \sim P(h|k')$* $A_{k'}$ bị ép orthogonal với dominant subspace của $k$, dominant subspace đó cũng là dominant subspace của $k'$.
320
-
321
- **Hệ quả trực tiếp**: imdb inputs → score cao với yelp LoRA hơn imdb LoRA → routed sai.
322
 
323
  ---
324
 
325
- ## Version 2.1 Performance Optimization (Thin QR+SVD)
326
-
327
- ### Vấn đề
328
- SpecRoute V1 dùng full SVD(512×512) per forward pass dù rank(B@A)≤8. Lãng phí compute.
329
-
330
- ### Tối ưu: Thin QR+SVD (ZERO accuracy loss)
331
-
332
- **Áp dụng cho**: `compute_spectral_signatures()` (offline, after training).
333
- **KHÔNG áp dụng cho**: current task routing (V2 dùng A rows → không cần SVD).
334
-
335
- **Nguyên lý toán học**: Vì rank(B@A) ≤ r = 8, ta decompose qua 2 QR nhỏ + 1 SVD 8×8:
336
- 1. QR(B) → Q_B(512×8), R_B(8×8) — cost O(m·r²)
337
- 2. QR(A^T) → Q_A(512×8), R_A(8×8) — cost O(n·r²)
338
- 3. SVD(R_B @ R_A^T) → U_s, S, Vh_s — cost O(r³) = O(512) operations
339
- 4. Vt_full = Vh_s @ Q_A^T — cost O(n·r²)
340
-
341
- **Nghĩa toán học ĐỒNG NHẤT** — không phải approximation.
342
-
343
- **Benchmark (CPU, 512×512 matrix, r=8)**:
344
- - Full SVD: 12.55 ms/call → 150.6 ms per forward (12 calls)
345
- - Thin QR+SVD: 0.067 ms/call → 0.8 ms per forward
346
- - **Speedup: 186×**
347
- - Relative error: ~1e-6 (machine precision)
348
-
349
- ### Code Changes
350
-
351
- **`t5_specroute.py`**:
352
- - Thêm hàm `_thin_svd_low_rank(B, A, device)`: QR decomposition + SVD 8×8 + recover
353
- - `compute_spectral_routing()`: thay `torch.linalg.svd(B@A, ...)` bằng `_thin_svd_low_rank(B, A)`
354
- - `compute_spectral_signatures()`: tương tự
355
 
356
- ### Tác động
 
 
 
357
 
358
- | Component | Trước | Sau |
359
- |-----------|-------|-----|
360
- | SVD per signature compute | ~12.55ms | ~0.067ms |
361
- | Speedup | — | **186×** |
362
- | Accuracy loss | — | 0 (exact, error ~1e-6) |
363
 
364
- > V2 không còn dùng SVD per forward cho current task (dùng A rows thẳng).
365
- > Thin QR+SVD chỉ dùng cho `compute_spectral_signatures()` sau khi training xong mỗi task.
366
-
367
- ### Đề xuất
368
-
369
- V2 đã tắt replay (`data_replay_freq=-1`), match ROOT. Runtime ước tính ngang ROOT (~4-5h trên T4).
370
 
371
  ---
372
 
373
- ## Version 4.0 SpecRoute V4: Spectrally-Conditioned LoRA Training (C4)
374
-
375
- ### Motivation
376
- V3 addresses routing and protection, but single-task LoRA quality remains limited by:
377
- 1. **Gradient distortion**: Frozen A (after InfLoRA null-space projection) has non-orthogonal columns → B gradients are distorted
378
- 2. **Low effective rank**: CE loss alone doesn't encourage full utilization of LoRA's rank-r budget
379
 
380
- ### Methodology (C4)
381
- Two complementary components:
382
 
383
- **C4.1 Preconditioned Gradient**: Apply $(AA^T + \epsilon I)^{-1/2}$ to B's gradient after backward, equalizing gradient magnitudes across all rank directions. Computed ONCE after `get_reg_matrix()` (A is frozen → constant preconditioner).
 
 
 
384
 
385
- **C4.2 Spectral Entropy Regularization**: $\mathcal{L} = \mathcal{L}_{CE} + \lambda \sum_\ell (\log r - H_\ell)$ where $H_\ell$ is spectral entropy of the $\ell$-th LoRA layer. Efficient QR trick: $O(r^3)$ instead of full SVD.
 
 
 
 
 
 
386
 
387
  ### Hyperparameters
388
- | Parameter | Value | Role |
389
- |-----------|-------|------|
390
- | `lambda_entropy` | 0.01 | Weight of spectral entropy loss |
391
- | `use_preconditioning` | True | Enable gradient preconditioning |
392
- | `precond_eps` | 1e-6 | Numerical stability |
393
- | `entropy_warmup_ratio` | 0.1 | 10% warmup before enabling entropy loss |
394
-
395
- ### Code Changes
396
- 1. **`cl_trainer_specroute.py`**:
397
- - Added C4 params to `__init__` (lambda_entropy, use_preconditioning, precond_eps, entropy_warmup_ratio)
398
- - Added `precompute_preconditioners()`: eigendecomposition of AA^T $(AA^T+\epsilon I)^{-1/2}$
399
- - Added `_compute_spectral_entropy_loss()`: QR trick → SVD of r×r matrix → entropy
400
- - Added `_apply_preconditioning()`: post-backward gradient modification
401
- - Modified `training_step()`: entropy loss + preconditioning
402
-
403
- 2. **`run_t5.py`**:
404
- - 4 new args: lambda_entropy, use_preconditioning, precond_eps, entropy_warmup_ratio
405
- - Pass to SpecRoute_Trainer constructor
406
- - Call `precompute_preconditioners()` after `get_reg_matrix()`
407
-
408
- 3. **V4 shell script**: `gen_script_long_order3_t5_small_specroute_v4.sh`
409
-
410
- ### Ablation Plan
411
- | Experiment | Precond | Entropy | Purpose |
412
- |------------|---------|---------|---------|
413
- | V3 (baseline) | | | Current best |
414
- | V4a | | | Isolate preconditioning |
415
- | V4b | | | Isolate entropy |
416
- | V4 (full) | | | Full C4 |
417
-
418
- ### Kỳ vọng
419
- - Preconditioning: faster convergence, especially for tasks where A has high condition number
420
- - Entropy: higher effective rank richer LoRA representations better generalization
421
- - Combined: both effects are orthogonal and additive
422
- - Risk: entropy regularization may hurt tasks that genuinely need low-rank updates (mitigated by warmup + modest λ)
423
-
424
- ### Bug Fixes (trước khi chạy)
425
-
426
- 3 bugs được phát hiện fix trong `cl_trainer_specroute.py`:
427
-
428
- | # | Bug | Fix |
429
- |---|-----|-----|
430
- | 1 | `A.T @ A` shape (512,512) thay vì (8,8) preconditioner | Sửa thành `A @ A.T` |
431
- | 2 | Cross-attention layers có d_out≠d_in → `assert` crash | Thay `assert` bằng `continue` |
432
- | 3 | `nan_to_num_` guard bị xóa → NaN gradients | Khôi phục sau preconditioning |
433
-
434
- > Tất cả 3 bugs đều về `precompute_preconditioners()` / `_apply_preconditioning()`. V4 log (`log_script_long_order3_t5_small_specroute_v4`) = **0 bytes** — experiment bị crash trước khi output do bug #1.
435
-
436
- ### Kết quả
437
- *(Chưa chạy ��� cần chạy lại sau khi fix bugs)*
438
-
439
- ---
440
-
441
- ## Version 5.0 SpecRoute V5: Prototype Routing (Giải quyết GPM-induced Routing Ambiguity)
442
-
443
- ### Động lực: Phân tích Điều kiện Trực giao
444
-
445
- **Câu hỏi**: cần nới lỏng orthogonality constraint (GPM null-space projection) hay không?
446
-
447
- **Phân tích:**
448
- ROOT GainLoRA dùng **cùng** GPM orthogonality trên LoRA-A (InfLoRA) và đạt AP=59.70. Vậy orthogonality không phải là bottleneck — routing mới là vấn đề.
449
-
450
- GPM orthogonality phục vụ 2 mục đích:
451
- 1. **Protection**: Đảm bảo $\nabla_{B_k}$ không interferent với $B_j A_j$ cũ → **CẦN THIẾT**
452
- 2. **Routing signal** (trong V1-V3): Spectral fit dùng LoRA subspace → **BỊ HAI** khi tasks cùng domain
453
-
454
- > **Kết luận**: Giữ nguyên strict orthogonality cho protection (backbone giống ROOT). Tách biệt routing khỏi LoRA subspace bằng prototype routing.
455
-
456
- **Về "suy kiệt không gian"**: Với d=512, r=8, ε=0.995: capacity = d/(r·(1-ε)) = 12,800 tasks. Không gian không suy kiệt về mặt lượng. Vấn đề thực sự: *các hướng quan trọng* (sentiment subspace) bị captured bởi task đầu tiên → tasks sau không thể dùng các hướng đó cho LoRA-A → representation bị hạn chế. Nhưng ROOT cũng bị hạn chế tương tự và vẫn đạt AP=59.70 nhờ routing tốt.
457
-
458
- ### thuyết: GPM-Routing Paradox
459
-
460
- > **GPM-Routing Paradox**: GPM ép $A_k \perp A_{k'}$ cho $k' > k$. Với tasks cùng domain, $A_{k'}$ bị tách khỏi dominant input subspace. Spectral routing đo alignment với LoRA subspace → misroute.
461
-
462
- $$P(h|k') \approx P(h|k) \implies \alpha_{k'}(h) \ll \alpha_k(h) \quad \forall h \sim P(h|k')$$
463
-
464
- **Giải pháp: Prototype routing trong input embedding space** (decoupled from GPM):
465
-
466
- $$w(h) = \text{softmax}\!\left(\frac{[\cos(h, \mu_1), \ldots, \cos(h, \mu_T)]}{\tau}\right)$$
467
-
468
- $\mu_k$ = normalized running mean of attention-masked input embeddings during task $k$ training.
469
-
470
- **Lý thuyết nền tảng (LDA — Linear Discriminant Analysis)**:
471
-
472
- Dưới Gaussian mixture $P(h|k) = \mathcal{N}(\mu_k, \Sigma)$ với shared covariance, nearest centroid classification là Bayes-optimal. Cosine similarity trên normalized centroids tương đương nearest centroid cho unit-norm data.
473
-
474
- Prototype routing:
475
- - **GPM-immune**: μ_k sống trong embedding space, không bị GPM project
476
- - **Zero-replay**: chỉ cần running mean (d scalars per task)
477
- - **Drift-free**: frozen embedding table → μ_k stationary (Proposition 1)
478
- - **Same-domain discriminable**: μ_yelp μ_imdb vocabulary khác (restaurant vs movie)
479
-
480
- ### Code Changes (ĐÃ IMPLEMENT)
481
-
482
- **`t5_specroute.py`:**
483
- - `T5Stack.__init__()`: thêm `task_prototypes`, `_current_prototype_sum/count`, `_current_task_prototype`
484
- - `_update_prototype(h_batch)`: accumulate running mean (gọi tự động trong `forward()`)
485
- - `finalize_prototype()`: normalize prototype sau khi train xong
486
- - `compute_spectral_routing()`:
487
- - Training: A-row fit + adaptive β (KHÔNG ĐỔI)
488
- - Inference: prototype cosine similarity (MỚI) khi có đủ prototypes, fallback spectral nếu không
489
- - `T5Stack.forward()`:
490
- - Fix masked mean: `.sum() / mask_count` thay `.mean()` (tránh dilution bởi padding)
491
- - Tự động gọi `_update_prototype()` trong mọi training forward pass (kể cả task 1)
492
-
493
- **`run_t5.py`:**
494
- - Load task prototypes cùng lúc spectral signatures
495
- - Gọi `finalize_prototype()` + save `task_prototype.pt` sau training
496
-
497
- **`SPECROUTE_IDEA.md`:**
498
- - Thêm C2.1 Prototype Routing (inference-time, V5)
499
- - Cập nhật Code-Idea Alignment table
500
-
501
- **`gen_script_long_order3_t5_small_specroute_v5.sh`:**
502
- - Copy từ V4 (giữ nguyên C4 params: preconditioning + entropy)
503
- - Prototype routing tự động khi có prototype files — KHÔNG cần flag mới
504
-
505
- ### So sánh Architecture
506
-
507
- | Component | ROOT | V3 (Spectral) | V5 (Prototype) |
508
- |-----------|------|---------------|----------------|
509
- | Training routing | Learned MLP | A-row + adaptive β | A-row + adaptive β |
510
- | Inference routing | Learned MLP | SVD spectral fit | **Prototype cosine** |
511
- | Routing params | trans_input + prompt_key | None | **μ_k (512 per task)** |
512
- | GPM on routing | ✓ (trans_input) | ✗ | ✗ |
513
- | Same-domain | ✓ (learned) | ✗ (paradox) | **✓ (vocabulary diff)** |
514
- | Protection | GPM LoRA-A | GPM LoRA-A | GPM LoRA-A |
515
- | Single-task quality | Standard CE | Standard CE | **C4 (precond + entropy)** |
516
-
517
- ### Kỳ vọng
518
- - **imdb, sst2, wic**: EM > 0 → prototype discriminates vocabulary distributions
519
- - **yelp, amazon**: EM regain (giảm forgetting) → đúng routing
520
- - **mnli**: mode collapse giảm (phụ thuộc prototype quality cho NLI)
521
- - **AP(EM) target**: > 45 (prototype fixes routing + C4 improves quality)
522
-
523
- ### Kết quả
524
- *(Chưa chạy — cần chạy `gen_script_long_order3_t5_small_specroute_v5.sh`)*
525
 
526
  ---
527
 
528
  ## Changelog
529
 
530
- | Date | Version | Change Type | Description |
531
- |------|---------|-------------|-------------|
532
- | 2025-XX-XX | V1.0 | Initial | First experiment baseline SpecRoute vs ROOT GainLoRA |
533
- | 2025-XX-XX | V2.0 (hủy) | ~~Replay~~ | ~~Thêm experience replay~~ **BỊ HỦY** do vi phạm zero-replay constraint |
534
- | 2025-XX-XX | V2.0 | Bug fix + Fair | A-row routing (fix cold-start), training bias β=1.0, threshold 0.980, fair BSZ=32 |
535
- | 2025-XX-XX | V2.1 | Perf Optimization | Thin QR+SVD (~186× speedup per SVD, zero accuracy loss) |
536
- | 2026-03-17 | V2.0 | **Results** | AP(EM)=30.73 vs ROOT=59.70. 4 tasks EM=0 (imdb/sst2/wic/cb misrouting), 2 catastrophic forgetting |
537
- | 2026-03-17 | V3.0 | **Methodology** | Adaptive bias β(n)=τ·ln(α·n/(1-α)), symmetric SVD inference routing, threshold→0.995 |
538
- | 2026-03-17 | V4.0 | **C4 Implementation** | Preconditioned gradient + spectral entropy regularization for single-task LoRA quality |
539
- | 2026-03-19 | V3.0 | **Results** | AP(EM)=33.77, AP(rougeL)=41.17. imdb/sst2/wic/cb/rte/mnli vẫn fail — GPM routing ambiguity confirmed |
540
- | 2026-03-19 | V4.0 | **Bug Fix** | 3 bugs fixed: A@A.T, assert→continue cross-attention, nan_to_num_ guard. Log was 0 bytes (crash) |
541
- | 2026-03-19 | V5.0 | **Proposal** | Prototype routing — replace spectral SVD fit with cosine distance to task mean embeddings |
542
- | 2026-03-19 | V5.0 | **Implementation** | Prototype routing (3 bugs fixed: init scope, cosine shape, eval prototype). Spectral entropy QR bug fixed (pre-existing). Separate prototype_temperature=0.01. Diagnostic logging. |
 
1
+ # Experiment Versions SpecRoute (T5-small, Long Order 3)
2
 
3
+ **Backbone**: google/flan-t5-small (d_model=512, 8 enc+8 dec layers)
4
+ **LoRA**: r=8, target=Q+V, InfLoRA (only B trained, A frozen kaiming)
5
+ **Task order (15)**: yelp → amazon → mnli → cb → copa → qqp → rte → imdb → sst2 → dbpedia → agnews → yahoo → multirc → boolq → wic
6
+ **Settings**: zero-replay, lr=3e-4, epochs=10, threshold=0.995
7
 
8
  ---
9
 
10
+ ## ROOT BaselineGainLoRA + InfLoRA
11
+
12
+ **Script**: `gen_script_long_order3_t5_small_gainlora_inflora.sh`
13
+ **Method**: Learned MLP routing (trans_input + prompt_key), LoRA GPM (ESA), KL distill
14
+
15
+ ### Kết quả cuối (sau 15 task)
16
+
17
+ | Task | EM | rougeL |
18
+ |------|---:|-------:|
19
+ | yelp | 56.01 | 70.36 |
20
+ | amazon | 52.05 | 67.08 |
21
+ | mnli | 34.07 | 34.07 |
22
+ | cb | 3.57 | 3.57 |
23
+ | copa | 42.00 | 42.00 |
24
+ | qqp | 76.96 | 76.96 |
25
+ | rte | 45.85 | 45.85 |
26
+ | imdb | 89.51 | 89.51 |
27
+ | sst2 | 85.21 | 85.21 |
28
+ | dbpedia | 98.16 | 98.16 |
29
+ | agnews | 88.37 | 88.38 |
30
+ | yahoo | 57.28 | 57.35 |
31
+ | multirc | 50.52 | 50.52 |
32
+ | boolq | 60.43 | 60.43 |
33
+ | wic | 55.49 | 55.49 |
34
+ | **AP (unweighted)** | **59.70** | **61.66** |
35
+ | **AP (weighted)** | **67.28** | **70.44** |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
 
37
  ---
38
 
39
+ ## V2Spectral Routing (SpecRoute ban đầu)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
+ **Thay đổi so với ROOT**: Thay MLP routing bằng spectral routing (SVD-based Rayleigh quotient), bỏ KL distill + data replay.
42
+ **AP(EM)**: 30.73 (unweighted)
43
+ **Vấn đề chính**: 4 task EM=0 (imdb, sst2, cb, wic) do misrouting label format mismatch. mnli, rte catastrophic forgetting.
 
 
44
 
45
  ---
46
 
47
+ ## V3Adaptive Bias + Symmetric Inference Routing
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
+ **Thay đổi**:
50
+ - Adaptive training bias: β = T·ln(α·n_old/(1−α)), target_routing_alpha=0.8
51
+ - Symmetric inference routing: prepare_inference_routing() cho current task
52
+ - Threshold 0.995 (matches ROOT)
53
 
54
+ **AP(EM)**: 27.66 (unweighted) **REGRESSION** từ V2
55
+ **Nguyên nhân**: V3 code chạy bằng V2 SCRIPT (threshold=0.98 thay vì 0.995). Ngoài ra, train-inference routing mismatch vẫn tồn tại.
 
 
 
56
 
57
+ **Kết luận V2-V3**: SVD routing HẠN CHẾ CẤU TRÚC không phân biệt được same-domain tasks (do GPM forces A_k ⊥ A_j → spectral signatures collapse).
 
 
 
 
 
58
 
59
  ---
60
 
61
+ ## V5Prototype Routing + Preconditioning + Entropy
 
 
 
 
 
62
 
63
+ **Script**: `T5_small/gen_script_long_order3_t5_small_specroute_v5.sh`
64
+ **Logs**: `/logs/t5_small_improve/gen_script_long_order3_t5_small_specroute_v5/`
65
 
66
+ ### Motivation (GPM-Routing Paradox)
67
+ - GPM forces A_k ⊥ A_j → spectral routing via SVD(B@A) fails for same-domain tasks
68
+ - ROOT's MLP routing works vì learned parameters ≠ LoRA subspace
69
+ - **Giải pháp**: Prototype routing at inference — cosine similarity giữa encoder embedding và task prototypes (running mean during training)
70
 
71
+ ### Thay đổi code (6 bugs fixed across 4 dev/review cycles)
72
+ 1. **Prototype routing** (t5_specroute.py): `_update_prototype()`, `finalize_prototype()`, dual-mode inference
73
+ 2. **Entropy QR fix** (cl_trainer_specroute.py): `qr(B.T)→qr(B)`, `qr(A)→qr(A.T)`
74
+ 3. **Prototype temperature** T_proto=0.01 (tách biệt T_train=1.0)
75
+ 4. **Preconditioning** (C4): lambda_entropy=0.01, use_preconditioning=True
76
+ 5. **Init scope fix**: Prototype fields under `if not self.is_decoder`
77
+ 6. **Cosine shape fix**: `.squeeze(-1)` → correct (B,) shape
78
 
79
  ### Hyperparameters
80
+ - lambda_entropy = 0.01
81
+ - use_preconditioning = True
82
+ - threshold = 0.995
83
+ - target_routing_alpha = 0.8
84
+ - lora_r = 8
85
+ - learning_rate = 3e-4
86
+ - num_train_epochs = 10
87
+
88
+ ### Kết quả V5 (so sánh ROOT)
89
+
90
+ | Task | ROOT EM | V5 EM | Δ | ROOT rougeL | V5 rougeL | Δ |
91
+ |------|--------:|------:|--:|------------:|----------:|--:|
92
+ | yelp | 56.01 | 54.64 | -1.37 | 70.36 | 70.45 | +0.09 |
93
+ | amazon | 52.05 | 48.01 | -4.04 | 67.08 | 66.22 | -0.86 |
94
+ | mnli | 34.07 | 33.92 | -0.15 | 34.07 | 33.92 | -0.15 |
95
+ | cb | 3.57 | 0.00 | -3.57 | 3.57 | 0.00 | -3.57 |
96
+ | copa | 42.00 | 44.00 | +2.00 | 42.00 | 44.00 | +2.00 |
97
+ | qqp | 76.96 | 77.83 | +0.87 | 76.96 | 77.83 | +0.87 |
98
+ | rte | 45.85 | 48.01 | +2.17 | 45.85 | 52.71 | +6.86 |
99
+ | imdb | 89.51 | 88.61 | -0.90 | 89.51 | 88.61 | -0.90 |
100
+ | sst2 | 85.21 | 81.19 | -4.01 | 85.21 | 81.19 | -4.01 |
101
+ | dbpedia | 98.16 | 97.67 | -0.49 | 98.16 | 97.83 | -0.33 |
102
+ | agnews | 88.37 | 89.74 | +1.37 | 88.38 | 89.83 | +1.45 |
103
+ | yahoo | 57.28 | 49.66 | -7.62 | 57.35 | 50.37 | -6.98 |
104
+ | multirc | 50.52 | 60.44 | +9.92 | 50.52 | 60.44 | +9.92 |
105
+ | boolq | 60.43 | 61.01 | +0.58 | 60.43 | 61.01 | +0.58 |
106
+ | wic | 55.49 | 58.46 | +2.98 | 55.49 | 58.46 | +2.98 |
107
+ | **AP (unwt)** | **59.70** | **59.55** | **-0.15** | **61.66** | **62.19** | **+0.53** |
108
+ | **AP (wt)** | **67.28** | **66.65** | **-0.63** | **70.44** | **70.42** | **-0.02** |
109
+
110
+ ### So sánh với V3 (prototype routing fix)
111
+
112
+ V3 6 task fail (EM≈0): imdb, sst2, wic, cb, rte, mnli. V5 kết quả:
113
+ - **imdb**: 0 88.61 FIXED
114
+ - **sst2**: 0 81.19 FIXED
115
+ - **wic**: 0 → 58.46 ✅ FIXED
116
+ - **rte**: 0 48.01 ✅ FIXED
117
+ - **mnli**: 0 → 33.92 ✅ FIXED (≈ ROOT 34.07)
118
+ - **cb**: 0 0.00 STILL BROKEN
119
+
120
+ ### Forgetting Analysis (V5)
121
+
122
+ | Task | After Training | Final (15-wic) | Forgetting |
123
+ |------|---------------:|---------------:|-----------:|
124
+ | yelp | 55.82 | 54.64 | -1.17 |
125
+ | amazon | 48.84 | 48.01 | -0.83 |
126
+ | mnli | 34.39 | 33.92 | -0.47 |
127
+ | cb | 0.00 | 0.00 | 0.00 |
128
+ | copa | 44.00 | 44.00 | 0.00 |
129
+ | qqp | 77.82 | 77.83 | +0.01 |
130
+ | rte | 52.71 | 48.01 | -4.69 |
131
+ | imdb | 89.46 | 88.61 | -0.86 |
132
+ | sst2 | 81.42 | 81.19 | -0.23 |
133
+ | dbpedia | 98.18 | 97.67 | -0.51 |
134
+ | agnews | 89.92 | 89.74 | -0.18 |
135
+ | yahoo | 51.96 | 49.66 | -2.30 |
136
+ | multirc | 61.90 | 60.44 | -1.46 |
137
+ | boolq | 61.01 | 61.01 | 0.00 |
138
+ | wic | 58.46 | 58.46 | 0.00 |
139
+ | **Average** | | | **-0.85** |
140
+
141
+ ### Training Loss per Task
142
+
143
+ | Task | Samples | Train Loss | Note |
144
+ |------|--------:|-----------:|------|
145
+ | yelp | 5000 | 0.4017 | OK |
146
+ | amazon | 5000 | 0.4064 | OK |
147
+ | mnli | 3000 | 0.6986 | Moderate |
148
+ | cb | 250 | **4.3962** | KHÔNG HỌC ĐƯỢC |
149
+ | copa | 400 | 0.4071 | OK |
150
+ | qqp | 2000 | 0.2785 | Good |
151
+ | rte | 2000 | 0.7683 | Moderate-high |
152
+ | imdb | 2000 | 0.0993 | Very good |
153
+ | sst2 | 2000 | 0.3200 | Good |
154
+ | dbpedia | 14000 | 0.0536 | Excellent |
155
+ | agnews | 4000 | 0.1756 | Good |
156
+ | yahoo | 10000 | 0.5820 | Moderate |
157
+ | multirc | 2000 | 0.5153 | Moderate |
158
+ | boolq | 2000 | 0.3958 | OK |
159
+ | wic | 2000 | 0.4847 | Moderate |
160
+
161
+ ### CB Failure Analysis
162
+
163
+ CB là task 4 (sớm trong sequence), chỉ có **250 samples** → 8 steps/epoch → **80 total steps**.
164
+ - Loss curve: 5.25 3.63 (giảm nhưng chưa converge, eval_em=0.00 suốt)
165
+ - ROOT cũng gần-fail trên CB (EM=3.57) — CB là inherently difficult task với quá ít data
166
+ - Đây KHÔNG PHẢI lỗi routing — đây là lỗi single-task learning quality với extreme low resources
167
+
168
+ ### Đánh giá tổng thể V5
169
+
170
+ **Thành công lớn**: Prototype routing giải quyết GPM-Routing Paradox 5/6 task từ EM≈0 lên mức ≈ROOT.
171
+
172
+ **AP ngang ROOT**: V5 AP(EM)=59.55 ≈ ROOT 59.70 (-0.15). V5 AP(rougeL)=62.19 > ROOT 61.66 (+0.53).
173
+
174
+ **Forgetting rất thấp**: Average forgetting chỉ -0.85 (excellent cho 15-task sequence).
175
+
176
+ **Vấn đề còn tồn tại**:
177
+ 1. **CB = 0.00**: Extreme low-resource task (250 samples). ROOT cũng gần-fail (3.57). Cần strategy riêng cho tiny datasets.
178
+ 2. **yahoo -7.62 vs ROOT**: V5 yahoo after_training=51.96, ROOT yahoo=57.28. Đây là single-task quality issue, không phải forgetting.
179
+ 3. **sst2 -4.01 vs ROOT**: V5=81.19 vs ROOT=85.21. Tương tự, single-task gap.
180
+ 4. **amazon -4.04 vs ROOT**: V5=48.01 vs ROOT=52.05.
181
+ 5. **rte forgetting -4.69**: Cao nhất trong tất cả tasks. rte trained=52.71 nhưng bị decay → 48.01.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
 
183
  ---
184
 
185
  ## Changelog
186
 
187
+ | Date | Version | AP(EM) unwt | AP(rougeL) unwt | Key Change |
188
+ |------|---------|------------:|----------------:|------------|
189
+ | - | ROOT (baseline) | 59.70 | 61.66 | GainLoRA + InfLoRA |
190
+ | - | V2 | ~30.73 | - | Spectral routing (SVD) |
191
+ | - | V3 | ~27.66 | - | Adaptive bias + symmetric (WRONG script) |
192
+ | - | V5 | **59.55** | **62.19** | Prototype routing + entropy + preconditioning |
 
 
 
 
 
 
 
results/review_1.md DELETED
@@ -1,154 +0,0 @@
1
- # Review Round 1 — V5 Prototype Routing
2
-
3
- **Reviewer role**: Objective reviewer (code + theory + methodology)
4
- **Scope**: V5 implementation (t5_specroute.py, run_t5.py), SPECROUTE_IDEA.md theory, experiment design
5
-
6
- ---
7
-
8
- ## 1. Code Correctness
9
-
10
- ### 1.1 Bugs Found and Fixed (DEV Round 1)
11
-
12
- | # | Severity | Description | Status |
13
- |---|----------|-------------|--------|
14
- | B1 | **Critical** | Prototype fields (`_current_prototype_sum`, etc.) only initialized under `if not run_single:`. First task (run_single=True) crashes with `AttributeError` when `_update_prototype()` is called in `forward()`. | ✅ Fixed — moved to `if not self.is_decoder:` block |
15
- | B2 | **Critical** | `.squeeze(-1)` in cosine sim changes shape (B,1)→(B,), then division by h_norm (B,1) broadcasts to **(B,B)** instead of (B,1). Routing weights would be completely wrong. | ✅ Fixed — removed `.squeeze(-1)` |
16
- | B3 | **Important** | During training eval, `_current_task_prototype` is None (not finalized) → prototype routing falls back to spectral routing → mid-training eval metrics don't reflect prototype quality. | ✅ Fixed — use running mean as temporary prototype |
17
-
18
- ### 1.2 Remaining Issues
19
-
20
- | # | Severity | Description | Recommendation |
21
- |---|----------|-------------|----------------|
22
- | R1 | **Medium** | `_compute_spectral_entropy_loss()` uses `qr(B.T)` and `qr(A)` — mathematically incorrect QR trick. Should be `qr(B)` and `qr(A.T)` to match `_thin_svd_low_rank()`. Current code computes an *approximation* of true singular values (off by orthogonal rotation factor $W = Q_{B'}^T Q_{A'}$). | Fix: change `qr(B.T) → qr(B)`, `qr(A) → qr(A.T)` in entropy loss. Low priority since regularization is approximate by nature. |
23
- | R2 | **Low** | Prototype accumulation moves data to CPU every forward pass (`.cpu()` in `_update_prototype`). Minimal overhead (~16KB per call) but adds GPU→CPU transfer per batch. | Acceptable. Alternative: accumulate on GPU, move once at finalize. Not worth optimizing unless profiling shows bottleneck. |
24
- | R3 | **Low** | No direct test for prototype routing quality before running full 15-task experiment. | Consider: quick sanity check — after training 2 tasks, verify cos(h_task1, μ_task1) > cos(h_task1, μ_task2) on a few samples. |
25
-
26
- ### 1.3 Shape Analysis (Verified ✓)
27
-
28
- ```
29
- _update_prototype:
30
- h_batch: (B, d_model) → .sum(dim=0) → (d_model,) ✓
31
-
32
- compute_spectral_routing (inference, prototype branch):
33
- h_flat: (B, d_model)
34
- h_norm: (B, 1)
35
- proto p: (d_model,) → p.unsqueeze(-1): (d_model, 1)
36
- matmul(h_flat, p.unsqueeze(-1)): (B, 1) ← correct after .squeeze(-1) removed
37
- / h_norm: (B, 1) / (B, 1) = (B, 1) ← correct
38
- fits: list of (B, 1) tensors
39
- cat(fits, dim=1): (B, n_tasks) ✓
40
- softmax → (B, n_tasks) → unsqueeze(2) → (B, n_tasks, 1) ✓
41
- ```
42
-
43
- ---
44
-
45
- ## 2. Theoretical Soundness
46
-
47
- ### 2.1 GPM-Routing Paradox — **Sound ✓**
48
-
49
- The paradox is well-formulated and mathematically valid:
50
- - GPM forces $\mathcal{S}_k \perp \mathcal{S}_j$ → same-domain tasks lose access to dominant input directions
51
- - Spectral affinity $\alpha_k(h) = \|V_k^T h\|^2 / \|h\|^2$ depends on LoRA subspace alignment
52
- - For $h \sim P(h|\text{imdb})$ with imdb's A in yelp's null-space: $\alpha_{\text{imdb}}(h) \ll \alpha_{\text{yelp}}(h)$
53
-
54
- **Critical validation**: ROOT uses the SAME GPM on LoRA-A and achieves AP=59.70. This confirms the issue is routing (spectral ≠ learned MLP), not orthogonality itself.
55
-
56
- ### 2.2 Prototype Routing — **Conditionally Sound**
57
-
58
- **Strengths:**
59
- 1. **Embedding space is GPM-immune** — prototypes live outside LoRA subspace ✓
60
- 2. **Zero-replay, drift-free** — frozen embedding table, O(d) storage per task ✓
61
- 3. **Task instruction prefix** provides strong discriminative signal (not discussed in theory but practically important)
62
-
63
- **Weaknesses / Assumptions:**
64
- 1. **LDA optimality assumption**: Requires Gaussian mixture with shared covariance — real NLP data violates this. Prototype routing is a heuristic, not provably optimal.
65
- 2. **Same-vocabulary tasks**: yelp vs amazon (both product reviews) may have very similar $\mu$. Cosine similarity may not discriminate well between these.
66
- 3. **Multi-modal tasks**: Tasks like mnli have diverse input distributions (entailment/contradiction/neutral). The mean $\mu_{\text{mnli}}$ averages over modes → poor representative prototype.
67
-
68
- ### 2.3 Training-Inference Gap
69
-
70
- **Concern**: Training uses A-row fit + bias (subspace signal), inference uses prototype cosine (vocabulary signal). These are fundamentally different routing mechanisms measuring different properties.
71
-
72
- - During training: B learns under 80% routing weight to current LoRA (forced by adaptive β)
73
- - During inference: prototype router selects expert based on vocabulary distribution
74
- - The expert's B was optimized under forced routing, not under prototype-based routing
75
-
76
- **Mitigation**: This gap also exists in ROOT (learned MLP vs frozen MLP at inference). It's inherent to soft-routing CL. The adaptive β ensures sufficient gradient flow regardless of routing mechanism.
77
-
78
- ---
79
-
80
- ## 3. Methodology Assessment
81
-
82
- ### 3.1 Alignment with Theory
83
-
84
- | Theory claim | Implementation | Aligned? |
85
- |---|---|---|
86
- | GPM-immune routing | Prototype from frozen embeddings | ✓ |
87
- | Same-domain discrimination | cosine(μ_k, h) captures vocabulary differences | ✓ (conditional on vocabulary divergence) |
88
- | Zero-replay | Running mean, O(d) per task | ✓ |
89
- | Drift-free | Frozen embedding table | ✓ |
90
- | Dual-mode routing | Train=A-row+β, Inference=prototype | ✓ |
91
- | C4 orthogonal to routing | Preconditioning + entropy unchanged | ✓ |
92
-
93
- ### 3.2 Missing Design Decisions
94
-
95
- 1. **Temperature calibration**: Cosine similarities are typically in [0.7, 0.99] range. With `attn_temperature=0.01`:
96
- - cos_diff = 0.03 → score_diff = 3.0 → reasonable routing
97
- - But if all tasks have cosines ≈ 0.95 ± 0.01: softmax([95, 94.9, 94.8, ...]) ≈ near-uniform
98
- - **No analysis of expected cosine separation** provided in SPECROUTE_IDEA.md
99
-
100
- 2. **No hard routing option**: The idea doc mentions $k^* = \arg\max_k \cos(h, \mu_k)$ as an option but it's not implemented. Hard routing might outperform soft routing for clearly separable tasks.
101
-
102
- 3. **No per-layer prototypes**: Prototypes are computed from input embeddings (layer 0). If later layers' representations are more discriminative, per-layer prototypes could improve routing.
103
-
104
- ---
105
-
106
- ## 4. Potential Failure Modes
107
-
108
- ### 4.1 Prototype Collision
109
- **Scenario**: Tasks with very similar vocabulary distributions (yelp/amazon/imdb all sentiment).
110
- **Impact**: Routing errors → EM = 0.
111
- **Likelihood**: Medium for yelp↔amazon, Low for yelp↔imdb (movie vs restaurant vocabulary).
112
- **Mitigation**: Task instruction prefix in T5 provides additional discrimination.
113
-
114
- ### 4.2 Temperature Sensitivity
115
- **Scenario**: `attn_temperature=0.01` is the same for spectral (training) and prototype (inference).
116
- **Impact**: Spectral fits ∈ [0, 0.5], cosine ∈ [0.7, 0.99]. The same temperature maps different score ranges.
117
- **Mitigation**: Prototype softmax only runs during inference (no gradient coupling). Wrong temperature only causes over-soft/over-hard routing, not gradient issues.
118
-
119
- ### 4.3 Cold-Start Prototype Quality
120
- **Scenario**: During first few training steps, running mean is computed from very few samples.
121
- **Impact**: Early eval metrics may be noisy; prototype quality improves over training.
122
- **Likelihood**: Low risk — eval steps typically happen after enough batches.
123
-
124
- ### 4.4 Spectral Entropy Bug (Pre-existing)
125
- **Issue**: `_compute_spectral_entropy_loss()` computes `svdvals(R_B' @ R_A'^T)` where the QR decomposition is applied to transposed matrices compared to `_thin_svd_low_rank()`.
126
- **Mathematical analysis**: Current code computes `svdvals(R_{B^T} @ R_A^T)` ≠ `svdvals(R_B @ R_{A^T})` (the correct singular values of BA).
127
- **Impact on V5**: The entropy regularizer still approximately encourages rank diversity, but the gradient direction is slightly wrong. This pre-dates V5 and affects V3/V4 equally.
128
-
129
- ---
130
-
131
- ## 5. Recommendations
132
-
133
- ### Priority: High
134
- 1. **Fix spectral entropy QR bug** (R1): Change `qr(B.T) → qr(B)` and `qr(A) → qr(A.T)` in `_compute_spectral_entropy_loss()`. This ensures mathematically exact singular values for regularization.
135
-
136
- ### Priority: Medium
137
- 2. **Add temperature analysis**: After training 2-3 tasks, log the cosine similarity distribution between test samples and all prototypes. Verify discrimination margin. Adjust temperature if needed.
138
- 3. **Consider separate `inference_temperature`**: Allow prototype routing to use a different temperature than spectral routing during training.
139
-
140
- ### Priority: Low
141
- 4. **Prototype sanity check**: Before full 15-task run, do a 2-task pilot to verify cos(h, μ_correct) > cos(h, μ_wrong).
142
- 5. **Document instruction prefix advantage**: The theory section doesn't mention that CL benchmark tasks have unique instruction prefixes, which strongly benefits prototype routing.
143
-
144
- ---
145
-
146
- ## 6. Overall Assessment
147
-
148
- **Verdict**: V5 design is **theoretically well-motivated** and **implementation is correct** (after DEV Round 1 fixes). The GPM-Routing Paradox is a genuine insight that explains V3's AP=33.77 failure mode. Prototype routing is a reasonable solution that decouples routing from the LoRA subspace.
149
-
150
- **Main risk**: Prototype discrimination quality for same-vocabulary tasks. The approach may struggle with yelp↔amazon but should handle the critical failing tasks (imdb, sst2, wic, cb) well due to vocabulary divergence.
151
-
152
- **Expected outcome**: AP(EM) improvement from 33.77 → 40-50 range, driven primarily by recovering the 6 failing tasks. Whether it exceeds ROOT's 59.70 depends on C4's effectiveness + prototype routing quality.
153
-
154
- **Pre-existing issue worth fixing**: Spectral entropy QR bug (R1) — affects all versions, easy fix, mathematically correct.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
results/review_2.md DELETED
@@ -1,184 +0,0 @@
1
- # Review Round 2 — V5 Deeper Analysis
2
-
3
- **Reviewer role**: Objective reviewer (deeper architectural / edge case / theoretical analysis)
4
- **Scope**: Building on review_1 findings; focusing on issues review_1 missed
5
-
6
- ---
7
-
8
- ## 1. Prototype Discrimination Quality — **Key Risk**
9
-
10
- ### 1.1 Common-Word Domination Problem
11
-
12
- The prototype $\mu_k = \frac{1}{N}\sum_i \bar{h}_i^{(k)}$ averages over ALL tokens including stop words (the, a, is, of, to). These high-frequency tokens have large aggregate weight in the mean, making prototypes for different tasks closer than expected.
13
-
14
- **Quantitative estimate**: For a sentence of 80 tokens, ~40 are stop words (50% typical in English). The stop word embeddings are shared across ALL tasks → they push all prototypes toward a common center. The task-discriminative signal comes from:
15
- 1. **Content words** (~40 tokens): "movie", "restaurant", "hypothesis", etc.
16
- 2. **Instruction prefix** (~15-20 tokens): unique per task in CL benchmarks.
17
-
18
- For tasks like yelp vs amazon (both review tasks), content words overlap significantly. Discrimination relies heavily on the instruction prefix.
19
-
20
- **Severity**: Medium. The instruction prefix provides a constant, distinctive signal in every sample. But for tasks with very similar instructions (mnli vs rte, both NLI), discrimination may be weak.
21
-
22
- ### 1.2 Score Range and Temperature
23
-
24
- Cosine similarities between task prototypes are likely **very high** (>0.9) because:
25
- - All prototypes share common English embedding structure
26
- - T5 embeddings are not unit-normalized; the common component dominates
27
-
28
- With `attn_temperature = 0.01` and cosines in [0.92, 0.97]:
29
- - Score range: [92, 97], max gap ≈ 5
30
- - softmax([97, 95, 93, 92, ...]) → dominant task gets ~50-73% weight
31
- - This is reasonable soft routing
32
-
33
- But with cosines in [0.95, 0.96] (near-identical):
34
- - Score range: [95, 96], gap ≈ 1
35
- - softmax([96, 95.8, 95.5, ...]) → nearly uniform → routing fails
36
-
37
- **Recommendation**: After first few tasks, LOG the cosine similarity matrix between all prototypes. If max gap < 2 (in temperature-scaled space), consider:
38
- - Lower temperature (harder routing)
39
- - Mean-centering prototypes: $\tilde{\mu}_k = \mu_k - \bar{\mu}$ to remove the common component
40
- - Or TF-IDF weighting (but adds complexity)
41
-
42
- ---
43
-
44
- ## 2. Edge Cases Verified ✓
45
-
46
- | Case | Handling | Correct? |
47
- |------|----------|----------|
48
- | First task (run_single=True) | Prototype accumulated, no routing, saved after training | ✓ |
49
- | Task 2 with 1 old prototype | _n_expected=2, _protos=[current_running_mean, old_proto]=2 → prototype routing active | ✓ |
50
- | Missing prototype files | _protos < _n_expected → spectral fallback | ✓ |
51
- | All zeros attention_mask | mask_count.clamp(min=1) → avg=0 → routing still works (cos(0, μ)=0 for all) | ✓ |
52
- | Gradient checkpointing | Prototype update at T5Stack.forward() top, not inside checkpointed blocks → runs once | ✓ |
53
- | Decoder | is_decoder=True → routing block skipped, uses encoder's weights | ✓ |
54
- | Mixed precision (fp16/bf16) | Prototype accumulated in float32 on CPU; cast at routing time | ✓ |
55
- | Memory | Single (d_model,) tensor per task; cleared after finalize | ✓ |
56
-
57
- ---
58
-
59
- ## 3. Masked Mean Change — Impact Analysis
60
-
61
- V5 changed `avg_inputs_embeds` from `.mean()` to `.sum()/mask_count`:
62
- - V3: $h = \frac{1}{L}\sum_i m_i e_i$ (divided by total seq length including padding)
63
- - V5: $h = \frac{\sum_i m_i e_i}{\sum_i m_i}$ (divided by non-padding count)
64
-
65
- **Impact on routing**: All scoring functions (A-row fit, spectral fit, cosine sim) are scale-invariant (Rayleigh quotient / cosine). So the magnitude change doesn't affect routing scores.
66
-
67
- **Impact on direction**: The direction changes because padding tokens contribute 0 to numerator but inflate denominator in V3. V5 gives the true mean direction. This is more correct.
68
-
69
- **Impact on training routing vs V3**: The A-row fit during training uses the same `avg_inputs_embeds`. Since fit ∝ $\|A h\|^2 / \|h\|^2$, both the projection and normalization scale together. Net effect: negligible for same-padding batches, slight direction improvement for mixed-padding batches.
70
-
71
- **Conclusion**: The change is beneficial and backward-compatible. ✓
72
-
73
- ---
74
-
75
- ## 4. Theoretical Gaps
76
-
77
- ### 4.1 No Formal Guarantee for Prototype Routing
78
-
79
- The SPECROUTE_IDEA.md C2.1 section invokes LDA optimality under Gaussian mixture assumption. However:
80
- - **Real embeddings are NOT Gaussian**: Token embedding means have complex geometry
81
- - **Shared covariance assumption violated**: Different tasks have different variance structures (sentiment has high variance on affect dimensions; factual tasks have high variance on entity dimensions)
82
- - **Bayes risk bound inapplicable**: Without equal covariance, cosine similarity is not Bayes-optimal
83
-
84
- **However**: Prototype routing doesn't need to be Bayes-optimal — it just needs to outperform spectral routing (which has a provable failure mode for same-domain tasks). The bar is low given V3's AP=33.77.
85
-
86
- ### 4.2 No Analysis of Prototype Drift Across Training
87
-
88
- The running mean is computed during task k's training. But training modifies lora_B, which affects:
89
- - The training loss landscape → different gradient sizes → different effective contribution per sample?
90
-
91
- No — the prototype uses frozen embeddings (inputs_embeds), which are independent of lora_B updates. The prototype is truly static w.r.t. model parameters. ✓
92
-
93
- ### 4.3 Info Leakage from Eval During Training
94
-
95
- Bug fix B3 uses running mean as temporary prototype during training eval. The running mean is computed from TRAINING data → it reflects the training distribution. Eval data comes from a held-out split → slightly different distribution.
96
-
97
- **Impact**: Minimal. The training and eval distributions for the same task are very close. The running mean converges to the true task mean quickly (after ~50 batches).
98
-
99
- ---
100
-
101
- ## 5. Architecture Consistency
102
-
103
- ### 5.1 Training vs Inference Routing — Consistent?
104
-
105
- During training:
106
- - w_cur ≈ 0.8 (adaptive β), w_old ≈ 0.2/N (spectral routing)
107
- - ΔW = w_cur · B_cur · A_cur · h + Σ w_old_j · B_j · A_j · h
108
-
109
- During inference:
110
- - w_k = softmax(cos(h, μ_k)/τ) for ALL k
111
- - ΔW = Σ w_k · B_k · A_k · h
112
-
113
- The current task's contribution during training (80%) is much higher than during inference (maybe 30-60% depending on prototype discrimination). This means the model is trained with a routing distribution that's different from inference.
114
-
115
- **Is this a problem?** In ROOT, the same asymmetry exists (learned routing at training time vs frozen routing at inference). It's standard in CL. The key is that the current task gets sufficient gradient signal during training (80% weight ensures this).
116
-
117
- ### 5.2 Order of Prototypes vs LoRA Weights
118
-
119
- Loading order: `previous_lora_list_sig.reverse()` → oldest first.
120
- - spectral_sigs[0] = oldest task
121
- - task_protos[0] = oldest task
122
- - previous_lora_weights loaded in same order
123
-
124
- In compute_spectral_routing, fits[0] = current task, fits[1:] = old tasks (oldest first).
125
- In prototype routing, _protos[0] = current, _protos[1:] = task_protos (oldest first).
126
-
127
- Both match. ✓
128
-
129
- ---
130
-
131
- ## 6. Performance Predictions
132
-
133
- ### 6.1 Tasks That Should Improve (routing fix)
134
- - **imdb, sst2** (EM was 0): Different instruction + vocabulary from yelp/amazon → prototypes should separate → EM > 0
135
- - **wic** (EM was 0): Word-in-context task, very different vocabulary from sentiment → should separate well
136
- - **cb, rte** (EM was 0): NLI tasks, different from sentiment → moderate prototype separation
137
- - **yelp, amazon** (EM ~36): Should maintain or improve with correct routing
138
-
139
- ### 6.2 Tasks That Might NOT Improve
140
- - **mnli** (EM ~2): Multi-modal distribution (entailment/contradiction/neutral). Prototype averages over modes → weak signal. Also, mnli is trained late (task 4 in order 3) → still OK for prototype separation from earlier tasks.
141
-
142
- ### 6.3 Overall AP Projection
143
- If imdb/sst2/wic go from 0 → ROOT-level (~50-70 range):
144
- - AP gain ≈ (50+60+55) / 15 / 3 ≈ +11 pts (assuming ~55 avg EM for these 3)
145
- - If cb/rte also recover: additional +5-8 pts
146
- - Net AP: 33.77 + 11 + 6 ≈ **50-51 AP(EM)**
147
- - Compared to ROOT=59.70: still ~9 pts gap (from overall representation quality)
148
-
149
- C4 (preconditioning + entropy) could close another 3-5 pts if it improves single-task quality.
150
-
151
- ---
152
-
153
- ## 7. New Recommendations
154
-
155
- ### 7.1 (High) Consider Mean-Centering Prototypes
156
- After all prototypes are collected, subtract the global mean:
157
- $$\tilde{\mu}_k = \mu_k - \frac{1}{T}\sum_j \mu_j$$
158
-
159
- This removes the common English embedding component and highlights task-discriminative differences. Implement in `finalize_prototype()` or at routing time.
160
-
161
- **Caution**: This requires all prototypes to be available before routing, which conflicts with the streaming CL setup where we only have old prototypes + current. A compromise: subtract the running mean of old prototypes from both old and current prototypes.
162
-
163
- ### 7.2 (Medium) Log Cosine Similarity Matrix
164
- Add diagnostic logging during final evaluation: compute and print the pairwise cosine similarity matrix between all prototypes. This reveals:
165
- - Which tasks have similar prototypes (collision risk)
166
- - Whether temperature is appropriate (check score gaps)
167
-
168
- ### 7.3 (Low) Consider Prototype + Spectral Ensemble
169
- Instead of pure prototype routing, combine prototype cosine with spectral fit:
170
- $$s_k(h) = \alpha \cdot \cos(h, \mu_k) + (1-\alpha) \cdot \text{spectral\_fit}(h; V_k, \sigma_k)$$
171
-
172
- This handles both same-domain tasks (prototype helps) and orthogonal tasks (spectral helps). But adds a hyperparameter α — violates simplicity principle.
173
-
174
- ---
175
-
176
- ## 8. Overall Assessment (Round 2)
177
-
178
- **Code quality**: Good after DEV Round 1+2 fixes. No remaining bugs found. All edge cases handled correctly.
179
-
180
- **Main risk**: Prototype discrimination quality — specifically for tasks with similar instruction prefixes. The T5 CL benchmark tasks generally have distinctive instructions, so this should work in practice.
181
-
182
- **Temperature**: `attn_temperature=0.01` maps cosine scores [0.9, 0.97] to [90, 97] → softmax gives reasonable routing. Acceptable without tuning, but logging recommended.
183
-
184
- **Overall confidence**: 75% that V5 significantly improves AP over V3 (33.77). 50% that it reaches ROOT (59.70). The gap would be closed by better single-task quality (C4) and potentially mean-centering (R7.1).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
results/review_3.md DELETED
@@ -1,129 +0,0 @@
1
- # Review Round 3 — V5 Pipeline & Temperature
2
-
3
- **Reviewer role**: Objective reviewer (pipeline correctness, integration, experiment readiness)
4
- **Scope**: Full pipeline flow, temperature analysis, shell script verification
5
-
6
- ---
7
-
8
- ## 1. Critical Finding: Temperature Mismatch — **FIXED**
9
-
10
- ### Problem
11
- All V3/V4/V5 shell scripts omit `--attn_temperature`, using the default `routing_temperature = 1.0`. For spectral routing (V3), this produced near-uniform routing at inference (fits ∈ [0, 0.5], softmax barely discriminative). For prototype routing (V5), the situation would be even worse: cosine ∈ [0.85, 0.95], softmax with T=1.0 → near-uniform.
12
-
13
- **Impact if unfixed**: Prototype routing would provide almost zero discrimination. V5 would behave similarly to uniform averaging over all LoRAs → worse than V3.
14
-
15
- ### Analysis
16
-
17
- | Temperature | Spectral fit gap | Cosine sim gap | Ratio (best:worst) |
18
- |-------------|-----------------|----------------|-------------------|
19
- | T=1.0 | 0.3 → exp(0.3)=1.35 | 0.05 → exp(0.05)=1.05 | Near-uniform |
20
- | T=0.1 | 3.0 → exp(3)=20 | 0.5 → exp(0.5)=1.65 | Mild discrimination |
21
- | T=0.01 | 30 → exp(30)→∞ | 5.0 → exp(5)=148 | Semi-hard routing |
22
-
23
- ### Fix Applied
24
- Added `self._prototype_temperature = 0.01` as an algorithmic constant (not a hyperparameter). Prototype routing uses this separate temperature, while training spectral routing continues using `routing_temperature` (1.0 default, with adaptive β compensating).
25
-
26
- This ensures:
27
- - **Training**: β formula works correctly with T=1.0, giving w_cur ≈ 80%. ✓
28
- - **Inference (prototype)**: T=0.01 gives semi-hard routing. For gap=0.05: ratio=148:1. ✓
29
- - **Inference (fallback spectral)**: Uses T=1.0, same as V3. Fair comparison. ✓
30
- - **Experiment isolation**: The ONLY difference between V3 and V5 at inference is the routing mechanism (prototype vs spectral), not the temperature.
31
-
32
- ---
33
-
34
- ## 2. Pipeline Flow Verification
35
-
36
- ### Full sequence for task k (k ≥ 2):
37
- ```
38
- 1. Load model + fresh LoRA
39
- 2. Load old LoRA weights (reversed: oldest first)
40
- 3. Load spectral signatures + task prototypes
41
- 4. get_reg_matrix() → project A into null-space (InfLoRA)
42
- 5. precompute_preconditioners() → (AA^T+εI)^{-1/2} for lora_B gradients
43
- 6. Training loop:
44
- a. forward() → compute avg_inputs_embeds (masked mean)
45
- b. _update_prototype(avg_inputs_embeds) → accumulate running mean
46
- c. compute_spectral_routing() → training branch (A-row + β)
47
- d. training_step() → CE + entropy reg + preconditioning
48
- 7. Save LoRA weights + spectral signatures
49
- 8. finalize_prototype() → normalize μ_k, save task_prototype.pt
50
- 9. get_representation() → collect GPM bases (may call forward → accumulates garbage prototype data, but harmless since already finalized+saved)
51
- 10. is_inference = True
52
- 11. prepare_inference_routing() → SVD of current task's LoRA (fallback only)
53
- 12. predict() → forward in eval mode → prototype routing (separate T=0.01)
54
- ```
55
-
56
- **Verified**: No race conditions, no data leakage, no gradient flow issues. ✓
57
-
58
- ### Edge case: get_representation after finalize_prototype
59
- `get_representation()` does forward passes that call `_update_prototype()`, accumulating data after finalize already reset `_current_prototype_sum`. This is harmless:
60
- - The saved prototype (step 8) is the correct one
61
- - The garbage accumulation after finalize is never used (predict restores from finalize result)
62
- - `_current_task_prototype` (set by finalize) is NOT modified by `_update_prototype`
63
-
64
- ---
65
-
66
- ## 3. Shell Script Verification
67
-
68
- | Item | V5 Script | Expected | Status |
69
- |------|-----------|----------|--------|
70
- | `--model_name specroute` | ✓ | specroute | ✓ |
71
- | `--threshold 0.995` | ✓ | ESA threshold | ✓ |
72
- | `--target_routing_alpha 0.8` | ✓ | Adaptive β target | ✓ |
73
- | `--lambda_entropy 0.01` | ✓ | C4 entropy weight | ✓ |
74
- | `--use_preconditioning True` | ✓ | C4 preconditioner | ✓ |
75
- | `--precond_eps 1e-6` | ✓ | Preconditioner regularization | ✓ |
76
- | `--entropy_warmup_ratio 0.1` | ✓ | Entropy warmup | ✓ |
77
- | `--attn_temperature` | NOT SET | Uses default 1.0 | ✓ (training uses 1.0, prototype uses hardcoded 0.01) |
78
- | lora_r=8, alpha=32 | ✓ | Same as ROOT | ✓ |
79
- | 15 tasks, order 3 | ✓ | Long benchmark | ✓ |
80
- | `--num_train_epochs 10` | ✓ | Same as ROOT | ✓ |
81
-
82
- No changes needed to the shell script.
83
-
84
- ---
85
-
86
- ## 4. Code Cleanliness Post-Fixes
87
-
88
- ### All bugs fixed across 3 rounds:
89
-
90
- | Round | Bug | File | Fix |
91
- |-------|-----|------|-----|
92
- | DEV 1 | Prototype fields not initialized for run_single | t5_specroute.py | Moved to `if not is_decoder:` block |
93
- | DEV 1 | `.squeeze(-1)` causes (B,B) shape in cosine sim | t5_specroute.py | Removed .squeeze(-1) |
94
- | DEV 1 | Training eval falls back to spectral (no prototype) | t5_specroute.py | Use running mean as temp prototype |
95
- | DEV 2 | Entropy QR uses wrong decomposition | cl_trainer_specroute.py | Changed qr(B.T)→qr(B), qr(A)→qr(A.T) |
96
- | DEV 3 | No prototype discrimination diagnostics | t5_specroute.py | Added pairwise cosine similarity logging |
97
- | DEV 3 | T=1.0 gives near-uniform prototype routing | t5_specroute.py | Added separate _prototype_temperature=0.01 |
98
-
99
- ### Remaining non-blocking items:
100
- 1. **Prototype accumulation during get_representation**: Benign, no fix needed
101
- 2. **Mean-centering**: Deferred to V5.1 pending diagnostic data
102
- 3. **Type annotation**: `attn_temperature` is `Optional[int]`, should be `Optional[float]` — works fine in practice (Python int→float coercion)
103
-
104
- ---
105
-
106
- ## 5. Experiment Readiness Assessment
107
-
108
- **Ready to run?** ✅ YES
109
-
110
- **Checklist:**
111
- - [x] All 3 source files compile (t5_specroute.py, cl_trainer_specroute.py, run_t5.py)
112
- - [x] 6 bugs fixed (3 critical, 1 medium, 2 minor)
113
- - [x] Prototype routing with correct temperature
114
- - [x] Diagnostic logging for prototype quality
115
- - [x] Shell script configured correctly
116
- - [x] SPECROUTE_IDEA.md updated with C2.1 theory
117
- - [x] experiment_versions.md documented
118
-
119
- **Expected behavior on first run:**
120
- - Log: `[SpecRoute] Finalized task prototype (N samples, d=512)` after each task's training
121
- - Log: `[SpecRoute] Loaded K spectral signatures, K task prototypes` at start of each task ≥2
122
- - Log: `[SpecRoute] Prototype cosine matrix (n=K+1): off-diag min=..., max=..., mean=...` at prediction time
123
- - Routing weights during training: current task ≈80% (adaptive β with T=1.0)
124
- - Routing weights during inference: dominant weight on correct prototype (T=0.01)
125
-
126
- **What to monitor:**
127
- 1. `prototype cosine matrix` log → check min gap between tasks. If max off-diag > 0.99: discrimination poor, need mean-centering
128
- 2. eval_em during training of imdb/sst2/wic → should be > 0 (prototype active via running mean)
129
- 3. Final AP(EM) → target > 45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
results/review_4.md DELETED
@@ -1,130 +0,0 @@
1
- # Review Round 4 — Final Comprehensive Assessment
2
-
3
- **Reviewer role**: Final sign-off reviewer (code, theory, methodology, experiment readiness)
4
- **Scope**: Complete V5 — all files, all changes, all theory
5
-
6
- ---
7
-
8
- ## 1. Final Code Audit
9
-
10
- ### 1.1 Modified Files Summary
11
-
12
- | File | Lines changed | Changes | Status |
13
- |------|-------------|---------|--------|
14
- | `t5_specroute.py` | ~80 added/modified | Prototype fields, `_update_prototype()`, `finalize_prototype()`, dual-mode inference routing, masked mean fix, diagnostic logging, separate temperature | ✅ Compiles, logically correct |
15
- | `cl_trainer_specroute.py` | 3 lines | Entropy QR fix: `qr(B.T)→qr(B)`, `qr(A)→qr(A.T)`, removed shape check | ✅ Compiles, mathematically correct |
16
- | `run_t5.py` | ~15 added | Load task prototypes, finalize+save after training | ✅ Compiles, pipeline correct |
17
- | `SPECROUTE_IDEA.md` | ~60 added | C2.1 section (paradox + prototype routing + dual temperature) | ✅ Theory documented |
18
- | `experiment_versions.md` | ~80 added/modified | V5 section with full analysis and code changes | ✅ Experiment documented |
19
-
20
- ### 1.2 Bug Resolution Tracking
21
-
22
- | # | Bug | Severity | Found | Fixed | Verified |
23
- |---|-----|----------|-------|-------|----------|
24
- | B1 | Prototype fields not init for run_single | Critical | Review 1 | DEV 1 | ✅ |
25
- | B2 | `.squeeze(-1)` causes (B,B) shape | Critical | Review 1 | DEV 1 | ✅ |
26
- | B3 | Training eval uses spectral fallback | Important | Review 1 | DEV 1 | ✅ |
27
- | B4 | Entropy QR wrong decomposition | Medium | Review 1 | DEV 2 | ✅ |
28
- | B5 | T=1.0 kills prototype discrimination | Critical | Review 3 | DEV 3 | ✅ |
29
- | B6 | Old task loop over-indented | Minor | Review 3 | DEV 3 | ✅ |
30
-
31
- All 6 bugs found and fixed. 3 were critical (would cause crash or complete misfunction).
32
-
33
- ---
34
-
35
- ## 2. Theoretical Assessment
36
-
37
- ### 2.1 GPM-Routing Paradox — **Valid ✓**
38
- - ROOT uses same GPM + achieves AP=59.70 → orthogonality is not the bottleneck
39
- - Spectral routing fails for same-domain tasks due to subspace orthogonality
40
- - Formally stated and correct
41
-
42
- ### 2.2 Prototype Routing Solution — **Sound with caveats**
43
- - Decouples routing from LoRA subspace ✓
44
- - Zero-replay, drift-free, O(d) per task ✓
45
- - LDA justification is heuristic (not strict Gaussian mixture) but reasonable
46
- - **Residual risk**: same-vocabulary tasks (yelp/amazon) may have similar prototypes
47
-
48
- ### 2.3 Dual-Temperature Design — **Well-motivated ✓**
49
- - Training: T=1.0 with adaptive β → w_cur ≈ 80%. Proven correct.
50
- - Inference prototype: T=0.01 → semi-hard routing. Matches prototype metric learning practices.
51
- - V3↔V5 comparison is fair: training routing is identical, only inference mechanism differs.
52
-
53
- ### 2.4 C4 (Preconditioning + Entropy) — **Orthogonal, unaffected ✓**
54
- - Entropy QR bug fixed (computation now matches `_thin_svd_low_rank`)
55
- - Preconditioning unchanged
56
- - Both operate on LoRA weights, independent of routing mechanism
57
-
58
- ---
59
-
60
- ## 3. Methodology Integrity
61
-
62
- ### 3.1 Changes from V3 → V5
63
-
64
- | Aspect | V3 | V5 | Justified? |
65
- |--------|----|----|-----------|
66
- | Training routing | A-row + β (T=1.0) | Same | ✓ (no change) |
67
- | Inference routing | SVD spectral (T=1.0) | Prototype cosine (T=0.01) | ✓ (fixes paradox) |
68
- | avg_inputs_embeds | `.mean()` (includes padding) | `.sum()/mask_count` (correct) | ✓ (bug fix, scale-invariant) |
69
- | Entropy QR | Wrong `qr(B.T),qr(A)` | Correct `qr(B),qr(A.T)` | ✓ (bug fix) |
70
- | Prototype accumulation | N/A | Running mean in forward() | ✓ (zero overhead) |
71
- | Prototype storage | N/A | task_prototype.pt per task | ✓ (512 floats per task) |
72
-
73
- ### 3.2 Confounding Variables
74
- - **Masked mean fix**: Could slightly change training routing direction, but scale-invariant scoring means impact is negligible
75
- - **Entropy QR fix**: Affects C4 regularization quality — this pre-existing bug was also present in V3. Fixing it makes V5 strictly better but slightly unfair vs V3. Acceptable since it's a bug fix.
76
- - **Temperature**: Training T=1.0 is unchanged. Inference T differs but this IS the routing mechanism change (not a confound).
77
-
78
- ---
79
-
80
- ## 4. Risk Assessment
81
-
82
- | Risk | Severity | Likelihood | Mitigation |
83
- |------|----------|------------|------------|
84
- | Prototypes too similar for nearby tasks | High impact | Medium | Diagnostic logging added; mean-centering available as V5.1 |
85
- | T_proto=0.01 too aggressive | Medium | Low | Routing quality visible via routing weight logs |
86
- | First task prototype missing | High impact | Low | Prototype saved for all tasks including first (run_single) |
87
- | get_representation corrupts prototype | High | None | Verified: finalize+save before get_representation |
88
- | Mixed V3/V5 checkpoints | Medium | Low | Graceful fallback to spectral routing |
89
-
90
- ---
91
-
92
- ## 5. Final Verdict
93
-
94
- ### Code Quality: **A-**
95
- Clean implementation with proper separation of concerns. All edge cases handled. Diagnostic logging for production debugging. Minor deduction for: hardcoded `_prototype_temperature` (could be configurable) and benign prototype accumulation during `get_representation`.
96
-
97
- ### Theoretical Rigor: **B+**
98
- GPM-Routing Paradox is genuine and well-formulated. Prototype routing is reasonable but not provably optimal (LDA assumption is approximate). The dual-temperature is well-justified. Missing: formal bound on prototype routing accuracy.
99
-
100
- ### Experiment Design: **A**
101
- Fair comparison with V3 (same training routing). Controlled change (only inference mechanism). Proper documentation. Diagnostic tools for post-hoc analysis.
102
-
103
- ### Ready for Execution: **YES ✅**
104
-
105
- **Expected AP(EM) range**: 40-55 (high confidence: 35-60)
106
- - Lower bound: prototypes similar for some tasks → partial recovery → +7 over V3
107
- - Upper bound: prototypes discriminative for all tasks + C4 effective → approaches ROOT
108
-
109
- ### What Comes Next (if AP < 50):
110
- 1. Check diagnostic logs: are prototypes separable?
111
- 2. If max off-diag cosine > 0.95: implement mean-centering (V5.1)
112
- 3. If routing looks correct but EM still low: investigate single-task quality (C4 tuning)
113
- 4. If both routing and quality are fine: the gap to ROOT is from learned routing's adaptability
114
-
115
- ---
116
-
117
- ## 6. Files Delivered
118
-
119
- | File | Type | Description |
120
- |------|------|-------------|
121
- | [t5_specroute.py](improve_gainlora/src/t5_specroute.py) | Code | V5 prototype routing + all fixes |
122
- | [cl_trainer_specroute.py](improve_gainlora/src/cl_trainer_specroute.py) | Code | Entropy QR fix |
123
- | [run_t5.py](improve_gainlora/src/run_t5.py) | Code | Prototype load/save |
124
- | [SPECROUTE_IDEA.md](improve_gainlora/SPECROUTE_IDEA.md) | Theory | C2.1 section + dual-temperature |
125
- | [experiment_versions.md](results/experiment_versions.md) | Tracking | V5 section complete |
126
- | [review_1.md](results/review_1.md) | Review | Code + theory review |
127
- | [review_2.md](results/review_2.md) | Review | Edge cases + prediction |
128
- | [review_3.md](results/review_3.md) | Review | Pipeline + temperature fix |
129
- | [review_4.md](results/review_4.md) | Review | Final assessment |
130
- | [gen_script_long_order3_t5_small_specroute_v5.sh](improve_gainlora/T5_small/gen_script_long_order3_t5_small_specroute_v5.sh) | Script | V5 experiment script |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
results/specroute_v2_diagnosis.md DELETED
@@ -1,174 +0,0 @@
1
- # SpecRoute V2 → V3: Chẩn đoán toàn diện & Kế hoạch khắc phục
2
-
3
- ## 1. Tổng quan kết quả V2
4
-
5
- | Metric | SpecRoute V2 | ROOT (GainLoRA-InfLoRA) | Gap |
6
- |--------|-------------|------------------------|-----|
7
- | AP(EM) | 30.73 | 59.70 | **-28.97** |
8
- | AP(rougeL) | 38.00 | 61.66 | **-23.66** |
9
-
10
- ### Phân loại thất bại chi tiết
11
-
12
- **Nhóm 1: EM = 0 suốt quá trình training (LABEL FORMAT MISMATCH)**
13
- | Task | Pos | Prediction | Ground Truth | Nguyên nhân |
14
- |------|-----|-----------|-------------|-------------|
15
- | imdb | 8 | "positive"/"negative" | "Good"/"Bad" | Misrouted → yelp/amazon LoRA |
16
- | sst2 | 9 | "negative" | "Bad" | Misrouted → yelp/amazon LoRA |
17
- | wic | 15 | "the same meaning"/"different" | "True"/"False" | Misrouted → unknown LoRA |
18
- | cb | 4 | "bedroom"/"yes"/"virtuous"/gibberish | "entailment"/"neutral"/"contradiction" | Misrouted → unrelated LoRA |
19
-
20
- **Nhóm 2: Catastrophic Forgetting**
21
- | Task | Best EM | Final EM | Nguyên nhân |
22
- |------|---------|----------|-------------|
23
- | mnli | 31.25 (ep8) | 0.25 | Degenerate → always "neutral" |
24
- | rte | 51.26 (ep4) | 0.36 | Degenerate → always "entailment" |
25
-
26
- **Nhóm 3: Hoạt động bình thường**
27
- | Task | SpecRoute | ROOT | Status |
28
- |------|-----------|------|--------|
29
- | copa | **47.00** | 42.00 | ✅ Better (+5.0) |
30
- | multirc | **55.42** | 50.52 | ✅ Better (+4.9) |
31
- | boolq | **61.44** | 60.43 | ✅ Better (+1.0) |
32
- | qqp | **77.03** | 76.96 | ✅ Tie |
33
-
34
- ---
35
-
36
- ## 2. Chẩn đoán nguyên nhân gốc (Root Cause Analysis)
37
-
38
- ### 2.1 BUG CHỦ YẾU: Constant Training Bias Không Scale Theo Số Task
39
-
40
- **Công thức hiện tại:**
41
- $$\text{fit}_{\text{cur}} = \frac{1}{L}\sum_\ell \frac{\sum_i (a_i \cdot h)^2}{r \|h\|^2} + \beta \quad (\beta = 1.0 \text{ cố định})$$
42
-
43
- **Softmax routing weight cho current task:**
44
- $$w_{\text{cur}} = \frac{e^{(\text{fit}_{\text{cur}})/T}}{e^{(\text{fit}_{\text{cur}})/T} + (n-1) \cdot e^{\text{fit}_{\text{old}}/T}}$$
45
-
46
- Với $\beta = 1.0$, $T = 1.0$, fit_raw ≈ 0.12, fit_old ≈ 0.20:
47
-
48
- | n_tasks | Training $w_{\text{cur}}$ | Inference $w_{\text{cur}}$ |
49
- |---------|--------------------------|---------------------------|
50
- | 1 | 100% | 100% |
51
- | 2 | 71.5% | 48.0% |
52
- | 5 | 38.5% | 18.8% |
53
- | **8 (imdb)** | **26.4%** | **11.7%** |
54
- | 10 | 21.8% | 9.3% |
55
- | **15 (wic)** | **15.2%** | **6.2%** |
56
-
57
- **Hậu quả:**
58
- - Task 8 (imdb): Chỉ 26.4% routing weight khi training → 73.6% gradient signal đi qua LoRA cũ → model không thể học label "Good"/"Bad"
59
- - Task 15 (wic): Chỉ 15.2% routing weight → gần như không học được gì
60
-
61
- **So sánh với ROOT:** ROOT dùng sigmoid độc lập cho mỗi task: $w_k = |2\sigma(4\cos(x, \text{key}_k)) - 1|$. Không có zero-sum competition → mỗi task có thể đạt weight ~0.8 bất kể số task.
62
-
63
- ### 2.2 BUG THỨ HAI: Bất đối xứng A-row fit vs SVD fit (Train-Test Gap)
64
-
65
- **Training:** $\text{fit}_{\text{cur}} = \text{A-row fit} + \beta$
66
- **Inference:** $\text{fit}_{\text{cur}} = \text{A-row fit}$ (no bias)
67
-
68
- Hai formula đo fit trên **hai thang đo khác nhau**:
69
- - **A-row fit** (current task): $\frac{\sum_i (a_i \cdot h)^2}{r \|h\|^2}$ — uniform weighting
70
- - **SVD fit** (old tasks): $\frac{\sum_i \sigma_i^2 (v_i \cdot h)^2}{\sum_i \sigma_i^2 \|h\|^2}$ — $\sigma^2$-weighted
71
-
72
- Sau null-space projection, A rows bị constrained vào subspace hẹp → A-row fit **hệ thống thấp hơn** SVD fit → old tasks luôn thắng routing tại inference.
73
-
74
- ### 2.3 BUG THỨ BA: Threshold quá thấp (0.980 vs ROOT 0.995)
75
-
76
- - threshold = 0.980 → mỗi task chiếm **nhiều hơn** null-space
77
- - Sau 7 tasks: null-space còn lại cho task 8 rất hẹp
78
- - A_8 rows bị project vào null-space nhỏ → A-row fit cực thấp
79
- - ROOT dùng 0.995 → mỗi task chiếm ít null-space hơn → duy trì capacity cho tasks sau
80
-
81
- ---
82
-
83
- ## 3. Phân tích lý thuyết (Theory-Backed)
84
-
85
- ### 3.1 Softmax Competition Bias (Information Theory)
86
-
87
- Softmax + constant bias vi phạm **principle of maximum entropy** khi số task tăng. Với $n$ tasks và fit gần nhau, softmax converge về phân phối uniform $1/n$ (maximum entropy). Constant bias $\beta$ không đủ để chống lại entropy này khi $n$ lớn.
88
-
89
- **Adaptive bias derivation:** Muốn current task đạt weight $\alpha$ cố định:
90
- $$\alpha = \frac{e^{(f + \beta)/T}}{e^{(f + \beta)/T} + (n-1)e^{f/T}}$$
91
-
92
- Giải cho $\beta$:
93
- $$\boxed{\beta = T \cdot \ln\left(\frac{\alpha(n-1)}{1-\alpha}\right)}$$
94
-
95
- Với $\alpha = 0.8$, $T = 1.0$:
96
- - n=2: $\beta$ = 1.39 → w = 80%
97
- - n=8: $\beta$ = 3.33 → w = 80%
98
- - n=15: $\beta$ = 4.03 → w = 80%
99
-
100
- **Kết nối paper**: Tương tự "bias correction" trong Adam optimizer — bias phải thay đổi theo thời gian để duy trì tính chất thống kê mong muốn.
101
-
102
- ### 3.2 Rayleigh Quotient Symmetry (Linear Algebra)
103
-
104
- Fit formula hiện tại vi phạm **measurement symmetry**: current task và old tasks dùng metric khác nhau. Trong Grassmannian geometry, khoảng cách giữa hai subspace phải dùng cùng một metric.
105
-
106
- **Weighted Rayleigh quotient** (chuẩn cho cả hai):
107
- $$\text{fit}_k(h) = \frac{\sum_{i=1}^r \sigma_{k,i}^2 (v_{k,i} \cdot h)^2}{\sum_{i=1}^r \sigma_{k,i}^2 \cdot \|h\|^2}$$
108
-
109
- Tại inference, current task cũng phải dùng SVD-based fit (SVD có sẵn vì B ≠ 0 sau training).
110
-
111
- **Kết nối paper**: Principal angle theory (Björck & Golub, 1973) — khoảng cách giữa subspaces phải đo bằng canonical angles, tương đương $\sigma$-weighted Rayleigh quotient.
112
-
113
- ### 3.3 Null-Space Capacity Bound (GPM Theory)
114
-
115
- Từ GPM (Saha et al., 2021): với threshold $\tau$, mỗi task chiếm $\leq r(1-\tau)$ dimensions. Capacity cho $n$ tasks:
116
-
117
- $$n_{\max} = \left\lfloor \frac{d}{r(1-\tau)} \right\rfloor$$
118
-
119
- Với d=512, r=8:
120
- - $\tau$ = 0.995 → capacity = 512/(8×0.005) = **12,800 tasks** (rất dư)
121
- - $\tau$ = 0.980 → capacity = 512/(8×0.020) = **3,200 tasks** (vẫn dư nhưng aggressive hơn)
122
-
123
- Threshold 0.995 bảo vệ nhiều capacity hơn cho tasks sau.
124
-
125
- ---
126
-
127
- ## 4. Kế hoạch sửa: SpecRoute V3
128
-
129
- ### Fix 1: Adaptive Training Bias (Bắt buộc)
130
- ```
131
- β = T · ln(α · (n_old) / (1-α)) khi n_old ≥ 1
132
- β = 0 khi n_old = 0
133
- ```
134
- - `n_old = len(self.spectral_signatures)` — tự động từ số signatures đã load
135
- - `α = target_routing_alpha` — config parameter, default 0.8
136
- - Đảm bảo w_cur ≈ 80% bất kể số task
137
-
138
- ### Fix 2: Symmetric Inference Routing (Bắt buộc)
139
- - **Training**: Giữ A-row fit + adaptive bias (cold-start compatible)
140
- - **Inference**: Tính SVD(B@A) cho current task → dùng SVD fit cho TẤT CẢ tasks
141
- - Method: `prepare_inference_routing()` — gọi 1 lần trước inference
142
- - Loại bỏ hoàn toàn asymmetry A-row vs SVD
143
-
144
- ### Fix 3: Threshold = 0.995 (Match ROOT)
145
- - Chỉ thay đổi trong shell script
146
- - Giảm null-space consumption per task
147
- - Bảo toàn capacity cho tasks sau
148
-
149
- ### Không thêm gì khác
150
- - Không thêm KL replay (vi phạm zero-replay settings)
151
- - Không thêm learned routing parameters (mất novelty parameter-free)
152
- - Không thay đổi optimizer/lr/scheduler
153
- - Tôn trọng nguyên tắc: "chỉ cải thiện implement, không over-engineer"
154
-
155
- ---
156
-
157
- ## 5. Code Changes Cụ Thể
158
-
159
- ### File 1: `t5_specroute.py`
160
- 1. Thêm `prepare_inference_routing()` method vào T5Stack
161
- 2. Sửa `compute_spectral_routing()`:
162
- - Training: A-row fit + `adaptive_training_bias` (computed from α and n_old)
163
- - Inference: SVD fit từ `_current_task_svd` (precomputed)
164
- 3. Thêm property `adaptive_training_bias`
165
-
166
- ### File 2: `run_t5.py`
167
- 1. Thêm `target_routing_alpha` vào prompt_config
168
- 2. Gọi `model.encoder.prepare_inference_routing()` trước inference
169
-
170
- ### File 3: `gen_script_long_order3_t5_small_specroute_v3.sh`
171
- 1. `--threshold 0.995`
172
- 2. `--transthreshold 0.995`
173
- 3. `--target_routing_alpha 0.8`
174
- 4. Output dir: `specroute_v3`
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
results/v5_deep_analysis.md ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # V5 Deep Analysis — SpecRoute Prototype Routing
2
+
3
+ ## 1. Tổng quan
4
+
5
+ V5 AP(EM)=59.55, rất gần ROOT=59.70 (Δ=-0.15). Đây là cải tiến vượt bậc so với V2 (30.73) và V3 (27.66).
6
+
7
+ **Kết luận chính**: Prototype routing HOẠT ĐỘNG — giải quyết GPM-Routing Paradox, đưa performance từ ~50% ROOT lên ~100% ROOT.
8
+
9
+ ---
10
+
11
+ ## 2. Phân tích win/loss so với ROOT
12
+
13
+ ### V5 thắng ROOT (7 tasks, avg +2.84):
14
+ | Task | Type | Δ EM | Nhận xét |
15
+ |------|------|-----:|----------|
16
+ | multirc | Reading comprehension | +9.92 | **Cải tiến lớn nhất**. Prototype routing chọn đúng LoRA cho task phức tạp |
17
+ | wic | Word sense disambiguation | +2.98 | V3 fail hoàn toàn, V5 vượt ROOT |
18
+ | rte | NLI (small) | +2.17 | V3 fail, V5 vượt ROOT |
19
+ | copa | Causal reasoning | +2.00 | Slight improvement |
20
+ | agnews | Topic classification | +1.37 | |
21
+ | qqp | Paraphrase detection | +0.87 | |
22
+ | boolq | Yes/No QA | +0.58 | |
23
+
24
+ ### V5 thua ROOT (8 tasks, avg -2.77):
25
+ | Task | Type | Δ EM | Nhận xét |
26
+ |------|------|-----:|----------|
27
+ | yahoo | Topic classification | -7.62 | **Thua nhiều nhất**. Single-task quality gap |
28
+ | amazon | Sentiment (5-class) | -4.04 | Single-task quality |
29
+ | sst2 | Sentiment (binary) | -4.01 | Single-task quality |
30
+ | cb | NLI (tiny) | -3.57 | Both near-zero, CB inherently broken |
31
+ | yelp | Sentiment (5-class) | -1.37 | Small gap |
32
+ | imdb | Sentiment (binary) | -0.90 | Small gap |
33
+ | dbpedia | Topic classification | -0.49 | Negligible |
34
+ | mnli | NLI (large) | -0.15 | Negligible |
35
+
36
+ ### Pattern Analysis
37
+
38
+ **V5 thắng ở**: tasks phức tạp (multirc, wic, rte, copa, boolq) — đây đều là tasks cần routing chính xác. Prototype routing từ embedding space phân biệt tốt hơn MLP routing cho các task có cấu trúc input khác biệt.
39
+
40
+ **V5 thua ở**: sentiment tasks (amazon, sst2, yelp, imdb) và topic classification (yahoo) — đây là các task V5 train_loss vẫn OK nhưng single-task quality thấp hơn ROOT.
41
+
42
+ **Root cause**: SpecRoute KHÔNG có KL distillation loss (đã bỏ ở V2). ROOT dùng KL distill để transfer knowledge giữa tasks → sentiment tasks (giống nhau về domain) được benefit. SpecRoute dùng strict orthogonality (GPM) → mỗi task phải "learn from scratch" trong null-space → yếu hơn cho same-domain tasks.
43
+
44
+ ---
45
+
46
+ ## 3. Forgetting Pattern
47
+
48
+ Average forgetting = -0.85 (rất thấp, tốt hơn expected cho 15-task).
49
+
50
+ **Forgetting cao nhất**:
51
+ - rte: -4.69 (trained 52.71 → final 48.01). rte được train sau qqp (task 7 sau task 6). multirc (task 13) và boolq (task 14) gây forgetting cho rte.
52
+ - yahoo: -2.30 (51.96 → 49.66). Yahoo bị multirc và boolq gây forgetting nhẹ.
53
+ - multirc: -1.46 (61.90 → 60.44). Chỉ boolq và wic sau multirc.
54
+
55
+ **Zero forgetting**: cb (0→0, never learned), copa (44→44), qqp (77.82→77.83), boolq (61.01→61.01), wic (58.46→58.46).
56
+
57
+ **Nhận xét**: GPM protection HOẠT ĐỘNG TỐT. Forgetting rất thấp. Vấn đề chính là SINGLE-TASK QUALITY, không phải forgetting.
58
+
59
+ ---
60
+
61
+ ## 4. CB Failure — Deep Dive
62
+
63
+ CB (CommitmentBank) = 0.00 EM suốt training.
64
+
65
+ **Dữ liệu**: 250 samples, 10 epochs, 8 steps/epoch = 80 total steps.
66
+ Loss: 5.25 → 3.63 (giảm ~31% nhưng eval_em=0% suốt).
67
+
68
+ **Tại sao fail?**
69
+ 1. **Extreme low-resource**: 250 samples quá ít cho 3-class NLI task
70
+ 2. **Epoch 10 vẫn chưa đủ**: Loss chưa converge (vẫn giảm ở step cuối)
71
+ 3. **ROOT cũng gần-fail**: EM=3.57 (chỉ 2/56 test samples đúng)
72
+ 4. **Task đặc thù**: CB answers = "entailment/contradiction/neutral" — 3 labels phức tạp, T5-small khó handle với 250 samples
73
+
74
+ **Giải pháp khả dĩ** (KHÔNG vi phạm zero-replay):
75
+ - Tăng epochs cho tiny datasets (ví dụ: epochs = max(10, 200/steps_per_epoch))
76
+ - Sử dụng weight decay thấp hơn cho tiny datasets
77
+ - **KHÔNG nên ưu tiên**: CB cũng fail ở ROOT, đây là limitation chung không phải của SpecRoute
78
+
79
+ ---
80
+
81
+ ## 5. Single-Task Quality Gap (Yahoo, SST2, Amazon)
82
+
83
+ Đây là vấn đề quan trọng nhất cần giải quyết.
84
+
85
+ ### Yahoo (Δ = -7.62)
86
+ - V5 trained=51.96, ROOT final=57.28
87
+ - Train_loss=0.582 (moderate, not great)
88
+ - Yahoo là task 12/15, có 10000 samples → đủ data
89
+ - **Hypothesis**: Preconditioning + entropy regularization có thể đang interfere với learning cho large-scale topic classification. Hoặc orthogonality constraint quá strict → yahoo phải learn trong subspace nhỏ.
90
+
91
+ ### SST2 (Δ = -4.01)
92
+ - V5 trained=81.42, ROOT=85.21
93
+ - SST2 là task 9, after imdb (task 8 — cùng domain sentiment)
94
+ - GPM forces SST2's A ⊥ IMDB's A → SST2 phải learn trong null-space restricted
95
+ - ROOT's MLP routing cho phép SST2 share knowledge với IMDB → higher accuracy
96
+
97
+ ### Amazon (Δ = -4.04)
98
+ - V5 trained=48.84, ROOT=52.05
99
+ - Amazon (task 2) phải orthogonal với yelp (task 1) — cùng domain 5-class sentiment
100
+ - Tương tự SST2: strict orthogonality hurts same-domain tasks
101
+
102
+ ### Kết luận: Nguyên nhân gốc là STRICT ORTHOGONALITY
103
+
104
+ ROOT không bắt buộc LoRA directions phải orthogonal (GPM chỉ protect, routing qua MLP).
105
+ SpecRoute + InfLoRA bắt buộc A_k ⊥ A_j (GPM on LoRA) → same-domain tasks phải learn trong subspace hạn chế → single-task quality giảm.
106
+
107
+ Đây là trade-off cơ bản: **strict orthogonality = low forgetting BUT lower single-task quality**.
108
+
109
+ ---
110
+
111
+ ## 6. So sánh theoretical expectations
112
+
113
+ Conversation summary ghi V5 expected AP(EM) = 40-55. Actual = 59.55 — **VƯỢT EXPECTATIONS**.
114
+
115
+ Prototype routing giải quyết đúng bài toán đã phân tích (GPM-Routing Paradox). Kế hoạch relaxed orthogonality từ V5 design (η=0.1) chưa rõ có được implement không — cần verify.
116
+
117
+ ---
118
+
119
+ ## 7. Đề xuất cho V6 (bám sát research_rule.txt: theory → weakness → solution)
120
+
121
+ ### Weakness đã nhận diện
122
+ **Single-task quality gap do strict orthogonality** — V5 forgetting chỉ -0.85 (gần zero) nhưng mất -2.77 EM trung bình trên 8 tasks so với ROOT.
123
+
124
+ ### Phân tích lý thuyết
125
+ Strict InfLoRA: A_new ∈ null(P_old) where P_old = Σ A_i A_i^T.
126
+ → Remaining null-space shrinks: dim(null) = d − k·r (với k tasks, rank r).
127
+ → Same-domain tasks (yelp↔amazon, imdb↔sst2) cần similar directions nhưng bị forced vào orthogonal subspaces.
128
+ → B must compensate harder → lower quality.
129
+
130
+ ROOT avoids this: LoRA GPM protects but routing qua learned MLP → tasks CAN share LoRA capacity implicitly.
131
+
132
+ ### Hướng V6 (đề xuất, cần phân tích thêm trước khi implement)
133
+
134
+ **Option A: Relaxed Orthogonality (KHÔNG có trong V5 — đã verify)**
135
+ - orthogonal_relaxation KHÔNG xuất hiện trong V5 script hay cl_trainer_specroute.py
136
+ - V5 dùng STRICT orthogonality (pure InfLoRA GPM)
137
+ - Đề xuất: A_new ∈ (1−η)·null(P_old) + η·P_old — cho phép small overlap
138
+ - η ∈ [0.05, 0.2]: keep forgetting low nhưng improve same-domain quality
139
+
140
+ **Option B: Task-Aware Learning Rate**
141
+ - Tiny tasks (CB, COPA) dùng higher LR hoặc more epochs
142
+ - Adaptive schedule: epochs = max(10, min_steps / steps_per_epoch)
143
+ - Simple, no theory change needed
144
+
145
+ **Option C: Prototype Quality Enhancement**
146
+ - Current prototype = running mean of frozen embeddings → may not discriminate well between similar tasks
147
+ - Could weight prototype by class-conditional means hoặc use PCA of embeddings
148
+ - Cần verify cosine similarity matrix giữa prototypes (diagnostic log)
149
+
150
+ ### Priority
151
+ 1. ~~Verify nếu orthogonal_relaxation có active trong V5~~ → **ĐÃ VERIFY: KHÔNG CÓ** (strict orthogonality)
152
+ 2. **Option A**: Implement relaxed orthogonality — có tiềm năng lớn nhất
153
+ 3. **Option B** cho CB/COPA: simple fix, no theoretical risk
154
+ 4. **Option C** chỉ nếu Option A không đủ
155
+
156
+ ---
157
+
158
+ ## 8. Kết luận
159
+
160
+ V5 là milestone quan trọng: prototype routing **chứng minh GPM-Routing Paradox analysis đúng** và **giải quyết được 5/6 task failures**. AP ngang ROOT (59.55 vs 59.70) là kết quả excellent cho parameter-free routing (so với ROOT's learned MLP routing).
161
+
162
+ Bottleneck hiện tại chuyển từ **routing quality** (đã giải quyết) sang **single-task learning quality** (do strict orthogonality). Đây đúng với C2 analysis (single-task quality) đã thảo luận trước đó.
163
+
164
+ **Nếu giải quyết được single-task gap** (-2.77 avg trên 8 losing tasks), V6 có thể đạt AP(EM) ~62-63, vượt ROOT.