Skip to content

Latest commit

ย 

History

History
55 lines (44 loc) ยท 6.73 KB

File metadata and controls

55 lines (44 loc) ยท 6.73 KB

์ •์ฑ… ์ƒ์ˆ˜ ์ „์ˆ˜์กฐ์‚ฌ

์ด ๋ฌธ์„œ๋Š” domain/ยทapplication/์— ํฉ์–ด์ ธ ์žˆ๋Š” ๋งค์ง๋„˜๋ฒ„(์ž„๊ณ„๊ฐ’ยท๋ฐฐ์œจยท๊ณ„์ˆ˜)๋ฅผ ํ•œ๊ณณ์— ๋ชจ์€ ๊ฒƒ. ๋ชฉ์ ์€ "์™œ ์ด ๊ฐ’์ธ์ง€"์™€ "์–ธ์ œ ๋‹ค์‹œ ๋ด์•ผ ํ•˜๋Š”์ง€"๋ฅผ ์ฝ”๋“œ๋งŒ ๋ด์„œ๋Š” ์•Œ ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์„ ๋ช…์‹œํ•˜๋Š” ๊ฒƒ - ๊ฐ’ ์ž์ฒด๋ฅผ ์ •๋‹นํ™”ํ•˜๋ ค๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ๊ฐ ๊ฐ’์ด ์–ด๋А ์นดํ…Œ๊ณ ๋ฆฌ์ธ์ง€๋ฅผ ๋ถ„๋ช…ํžˆ ํ•ด์„œ ์ž˜๋ชป๋œ ๋ฐฉ์‹์œผ๋กœ ๊ฒ€์ฆํ•˜๋ ค ๋“ค์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒŒ ํ•ต์‹ฌ์ด๋‹ค.

๋‘ ์นดํ…Œ๊ณ ๋ฆฌ

  • [DATA] ์‹ค์ธก ๋ฐ์ดํ„ฐ๊ฐ€ ์Œ“์ด๋ฉด ํ†ต๊ณ„์ ์œผ๋กœ ์žฌ๊ณ„์‚ฐ/๊ฒ€์ฆ ๊ฐ€๋Šฅํ•œ ๊ฐ’. "๊ทผ๊ฑฐ๊ฐ€ ์—†๋‹ค"๋Š” ์ง€์ ์ด ์ •ํ™•ํžˆ ๋งž๋Š” ์นดํ…Œ๊ณ ๋ฆฌ - ์ง€๊ธˆ์€ synthetic ๋ฐ์ดํ„ฐ๋‚˜ ์ง๊ด€์œผ๋กœ๋งŒ ์žกํ˜€ ์žˆ๊ณ , ์‹ค์ธก ํŒŒ์ดํ”„๋ผ์ธ์ด ์—†์œผ๋ฉด ์˜์›ํžˆ ์ž„์˜๊ฐ’์œผ๋กœ ๋‚จ๋Š”๋‹ค.
  • [POLICY] ํ†ต๊ณ„๋กœ "์ •๋‹ต"์ด ๋‚˜์˜ค์ง€ ์•Š๋Š” ์ œํ’ˆ/๋„๋ฉ”์ธ ์ •์ฑ…๊ฐ’. ์‹ค์ œ ์ž…์‹œ ์„œ๋น„์Šค๋„ ์ด๋Ÿฐ ๊ฑด ๊ฐ•์‚ฌยท ์ปจ์„คํ„ดํŠธ ํŒ๋‹จ์œผ๋กœ ์ •ํ•˜๊ณ , ์ดํ›„ ์™„์ฃผ์œจ/์„ฑ์  ํ–ฅ์ƒ ๊ฐ™์€ ๊ฒฐ๊ณผ ์ง€ํ‘œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋ฉด์„œ ์‚ฌ๋žŒ์ด ์กฐ์ •ํ•œ๋‹ค. "๊ทผ๊ฑฐ๋ฅผ ๋Œ€๋ผ"๋Š” ์š”๊ตฌ ์ž์ฒด๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š” ์นดํ…Œ๊ณ ๋ฆฌ - ๋Œ€์‹  "์–ด๋–ค ์ง€ํ‘œ๋ฅผ ๋ณด๊ณ  ์กฐ์ •ํ• ์ง€"๊ฐ€ ๋ช…์‹œ๋ผ์•ผ ํ•œ๋‹ค.

