File size: 10,346 Bytes
20e9382
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# CERBERUS ์‹คํ—˜ ๋กœ๋“œ๋งต โ€” ๋ฌด์—‡์„, ์™œ, ์–ด๋–ค ์ˆœ์„œ๋กœ

์ด ๋ฌธ์„œ ํ•˜๋‚˜๋งŒ ์ฝ์œผ๋ฉด **๋‹ค๋ฅธ ์„œ๋ฒ„์˜ ์—์ด์ „ํŠธ๋„ ์ด์–ด์„œ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก** ์“ด๋‹ค.
ํ˜„ํ™ฉยท๊ทผ๊ฑฐยท๋‹ค์Œ ๋ช…๋ นยทํŒ๋‹จ ๊ธฐ์ค€์„ ํ•œ๊ณณ์— ๋ชจ์€๋‹ค.

- ์„ธ์…˜ ๋ณต๊ตฌ ์ ˆ์ฐจ: `../../CLAUDE.md` (๋ณผ๋ฅจ ๋ฃจํŠธ) ๋˜๋Š” `session-recovery.md`
- ํ•™์Šต ์ด๋ ฅยท์„ค์ • ๊ทผ๊ฑฐ: `training-log.md`
- ์‹ฌ์‚ฌ ์ง€์ ๊ณผ ๋Œ€์‘: `review-2026-08-10-methodology.md`

---

## 0. ์ด ์—ฐ๊ตฌ๊ฐ€ ์ž…์ฆํ•˜๋ ค๋Š” ๊ฒƒ

> **HAWK๋Š” ์ •์  ๋ฐฐ๊ฒฝ์„ ๋ณ„๋„ ํ•™์Šต ๋Œ€์ƒ์œผ๋กœ ๋‘์ง€ ์•Š๋Š”๋‹ค. ๋ฐฐ๊ฒฝ ์ „์šฉ ์ŠคํŠธ๋ฆผ์„ ์ถ”๊ฐ€ํ•˜๊ณ 
> ์žฅ๋ฉด ์–ธ์–ด๋กœ ๊ฐ๋…ํ•˜๋ฉด, ๋ฐฐ๊ฒฝ ๋งฅ๋ฝ์ด ์ค‘์š”ํ•œ ์ด์ƒ์—์„œ ์ดํ•ด ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋œ๋‹ค.**

์ฆ๋ช…ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ **์„ธ ๋‹จ๊ณ„**์ด๋ฉฐ, ๋’ค๋กœ ๊ฐˆ์ˆ˜๋ก ์–ด๋ ต๋‹ค.

| ๋‹จ๊ณ„ | ์ฃผ์žฅ | ๋ฐ˜์ฆ๋˜๋Š” ์กฐ๊ฑด |
|---|---|---|
| S1 | ๋ฐฐ๊ฒฝ ์ŠคํŠธ๋ฆผ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์˜ค๋ฅธ๋‹ค | `flow` โ‰ˆ `zero` |
| S2 | ๊ทธ ํ–ฅ์ƒ์ด **์šฉ๋Ÿ‰์ด ์•„๋‹ˆ๋ผ ๋ฐฐ๊ฒฝ ๋‚ด์šฉ** ๋•Œ๋ฌธ์ด๋‹ค | `flow` โ‰ˆ `random_mask` |
| S3 | ๊ทธ ํ–ฅ์ƒ์ด **์ƒ๋ณด ๋ถ„ํ•ด** ๋•Œ๋ฌธ์ด๋‹ค (๋‹จ์ˆœ ์ถ”๊ฐ€๊ฐ€ ์•„๋‹ˆ๋ผ) | `flow` โ‰ˆ `duplicate` |

