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 ๋ก ๊ณ ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ ํ๋ค. ๋ฌธ์ ๋ ๋ ๊ฐ์ง๋ค.
- ํธ์คํธ ์ค์ผ์ผ ์์กด. residual norm ์ ๊ทธ ํธ์คํธ ์๋ฒ ๋ฉ์ด ์ฐ๋ ์ค์ผ์ผ ์์
์๋ค. ์ธก์ ๊ฐ: MoFlow ์์ ๊ทธ๋ํ residual โ 6.3, ํธ์คํธ ์๋ฒ ๋ฉ โ 16.
MoFlow ์์ ํ๋ํ
c = 3.0์ด ์๋ฒ ๋ฉ ์ค์ผ์ผ์ด ๋ค๋ฅธ MID/LED ์์๋ ์ฌ์ค์ ๋ฌด์ฐ์ฐ์ด๊ฑฐ๋ ๋ฐ๋๋ก ๊ณผ๋ํ ์ ์ฝ์ด ๋๋ค. - ๋์ ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ์ ๋ ํฌ๊ธฐ๊ฐ ์๋๋ผ ๋น์จ. ์คํ
๋น ์ํ๊ฐ
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. ๊ตฌํ
# 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 ์ ์ด๋ฌ๋ค:
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. ์ฌ์ฉ๋ฒ
# ๊ถ์ฅ ์ค์ (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ํ ํ๊ฐ ๊ธฐ์ค์ ๊ด์ฐฐ์ด๋ฉฐ, ์์ฃผ๊น์ง ๊ฐ์ผ ํ์ ๋๋ค.