# RPG
## References
+ 🔗 [**arXiv - Recurrent Diffusion for Large-Scale Parameter Generation**](https://arxiv.org/abs/2501.11587)
+ 🔗 [**github**](https://github.com/NUS-HPC-AI-Lab/Recurrent-Parameter-Generation)
+ 🔗 [**Medium (Adam He) - Diffusion Model-Denoising Diffusion Probabilistic Models**](https://adam-study-note.medium.com/diffusion-model-denoising-diffusion-probabilistic-models-ddpm-%E8%A9%B3%E7%B4%B0%E4%BB%8B%E7%B4%B9-5ce77b6b64d4)
+ 🔗 [**CSDN - 一文通透想颠覆 Transformer 的 Mamba:SSM、HiPPO、S4、Mamba**](https://blog.csdn.net/v_JULY_v/article/details/134923301)
+ 🔗 [**知乎 - Mamba详解(一)之什么是 SSM?**](https://zhuanlan.zhihu.com/p/694695534)
+ 🔗 [**Gemini - RPG**](https://gemini.google.com/share/1b09fa5e90c8)
+ 🔗 [**知乎 - 扩散模型:DDPM**](https://zhuanlan.zhihu.com/p/614498231)
+ 🔗 [**類神經網路 - 作業上傳區**](https://docs.google.com/spreadsheets/d/1IkxScdMKsFu0MpS1AiySxIOJHLREIGU_oJELY2EBAMw/edit?gid=1652597706#gid=1652597706)
+ 🎬 [**量子位 - Mamba 凭什么能颠覆 Transformer 在 AI 圈子的统治地位?**](https://youtu.be/QUpoCXUDfjc)
+ 🎬 [**Hung-yi Lee - 【生成式AI時代下的機器學習(2025)】第四講:Transformer 的時代要結束了嗎?介紹 Transformer 的競爭者們**](https://youtu.be/gjsdVi90yQo)
+ 📗 [**Group 2 - Mamba 論文報告**](https://docs.google.com/presentation/d/1zyf5lTpJp8m-LoK84oKDP7L4jbePB3xhTGDPRBvwuSc/edit?slide=id.g3a459704366_9_4#slide=id.g3a459704366_9_4)
+ 📗 [**Group 24 - RPG 論文報告**](https://www.canva.com/design/DAG7ewKbERY/4pKUQdeTQ064IP2zKzxg_A/edit?utm_content=DAG7ewKbERY&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton)
## Training Phase
> RPG 的訓練過程

### Parameter Processing
1. 已訓練模型權重 $W$
+ 例如 1000 個已經訓練好的 ViT 模型(分別對應不同的分類任務)
2. 根據權重分層,進行切分
+ $W \xrightarrow{\text{divide by layer}} [w[1], \dots, w[I]]$
3. 接著標準化
+ $[w[1], \dots, w[I]] \xrightarrow{-\mu, /\sigma} [\hat{w}[1], \dots, \hat{w}[I]]$
4. 再將每層權重,切分成等分 token,不夠則 padding
+ $\hat{w}[i] \xrightarrow{\text{tokenize}} K[i] = [k_i^1, k_i^2, \dots, \text{padding}(k_i^J)].$
+ 由於權重被切分成 token,訓練網路的輸入層就不會這麼大
5. 加上 permutation state
+ 屬於同一個 task,雖然兩模型訓練出來功能相同,但因 random seed 不同,導致收斂到不同 local min,導致權重有所不同,我們因而使用 one-hot vector 來表示這些不同模型
+ 如果訓練時不給 $S$,RPG 會看到兩組數值大不相同、但功能一樣的權重。這會讓 RPG 感到困惑:「到底哪一組才是對的?」這會導致 RPG 學出一個「平均值」,結果就是四不像
6. 加上 positional embedding
+ $K[i] \xrightarrow{\text{pos. embedding}} e[i] = [e_i^1, \dots, e_i^j, \dots, e_i^J]$
+ 第 i 層的第 j 個 token
+ 讓 RAG 可以得知 weight 在神經網路的位置關係
### Recurrent Diffusion
1. binary embedding
+ 論文中以 CIFAR-10 的實驗為例,所有的任務都被編碼成一個 10-bit vector
+ 也會餵進 recurrent model
+ 範例:例如 `0010100...`,代表:「我要一個能分類出『貓』和『狗』,但要把『飛機』排除在外的模型」

2. Recurrent model
+ $P_i^j, H_i^j = f(H_i^{j-1}, e_i^j, S)$
+ 產生 prototype
3. Parameter diffusion
+ $L_{\text{diff}} = \mathbb{E}_{t, K, \epsilon} \left\| \epsilon - \epsilon_\theta(K_t, t, P) \right\|^2$
+ 將原本 token 加噪,搭配 prototype 嘗試去噪
+ 計算去噪 loss,接著 back propagation
## Inference Phase
> RPG 的推理過程。你給它分類任務,它吐出神經網路。
### Input
1. **Binary Embedding**
2. **Random Noise, $\epsilon$**
3. **Permutation State, $S$**
### Output
1. **完整的神經網路權重**
+ 這就是最終產品。例如,它會輸出一組完整的 ViT-Base 或 ResNet-50 的權重檔案。
+ 用途:你可以直接把這組權重載入 PyTorch (`model.load_state_dict(output)`),它馬上就能用來分類圖片,準確率可達 90% 以上。
## Experiment
1. **ImageNet-1K**
+ ImageNet-1K 是電腦視覺中最標準、最具代表性的分類資料集,幾乎所有 CNN / ViT 都以它作為能力基準。
+ 純分類任務
+ 使用的模型:ResNet、Vit、ConvNeXt

+ 數據集

2. **ADE20K & COCO**
+ ADE20K 是像素分類到正確類別(牆、路、人…)
+ ADE20K 指標
+ mIoU(%) - 分割區域跟真值重疊程度
+ mAcc(%) - 每一類像素分對的比例
+ ADE20K 數據集

+ 說明生成權重保留了「空間結構理解能力」
+ COCO 找出物體畫框以及遮罩
+ COCO 指標
+ mAPBbox(%) - 框的準確度
+ mAPSeg(%) - 遮罩的準確度
+ COCO 數據集

+ 表示權重有效表徵物體在影像中的位置與外觀結構。
+ 結果

3. **Commonsense Reasoning**
+ 使用 DoRA 微調 LLaMA-7B 得到的 checkpoint 當作訓練資料
+ 比較 7 個推理任務的準確度
+ 使用 rank4 以及 rank64
+ rank 越大,參數越多、表達能力越強、資源消耗越多
+ RPG 能生成具備實際推理能力的模型參數。
+ 結果
+ 大部分數值都相對提升
+ BoolQ 對 LLaMA-7B 本身就是偏難的 benchmark
+ HellaSwag rank64:模型已接近該任務的表現上限,RPG 幾乎完全重建原始能力,因此提升空間自然消失。

## Note

+ diffusion model 通常是用 2D CNN 實作 (U-Net Architecture)
+ 但論文此處強調 1D,是因為權重之間沒有維度關係
+ 論文要印
## Structure
1. Outline
2. RPG
3. Parameter Processing
4. Recurrent Diffusion
5. Benchmark
6. Conclusion