S1๋งŒ ์„ฑ๋ฆฝํ•˜๊ณ  S2๊ฐ€ ๊นจ์ง€๋ฉด "๋ธŒ๋žœ์น˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ์ข‹๋‹ค"๋Š” ํ”ํ•œ ๊ฒฐ๊ณผ๋กœ ์ถ•์†Œ๋œ๋‹ค.
S2๊นŒ์ง€ ์„ฑ๋ฆฝํ•˜๊ณ  S3๊ฐ€ ๊นจ์ง€๋ฉด "๋ฐฐ๊ฒฝ ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ฃผ๋ฉด ์ข‹๋‹ค"๊นŒ์ง€๋Š” ์ฃผ์žฅํ•  ์ˆ˜ ์žˆ์œผ๋‚˜
"ํ™”์†Œ๊ฐ’ ๋ณด์กด ์ƒ๋ณด ๋ถ„ํ• "(C1)์˜ ๊ณ ์œ ์„ฑ์€ ํฌ๊ธฐํ•ด์•ผ ํ•œ๋‹ค.

**์„ค๊ณ„ ์›์น™**: ๊ฐ€์„ค์ด ์ฐธ์ด๋ผ๋ฉด ๋“œ๋Ÿฌ๋‚˜๋„๋ก ์ตœ๋Œ€ํ•œ ์œ ๋ฆฌํ•œ ์กฐ๊ฑด์„ ๋งŒ๋“ค๋˜, ๊ฑฐ์ง“์ผ ๊ฒฝ์šฐ์—
๋ฌด์—‡์„ ๋ณด๊ณ ํ• ์ง€๋„ ๋ฏธ๋ฆฌ ์ •ํ•ด ๋‘”๋‹ค. ์–ด๋А ์ชฝ์ด ๋‚˜์˜ค๋“  ์“ธ ์ˆ˜ ์žˆ๋Š” ๋…ผ๋ฌธ์ด ๋˜๋„๋ก ํ•œ๋‹ค.

---

## 1. ํ˜„์žฌ ์ง„ํ–‰ ์ค‘ โ€” โ‘  ํ†ต์ œ๊ตฐ 4-arm

**๋ชฉ์ **: S1ยทS2ยทS3๋ฅผ ํ•œ ๋ฒˆ์— ํŒ์ •ํ•œ๋‹ค. ์ด ์‹คํ—˜์ด ๋…ผ๋ฌธ์˜ ์ƒ์‚ฌ๋ฅผ ๊ฐ€๋ฅธ๋‹ค.

```bash
cd $CERBERUS_ROOT/hawk
bash scripts/run_ablation_arms.sh          # flow โ†’ random_mask โ†’ duplicate โ†’ zero
```

- arm๋‹น 40 epoch(=400k ์ƒ˜ํ”Œ), ์•ฝ 1.6์ผ. ์ „์ฒด ์•ฝ 6.4์ผ
- ๋„ค arm์€ **์•„ํ‚คํ…์ฒ˜ยทํŒŒ๋ผ๋ฏธํ„ฐ ์ˆ˜ยท์‹œ๊ฐ ํ† ํฐ ์ˆ˜๊ฐ€ ๋™์ผ**ํ•˜๊ณ  ์ •์  ์ŠคํŠธ๋ฆผ์˜ *๋‚ด์šฉ*๋งŒ ๋‹ค๋ฅด๋‹ค
- ์žฌ๊ฐœ ๊ฐ€๋Šฅ: ๋Š๊ธด ๋’ค ๊ฐ™์€ ๋ช…๋ น์„ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด `train_run.sh`๊ฐ€ arm๋ณ„๋กœ ์ด์–ด๋ฐ›๋Š”๋‹ค
- ์ง„ํ–‰ ํ™•์ธ: `grep -c "Averaged stats" $CERBERUS_ROOT/runs/abl_<arm>/train.log`

**์ฃผ์˜ โ€” ์ด ์‹คํ—˜์ด ๋„๋Š” ๋™์•ˆ ํ•™์Šต ๊ฒฝ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ๋ง ๊ฒƒ.** arm๋งˆ๋‹ค ๋‹ค๋ฅธ ์ฝ”๋“œ๋กœ
ํ•™์Šต๋˜๋ฉด ํ†ต์ œ๊ฐ€ ๊นจ์ง„๋‹ค(์‹ค์ œ๋กœ ํ•œ ๋ฒˆ ๋ฐœ์ƒํ•ด ์žฌ์‹œ์ž‘ํ–ˆ๋‹ค). ํ‰๊ฐ€ยท๋ฌธ์„œยท๋ถ„์„ ์ฝ”๋“œ๋Š” ๋ฌด๊ด€ํ•˜๋‹ค.