๋ชฉ๋ก

์ƒ์ˆ˜ ์œ„์น˜ ๊ฐ’ ์นดํ…Œ๊ณ ๋ฆฌ ๊ทผ๊ฑฐ / ์žฌ๊ฒ€ํ†  ์กฐ๊ฑด
SLIP_BUFFER_WEEKS domain/scheduler.py 2 POLICY ํ•™์ƒ์ด ์ •ํ•œ ์™„์ฃผ๊ธฐ๊ฐ„์—์„œ ์ตœ๋Œ€ ๋ฉฐ์น  ๋” ๋ฐ€๋ฆฌ๋Š” ๊ฑธ ํ—ˆ์šฉํ• ์ง€. ์žฌ๊ฒ€ํ† : ์‹ค์ œ ์Šฌ๋ฆฝ ๋ถ„ํฌ(ํ•™์ƒ๋“ค์ด ํ‰๊ท  ๋ช‡ ์ฃผ์”ฉ ๋ฐ€๋ฆฌ๋Š”์ง€) ๋‚˜์˜ค๋ฉด ์ด ๊ฐ’์ด "๋Œ€๋ถ€๋ถ„์˜ ํ•™์ƒ์„ ์ปค๋ฒ„ํ•˜๋Š”์ง€" ํ™•์ธ.
REVIEW_BUFFER_WEEKS domain/scheduler.py 3 POLICY ์ˆ˜๋Šฅ ์ง์ „ ์ƒˆ ์ง„๋„ ๊ธˆ์ง€ยท์ด๋ณต์Šต ๊ธฐ๊ฐ„. ์‚ฌ์šฉ์ž๊ฐ€ "3์ฃผ(๊ด€์Šต์  ์ด์ •๋ฆฌ ๊ธฐ๊ฐ„)"๋กœ ํ™•์ •(2026-07-09). ์žฌ๊ฒ€ํ† : ํŒ€/์ปจ์„คํ„ดํŠธ ์žฌ๋…ผ์˜ ์—†์ด๋Š” ์•ˆ ๋ฐ”๋€œ.
PUSH_CAP_MULTIPLIER domain/reflow.py 1.5 POLICY ํ‰์†Œ push_mode ๊ฐ•๋„ ๋ฐฐ์œจ. ์žฌ๊ฒ€ํ† : ์ด ๋ฐฐ์œจ๋กœ ๋ฐ€๋ฆฐ ํ•™์ƒ์ด ์‹ค์ œ๋กœ ๋”ฐ๋ผ์žก๋Š” ๋น„์œจ(์™„์ฃผ์œจ)์„ ๋ณด๊ณ  ์กฐ์ •.
FINAL_STRETCH_DAYS domain/reflow.py 100 POLICY ์ˆ˜๋Šฅ D-100(์ž…์‹œ ๋ฌธํ™”์ ์œผ๋กœ ์˜๋ฏธ์žˆ๋Š” ์‹œ์ ). ์žฌ๊ฒ€ํ† : ์•ˆ ํ•จ(๊ด€์Šต์  ์ƒ์ง•์„ฑ์ด ๊ทผ๊ฑฐ๋ผ ๋ฐ์ดํ„ฐ๋กœ ์•ˆ ๋ฐ”๋€œ).
FINAL_STRETCH_PUSH_CAP_MULTIPLIER domain/reflow.py 1.8 POLICY D-100 ์ด๋‚ด ์ „๋ฐ˜ ๊ฐ•๋„. ์‚ฌ์šฉ์ž๊ฐ€ "ํ‰์†Œ๋ณด๋‹ค ์„ธ๊ฒŒ"๋กœ ํ™•์ •, 1.8์€ ์ž„์˜ ์„ ํƒ. ์žฌ๊ฒ€ํ† : D-100 ์ง„์ž… ํ›„ ์ดํƒˆ๋ฅ ์ด ์˜คํžˆ๋ ค ๋Š˜๋ฉด(๋„ˆ๋ฌด ์„ธ์„œ ์—ญํšจ๊ณผ) ๋‚ฎ์ถ”๋Š” ๋ฐฉํ–ฅ ๊ฒ€ํ† .
MIN_EFFICIENCY_SAMPLES domain/scheduler.py 3 DATA (๋ฏธ๊ฒ€์ฆ) "3๊ฑด์ด๋ฉด ์ฝœ๋“œ์Šคํƒ€ํŠธ ๋ฒ—์–ด๋‚จ"์€ ์ง๊ด€์น˜. ์žฌ๊ฒ€ํ† : ์‹ค์ธก ๋ฆฌ๋ทฐ ๋กœ๊ทธ ์Œ“์ด๋ฉด ์ƒ˜ํ”Œ์ˆ˜๋ณ„ raw ๊ณ„์ˆ˜์˜ ํ‘œ๋ณธ๋ถ„์‚ฐ์„ ๋ณด๊ณ  "์•ˆ์ •ํ™”๋˜๋Š” ์‹œ์ "์„ ๋‹ค์‹œ ์žก์„ ๊ฒƒ - scripts/calibrate_risk_weights.py๋ฅ˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ.
MIN/MAX_EFFICIENCY_COEFFICIENT domain/scheduler.py 0.5 / 2.0 POLICY (์•ˆ์ „์žฅ์น˜) ๊ทน๋‹จ์น˜ ํด๋žจํ•‘ - "ํ†ต๊ณ„์ ์œผ๋กœ ์˜ณ์€ ๋ฒ”์œ„"๊ฐ€ ์•„๋‹ˆ๋ผ ์•ˆ์ „์žฅ์น˜. ์žฌ๊ฒ€ํ†  ๋ถˆํ•„์š”(์‚ฌ๊ณ  ๋ฐฉ์ง€์šฉ ์ƒํ•œ/ํ•˜ํ•œ์ด๋ผ ๋„“ํ˜€๋„ ๋˜๋Š” ๊ทผ๊ฑฐ๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง„ ์œ ์ง€).
EFFICIENCY_STRETCH_FACTOR domain/scheduler.py 0.5(๊ธฐ๋ณธ๊ฐ’, ์‹ค์ œ๋กœ๋Š” ํ•™์ƒ๋งˆ๋‹ค ์‹คํ—˜ variant ์ ์šฉ) DATA (A/B ์‹คํ—˜ ์ง„ํ–‰ ์ค‘) "์ ˆ๋ฐ˜๋งŒ ๋ฐ˜์˜"์€ ์‚ฌ์šฉ์ž ์„ ํƒ์ด์ง€ ์‹คํ—˜ ๊ทผ๊ฑฐ ์—†์Œ. domain/experiments.py::assign_variant()๊ฐ€ ํ•™์ƒ๋งˆ๋‹ค [0.3, 0.5, 0.7] ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •์ ์œผ๋กœ ๋ฐฐ์ •ํ•˜๊ณ  experiment_exposure ํ…Œ์ด๋ธ”์— ๋…ธ์ถœ์„ ๊ธฐ๋ก ์ค‘(๋ฐฐ์ • ์ธํ”„๋ผ๋Š” ์™„๋ฃŒ). ๋‚จ์€ ๊ฑด ์™„์ฃผ์œจ/์„ฑ์  ํ–ฅ์ƒ ๊ฐ™์€ ์„ฑ๊ณผ ๋ฐ์ดํ„ฐ์™€์˜ ์กฐ์ธ - ๊ทธ๊ฒŒ ์Œ“์ด๋ฉด scripts/calibrate_policy_constants.py::analyze_stretch_factor_ab_test()๋ฅผ ์ฑ„์›Œ์„œ ๊ทธ๋ฃน๋ณ„ ๋น„๊ต.
DEFAULT_MAX_REVIEW_INTERVAL_DAYS application/use_cases.py 180 POLICY (ํด๋ฐฑ) ์ˆ˜๋Šฅ์ผ ๋ฏธํ™•์ธ ์‹œ ํด๋ฐฑ. ์žฌ๊ฒ€ํ† : ์˜จ๋ณด๋”ฉ ์™„๋ฃŒ์œจ์ด ๋†’์•„์ ธ ์ด ํด๋ฐฑ์ด ๊ฑฐ์˜ ์•ˆ ์“ฐ์ด๋ฉด ์šฐ์„ ์ˆœ์œ„ ๋‚ฎ์Œ.
risk ๊ฐ€์ค‘์น˜ (recency/streak/quiz) domain/risk.py 0.45 / 0.30 / 0.25 DATA (๊ต์ฒด ๊ฒฝ๋กœ ์žˆ์Œ) scripts/coxph_synthetic_population.py์˜ synthetic ground truth(0.9:0.6:0.4)๋ฅผ ์ •๊ทœํ™”ํ•œ ๊ฐ’ - synthetic์ด์ง€ ์‹ค์ธก ์•„๋‹˜. ์žฌ๊ฒ€ํ† : ์‹ค์ œ ์ดํƒˆ ์ด๋ฒคํŠธ๊ฐ€ ์Œ“์ด๋ฉด scripts/calibrate_risk_weights.py๋กœ ์‹ค์ธก Cox PH ๊ณ„์ˆ˜๋ฅผ ๋ฝ‘์•„ ์ด ์ƒ์ˆ˜์™€ ๋น„๊ต, ๋“œ๋ฆฌํ”„ํŠธ ํฌ๋ฉด ๊ต์ฒด(๋กœ๋“œ๋งต์ƒ ์›๋ž˜ "๊ทœ์น™๊ธฐ๋ฐ˜โ†’Cox PH ์Šน๊ธ‰"์œผ๋กœ ์˜ˆ์ •๋ผ ์žˆ๋˜ ๊ฒƒ).
risk_label ์ž„๊ณ„๊ฐ’ domain/risk.py 0.7 / 0.4 (HIGH/MEDIUM) POLICY ์Šค์ฝ”์–ด ๊ตฌ๊ฐ„ ๋‚˜๋ˆ„๊ธฐ. ์žฌ๊ฒ€ํ† : ์‹ค์ œ ๋ผ๋ฒจ๋ณ„ ์‹ค์ œ ์ดํƒˆ๋ฅ ์„ ์ง‘๊ณ„ํ•ด์„œ "HIGH๋ผ๊ณ  ํ•œ ํ•™์ƒ์ด ์ง„์งœ ๋” ๋งŽ์ด ์ดํƒˆํ•˜๋Š”์ง€" ํ™•์ธ ํ›„ ์กฐ์ •.
ํ€ด์ฆˆ์ ์ˆ˜โ†’FSRS grade ์ž„๊ณ„๊ฐ’ domain/review.py 90/70/50 POLICY CLAUDE.md์— ์ด๋ฏธ ๋ช…์‹œ: "์‹ค์ „์— ์ •๋ฆฝ๋œ ๊ณต์‹ ์—†์Œ, ์‹ค์ธก ์Œ“์ด๋ฉด ์กฐ์ • ๊ฐ€๋Šฅ."

