| # `SRA_RES_CAP_REL` โ ์๋ residual cap |
| |
| **ํ ์ค ์์ฝ** |
| edge ๋ฒ๊ทธ๋ฅผ ๊ณ ์น์ MoFlow ์ํ๋ง์ด ๋ฐ์ฐํ๋ค. ์ ๋ cap(`SRA_RES_CAP`)์ ๊ฐ์ ๋ฎ์ถฐ๋ |
| ๋ฐ์ฐ ์์ ์ ๋ฏธ๋ฃฐ ๋ฟ์ด์๋ค. ์ํ์ **ํธ์คํธ ์๋ฒ ๋ฉ norm ์ ๋น๋ก**ํ๋๋ก ๋ฐ๊พธ์ |
| (`โresโ โค ratioยทโorigโ`) 13ํ ํ๊ฐ๊น์ง ์์ ์ ์ผ๋ก ํ๊ฐํ๋ฉฐ baseline ์ ์์ฐ๋ค. |
| |
| --- |
| |
| ## 1. ์ ์ ๋ cap ์ผ๋ก๋ ๋ถ์กฑํ๊ฐ |
| |
| ๋ฐ์ฐ์ ์์ธ์ MoFlow ์ **train/sample mismatch** ๋ค. ํ์ต์ ๋๋ค timestep ํ๋์์ |
| ๊ทธ๋ํ๋ฅผ ํ ๋ฒ๋ง ์ ์ฉํ์ง๋ง, ์ํ๋ง์ 10 ์คํ
flow ์ ๋ถ์์ ๋งค ์คํ
์ ์ฉํ๊ณ ๊ทธ |
| ์ถ๋ ฅ์ด ๋ค์ ์คํ
์
๋ ฅ์ผ๋ก ๋๋จน์๋๋ค โ ์ญ๋์ด ๋์ ๋๋ค. |
| |
| ์ ๋ cap ์ `โresโ โค c` ๋ก **๊ณ ์ ํฌ๊ธฐ**๋ฅผ ๊ฐ์ ํ๋ค. ๋ฌธ์ ๋ ๋ ๊ฐ์ง๋ค. |
| |
| 1. **ํธ์คํธ ์ค์ผ์ผ ์์กด.** residual norm ์ ๊ทธ ํธ์คํธ ์๋ฒ ๋ฉ์ด ์ฐ๋ ์ค์ผ์ผ ์์ |
| ์๋ค. ์ธก์ ๊ฐ: MoFlow ์์ ๊ทธ๋ํ residual โ **6.3**, ํธ์คํธ ์๋ฒ ๋ฉ โ **16**. |
| MoFlow ์์ ํ๋ํ `c = 3.0` ์ด ์๋ฒ ๋ฉ ์ค์ผ์ผ์ด ๋ค๋ฅธ MID/LED ์์๋ ์ฌ์ค์ |
| ๋ฌด์ฐ์ฐ์ด๊ฑฐ๋ ๋ฐ๋๋ก ๊ณผ๋ํ ์ ์ฝ์ด ๋๋ค. |
| 2. **๋์ ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ์ ๋ ํฌ๊ธฐ๊ฐ ์๋๋ผ ๋น์จ.** ์คํ
๋น ์ํ๊ฐ |
| `x โ x + res` ๋ก ๊ฐฑ์ ๋ ๋ ๋ฐ์ฐ ์ฌ๋ถ๋ฅผ ์ง๋ฐฐํ๋ ๊ฒ์ `โresโ/โxโ` ๋ค. ์ ๋ cap ์ |
| ์ด ๋น์จ์ ์ง์ ํต์ ํ์ง ๋ชปํ๋ค. |
| |
| ์ค์ ๋ก ์ ๋ cap ์ ๊ฐ์ ๋ฎ์ถ์๋ก **๋ฐ์ฐ์ด ๋ฏธ๋ค์ง ๋ฟ ์ฌ๋ผ์ง์ง ์์๋ค**: |
| |
| | ์ ๋ cap | ๋ฐ์ฐ ์์ | |
| |---|---| |
| | 6.0 | eval 4 | |
| | 3.0 | eval 5 | |
| | 1.0 | eval 9 (์ดํ 1.15~1.61 ์ง๋) | |
| | 0.5 | 12ํ์ฐจ๋ถํฐ ๋ฐ๋ฑ (0.873 โ 0.922 โ 0.958) | |
| |
| --- |
| |
| ## 2. ๊ตฌํ |
| |
| ```python |
| # SRA_RES_CAP_REL: ๋
ธ๋๋ณ ์ํ์ ํธ์คํธ ์๋ฒ ๋ฉ norm ์ ๋น๋กํด ์ ํ๋ค. |
| _rel = float(os.environ.get('SRA_RES_CAP_REL', 0.0) or 0.0) |
| if _rel > 0: |
| lim = _rel * orig.norm(dim=-1, keepdim=True) # [N, 1] ๋
ธ๋๋ณ ์ํ |
| rn = res.norm(dim=-1, keepdim=True) |
| res = res * torch.where(rn > lim, lim / rn.clamp_min(1e-6), |
| torch.ones_like(rn)) |
| out = orig + res |
| ``` |
| |
| - `orig` = ํธ์คํธ ์๋ฒ ๋ฉ, `res` = ๊ทธ๋ํ ์ญ๋. ์ํ์ด **๋
ธ๋๋ง๋ค** ์๊ธฐ ์๋ฒ ๋ฉ ํฌ๊ธฐ์ |
| ๋น๋กํด ์ ํด์ง๋ฏ๋ก ์ค์ผ์ผ ๋ฌด๊ดํ๋ค. |
| - `torch.where` ๋ฅผ ์ฐ๋ ์ด์ ๋ ยง4 ์ฐธ์กฐ (์ด์ ๊ตฌํ์ ์น๋ช
์ ๋ฒ๊ทธ). |
| - ๊ธฐ๋ณธ๊ฐ `0` = ๊บผ์ง. ์ผ์ง ์์ผ๋ฉด ์๋ณธ๊ณผ ๋์ผํ๊ฒ ๋์ํ๋ค. |
|
|
| ๊ฒ์ฆ (A=11, K=4): |
|
|
| | ์ค์ | out_proj grad | โresโmax | โresโ/โorigโ max | |
| |---|---|---|---| |
| | ๋ฌด์ ํ | 1,716,997 | 9.009 | **0.557** | |
| | ์ ๋ cap 1.0 | 255,169 | 1.000 | 0.071 | |
| | relcap 0.10 | 408,742 | 1.765 | **0.100** โ | |
| | relcap 0.03 | 122,623 | 0.529 | **0.030** โ | |
| |
| ๋น์จ์ด ์ง์ ๊ฐ์ผ๋ก ์ ํํ ์ ํ๋๊ณ gradient ๋ ์ ์์ด๋ค. |
| |
| --- |
| |
| ## 3. ๊ฒฐ๊ณผ (MoFlow-NBA, full SRA, `SRA_EDGE_FIX=1`) |
| |
| eval ๋ณ min-ADEโโ @4.0s: |
| |
| | eval | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | |
| |---|---|---|---|---|---|---|---|---|---|---|---|---|---| |
| | **relcap 0.03** | 1.190 | 1.010 | 0.979 | 1.019 | 0.971 | 0.941 | 0.912 | 0.894 | 0.894 | 0.857 | 0.863 | 0.863 | **0.840** | |
| | **relcap 0.10** | 1.128 | 1.017 | 0.988 | 0.954 | 0.950 | 0.944 | 0.958 | 0.936 | 0.880 | 0.889 | 0.857 | 0.862 | 0.876 | |
| | cap 0.5 (์ ๋) | 1.155 | 1.032 | 1.018 | 0.990 | 0.978 | 0.907 | 0.937 | 0.901 | 0.931 | 0.873 | 0.875 | 0.922 | 0.958 | |
| | cap 1.0 (์ ๋) | 1.146 | 1.013 | 0.985 | 1.020 | 0.978 | 1.006 | 1.170 | 0.966 | **1.309** | 1.378 | 1.150 | 1.344 | 1.370 | |
| | *baseline(์ฐธ๊ณ )* | 1.163 | 1.021 | 0.961 | 0.964 | 0.952 | 0.955 | 0.953 | 0.895 | โ | โ | โ | โ | โ | |
| |
| ํ์ฌ best (ADE/FDE ๋ **๊ฐ์ ํ๊ฐ ์์ **์์ ์ง์ง์): |
| |
| | ์ค์ | best ADE / FDE | @eval | ์งํ | |
| |---|---|---|---| |
| | **relcap 0.03** | **0.8399 / 1.0025** | 13 | 2368/25500 (9 %) | |
| | relcap 0.10 | 0.8568 / 1.0441 | 11 | 2349/25500 | |
| | cap 0.5 | 0.8732 / 1.0531 | 10 | 2379/25500 | |
| | cap 1.0 | 0.9662 / 1.2508 | 8 | 3390/25500 โ ๋ฐ์ฐ | |
| |
| ๊ด์ฐฐ: |
| |
| - **์๋ ๋ฐ์ฐ ์ง์ (eval 4~5)์ ์๋ cap 2์ข
๋ชจ๋ ํต๊ณผ**ํ๋ค. ์ ๋ cap 1.0 ๋ 8ํ์ฐจ๊น์ง๋ |
| ๋ฉ์ฉกํด ๋ณด์์ผ๋ฏ๋ก 4~5ํ ํต๊ณผ๋ง์ผ๋ก๋ ๋ถ์กฑํ๋ฐ, 13ํ๊น์ง ์ ์ง๋ ๊ฒ์ ๋ค๋ฅธ ์์ค์ ๊ทผ๊ฑฐ๋ค. |
| - **baseline(0.895) ์ ์์ฐ๋ค.** relcap 0.03 ์ด 0.840 ์ผ๋ก โ0.055. |
| - ์ ๋ cap 0.5 ๋ 10ํ์ฐจ 0.873 ์ดํ **0.922 โ 0.958 ๋ก 3ํ ์ฐ์ ์์น** โ ์๋ cap ๊ณผ |
| ๋ฌ๋ฆฌ ๋ถ์์ ์กฐ์ง์ด ๋ณด์ธ๋ค. |
| - ๋น์จ์ 0.10 โ 0.03 ์ผ๋ก ๋ ์กฐ์ฌ๋ ์ฑ๋ฅ์ด ๋๋น ์ง์ง ์์๋ค. ์ฆ **๋ฌด์ ํ ์ํ์ ๋น์จ |
| 0.557 ์ ํ์ ์ด์์ผ๋ก ํฌ๊ณ , ๊ทธ ๊ผฌ๋ฆฌ๊ฐ ๋ฐ์ฐ์ ์ ๋ฐ**ํ๋ค๋ ํด์๊ณผ ์ผ์นํ๋ค. |
| |
| --- |
| |
| ## 4. โ ๏ธ ๊ฐ์ด ๊ณ ์น ๊ฒ โ ์ด์ cap ๊ตฌํ์ ์น๋ช
์ ๋ฒ๊ทธ |
| |
| ์ฒ์ ์์ฑํ cap ์ ์ด๋ฌ๋ค: |
| |
| ```python |
| res = res * (rn.clamp(max=cap) / (rn + 1e-6)) # ์๋ชป๋จ |
| ``` |
| |
| ๋ ๊ฐ์ง๊ฐ ํ๋ ธ๋ค. |
| |
| **(1) `res = 0` ์์ gradient ๊ฐ ์ ํํ 0 ์ด ๋๋ค.** ์ค์ผ์ผ์ด `0 / 1e-6 = 0` ์ด ๋๊ณ |
| Jacobian ๋ 0 ์ด๋ค. `SRA_SOFT_START`(out_proj zero-init) ์ ํจ๊ป ์ผ๋ฉด `out_proj` ๊ฐ |
| 0 ์ ์๊ตฌํ ๊ฐํ **๊ทธ๋ํ๊ฐ ์ ํ ํ์ต๋์ง ์๋๋ค**. NaN ์ด ์๋๋ผ ์กฐ์ฉํ ์ฃฝ๋๋ค. |
|
|
| ์ค์ธก (out_proj gradient ํฉ): |
| |
| | ์ค์ | grad | |
| |---|---| |
| | SOFT_START ๋ง | 78,751 | |
| | RES_CAP ๋ง | 765,506 | |
| | **SOFT_START + RES_CAP** | **0.00** โ ํ์ต ๋ถ๊ฐ | |
| |
| ์ด ์กฐํฉ์ผ๋ก ๋๋ฆฐ ์คํ๋ค์ ์ฒดํฌํฌ์ธํธ๋ฅผ ์ด์ด๋ณด๋ **58 epoch ๋ค์๋ |
| `future_graph.out_proj` ๊ฐ ์ ํํ `0.000e+00`** ์ด์๋ค. ์ฆ ๊ทธ ์คํ๋ค์ host ๋จ๋
|
| (=baseline) ์ ์ธก์ ํ ๊ฒ์ด๊ณ , "cap ์ด ๋ฐ์ฐ์ ํด๊ฒฐํ๋ค"๋ ๊ฒฐ๋ก ์ **๊ทธ๋ํ๊ฐ ๊บผ์ ธ ์์ด |
| ๋ฐ์ฐํ ๊ฒ์ด ์์์ ๋ฟ**์ด์๋ค. ํด๋น ๊ฒฐ๊ณผ 4๊ฑด์ ํ๊ธฐํ๋ค. |
| |
| **(2) cap ๋ฏธ๋ง ๊ฐ๋ ๋ถ๋นํ๊ฒ ์ถ์๋๋ค.** `rn/(rn+1e-6)` ์ `rn` ์ด ์์์๋ก 1 ์์ |
| ๋ฉ์ด์ง๋ค โ `โresโ=1e-5` ์์ **0.909 ๋ฐฐ**. |
| |
| `torch.where` ๋ก ๋ฐ๊พธ๋ฉด ๋ ๋ค ํด๊ฒฐ๋๋ค: |
| |
| | ๊ฒ์ฆ | old | new | |
| |---|---|---| |
| | `res=0` ์์ gradient | 0.0000 | **31.30** | |
| | โresโ=1e-5 ์ผ ๋ ์ค์ผ์ผ | 0.909 | **1.000** | |
| | cap ์ด๊ณผ ์ ์ํ | 3.0 | 3.0 (๋์ผ) | |
| | ์ ์ ๊ตฌ๊ฐ gradient ์ฐจ์ด | โ | ์๋์ฐจ 6e-7 | |
| |
| --- |
| |
| ## 5. ์ฌ์ฉ๋ฒ |
| |
| ```bash |
| # ๊ถ์ฅ ์ค์ (MoFlow-NBA) |
| SRA_EDGE_FIX=1 SRA_RES_CAP_REL=0.03 \ |
| CUDA_VISIBLE_DEVICES=0 python fm_nba_graph_v6.py \ |
| --cfg cfg/nba/cor_fm.yml --exp v3_rel003 \ |
| --batch_size 192 --epochs 150 --fm_in_scaling --tied_noise \ |
| --top_n_neighbors 5 --uncertainty_weight 0.01 --data_dir ./data/nba |
| ``` |
| |
| | ํ ๊ธ | ๊ธฐ๋ณธ | ์ญํ | |
| |---|---|---| |
| | `SRA_EDGE_FIX` | off | edge-index ์ฌ ํผํฉ ๋ฒ๊ทธ ์์ (**ํ์**) | |
| | `SRA_RES_CAP_REL` | 0 (off) | **๋น์จ ์ํ** `โresโ โค rยทโorigโ` โ ๊ถ์ฅ | |
| | `SRA_RES_CAP` | 0 (off) | ์ ๋ ์ํ โ MoFlow ์์ ์ด๋ฑํจ์ด ํ์ธ๋จ | |
| | `SRA_SOFT_START` | off | **RES_CAP ๊ณผ ํจ๊ป ์ฐ์ง ๋ง ๊ฒ** (ยง4). ๋จ๋
์ผ๋ก๋ ๋ฐ์ฐ ๋ชป ๋ง์ | |
| | `SRA_GATE_SCALE` | 1.0 | ์ ์ญ ์ถ์ โ ๊ฐ์ฅ ๋นจ๋ฆฌ ๋ฐ์ฐ(3ํ์ฐจ), ํ๊ธฐ | |
| |
| --- |
| |
| ## 6. ๋ฏธํ์ / ํ๊ณ |
| |
| **โ ์ต์ข
์๋ ด๊ฐ์ ์์ง ๋ชจ๋ฅธ๋ค.** ํ์ฌ 9 %(2368/25500) ์์ 0.840 ์ด๋ค. |
| ๊ธฐ์กด(๋ฒ๊ทธํ) SRA = **0.695**, baseline = **0.703**. ๋จ์ 91 % ์ cosine LR ๊ฐ์ ์์ |
| ๋ ๋ด๋ ค๊ฐ์ผ ํ๋ฉฐ, **0.695 ์ ๋๋ฌํ์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ ์ฌ์ ํ ์ด๋ ค ์๋ค.** |
| |
| **โก ๋น์จ๊ฐ ํ๋์ด ๋๋์ง ์์๋ค.** 0.03 ๊ณผ 0.10 ์ด ๋น์ทํ๊ณ 0.03 ์ด ๊ทผ์ ์ฐ์๋ค. |
| ๋ ์กฐ์ธ ๊ฐ(0.01)์ด ๋์์ง, ์๋๋ฉด 0.03 ์ด ์ด๋ฏธ ๊ณผ๋ํ ์ ์ฝ์ธ์ง๋ ๋ฏธ๊ฒ์ฆ์ด๋ค. |
| cap ์ ์กฐ์ผ์๋ก ๋ฐ์ฐ์ ๋งํ์ง๋ง ๊ทธ๋ํ ๊ธฐ์ฌ๋ ์ค์ด๋๋ฏ๋ก, **"๋ฐ์ฐ ์ ํ๋ฉด์ |
| baseline ๋ณด๋ค ๋์" ๊ตฌ๊ฐ์ด ์ค์ ๋ก ์กด์ฌํ๋์ง**๊ฐ ์ต์ข
์ง๋ฌธ์ด๋ค. ํ์ฌ 0.840 vs |
| baseline 0.895 ๋ ๊ทธ ๊ตฌ๊ฐ์ด ์กด์ฌํ๋ค๋ ์ฒซ ์ฆ๊ฑฐ๋ค. |
| |
| **โข MoFlow ์ ์ฉ ์ฒ๋ฐฉ์ด๋ค.** MIDยทLED ๋ iterative denoiser ๋ผ ์ด ๋ฐ์ฐ์ด ์๊ณ , |
| `RES_CAP*` ์ ์ฐ์ง ์๋๋ค (MID ๋ gate_init/warmup, LED ๋ ์ฒ๋ฐฉ ์์). |
| ๋ค๋ฅธ ํธ์คํธ์ ์ ์ฉํ๋ ค๋ฉด ๊ทธ ํธ์คํธ์ residual/embedding ๋น์จ์ ๋จผ์ ์ธก์ ํด์ผ ํ๋ค. |
| |
| **โฃ ์ ๋ cap ์ด ํญ์ ๋์๋ค๊ณ ๋จ์ ํ ์๋ ์๋ค.** cap 0.5 ๋ ์์ง ๋ฐ์ฐํ์ง ์์๊ณ |
| ๋ฐ๋ฑ ์กฐ์ง๋ง ๋ณด์ธ๋ค. ์๋ cap ์ ์ฐ์๋ ํ์ฌ 13ํ ํ๊ฐ ๊ธฐ์ค์ ๊ด์ฐฐ์ด๋ฉฐ, ์์ฃผ๊น์ง |
| ๊ฐ์ผ ํ์ ๋๋ค. |
| |