**๋๋‚˜๋ฉด ํ•  ์ผ**
```bash
for a in flow random_mask duplicate zero; do
  $CERBERUS_PY scripts/evaluate.py --ckpt $CERBERUS_ROOT/runs/abl_$a/main/checkpoint_39.pth \
      --out experiments/out/eval_abl_$a.json --judge gemini-2.5-flash
done
$CERBERUS_PY scripts/evaluate.py --compare
```

---

## 2. ๋‹ค์Œ ์ˆœ์„œ (โ‘  ์™„๋ฃŒ ํ›„)

์šฐ์„ ์ˆœ์œ„๋Š” **"์–ด๋–ค ์งˆ๋ฌธ์— ๋‹ตํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋…ผ๋ฌธ์ด ๋ง‰ํžˆ๋Š”๊ฐ€"** ๊ธฐ์ค€์ด๋‹ค.

### โ‘ก ์‹œ๋“œ 3ํšŒ โ€” 3.2์ผ ยท ์ตœ์šฐ์„ 

๋ฐฐ๊ฒฝ ์ŠคํŠธ๋ฆผ์˜ ๊ธฐ๋Œ€ ์ด๋“์€ ์ด ๋ฒค์น˜๋งˆํฌ์—์„œ ์†Œ์ˆ˜์  ๋‘˜์งธ ์ž๋ฆฌ ๋Œ€์—ญ์ด๋‹ค. ๋‹จ์ผ ์‹คํ–‰
์ ์ถ”์ •์œผ๋กœ๋Š” "๋Ÿฐ ๊ฐ„ ๋…ธ์ด์ฆˆ์™€ ๊ตฌ๋ณ„๋˜์ง€ ์•Š๋Š”๋‹ค"๋Š” ํ•œ ๋ฌธ์žฅ์— ๋ฌด๋„ˆ์ง„๋‹ค. ์ฃผ์š” 2๊ฐœ arm
(`flow`, ๊ฐ€์žฅ ๊ฐ•ํ•œ ํ†ต์ œ๊ตฐ)์— ์‹œ๋“œ 3๊ฐœ๋ฅผ ๋Œ๋ ค ํ‰๊ท ยฑํ‘œ์ค€ํŽธ์ฐจ์™€ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ CI๋ฅผ ๋ณด๊ณ ํ•œ๋‹ค.

```bash
# seed ๋Š” config ์˜ run.seed ๋ฅผ --options ๋กœ ๋ฎ์–ด์“ด๋‹ค
for s in 43 44; do
  bash scripts/train_run.sh configs/train_configs/ablation/stage2_flow.yaml abl_flow_s$s 0,1 2
done
```
โ€ป `run.seed` ์˜ค๋ฒ„๋ผ์ด๋“œ๋ฅผ `train_run.sh`์˜ `OPTS`์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค(๋ฏธ๊ตฌํ˜„).

### โ‘ข 5๋ฒˆ์งธ arm โ€” ๊ณ ์นœ `L_dis` โ€” 1.6์ผ

**๋‹ตํ•˜๋Š” ์งˆ๋ฌธ**: "์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๋ถ„๋ฆฌ ๋ชฉ์ ํ•จ์ˆ˜๊ฐ€ ํ•˜๋ฅ˜ ์„ฑ๋Šฅ์„ ๋ฐ”๊พธ๋Š”๊ฐ€."