๋‚จ์€ ์ผ

  • [DATA] ํ‘œ์‹œ๋œ ํ•ญ๋ชฉ ์ค‘ risk ๊ฐ€์ค‘์น˜๋Š” ์‹ค์ธก ์ดํƒˆ ๋ฐ์ดํ„ฐ๋งŒ ์Œ“์ด๋ฉด ๋ฐ”๋กœ ์žฌ๊ณ„์‚ฐ ๊ฐ€๋Šฅํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ์Œ(scripts/calibrate_risk_weights.py).
  • **EFFICIENCY_STRETCH_FACTOR**๋Š” A/B ํ…Œ์ŠคํŠธ ์—†์ด๋Š” ์›์ฒœ์ ์œผ๋กœ ๊ฒ€์ฆ ๋ถˆ๊ฐ€ - ์‹ค์ธก ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งŒ๋“ค์–ด๋„ "๊ด€์ฐฐ ๋ฐ์ดํ„ฐ"๋งŒ์œผ๋กœ๋Š” ์ธ๊ณผ๊ด€๊ณ„(์ŠคํŠธ๋ ˆ์น˜๋ฅผ ์„ธ๊ฒŒ ์คฌ๋”๋‹ˆ ์ ์ˆ˜๊ฐ€ ์˜ฌ๋ž๋‹ค)๋ฅผ ์ฃผ์žฅํ•  ์ˆ˜ ์—†์Œ. ์ด๊ฑด ๋‚˜์ค‘์— ์‹ค์ œ A/B ์‹คํ—˜์„ ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋Š” ํ•ญ๋ชฉ์œผ๋กœ ๋ณ„๋„ ๊ด€๋ฆฌ.