ํ˜„์žฌ `L_dis`๋Š” ํ‡ดํ™” ๊ณ ์ •์ ์— ์žˆ์–ด ๊ธฐ์šธ๊ธฐ๊ฐ€ 0์ด๋‹ค(ยง4 ์ฐธ์กฐ). ๊ณ ์ณ์„œ ์žฌ์‹คํ–‰ํ•˜๋ ค๋ฉด
Stage-1๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ, **`encoder_1`์ด ๊ณ๊ฐ€์ง€๋ผ ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†๋‹ค** โ€”
`projection.py`์—์„œ `decoder_2`๋Š” `encoder_0`์˜ ์ถœ๋ ฅ์„ ๋ฐ›์œผ๋ฏ€๋กœ, `encoder_1`๋งŒ
์žฌ์ดˆ๊ธฐํ™”ํ•˜๋ฉด LLM ๊ฒฝ๋กœ๊ฐ€ ์†์ƒ๋˜์ง€ ์•Š๋Š”๋‹ค.

```
1. L_dis ์žฌ์ •์˜: ๋ฐ˜์ƒ๊ด€(cosโ†’โˆ’1) โ†’ ํƒˆ์ƒ๊ด€(|cos|โ†’0)
   + ๋ฐฐ์น˜ ์ค‘์‹ฌํ™”, ์ƒ˜ํ”Œ๋ณ„ ์ฝ”์‚ฌ์ธ(.view(1,-1) ์ œ๊ฑฐ), ๋ถ„์‚ฐ ํ•˜ํ•œ(VICReg์‹ hinge)
2. checkpoint_106 ๋กœ๋“œ ํ›„ encoder_1 ๋งŒ ์žฌ์ดˆ๊ธฐํ™”
3. Stage-2 40 epoch (๋‹ค๋ฅธ arm๊ณผ ๋™์ผ ์˜ˆ์‚ฐ)
```

**ํ•œ๊ณ„**: Stage-2๋Š” 400k ์ƒ˜ํ”Œ์ด๋ผ ๋ชฉ์ ํ•จ์ˆ˜๊ฐ€ ์ž‘์šฉํ•  ๊ธฐํšŒ๊ฐ€ Stage-1(1.6M)๋ณด๋‹ค ์ ๋‹ค.
"Stage-1๋ถ€ํ„ฐ ๊ณ ์ณ ํ•™์Šตํ–ˆ๋‹ค๋ฉด ์–ด๋• ์„์ง€"๋Š” ๋‹ตํ•˜์ง€ ๋ชปํ•˜๋ฉฐ, ์ด๋Š” ํ•œ๊ณ„๋กœ ๋ช…์‹œํ•œ๋‹ค.

### โ‘ฃ ego-motion ๋ณด์ • arm โ€” 1.6์ผ

DoTA(์ „์ฒด์˜ 62%)์—์„œ ์ž๊ธฐ์šด๋™์ด ํ™”๋ฉด ์ „์ฒด๋ฅผ ๋™์ ์œผ๋กœ ๋ถ„๋ฅ˜ํ•ด ์ •์  ์ŠคํŠธ๋ฆผ์ด ๋น„๋Š” ๋ฌธ์ œ
(`mask_statistics.json`). ์ „์—ญ ํ˜ธ๋ชจ๊ทธ๋ž˜ํ”ผ ์ถ”์ • ํ›„ ์ž”์ฐจ ํ”Œ๋กœ์šฐ๋กœ ๋งˆ์Šคํฌ๋ฅผ ๋งŒ๋“ ๋‹ค.
**์„ฑ๋Šฅ ๊ฐœ์„ ์ด์ž ๋ฐฉ๋ฒ•๋ก  ๊ธฐ์—ฌ**๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค โ€” ๋ฐฐ๊ฒฝ์„ ๋” ์ž˜ ๋ณด๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉํ–ฅ์ด๋ฏ€๋กœ
์—ฐ๊ตฌ ์ฃผ์žฅ๊ณผ ๊ฐ™์€ ๋ฐฉํ–ฅ์ด๋‹ค.

### โ‘ค Stage-1 ์žฌํ•™์Šต โ€” 2.8์ผ + Stage-2 6.3์ผ

โ‘ข์˜ ์™„์ „ํŒ. `L_dis`๋ฅผ ๊ณ ์นœ ์ƒํƒœ๋กœ Stage-1๋ถ€ํ„ฐ 1.6M ์ƒ˜ํ”Œ์„ ๋‹ค์‹œ ํ•™์Šตํ•œ๋‹ค.
โ‘ข์—์„œ ์œ ์˜ํ•œ ํšจ๊ณผ๊ฐ€ ๋ณด์˜€์„ ๋•Œ๋งŒ ์ •๋‹นํ™”๋œ๋‹ค. 2 GPU ๊ธฐ์ค€ `max_epoch`์„ 107 โ†’ **133**
์œผ๋กœ ์˜ฌ๋ ค์•ผ ์ƒ˜ํ”Œ ์˜ˆ์‚ฐ(1.6M)์ด ์œ ์ง€๋œ๋‹ค(`iters_per_epoch` 1500, batch 4, 2 GPU).

### โ‘ฅ ์ฃผ ๋น„๊ต full-budget run โ€” 6.3์ผ

Table 1์„ ์›๋ณธ ๊ณต๊ฐœ ์ˆ˜์น˜์™€ ๋‚˜๋ž€ํžˆ ๋†“๊ธฐ ์œ„ํ•ด `flow` ๊ตฌ์„ฑ์„ ์›๋ณธ๊ณผ ๊ฐ™์€ 1.6M ์ƒ˜ํ”Œ
(`max_epoch: 160`, batch 2, 2 GPU)๋กœ ํ•œ ๋ฒˆ ๋Œ๋ฆฐ๋‹ค. โ‘ ์˜ ๊ฐ์ถ• ์˜ˆ์‚ฐ ๊ฒฐ๊ณผ์™€๋Š” ๋ณ„๊ฐœ๋‹ค.

---

## 3. GPU ์—†์ด ๋ณ‘ํ–‰ํ•  ๊ฒƒ

| ์ž‘์—… | ์ƒํƒœ | ๋น„๊ณ  |
|---|---|---|
| ์žฅ๋ฉด ์–ดํœ˜ ์žฌํ˜„์œจ ์ง€ํ‘œ | โณ | **์—ฐ๊ตฌ ์ฃผ์žฅ์„ ์ง์ ‘ ์žฌ๋Š” ์œ ์ผํ•œ ์ง€ํ‘œ** โ€” ยง5 ์ฐธ์กฐ |
| Background-critical ์ฃผ์„ 600๊ฑด | โณ | ์‚ฌ๋žŒ 2์ธ ์ด์ƒ ํ•„์š”. `bg_critical_benchmark/annotation_protocol.md` |
| Route B ํ•ฉ์„ฑ ํ”„๋กœ๋ธŒ + ๊ท€๋ฌด ์กฐ๊ฑด | โ— | `corrected_bsi()` ๊ตฌํ˜„๋จ, ์‹ค๋ฐ์ดํ„ฐ ์ ์šฉ ๋ฏธ์™„ |
| ์ฐธ๊ณ ๋ฌธํ—Œ [51]โ€“[55] ์›๋ฌธ ๋Œ€์กฐ | โณ | ๊ธฐ์–ต์œผ๋กœ ์ž‘์„ฑ๋จ โ€” `improved/07_references.md`์— ํ‘œ์‹œ |
| Figure 1 teaser | โณ | ์‹ค์ œ ํ”„๋ ˆ์ž„์˜ `x` / `MโŠ™x` / `(1โˆ’M)โŠ™x` 3์žฅ์ด๋ฉด ์ถฉ๋ถ„ |

---

## 4. ํ™•์ •๋œ ์‚ฌ์‹ค (๋˜๋Œ๋ฆฌ์ง€ ๋ง ๊ฒƒ)

์ธก์ •ยท๊ฒ€์ฆ์„ ๊ฑฐ์นœ ๊ฒƒ๋“ค์ด๋‹ค. ๋‹ค์‹œ ๋…ผ์˜ํ•˜๊ธฐ ์ „์— ๊ทผ๊ฑฐ๋ฅผ ๋จผ์ € ๋ณผ ๊ฒƒ.