EFFICIENCY_STRETCH_FACTOR ์กธ์—… ๊ธฐ์ค€ (์–ธ์ œ "๊ณ ์ • ์ƒ์ˆ˜"์—์„œ "์‹ค์ธก ๋น„๊ต"๋กœ ๋„˜์–ด๊ฐ€๋Š”์ง€)

์ง€๊ธˆ์€ ์‹ค์‚ฌ์šฉ์ž๊ฐ€ 0๋ช…์ด๋ผ ๊ฒ€์ฆ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒํƒœ - ์•„๋ž˜ ์กฐ๊ฑด์„ ์ „๋ถ€ ๋งŒ์กฑํ•˜๊ธฐ ์ „๊นŒ์ง€๋Š” scripts/calibrate_policy_constants.py::analyze_stretch_factor_ab_test()๋ฅผ ์‹คํ–‰ํ•ด๋„ ์˜๋ฏธ ์—†๋‹ค.

  1. ํ‘œ๋ณธ ์กฐ๊ฑด: variant([0.3, 0.5, 0.7]) ๊ทธ๋ฃน๋งˆ๋‹ค experiment_exposure์— ๋…ธ์ถœ๋œ ํ•™์ƒ์ด ๊ฐ ๊ทธ๋ฃน ์ตœ์†Œ 30๋ช… ์ด์ƒ(risk ๊ฐ€์ค‘์น˜ ์žฌ๊ฒ€์ฆ ๋•Œ ์“ด MIN_REAL_EVENTS_FOR_CALIBRATION=30๊ณผ ๋™์ผ ๊ธฐ์ค€ - ์ผ๊ด€์„ฑ ์œ ์ง€).
  2. ๊ธฐ๊ฐ„ ์กฐ๊ฑด: ๊ทธ ํ•™์ƒ๋“ค์ด ์ตœ์†Œ 4์ฃผ ์ด์ƒ ํ™œ๋™ํ•œ ๋’ค - efficiency ๊ณ„์ˆ˜ ์ž์ฒด๊ฐ€ ์•ˆ์ •ํ™”(์™„๋ฃŒ 3๊ฑด ์ด์ƒ)๋˜๋Š” ๋ฐ ๋ณดํ†ต 1~2์ฃผ ๊ฑธ๋ฆฌ๋ฏ€๋กœ(์ด์ „ ์„ธ์…˜ ๋ถ„์„ ์ฐธ๊ณ ), ๊ทธ ์ดํ›„๋กœ๋„ ๊ฒฐ๊ณผ๊ฐ€ ๋ˆ„์ ๋  ์‹œ๊ฐ„์ด ํ•„์š”ํ•จ.
  3. ์„ฑ๊ณผ ์ง€ํ‘œ ์ •์˜: "์™„์ฃผ์œจ"๊ณผ "ํ€ด์ฆˆ ํ‰๊ท ์ ์ˆ˜ ์ถ”์ด(๋“ฑ๋ก ์‹œ์  ๋Œ€๋น„ 4์ฃผ ํ›„ ๋ณ€ํ™”๋Ÿ‰)" ์ค‘ ์ตœ์†Œ ํ•˜๋‚˜๊ฐ€ ์‹ค์ œ๋กœ ๋กœ๊น…๋˜๊ณ  ์žˆ์–ด์•ผ ํ•จ - ์ง€๊ธˆ์€ ์ด ์„ฑ๊ณผ ์ง‘๊ณ„ ์ž์ฒด๊ฐ€ ์‹œ์Šคํ…œ์— ์—†์œผ๋ฏ€๋กœ, ์œ„ ํ‘œ๋ณธ/๊ธฐ๊ฐ„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๊ธฐ ์ „์— ์ด ๋กœ๊น…๋ถ€ํ„ฐ ๋จผ์ € ๋งŒ๋“ค์–ด์•ผ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•จ.

์„ธ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์•ˆ ์ฑ„์›Œ์ง„ ์ƒํƒœ์—์„œ ๋‚˜์˜จ "0.5๊ฐ€ ๋” ๋‚ซ๋‹ค/์•„๋‹ˆ๋‹ค" ๊ฐ™์€ ๊ฒฐ๋ก ์€ ํ‘œ๋ณธ ๋ถ€์กฑ์œผ๋กœ ์ธํ•œ ๋…ธ์ด์ฆˆ์ผ ๋ฟ์ด๋‹ˆ, ๋ฐœํ‘œ๋‚˜ ์˜์‚ฌ๊ฒฐ์ • ๊ทผ๊ฑฐ๋กœ ์“ฐ์ง€ ๋ง ๊ฒƒ.