**`L_dis`๋Š” ํ•™์Šต๋œ ์ ์ด ์—†๋‹ค.** `checkpoint_106` ์‹ค์ธก:
- `encoder_1.bias` ์ฝ”์‚ฌ์ธ `+0.9988` / `โˆ’0.9993` (๋ชฉํ‘œ๊ฐ’์— ์ •ํ™•ํžˆ ๋„๋‹ฌ)
- ๊ฐ™์€ ๋ชจ๋“ˆ์˜ `decoder_2.bias`(์ด ์†์‹ค์ด ์•ˆ ๋‹ฟ๋Š” ๋Œ€์กฐ๊ตฐ) `+0.027` / `+0.023`
- `encoder_1.weight`๋Š” ์ดˆ๊ธฐํ™” ๋Œ€๋น„ 0.97~1.01๋ฐฐ โ€” ์ž…๋ ฅ ์ฒ˜๋ฆฌ๋ถ€๋Š” ์•ˆ ์›€์ง์˜€๊ณ 
  ์ž…๋ ฅ ๋ฌด๊ด€ bias๋งŒ 20~40๋ฐฐ ํŒฝ์ฐฝ
- `cos = ยฑ1`์€ ์ฝ”์‚ฌ์ธ์˜ ์ •๋ฅ˜์  โ†’ ๊ธฐ์šธ๊ธฐ 0 โ†’ ์ดํ›„ 106 epoch ๋™์•ˆ ๋ฌด๊ธฐ์—ฌ
- ๊ฒฐ๋ก : `t_4 = 0.1`๊ณผ `t_4 = 0`์ด ๋น„ํŠธ ๋‹จ์œ„๋กœ ๋™์ผํ•˜๋‹ค. ์–ด๋ธ”๋ ˆ์ด์…˜ ๋ถˆํ•„์š”

**CDS๋Š” `L_dis`์˜ ์ตœ์ ์ ์—์„œ 0์ด ๋œ๋‹ค.** linear CKA๊ฐ€ ๋ถ€ํ˜ธ ๋ถˆ๋ณ€์ด๋ฏ€๋กœ
`z_b = โˆ’cยทz_m`์—์„œ Redundancy = 1 โ†’ CDS = 0. ์ฆ‰ ๋ชฉ์ ํ•จ์ˆ˜์™€ ์ง„๋‹จ ์ง€ํ‘œ๊ฐ€ ์„œ๋กœ
๋ฐ˜๋Œ€๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋น„์ค‘๋ณต์„ฑ์ด ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋ฐ˜์ƒ๊ด€(โˆ’1)์ด ์•„๋‹ˆ๋ผ ํƒˆ์ƒ๊ด€(0)์ด๋‹ค.

**๋งˆ์Šคํฌ ๋น„์œจ์€ ๋„๋ฉ”์ธ ๊ฐ„ 10๋ฐฐ ์ด์ƒ ์ฐจ์ด ๋‚œ๋‹ค** (์ „์ˆ˜ 7,852 ํด๋ฆฝ, ฯ„=0.2):
DoTA 0.449 / Ped2 0.160 / Ped1 0.159 / Avenue 0.147 / ShanghaiTech 0.067 /
UCF-Crime 0.064 / UBnormal 0.039. ๊ณ ์ • ์นด๋ฉ”๋ผ ๋„๋ฉ”์ธ์—์„œ ์ •์  ์ŠคํŠธ๋ฆผ์€ ํ”„๋ ˆ์ž„์˜
84โ€“96%๋ฅผ ๋ณด์กดํ•˜๋ฏ€๋กœ ์™ธํ˜• ์ŠคํŠธ๋ฆผ๊ณผ ์ž…๋ ฅ์ด ํฌ๊ฒŒ ๊ฒน์นœ๋‹ค โ†’ `duplicate` ํ†ต์ œ๊ตฐ์ด ํŠนํžˆ ์ค‘์š”.

**Stage-2์—๋Š” `L_ML`ยท`L_BL`์ด ์—†๋‹ค.** ์„ธ ์ŠคํŠธ๋ฆผ์„ concatํ•ด LLaMA๋ฅผ 1ํšŒ ํ†ต๊ณผ์‹œํ‚ค๋ฏ€๋กœ
`loss_motion = loss_background = loss`์ด๋ฉฐ(`video_llama.py:806`), ์‹คํšจ ๋ชฉ์ ์€
`1.2ยทL_VL + 0.1ยทL_sim + 0.1ยทL_dis`๋‹ค. ๋”ฐ๋ผ์„œ `+L_BL` ์–ด๋ธ”๋ ˆ์ด์…˜ ํ–‰์€ Stage-1
์žฌ์‚ฌ์ „ํ•™์Šต์„ ์š”๊ตฌํ•œ๋‹ค.

**Stage-1์—์„œ `L_BL`์€ ์ •์ƒ ์ž‘๋™ํ–ˆ๋‹ค.** ๋กœ๊ทธ์˜ `motionloss 2.6672` vs
`backgroundloss 2.2075`๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์ด๋ผ๋Š” ๊ฒƒ์ด ์ฆ๊ฑฐ๋‹ค. ์—ฐ๊ตฌ ์ฃผ์žฅ์˜ ํ•ต์‹ฌ ๋ถ€ํ’ˆ์€
๋ถ•๊ดดํ•˜์ง€ ์•Š์•˜๋‹ค.

---

## 5. ์•„์ง ์—†๋Š” ๊ฒƒ โ€” ์ฃผ์žฅ์„ ์ง์ ‘ ์žฌ๋Š” ์ง€ํ‘œ

ํ˜„์žฌ ์ง€ํ‘œ๋Š” ์—ฐ๊ตฌ ์ฃผ์žฅ์„ **๊ฐ„์ ‘์ ์œผ๋กœ๋งŒ** ์žฐ๋‹ค.

- BLEU: ๋ฌธ์žฅ ์ „์ฒด. ๋ฐฐ๊ฒฝ ์„œ์ˆ ์ด ์ข‹์•„์ ธ๋„ ํฌ์„๋œ๋‹ค
- BSI: ๋ฐฐ๊ฒฝ์— *๋ฏผ๊ฐํ•œ๊ฐ€*์ด์ง€ *์ •ํ™•ํ•œ๊ฐ€*๊ฐ€ ์•„๋‹ˆ๋‹ค
- `context_critical` ์ •ํ™•๋„: ๋งž์•˜๋‚˜ ํ‹€๋ ธ๋‚˜. ๋ฐฐ๊ฒฝ ์„œ์ˆ  ํ’ˆ์งˆ์€ ์•„๋‹ˆ๋‹ค

**์žฅ๋ฉด ์–ดํœ˜ ์žฌํ˜„์œจ(Scene-word Recall)** โ€” ์ •๋‹ต ์บก์…˜์—์„œ ๋ฝ‘์€ ์žฅ๋ฉด ์–ดํœ˜
(`extract_background_entities_sentence`๊ฐ€ ๋ฝ‘๋Š” ๋ฐ”๋กœ ๊ทธ ๋‹จ์–ด๋“ค, `L_BL`์˜ ํ•™์Šต ๋ชฉํ‘œ)๋ฅผ
๋ชจ๋ธ ์ถœ๋ ฅ์ด ์–ผ๋งˆ๋‚˜ ๋งžํžˆ๋Š”๊ฐ€. ์ด๊ฒƒ์ด ์žˆ์–ด์•ผ *"HAWK๋Š” ๋…ธ๋ฉด์ด ์ –์—ˆ๋‹ค๋Š” ๊ฑธ ๋งํ•˜์ง€ ๋ชปํ•˜๋Š”๋ฐ
์šฐ๋ฆฌ๋Š” ๋งํ•œ๋‹ค"* ๋ฅผ ์ˆซ์ž๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค. GPU ๋ถˆํ•„์š”.

---

## 6. ๊ฒฐ๊ณผ๋ณ„ ๋Œ€์‘ (๋ฏธ๋ฆฌ ์ •ํ•ด ๋‘”๋‹ค)

| โ‘  ๊ฒฐ๊ณผ | ํ•ด์„ | ๋…ผ๋ฌธ ๋ฐฉํ–ฅ |
|---|---|---|
| `flow` > `duplicate` > `random_mask` โ‰ˆ `zero` | S1ยทS2ยทS3 ์ „๋ถ€ ์„ฑ๋ฆฝ | ์›์•ˆ๋Œ€๋กœ. ์ƒ๋ณด ๋ถ„ํ•ด๊ฐ€ ํ•ต์‹ฌ ๊ธฐ์—ฌ |
| `flow` โ‰ˆ `duplicate` > `random_mask` โ‰ˆ `zero` | S1ยทS2 ์„ฑ๋ฆฝ, S3 ์‹คํŒจ | C1์„ "๋ฐฐ๊ฒฝ ์ •๋ณด์˜ ๋ช…์‹œ์  ๋ถ„๋ฆฌ"๋กœ ์ถ•์†Œ. ๋ถ„ํ•ด์˜ *ํ˜•ํƒœ*๋Š” ์ฃผ์žฅํ•˜์ง€ ์•Š์Œ |
| `flow` โ‰ˆ `random_mask` | S2 ์‹คํŒจ | ์ด๋“์ด ์šฉ๋Ÿ‰ยท์ •๊ทœํ™” ํšจ๊ณผ. ๊ตฌ์กฐ ์ฃผ์žฅ ์ฒ ํšŒ, ์Œ์„ฑ ๊ฒฐ๊ณผ๋กœ ์ •์งํ•˜๊ฒŒ ๋ณด๊ณ  |
| ์ „๋ถ€ ๋™์  | S1 ์‹คํŒจ | ๋ฐฐ๊ฒฝ ์ŠคํŠธ๋ฆผ ์ž์ฒด๊ฐ€ ๋ฌดํšจ. โ‘ฃ(ego-motion)๋กœ ๋งˆ์Šคํฌ ํ’ˆ์งˆ์„ ๋จผ์ € ๊ฐœ์„ ํ•ด ์žฌ์‹œ๋„ |

๋งˆ์ง€๋ง‰ ๋‘ ๊ฒฝ์šฐ๊ฐ€ ๋‚˜์™€๋„ **๋ฒ„๋ฆด ์‹คํ—˜์ด ์•„๋‹ˆ๋‹ค** โ€” "๋ธŒ๋žœ์น˜ ์ถ”๊ฐ€๋Š” ์šฉ๋Ÿ‰ ํšจ๊ณผ์˜€๋‹ค"๋Š” ๊ฒƒ๋„
์ด ๊ณ„๋ณด์—์„œ ๋ณด๊ณ ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒฐ๊ณผ์ด๋ฉฐ, ํ†ต์ œ๊ตฐ์„ ๊ฐ–์ถ˜ ๋•๋ถ„์— ๊ทธ๋ ‡๊ฒŒ ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.

---

## 7. ๋ฐฑ์—… ๊ทœ์•ฝ

ํฐ ๋ณ€๊ฒฝ ํ›„์—๋Š” ์–‘์ชฝ ๋ชจ๋‘ ๋ฐ€์–ด ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ ์žฌํ˜„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

```bash
# ์ฝ”๋“œยท๋ฌธ์„œยทfigure
git push https://<token>@github.com/jungseoik/hawk.git HEAD:main

# ์ฒดํฌํฌ์ธํŠธยท๋กœ๊ทธ (HF)
$CERBERUS_PY scripts/upload_checkpoint.py --folder <name> --run-dir $CERBERUS_ROOT/runs/<run> --latest
```
ํ† ํฐ: `$CERBERUS_ROOT/.github_token`, `.hf_token`, `.gemini_token`(ํŒ์ •์ž).