cwLeeDev's picture
Add fail-closed real P formula data contract
52585d7 verified
|
Raw
History Blame
33.2 kB

AIFlow Math Ink 0.6 โ€” ํ–‰๋™ ๋ฌธ๋งฅ ๋ชจ๋ธ ์ „ํ™˜ ๋ณด๊ณ ์„œ

๊ฒฐ๋ก 

0.6์˜ ๋‚จ์€ ์ •ํ™•๋„๋Š” ๊ณ ๋ฆฝ ๊ธฐํ˜ธ ๋ถ„๋ฅ˜๊ธฐ๋งŒ ๋” ํ•™์Šตํ•ด์„œ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋™์ผํ•œ ๊ต์ฐจํš์ด x, X, \times๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ณ , ๋™์ผํ•œ ๋Œ€๋ฌธ์ž๋„ ๋ถ„์žยท๋ถ„๋ชจยท์ฒจ์ž์ฒ˜๋Ÿผ ์ถ•์†Œ๋œ ์ˆ˜์‹ ์Šฌ๋กฏ์—์„œ๋Š” ์‹ ์ „์ฒด ๋†’์ด์™€ ๋น„๊ตํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์Œ ์ฑ…์ž„ ๋ถ„๋ฆฌ๋ฅผ ์ฑ„ํƒํ•œ๋‹ค.

  1. trajectory/raster ์‹ ๊ฒฝ๋ง์€ ํ˜•ํƒœ ํ›„๋ณด top-k์™€ ํ™•๋ฅ ์„ ๋งŒ๋“ ๋‹ค.
  2. Trayยท๊ด€๊ณ„ ๋ ˆ์ด์–ด๋Š” ๋ถ„์žยท๋ถ„๋ชจยท์ฒจ์žยทํ”ผ๊ฐœํ•ญ ๋“ฑ ๋กœ์ปฌ ์ขŒํ‘œ๊ณ„๋ฅผ ๋งŒ๋“ ๋‹ค.
  3. ํ–‰๋™ ๋ฌธ๋งฅ ๋ ˆ์ด์–ด๋Š” ํš ํ–‰๋™, ๋กœ์ปฌ ํฌ๊ธฐ, ์ด์›ƒ ํ›„๋ณด, ๊ฐ„๊ฒฉ, Tray ์—ญํ• ์„ ์‚ฌ์šฉํ•ด ๊ฐ™์€ ํ˜•ํƒœ๊ตฐ ์•ˆ์˜ ์˜๋ฏธ๋งŒ ์žฌ์ ์ˆ˜ํ™”ํ•œ๋‹ค.
  4. ์ˆ˜์‹ gate์™€ LaTeX ๋ฌธ๋ฒ•์€ ๊ทธ ๋’ค์—์„œ ์ž‘๋™ํ•œ๋‹ค.
  5. ํ–‰๋™ ์ฆ๊ฑฐ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์›๋ž˜ top-k๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
touch / raster
โ†’ 128ร—128 ์ •๊ทœํ™”ยทtrajectory encoder
โ†’ ๊ธฐํ˜ธ top-k
โ†’ segmentation latticeยทTrayยท2D relation
โ†’ ํ–‰๋™ ๋ฌธ๋งฅ ๋ชจ๋ธ
   โ”œโ”€ ๋กœ์ปฌ ์Šฌ๋กฏ๋ณ„ ๋Œ€์†Œ๋ฌธ์ž
   โ”œโ”€ x / X / \times ์˜๋ฏธ ์—ญํ• 
   โ””โ”€ O / o / 0 ๋“ฑ hard-family ํ›„๋ณด ๋ณด์กด
โ†’ math/non-math gate
โ†’ Formula ExpertยทLaTeX

ํ–‰๋™ ๋ชจ๋ธ์€ glyph ์ธ์‹๊ธฐ๋ฅผ ๋ฎ์–ด์“ฐ๋Š” ์ƒˆ OCR์ด ์•„๋‹ˆ๋‹ค. ์‹ ๊ฒฝ๋ง์ด ๋ณด์กดํ•œ ํ›„๋ณด๊ตฐ ์•ˆ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ๊ธฐํ˜ธ๋ฅผ ์–ด๋–ค ์—ญํ• ๋กœ ๋ฐฐ์น˜ํ–ˆ๋Š”์ง€ ์ถ”์ •ํ•˜๋Š” ์ž‘์€ ํ›„๋‹จ ๋ชจ๋ธ์ด๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ํ™•์ธ๋œ ์—ฐ๊ตฌ ๊ฒฐ๊ณผ

Online/shared encoder

  • ์Šน์ธ HWRTยทUJI Pen v1/v2ยทPendigits ๊ธฐ๋ฐ˜ 128-stepยท19-channel ๊ฒฝ๋กœ๋ฅผ ๊ตฌ์ถ•ํ–ˆ๋‹ค.
  • seed 17ยท31ยท47 paired test ํ‰๊ท ์€ exact top-1 83.00%, top-5 97.78%, family top-1 91.37%๋‹ค.
  • logit ensemble์€ exact 83.82%, top-5 98.04%, casefold 90.93%, shape-family 93.02%๋‹ค.
  • exact ์˜ค๋ฅ˜์˜ 43.95%๊ฐ€ ๋Œ€์†Œ๋ฌธ์ž๋งŒ ๋‹ค๋ฅธ ์˜ค๋ฅ˜์ด๊ณ  56.86%๊ฐ€ ๊ฐ™์€ shape family ์•ˆ์˜ ์˜ค๋ฅ˜๋‹ค.
  • ์ด๋Š” ํ˜•ํƒœ ํ›„๋ณด๋Š” ์ƒ๋‹น ๋ถ€๋ถ„ ์‚ด์•„ ์žˆ์œผ๋‚˜ ์ตœ์ข… ์˜๋ฏธ ๋ฐฐ์ •์ด ๋ณ‘๋ชฉ์ด๋ผ๋Š” ๊ทผ๊ฑฐ๋‹ค.

Rasterโ†’virtual stroke

  • top-4 virtual stroke์™€ shared encoder ์žฌ์ž…๋ ฅ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค.
  • ํ›„๋ณด ๋‹ค์–‘์„ฑ์€ ๊ฐœ์„ ๋์ง€๋งŒ ์ตœ์ข… raster ์ •ํ™•๋„๋Š” release gate์— ํฌ๊ฒŒ ๋ฏธ๋‹ฌํ–ˆ๋‹ค.
  • 3-seed ์ฐจ์ด๊ฐ€ ์ž‘์•„ seed variance๋ณด๋‹ค vectorizer์™€ online feature ๋ถ„ํฌ ์ •๋ ฌ์ด ์ฃผ ๋ณ‘๋ชฉ์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ ํ–‰๋™ ๋ฌธ๋งฅ์€ raster vectorizer ๋ณ‘๋ชฉ์„ ๊ฐ์ถ”๋Š” ๋Œ€์ฒด๋ฌผ์ด ์•„๋‹ˆ๋ฉฐ, ๋‘ ๋ฌธ์ œ๋ฅผ ๋ณ„๋„ gate๋กœ ์ธก์ •ํ•ด์•ผ ํ•œ๋‹ค.

๋Œ€์†Œ๋ฌธ์ž ๋ฌธ๋งฅ

  • k/p/y์ฒ˜๋Ÿผ ํš ์ž์ฒด๊ฐ€ ๋‹ค๋ฅธ ์Œ์€ exact head๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค.
  • c/o/s/u/v/w/x/z์ฒ˜๋Ÿผ ์ฃผ ์ฐจ์ด๊ฐ€ ์ƒ๋Œ€ ๋†’์ด์ธ ์Œ๋งŒ context head๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค.
  • ๊ธฐ์กด ํ–‰ ์ „์ฒด ๊ธฐ์ค€ proxy๋Š” validation 70.31โ†’72.14%, test 62.19โ†’67.34%๋กœ ๊ฐœ์„ ๋์ง€๋งŒ, ์—ฐ์† ์ˆ˜์‹ P ๋ฐ์ดํ„ฐ์˜ ์ œํ’ˆ ๊ทผ๊ฑฐ๋Š” ์•„๋‹ˆ๋‹ค.
  • ํ–‰ ์ „์ฒด ๊ธฐ์ค€์€ ์ถ•์†Œ๋œ ๋ถ„์ˆ˜ยท์ฒจ์ž ์•ˆ์˜ ๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฒˆ ๊ตฌํ˜„์—์„œ ๋กœ์ปฌ ์Šฌ๋กฏ ๊ธฐ์ค€์œผ๋กœ ๊ต์ฒดํ–ˆ๋‹ค.

๊ตฌ์กฐยทTray

  • ๋ถ„์ˆ˜์„ ์€ ์™„์„ฑ๋œ ๋ถ„์žยท๋ถ„๋ชจ๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ FRACTION Tray๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ๊ทผํ˜ธ๋Š” radicand์™€ ์„ ํƒ์  degree, ์ ๋ถ„์€ integrand์™€ ์„ ํƒ์  upper/lower/differential์„ ๋ถ„๋ฆฌํ•œ๋‹ค.
  • = ์ธ์‹์€ ์ขŒ์šฐ ์‹์˜ ์™„์„ฑ ์—ฌ๋ถ€์™€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณด์กดํ•œ๋‹ค.
  • Tray๋Š” ๊ธฐํ˜ธ ์ด๋ฆ„์„ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๊ณ  ๊ธฐํ˜ธ๊ฐ€ ๋†“์ธ ์ˆ˜ํ•™์  ์Šฌ๋กฏ๊ณผ ๋กœ์ปฌ ๊ธฐ์ค€์„ ๋งŒ ์ œ๊ณตํ•œ๋‹ค.

x, X, \times ํŒ๋‹จ

2 ? 3์ด๋ผ๋Š” ์ด์›ƒ ์ •๋ณด๋งŒ์œผ๋กœ ๊ฐ€์šด๋ฐ๋ฅผ ๊ณฑํ•˜๊ธฐ๋กœ ํ™•์ •ํ•  ์ˆ˜ ์—†๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ€์ˆ˜ x ๋˜๋Š” ๋ฌธ์ž X๋ฅผ ์ˆซ์ž ์‚ฌ์ด์— ์“ธ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ๋ชจํ˜ธ์„ฑ์€ ๋ฌธ๋ฒ•๋งŒ์œผ๋กœ ์™„์ „ํžˆ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†๋‹ค.

ํ˜„์žฌ ํ–‰๋™ ๋ ˆ์ด์–ด๋Š” ๋‹ค์Œ ์›์น™์„ ์ ์šฉํ•œ๋‹ค.

  • ์–‘์˜† ์ˆซ์ž๋Š” ๋ณด์กฐ feature๋กœ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๊ต์ฐจํš ์‹œ๊ฐ ํ™•๋ฅ , infix ์ ์œ , ์—ฐ์‚ฐ์žํ˜• ๊ฐ„๊ฒฉ, ๋ช…์‹œ์  operator context ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ตฌ์กฐ ์ฆ๊ฑฐ๊ฐ€ ์—†์œผ๋ฉด no-op์ด๋‹ค.
  • ์กฐ๊ฑด์„ ํ†ต๊ณผํ•ด๋„ x/X/\times family์˜ ์ด logit ์งˆ๋Ÿ‰์„ ๋ณด์กดํ•œ ์ฑ„ \times prior๋งŒ ๋”ํ•œ๋‹ค.
  • ์› ์‹ ๊ฒฝ๋ง์˜ X ์ฆ๊ฑฐ๊ฐ€ ์ถฉ๋ถ„ํžˆ ๊ฐ•ํ•˜๋ฉด ํ–‰๋™ prior๊ฐ€ ๋’ค์ง‘์ง€ ๋ชปํ•œ๋‹ค.
  • ๋ณธ์งˆ์ ์œผ๋กœ ๋ชจํ˜ธํ•œ ์ž…๋ ฅ์€ top-k์™€ ๋‚ฎ์€ confidence๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๊ฑฐ์ง“ ํ™•์ •์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ–ฅํ›„ ํ•™์Šต feature๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์› ์‹ ๊ฒฝ๋ง์˜ family logits์™€ entropy
  • ์•ž๋’ค token์˜ digit/identifier/operator ํ™•๋ฅ  ์งˆ๋Ÿ‰
  • ์ขŒ์šฐ ๊ฐ„๊ฒฉ, ์ค‘์‹ฌ์„  ์ •๋ ฌ, ๋กœ์ปฌ ๋†’์ด๋น„
  • ๊ต์ฐจํš์˜ ๋ฐฉํ–ฅยทํš์ˆœ์„œยทpen-upยท์†๋„ยท์‹œ๊ฐ„ ๊ฐ„๊ฒฉ
  • segmentation lattice์˜ infix ์ ์ˆ˜
  • Tray IDยทslotยท๊ด€๊ณ„ edge
  • observed/canonical timestamp์™€ missing mask

ํ•™์Šต target์€ ์› glyph ์ด๋ฆ„ ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ identifier_lower, identifier_upper, multiply_operator, other/abstain ์˜๋ฏธ ์—ญํ• ๋กœ ๋‘”๋‹ค.

๋ถ„์ˆ˜ยท์ฒจ์ž ์•ˆ์˜ ๋Œ€์†Œ๋ฌธ์ž

๋Œ€๋ฌธ์ž ์—ฌ๋ถ€๋Š” ์‹ ์ „์ฒด canvas ๋†’์ด์™€ ๋น„๊ตํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • main row
  • fraction numerator
  • fraction denominator
  • superscript/subscript
  • root degree/radicand
  • integral upper/lower/integrand

๊ฐ ์Šฌ๋กฏ์„ ๋ณ„๋„์˜ local_context_id๋กœ ๋ฌถ๊ณ , ๊ฐ™์€ ์Šฌ๋กฏ์˜ ์‹ ๋ขฐ ๊ฐ€๋Šฅํ•œ ์ˆซ์žยทํ˜•ํƒœ ๋ฌธ์ž๋งŒ ๋†’์ด anchor๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ์Šฌ๋กฏ์— anchor๊ฐ€ ์—†์œผ๋ฉด case logits๋ฅผ ๋ณด์กดํ•œ๋‹ค. ์ด ์›์น™์€ ์ž‘์€ ๋ถ„์ž ์•ˆ์˜ X๋ฅผ main row๋ณด๋‹ค ์ž‘๋‹ค๋Š” ์ด์œ ๋กœ x๋กœ ๊ฐ•๋“ฑํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ง‰๋Š”๋‹ค.

๊ตฌํ˜„

behavior_context06.py๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  math_context_layer.py ์•ž๋‹จ์— ์—ฐ๊ฒฐํ–ˆ๋‹ค.

๊ณต๊ฐœ ์ž…๋ ฅ ๊ณ„์•ฝ์€ record๋ณ„ ๋‹ค์Œ ์„ ํƒ feature๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

{
  "behavior_context": {
    "local_context_id": "fraction:f1:numerator",
    "cross_visual_probability": 0.91,
    "infix_occupancy": 0.94,
    "operator_spacing_score": 0.82,
    "explicit_operator_context": 0.0
  }
}

Tray๊ฐ€ ์žˆ์œผ๋ฉด tray_id + tray_slot, ์ผ๋ฐ˜ ํ–‰์ด๋ฉด baseline_group, ์•„๋ฌด ์ •๋ณด๋„ ์—†์œผ๋ฉด main์„ ์‚ฌ์šฉํ•œ๋‹ค. FRACTION.numerator/denominator์™€ ๊ตฌ์กฐ ๊ด€๊ณ„์˜ SUPERSCRIPT/SUBSCRIPT/ABOVE/BELOW/CONTAINS๋Š” ๋ณ„๋„ ์ˆ˜์ž‘์—… ์—†์ด ๋กœ์ปฌ context๋กœ ์ž๋™ ๋ณ€ํ™˜ํ•œ๋‹ค.

ํšŒ๊ท€ ๊ฒ€์ฆ์€ ๋‹ค์Œ ๋„ค ํ•ญ๋ชฉ์„ ๊ณ ์ •ํ–ˆ๋‹ค.

  1. ์ถ•์†Œ๋œ ๋ถ„์ž ์•ˆ์˜ X ๋ณด์กด
  2. ์ˆซ์ž ์ด์›ƒ๋งŒ์œผ๋กœ \times ๊ฐ•์ œ ๊ธˆ์ง€
  3. ํšยทinfixยท๊ฐ„๊ฒฉ ์ฆ๊ฑฐ๊ฐ€ ๊ฒน์นœ ์• ๋งคํ•œ ๊ต์ฐจํš์˜ ์†Œํ”„ํŠธ \times ์„ ํƒ๊ณผ family ์งˆ๋Ÿ‰ ๋ณด์กด
  4. ๊ฐ•ํ•œ ์›๋ณธ X logit ๋ณด์กด

๊ด€๋ จ context ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” 15/15, ์ „์ฒด Python ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋Š” 264/264 ํ†ต๊ณผํ–ˆ๋‹ค.

ํ–‰๋™ ๋ชจ๋ธ ํŒŒ์ธํŠœ๋‹ ๊ณ„ํš

๋‹จ๊ณ„ A โ€” shadow feature ์ˆ˜์ง‘

๊ธฐ์กด ๋ชจ๋ธ weight๋Š” ๊ณ ์ •ํ•˜๊ณ  ๊ฐ ๊ธฐํ˜ธ์— top-k, geometry, stroke behavior, Tray slot์„ ๋ถ™์—ฌ ์ €์žฅํ•œ๋‹ค. ์ด๋ฏธ์ง€๋‚˜ ์› stroke๋ฅผ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด์ง€ ์•Š๋Š” ์˜จ๋””๋ฐ”์ด์Šค ์›์น™์€ ์œ ์ง€ํ•œ๋‹ค. ์—ฐ๊ตฌ ๋ฐ์ดํ„ฐ์—๋Š” ์›๋ณธ provenance์™€ writer/source/device split์„ ๋ณด์กดํ•œ๋‹ค.

๋‹จ๊ณ„ B โ€” ์ž‘์€ role head

ํ–‰๋™ head๋Š” ๋ชจ๋ฐ”์ผ student์— ๋ถ™์ผ ์ˆ˜ ์žˆ๋Š” ์ž‘์€ TCN/MLP๋กœ ์‹œ์ž‘ํ•œ๋‹ค. pixel encoder๋ฅผ ๋‹ค์‹œ ํฌ๊ฒŒ ํ•™์Šตํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ multi-task๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  • cross semantic role CE
  • local case role CE
  • Tray slot consistency loss
  • ์› family logit ๋ณด์กด KL
  • abstain/calibration loss

์ดˆ๊ธฐ loss weight๋Š” validation sweep ๋Œ€์ƒ์ด๋ฉฐ ์•„์ง ๋ฐฐํฌ ์ƒ์ˆ˜๋กœ ๊ณ ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋‹จ๊ณ„ C โ€” ์‹ค์ œ ์ˆ˜์‹ ๊ฒ€์ฆ

ํ•ฉ์„ฑ ์กฐํ•ฉ์€ ๋ฐ์ดํ„ฐ ์ฆ๊ฐ•์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. ์ตœ์ข… ์„ ํƒ์€ writer/device/source-disjoint ์—ฐ์† ์ˆ˜์‹์—์„œ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • x/X/\times role top-1ยทtop-k์™€ confusion matrix
  • local slot๋ณ„ case exact
  • unchanged-safe rate: ํ–‰๋™ ์ฆ๊ฑฐ๊ฐ€ ์—†๋Š” ํ‘œ๋ณธ์˜ ์› top-1 ๋ณด์กด์œจ
  • family oracle ๋Œ€๋น„ ํšŒ์ˆ˜์œจ
  • ECE์™€ abstain coverage/accuracy
  • main/numerator/denominator/script slice ์ตœ์ € ์„ฑ๋Šฅ

๋น„์ƒ์šฉยท์šฉ๋„ ์ œํ•œ ๋ฐ์ดํ„ฐ๋Š” ์—ฐ๊ตฌ ํ‰๊ฐ€์—๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ๋ฐฐํฌ checkpoint ํ•™์Šต์—๋Š” ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ˜„์žฌ ํŒ๋‹จ

  • ํ–‰๋™ ๋ชจ๋ธ ๋ฐฉํ–ฅ ์ฑ„ํƒ: ์˜ˆ
  • ๊ธฐ์กด case layer๋ฅผ ๋กœ์ปฌ ์Šฌ๋กฏ ํ–‰๋™ layer๋กœ ๊ต์ฒด: ์˜ˆ
  • x/X/\times hard rewrite: ์•„๋‹ˆ์˜ค
  • CROHME R-track ์กฐ๊ฑด๋ถ€ ์—ญํ•  ์ •ํ™•๋„ ์ƒ์Šน ํ™•์ธ: ์˜ˆ
  • ์ด๋ฅผ ์ œํ’ˆ ์ˆ˜์น˜๋กœ ์ฃผ์žฅ: ์•„๋‹ˆ์˜ค
  • 0.6 ์ƒ์šฉ ์นด๋‚˜๋ฆฌ: ์•„์ง ์•„๋‹ˆ์˜ค

์ฒซ GPU ํ–‰๋™ํ•™์Šต ๊ฒฐ๊ณผ

๊ธฐ์กด 3-seed glyph teacher๋ฅผ ๊ฐ๊ฐ ๋™๊ฒฐํ•˜๊ณ  128ร—19 stroke TCN + 49์ฐจ ๋ฌธ๋งฅ MLP ํ–‰๋™ head๋ฅผ GTX 1650 CUDA์—์„œ ํ•™์Šตํ–ˆ๋‹ค. CROHME 2012 trainData๋Š” writer ๊ธฐ์ค€ fit 1,063์‹/validation 275์‹์œผ๋กœ ๋‚˜๋ˆด๊ณ  testDataGT 488์‹์€ ๊ณต์‹ held-out์œผ๋กœ๋งŒ ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ–ˆ๋‹ค.

์—ญํ•  ๋ถ„๋ชจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

split lower identifier upper identifier multiply operator
fit 1,573 99 177
validation 401 22 44
official test 568 31 36

head ์ž…๋ ฅ์—๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

  • seed๋ณ„ frozen 0.6 teacher์˜ lower/upper/times logits
  • target ์›๋ณธ stroke์˜ ์ˆœ์„œยท๋ฐฉํ–ฅยทpen-up์„ ๋ณด์กดํ•œ 128ร—19 sequence
  • ์ขŒ์šฐ ์ด์›ƒ์˜ ์ •๋‹ต label์ด ์•„๋‹Œ teacher ์˜ˆ์ธก ์—ญํ•  ํ™•๋ฅ 
  • bbox, ๊ฐ„๊ฒฉ, ์ค‘์‹ฌ์„ , ๋กœ์ปฌ ๋†’์ดยทํญ ๋น„์œจ
  • 19๊ฐœ cross visual feature์™€ stroke/point ์ˆ˜
์ง€ํ‘œ seed 17 seed 31 seed 47 ํ‰๊ท  ยฑ ํ‘œ์ค€ํŽธ์ฐจ
teacher role accuracy 74.33% 60.79% 60.94% 65.35 ยฑ 6.35%p
behavior role accuracy 93.07% 93.86% 93.07% 93.33 ยฑ 0.37%p
behavior macro-F1 76.64% 77.17% 75.42% 76.41 ยฑ 0.73%p
lower recall 95.07% 96.30% 95.60% 95.66 ยฑ 0.50%p
upper recall 61.29% 51.61% 54.84% 55.91 ยฑ 4.02%p
multiply recall 88.89% 91.67% 86.11% 88.89 ยฑ 2.27%p
ECE 4.73% 5.09% 4.82% 4.88 ยฑ 0.15%p

ํ‰๊ท  accuracy ์ด๋“์€ +27.98%p์ด๊ณ  seed ๊ฐ„ ํŽธ์ฐจ๋„ ์ž‘์•„ ํ–‰๋™ ๋ฌธ๋งฅ ๋ฐฉํ–ฅ์€ ์œ ํšจํ•˜๋‹ค. ํŠนํžˆ frozen teacher๊ฐ€ ์„ธ seed ๋ชจ๋‘ \times๋ฅผ 0% ํšŒ์ˆ˜ํ•˜๋˜ ์กฐ๊ฑด์—์„œ ํ–‰๋™ head๋Š” 86.11~91.67%๋ฅผ ํšŒ์ˆ˜ํ–ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ ํ•œ๊ณ„ ๋•Œ๋ฌธ์— ์ œํ’ˆ ์Šน๊ฒฉ์€ ๊ธˆ์ง€ํ•œ๋‹ค.

  1. ์ •๋‹ต symbol grouping ์ดํ›„์˜ ์กฐ๊ฑด๋ถ€ ์—ญํ•  ํ‰๊ฐ€๋‹ค. segmentation ์˜ค๋ฅ˜๋Š” ๋ถ„๋ชจ์— ์—†๋‹ค.
  2. CROHME R-track weight๋ผ ์ƒ์šฉ checkpoint์— ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์—†๋‹ค.
  3. official test์˜ ๋Œ€๋ฌธ์ž ๋ถ„๋ชจ๋Š” 31๊ฐœ๋ฟ์ด๋ฉฐ recall ํ‰๊ท ๋„ 55.91%๋‹ค.
  4. ๋ถ„์ˆ˜ยท์ฒจ์ž ๋กœ์ปฌ case์˜ ์‹ค์ œ device-disjoint ์ œํ’ˆ ๋ถ„๋ชจ๊ฐ€ ์•„๋‹ˆ๋‹ค.
  5. ์„ธ teacher๋ณ„ head๋Š” ์•ฝ 75.8KB์ง€๋งŒ distillation/์˜จ๋””๋ฐ”์ด์Šค ๋ณ€ํ™˜ ๋‹จ๊ณ„๋กœ ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ์ฒซ ํ•™์Šต ๊ฒฐ๋ก ์€ x/X/\times ์˜๋ฏธ ์—ญํ•  head ์ฑ„ํƒ, ๋Œ€๋ฌธ์ž ๋ฐ์ดํ„ฐ ํ™•์žฅ, predicted grouping end-to-end ์žฌํ‰๊ฐ€๋‹ค. ์ œํ’ˆ์šฉ ๋‹ค์Œ ํ•™์Šต์€ ์Šน์ธ๋œ trajectory๋ฅผ ์ˆ˜ํ•™ ๋ฐฐ์น˜๋กœ ํ•ฉ์„ฑํ•œ ์•ฝํ•œ P-compatible proxy์™€ ์‹ค์ œ ์ƒ์šฉ ํ—ˆ์šฉ ์—ฐ์†์‹ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

ํ›„์† ๋ฃจํ”„ โ€” ํ•ฉ์„ฑ ๋Œ€๋ฌธ์ž์™€ predicted grouping

์Šน์ธ trajectory ๋ถ„๋ชจ

HWRTยทUJI Pen v1/v2์˜ writer-disjoint training split์—๋Š” ์ƒ๋Œ€ํฌ๊ธฐ๊ตฐ ๊ฐ ๋Œ€ยท์†Œ๋ฌธ์ž๊ฐ€ ์•ฝ 90~111๊ฐœ์”ฉ ์žˆ๋‹ค. ์ด๋ฅผ ์‹ค์ œ stroke ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ˆ˜์‹ ํ–‰์˜ ๋†’์ดยท์ขŒ์šฐ ์ˆซ์ž anchor๋งŒ ํ•ฉ์„ฑํ•œ P-compatible proxy๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

์ฒซ ํ›„๋ณด๋Š” 8๊ฐœ case family 1,590๊ฐœ๋ฅผ loss weight 0.35๋กœ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ํ›„๋ณด๋Š” ์‹ค์ œ CROHME fit ์ •๊ทœํ™” ํ†ต๊ณ„๋ฅผ ๊ณ ์ •ํ•˜๊ณ  c/x/z family์˜ ๋Œ€๋ฌธ์ž 284๊ฐœ์™€ ์†Œ๋ฌธ์ž 77๊ฐœ๋งŒ weight 0.15๋กœ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

seed 17 official test ์› behavior ์ „์ฒด proxy targeted proxy
accuracy 93.07% 93.39% 93.39%
macro-F1 76.64% 75.62% 76.45%
upper recall 61.29% 51.61% 54.84%
multiply recall 88.89% 86.11% 88.89%

๋‘ ํ›„๋ณด ๋ชจ๋‘ ๋ชฉํ‘œ์ธ upper recall์„ ์•…ํ™”์‹œ์ผฐ๋‹ค. ๊ณ ๋ฆฝ๊ธฐํ˜ธ๋ฅผ ์ธ์œ„์ ์œผ๋กœ ํ‚ค์šด ๋ฐ์ดํ„ฐ๋Š” ์‹ค์ œ ์—ฐ์†์‹์˜ ๋Œ€๋ฌธ์ž ํ–‰๋™ ๋ถ„ํฌ๋ฅผ ๋Œ€์ฒดํ•˜์ง€ ๋ชปํ•˜๋ฏ€๋กœ ์กฐ๊ธฐ ๊ธฐ๊ฐํ–ˆ๊ณ  seed 31ยท47๋กœ ํ™•์žฅํ•˜์ง€ ์•Š์•˜๋‹ค. ์ž‘์€ ์ „์ฒด accuracy ์ƒ์Šน์„ ๊ทผ๊ฑฐ๋กœ ์ฑ„ํƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋กœ์ปฌ MathWriting 2024 excerpt๋Š” train/valid/test ๊ฐ 100์‹๊ณผ symbols/synthetic ๊ฐ 100๊ฐœ๊ฐ€ ์žˆ์ง€๋งŒ formula InkML์— symbol-to-stroke group ์ •๋‹ต์ด ์—†๋‹ค. LaTeX ๋ฌธ์ž์—ด๊ณผ ์ „์ฒด stroke๋งŒ์œผ๋กœ ๋Œ€๋ฌธ์ž ์—ญํ•  target์„ ๊ฐ•์ œ ์ •๋ ฌํ•˜๋ฉด labelยทํ•„์ˆœ์„ ๋ฐœ๋ช…ํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ supervised behavior ํ•™์Šต์— ๋„ฃ์ง€ ์•Š๋Š”๋‹ค.

Predicted grouping ๊ฐ์‚ฌ

๊ณต์‹ test 488์‹์˜ ํ–‰๋™ ๋Œ€์ƒ 635๊ฐœ๋ฅผ validation์—์„œ ๊ณ ์ •ํ•œ lattice selector๋กœ ๋‹ค์‹œ ํ‰๊ฐ€ํ–ˆ๋‹ค.

grouping ๊ฒฝ๋กœ ์ „์ฒด target lower upper \times x exact group
base OCR fusion 81.89% 79.93% 96.77% 100% 75.56%
Tray/infix joint 81.42% 79.58% 93.55% 100% 75.11%
cross-visual + Tray/infix, gap 20% 91.02% 90.32% 93.55% 100% 88.89%
full selector, gap 50% 93.39% 92.96% 93.55% 100% 92.22%
protected family selector, gap 40% 92.91% 92.43% 93.55% 100% 91.56%

base์—์„œ ์‹คํŒจ 115๊ฑด ์ค‘ x๊ฐ€ 110๊ฑด์ด๊ณ , ๊ทธ์ค‘ 96๊ฑด์ด ๋‘ ํš oversplit์ด์—ˆ๋‹ค. ์ตœ์ดˆ cross-visual ๊ฒฐํ•ฉ์€ ์ „์ฒด oversplit์„ 98โ†’42๊ฑด์œผ๋กœ ์ค„์ด๊ณ  x exact grouping์„ +13.33%p ์˜ฌ๋ ธ๋‹ค. ๋ฐ˜๋ฉด cross model ์—†๋Š” Tray/infix ๋‹จ๋…์€ ์†Œํญ ์•…ํ™”๋ผ ํ–‰๋™ grouping ๊ฒฝ๋กœ๋กœ ์ฑ„ํƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํ˜„์žฌ ๋ณ‘๋ชฉ์€ ๋‹ค์Œ์ฒ˜๋Ÿผ ๋ถ„๋ฆฌ๋œ๋‹ค.

  1. x: ์ตœ์ข… ๊ฒฐํ•ฉ ํ›„ grouping recall์€ 91.56%๋กœ 90%๋Œ€๋ฅผ ์œ ์ง€ํ•˜๋ฉฐ ์ž”์—ฌ 38๊ฑด์€ oversplit 26, overmerge/ํ˜ผํ•ฉ 12๋‹ค.
  2. X/C: upper ์—ญํ•  grouping์€ 93.55%์ด๋ฏ€๋กœ ์ฃผ ๋ณ‘๋ชฉ์€ behavior role head์™€ ์‹ค์ œ ์—ฐ์†์‹ ๋Œ€๋ฌธ์ž ๋ฐ์ดํ„ฐ๋‹ค.
  3. \times: grouping 100%, conditional role recall 88.89%์ด๋ฏ€๋กœ ์˜๋ฏธ head๊ฐ€ ๋ณ‘๋ชฉ์ด๋‹ค.
  4. grouping๊ณผ role ์˜ค๋ฅ˜๊ฐ€ ๋…๋ฆฝ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ ๊ทผ์‚ฌ end-to-end recall์€ lower 88.42%, upper 52.31%, multiply 88.89%๋‹ค. ์ด๋Š” ์‹ค์ธก end-to-end ์ˆ˜์น˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ œํ’ˆ ์ง€ํ‘œ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  5. ์ „์ฒด 488์‹ exact partition์€ 60.04%์ด๋ฉฐ fractionยทsuperscriptยท๋‹จ์ผ๊ธฐํ˜ธ overmerge๊ฐ€ ๋‹ค์Œ segmentation ๋ณ‘๋ชฉ์ด๋‹ค.

๋”ฐ๋ผ์„œ R-track grouping ๊ธฐ์ค€์„ ์€ equality + cross-visual + protected multistroke family + Tray/infix, cross gap ratio 0.40์œผ๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค. ๋Œ€๋ฌธ์ž๋Š” ํ•ฉ์„ฑ isolated proxy๊ฐ€ ์•„๋‹ˆ๋ผ ์‹ค์ œ symbol-group annotation์ด ์žˆ๋Š” ์—ฐ์†์‹๋งŒ ๋‹ค์Œ supervised ํ•™์Šต ํ›„๋ณด๋กœ ํ—ˆ์šฉํ•œ๋‹ค.

x prefilter ๋ณ‘๋ชฉ๊ณผ gap validation sweep

์‹คํŒจ๋ฅผ candidate ์ƒ์„ฑโ†’cross headโ†’exact-cover selector๋กœ ๋ถ„ํ•ดํ–ˆ๋‹ค. ๋‘ ํš x์˜ lattice candidate recall์€ validation/test ๋ชจ๋‘ 100%์ด๊ณ  test cross threshold recall์€ 98.37%์˜€๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‹คํŒจ ํ›„๋ณด์˜ cross ํ™•๋ฅ  ์ค‘์•™๊ฐ’๋„ 0.929์ธ๋ฐ infix_signal=0์ด์—ˆ๋‹ค. ์›์ธ์€ cross head ์•ž์˜ bbox gap 20% prefilter๊ฐ€ ์ขŒ์šฐ ๊ณก์„  )(ํ˜• x๋ฅผ ๋ชจ๋ธ์— ์ „๋‹ฌํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด๋‹ค.

์ „์—ญ threshold์™€ merge weight๋ฅผ ๊ณ ์ •ํ•˜๊ณ  gap ratio 0.20~0.80๋งŒ writer-validation์—์„œ ์„ ํƒํ–ˆ๋‹ค. Validation winner 0.50์„ equality head๊นŒ์ง€ ํฌํ•จํ•œ full selector์˜ ๊ณต์‹ test์— ์ ์šฉํ–ˆ๋‹ค.

์ง€ํ‘œ gap 20% gap 50% ๋ณ€ํ™”
validation x grouping 82.31% 88.45% +6.14%p
validation exact partition 63.27% 65.82% +2.55%p
validation pair-F1 91.00% 91.69% +0.69%p
official test x grouping 88.89% 92.22% +3.33%p
official test exact partition 53.69% 54.51% +0.82%p
official test pair-F1 88.38% 88.72% +0.35%p

gap 50%๋Š” ์ด ๋‹จ๊ณ„์—์„œ ์ „ ์ง€ํ‘œ๊ฐ€ ํ•จ๊ป˜ ์˜ฌ๋ผ ์ฑ„ํƒํ–ˆ๋‹ค. ์ดํ›„ ๊ฐ™์€ ๊ธฐ์ค€์—์„œ threshold 0.5, weight 10์˜ ๊ณต๊ฒฉ ํ›„๋ณด๋Š” test x๋ฅผ 94.44%๋กœ ์˜ฌ๋ ธ์ง€๋งŒ exact partition 54.51โ†’53.89%, pair-F1 88.72โ†’88.41%, overmerge 21.11โ†’23.57%๋กœ ์•…ํ™”๋ผ ๊ธฐ๊ฐํ–ˆ๋‹ค. ๋‹คํš family boost์™€ ๊ฒฐํ•ฉํ•œ validation ์žฌ์„ ํƒ์—์„œ๋Š” ๋™์ผ test ์„ฑ๋Šฅ์„ ๋‚ด๋Š” ๋” ์ข์€ gap 0.40์ด ์„ ํƒ๋๋‹ค. ์ตœ์ข… cross ๊ฐ’์€ gap 0.40, threshold 0.692841..., infix weight 8์ด๋‹ค.

๋‹คํš family must-link์™€ geometry ๋ณดํ˜ธ

sum/pi/rightarrow/neq/pm์€ candidate recall์ด validation/test ๋ชจ๋‘ 100%์˜€์ง€๋งŒ ํ•ฉ์นœ OCR alias๊ฐ€ ๊ธฐ์กด reliable ๋ชฉ๋ก๊ณผ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ 3๊ฐœ์˜ singleton ์ ์ˆ˜์— ๋ฐ€๋ ธ๋‹ค. Sigma/pi-family/arrow-family/neq/pm ํ›„๋ณด์—๋งŒ ์ถ”๊ฐ€ symbol signal์„ ์ฃผ๊ณ  boost 0~6์„ writer-validation์—์„œ ์„ ํƒํ–ˆ๋‹ค.

๊ณต์‹ test grouping ๊ธฐ์ค€ boost 6 + ๋ณดํ˜ธ
๋‹ค์„ฏ family ์ „์ฒด 45.19% 82.96%
\sum 25.81% 70.97%
\pi 40.00% 90.00%
\rightarrow 71.43% 89.80%
\neq 23.08% 76.92%
\pm 25.00% 75.00%

๋ฌด๋ณดํ˜ธ boost 6์€ ์ „์ฒด์‹ exact 57.38%๊นŒ์ง€ ์˜ฌ๋ ธ์ง€๋งŒ hookrightarrow, ์ข์€ Sigma, ์„ธ๋กœ๋กœ ๊ธด pm ์˜ค์ธ์ด ๋‹จ์ผ๊ธฐํ˜ธ๋ฅผ ๋จน์—ˆ๋‹ค. Training writer-validation์˜ ์‹ค์ œ geometry ๋ฒ”์œ„์—์„œ arrow pair_gap_maxโ‰ค0.50, Sigma width_refโ‰ฅ2.0, pm height_refโ‰ค2.0 guard๋ฅผ ๋งŒ๋“ค๊ณ  ontology ๋ฐ– hookrightarrow alias๋ฅผ ์ œ๊ฑฐํ–ˆ๋‹ค. ๋ณดํ˜ธ ํ›„ ๊ณต์‹ test exact๋Š” 60.04%, pair-F1์€ 91.07%, overmerge formula rate๋Š” 21.72%๋‹ค. Gap-only ๋Œ€๋น„ ๊ฐ๊ฐ +5.53%p, +2.35%p์ด๋ฉฐ overmerge ์ฆ๊ฐ€๋Š” +0.61%p๋กœ ์ œํ•œ๋๋‹ค.

์ตœ์ข… ์ž”์—ฌ segmentation ๋ณ‘๋ชฉ

์ตœ์ข… full selector์˜ 488์‹ ์ž”์—ฌ ์‹คํŒจ๋Š” exact 293, oversplit 89, overmerge 72, ํ˜ผํ•ฉ 34๋‹ค. ๊ตฌ์กฐ๋ณ„ exact๋Š” sqrt 68.00%, plain 63.95%, subscript 57.01%, superscript 52.75%, fraction 52.10%๋‹ค. 3ํš ๊ธฐํ˜ธ correct๋Š” 34โ†’63๊ฐœ๋กœ ๋Š˜์—ˆ๊ณ  oversplit์€ 57โ†’32๊ฐœ๋กœ ์ค„์—ˆ๋‹ค.

label ์˜ค๋ฅ˜/์ „์ฒด ์ฃผ ์‹คํŒจ
x 38/450 oversplit 26, overmergeยทํ˜ผํ•ฉ 12
1 36/482 ์ฃผ๋ณ€ ํš๊ณผ overmerge
- 36/584 overmerge
\sin physical part 35/297 overmerge 15, oversplit 18
\sum 9/31 oversplit 8
i 9/41 oversplit
F 7/10 oversplit
\div 7/11 oversplit

๋”ฐ๋ผ์„œ ๋‹ค์Œ ์šฐ์„ ์ˆœ์œ„๋Š” ์ „์—ญ threshold๊ฐ€ ์•„๋‹ˆ๋ผ ๋ถ„์ˆ˜ยท์œ„์ฒจ์ž์—์„œ 1/-/๊ด„ํ˜ธ๊ฐ€ ์ด์›ƒ Tray๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ฒŒ ํ•˜๋Š” local-baseline must-not-link, ๊ทธ๋ฆฌ๊ณ  ๋‚จ์€ F/div/i ๋‹คํš family๋‹ค.

Local-baseline ๊ฐ์‚ฌ์™€ ํ•™์Šตํ˜• boundary ํ–‰๋™ head

์ตœ์ข… selector์˜ overmerge๋ฅผ ์ •๋‹ต ๊ธฐํ˜ธ ๋‹จ์œ„๋กœ ๋‹ค์‹œ ์—ฐ๊ฒฐํ–ˆ๋‹ค. ๊ณต์‹ test์—๋Š” 299๊ฐœ overmerge event์™€ 149๊ฐœ ๊ณ ์œ  ์„ ํƒ ํ›„๋ณด๊ฐ€ ์žˆ์—ˆ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ์ง‘์ค‘๋œ ์ •๋‹ต์€ 1 36๊ฑด, - 36๊ฑด, ๊ด„ํ˜ธ 53๊ฑด์ด๋ฉฐ ๊ตฌ์กฐ๋ณ„๋กœ superscript 150๊ฑด, fraction 112๊ฑด, subscript 96๊ฑด์ด ๊ฒน์ณ ์žˆ์—ˆ๋‹ค. ๊ธฐ์กด fraction penalty๋Š” 299๊ฑด ์ค‘ 4๊ฑด์—๋งŒ ์‹ ํ˜ธ๋ฅผ ๋ƒˆ๋‹ค.

๋‘ ๊ทœ์น™ํ˜• ๊ฐ€๋“œ๋Š” ์ฑ„ํƒํ•˜์ง€ ์•Š์•˜๋‹ค.

  1. ํ•ฉ์นœ OCR์ด ๊ตฌ์„ฑํš๋ณด๋‹ค ์•ฝํ•  ๋•Œ ๊ฐ์ ํ•˜๋Š” component competition์€ validation exact๋ฅผ ๊ฐœ์„ ํ•˜์ง€ ๋ชปํ•˜๊ณ  family grouping์„ ์•…ํ™”์‹œ์ผœ weight 0์„ ์„ ํƒํ–ˆ๋‹ค.
  2. base partition์—์„œ SUPERSCRIPT/SUBSCRIPT/ABOVE/BELOW/CONTAINS edge๋ฅผ ๋งŒ๋“  local-baseline guard๋Š” validation 3,293๊ฐœยทtest 5,061๊ฐœ ํ›„๋ณด์— ์‹ ํ˜ธ๋ฅผ ๋งŒ๋“ค์—ˆ์ง€๋งŒ ์‹ค์ œ 149๊ฐœ ์˜ค๋ณ‘ํ•ฉ ํ›„๋ณด์—๋Š” ์œ ํšจ ์‹ ํ˜ธ๊ฐ€ 0๊ฐœ์˜€๋‹ค. ์ด๋ฏธ ์˜ค๋ณ‘ํ•ฉ๋œ partition ๋’ค์—์„œ ๊ด€๊ณ„๋ฅผ ๋งŒ๋“ค์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ถ€ ๊ฒฝ๊ณ„๋ฅผ ๋ณต์›ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.

์ด์— grouping ์ด์ „์˜ ๋ชจ๋“  ๋‹คํš ํ›„๋ณด๋ฅผ ๋Œ€์ƒ์œผ๋กœ, ๋‘˜ ์ด์ƒ์˜ ์ •๋‹ต ๊ธฐํ˜ธ๋ฅผ ์นจ๋ฒ”ํ•˜๋Š”์ง€๋ฅผ ์˜ˆ์ธกํ•˜๋Š” geometry boundary ํ–‰๋™ head๋ฅผ fit writer์— ํ•™์Šตํ–ˆ๋‹ค. 72,223๊ฐœ ํ›„๋ณด ์ค‘ 66,842๊ฐœ๊ฐ€ boundary ์–‘์„ฑ์ด๋ฉฐ, validation์—์„œ threshold 0.5ยทpenalty weight 6์„ ์„ ํƒํ–ˆ๋‹ค.

์ง€ํ‘œ ๋ณดํ˜ธ selector boundary ํ–‰๋™ head ๋ณ€ํ™”
validation exact partition 68.00% 69.82% +1.82%p
validation pair-F1 92.98% 93.64% +0.66%p
official exact partition 60.04% 60.25% +0.20%p
official pair-F1 91.07% 91.26% +0.19%p
official overmerge formula 21.72% 20.49% -1.23%p
official x grouping 91.56% 91.33% -0.22%p
official ๋‹คํš family grouping 82.96% 81.48% -1.48%p

์‚ฌ์ „ ์ •์˜ํ•œ x -1%p, family -2%p, pair-F1 -0.25%p ๋ณดํ˜ธ gate ์•ˆ์—์„œ exact์™€ pair-F1์ด ํ•จ๊ป˜ ์˜ฌ๋ผ R-track head๋กœ ์ฑ„ํƒํ•œ๋‹ค. ๋‹ค๋งŒ CROHME ์ •๋‹ต ๊ฒฝ๊ณ„๋กœ ํ•™์Šตํ•œ ๋น„์ƒ์—… ์—ฐ๊ตฌ weight์ด๋ฏ€๋กœ ์ œํ’ˆ checkpointยทteacherยทdistillation์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ƒ์šฉ ์ด์ „ ๊ฒฝ๋กœ๋Š” ๋™์ผ boundary target์„ P-track ์—ฐ์†์‹์œผ๋กœ ์žฌํ•™์Šตํ•˜๊ฑฐ๋‚˜ shared trajectory encoder์˜ auxiliary boundary loss๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด๋‹ค. ์ „์ฒด Python ํšŒ๊ท€๋Š” 271๊ฐœ๊ฐ€ ํ†ต๊ณผํ–ˆ๋‹ค.

P-track boundary auxiliary smoke

2026-07-24 ์ •์ •: ์•„๋ž˜ ์ตœ์ดˆ smoke๋Š” adapter checkpoint์˜ shared_state_dict๋ฅผ ์ ์šฉํ•˜์ง€ ์•Š์€ base-only ๊ฒฐ๊ณผ์ด๋ฏ€๋กœ ํ˜„์žฌ ๋ฉ”์ธ ๋ชจ๋ธ ์„ฑ๋Šฅ ๊ทผ๊ฑฐ์—์„œ ์ฒ ํšŒํ•œ๋‹ค. ์‹คํ—˜ ์ด๋ ฅ์œผ๋กœ๋งŒ ๋ณด์กดํ•œ๋‹ค.

๋ณ„๋„ sklearn guard๋ฅผ ์ตœ์ข… ๊ตฌ์กฐ๋กœ ๊ณ ์ •ํ•˜์ง€ ์•Š๊ณ  MathInk06Model์˜ shared 384์ฐจ trajectory embedding ์œ„์— ์„ ํƒ์  binary boundary head๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ๋น„ํ™œ์„ฑ์ด๋ผ ๊ธฐ์กด checkpoint key์™€ forward() โ†’ exact,family ๊ณ„์•ฝ์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํ™œ์„ฑ ๊ฒฝ๋กœ๋งŒ online/raster candidate๋ณ„ boundary logit์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ class imbalance์šฉ binary auxiliary loss๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

CROHME weight๋ฅผ ์ด์ „ํ•˜์ง€ ์•Š๊ณ  ์Šน์ธ paired training trajectory์˜ ์‹ค์ œ ๋‹จ์ผ๊ธฐํ˜ธ๋ฅผ ์Œ์„ฑ์œผ๋กœ, ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ธฐํ˜ธ๋ฅผ ๊ฐ™์€ ํ–‰ยท์œ„์ฒจ์žยท์•„๋ž˜์ฒจ์ž ์œ„์น˜์— ๋ฐฐ์น˜ํ•œ ํ›„๋ณด๋ฅผ ์–‘์„ฑ์œผ๋กœ ํ•ฉ์„ฑํ–ˆ๋‹ค. Seed-17 base์™€ online adapter๋Š” ๋™๊ฒฐํ•˜๊ณ  head๋งŒ ํ•™์Šตํ–ˆ๋‹ค.

P proxy validation ๊ฒฐ๊ณผ
balanced validation samples 2,400
validation accuracy 97.33%
validation F1 97.34%
validation ROC-AUC 99.65%
validation single-symbol recall 97.25%
validation cross-boundary recall 97.42%
paired-test single/boundary recall 96.92% / 98.00%
exact/family logit max abs ๋ณ€ํ™” 0.0 / 0.0

Validation์—์„œ singleโ‰ฅ95%ยทboundaryโ‰ฅ85%๋ฅผ ๋™์‹œ์— ์š”๊ตฌํ•ด threshold 0.70์„ ์„ ํƒํ–ˆ๊ณ , ์„ ํƒ์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ paired writer/device-disjoint proxy test 2,400๊ฐœ์—์„œ accuracy 97.46%, F1 97.47%, AUC 99.62%๋ฅผ ๊ธฐ๋กํ–ˆ๋‹ค. ์ด๋Š” P-track target ์žฌ๊ตฌ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” smoke ์ฆ๊ฑฐ์ง€๋งŒ ์‹ค์ œ ์—ฐ์†์‹ writer/device-disjoint ๊ฒ€์ฆ์€ ์•„๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ์‹ค์ œ P ์—ฐ์†์‹ ๋˜๋Š” ์‚ฌ์šฉ์ž local-only pseudo formula์—์„œ symbol boundary annotation์„ ํ™•๋ณดํ•˜๊ณ  main joint fine-tuning weight๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ „์ฒด Python ํšŒ๊ท€๋Š” 275๊ฐœ๊ฐ€ ํ†ต๊ณผํ–ˆ๋‹ค.

5-layout P boundary joint โ€” 3 seed

2026-07-24 ์ •์ •: ์•„๋ž˜ ์ตœ์ดˆ joint ๊ฒฐ๊ณผ๋„ ๋™์ผํ•œ shared-state ๋กœ๋”ฉ ๋ˆ„๋ฝ์„ ์ƒ์†ํ–ˆ์œผ๋ฏ€๋กœ delta ์ฑ„ํƒ์„ ์ฒ ํšŒํ•œ๋‹ค. ๊ณต๊ฐœ ๋ฐฐํฌ ๋Œ€์ƒ์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

Smoke์˜ ๋ฐฐ์น˜๋ฅผ ๊ฐ™์€ ํ–‰ยท์ƒ์ฒจ์žยทํ•˜์ฒจ์ž์—์„œ ๋ถ„์ž/๋ถ„๋ชจ ์ˆ˜์ง ์Šฌ๋กฏ๊ณผ ๋„“์€ ์ค‘์œ„์‹ ์–‘๋ณ€๊นŒ์ง€ ๋‹ค์„ฏ ์ข…๋ฅ˜๋กœ ํ™•์žฅํ–ˆ๋‹ค. Seed๋ณ„ baseยทonline adapterยทboundary head๋ฅผ ๋…๋ฆฝ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋‹ค์Œ module๋งŒ ์—ด์—ˆ๋‹ค.

  • trajectory_encoder.blocks.3
  • trajectory_encoder.attention
  • exact_head, family_head, boundary_head

Authentic 4,800๊ฐœ์—๋Š” exact CEยทfamily CEยทsingle-symbol boundary loss๋ฅผ ์ฃผ๊ณ , balanced boundary ํ›„๋ณด 2,400๊ฐœ์—๋Š” boundary loss๋ฅผ ์คฌ๋‹ค. Validation ์ฑ„ํƒ ์กฐ๊ฑด์€ authentic exact/family ๊ฐ -0.5%p ์ด๋‚ด, single/boundary recall ๊ฐ 95% ์ด์ƒ์ด๋‹ค.

paired proxy test seed 17 seed 31 seed 47 ํ‰๊ท  ยฑ ํ‘œ์ค€ํŽธ์ฐจ
exact top-1 77.66% 79.38% 77.84% 78.29 ยฑ 0.77%p
exact ๋ณ€ํ™” +3.07%p +3.20%p +2.70%p +2.99 ยฑ 0.21%p
family top-1 86.22% 87.70% 86.46% 86.80 ยฑ 0.65%p
family ๋ณ€ํ™” +2.78%p +3.54%p +2.62%p +2.98 ยฑ 0.40%p
single-symbol recall 96.75% 98.25% 97.25% 97.42 ยฑ 0.62%p
cross-boundary recall 98.92% 97.92% 98.67% 98.50 ยฑ 0.42%p
boundary F1 97.86% 98.08% 97.97% 97.97 ยฑ 0.09%p

์„ธ seed ๋ชจ๋‘ validation๊ณผ paired test gate๋ฅผ ๊ฐœ๋ณ„ ํ†ต๊ณผํ–ˆ๊ณ  exact/family๋„ ๋ชจ๋“  seed์—์„œ ๊ฐœ์„ ๋ผ P formula-layout proxy delta๋กœ ์ฑ„ํƒํ•œ๋‹ค. ์ด๋Š” R-track head๋ฅผ distillํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์•„๋‹ˆ๋ผ ์Šน์ธ P trajectory์™€ ์•Œ๋ ค์ง„ ํ•ฉ์„ฑ boundary๋งŒ ์‚ฌ์šฉํ•œ ๊ฒฐ๊ณผ๋‹ค. ๋‹ค๋งŒ ๋ถ„๋ฆฌ๋œ ๊ณ ๋ฆฝ๊ธฐํ˜ธ๋ฅผ ๋ฐฐ์น˜ํ•œ proxy์ด๋ฏ€๋กœ ์‹ค์ œ ์‚ฌ์šฉ์ž์˜ ์—ฐ์†์‹ stroke rhythmยทco-articulationยทdevice sampling ๋ณ€๋™์€ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ œํ’ˆ ๊ฒ€์ฆ์€ false์ด๋ฉฐ ๋‹ค์Œ ํ•„์ˆ˜ gate๋Š” ์‹ค์ œ P ์—ฐ์†์‹ writer/device-disjoint boundary ํ‰๊ฐ€๋‹ค.

3-seed device contract stress

์ฑ„ํƒ delta๋ฅผ ๋ณ„๋„ ํ•™์Šต ์—†์ด ์ขŒํ‘œ jitter, timestamp/speed ์ „์ฒด ๊ฒฐ์ธก, raw event ์ ˆ๋ฐ˜ ํฌ์†Œํ™” ํ›„ 6Hz ์žฌ๋ณด๊ฐ„, x 1.12/y 0.88 affine ์กฐ๊ฑด์—์„œ ํ‰๊ฐ€ํ–ˆ๋‹ค. ์ตœ์ดˆ sparse ์‹คํ—˜์€ canonical tensor๋ฅผ ์ง์ ‘ ์ ˆ๋ฐ˜ ์‚ญ์ œํ•ด ์ž…๋ ฅ ๊ณ„์•ฝ์„ ์œ„๋ฐ˜ํ–ˆ์œผ๋ฏ€๋กœ ํ๊ธฐํ–ˆ๊ณ , start/endยทpen-up anchor๋ฅผ ๋ณด์กดํ•œ ์žฌ๋ณด๊ฐ„ ๊ฒฝ๋กœ๋กœ ๋‹ค์‹œ ๊ณ ์ •ํ–ˆ๋‹ค.

๋ชจ๋“  seedยทstress๊ฐ€ clean ๋Œ€๋น„ exact/family -3%p ์ด๋‚ด, single/boundary recall 90% ์ด์ƒ gate๋ฅผ ํ†ต๊ณผํ–ˆ๋‹ค. ์ตœ์•… exact ํ•˜๋ฝ์€ seed-47 affine -1.53%p, ์ตœ์•… family ํ•˜๋ฝ์€ seed-31 affine -1.48%p์˜€๋‹ค. Stress ์ „์ฒด์˜ single-symbol/cross-boundary recall ์ตœ์ €๋Š” ๊ฐ๊ฐ 96.67%๋‹ค. Timestamp ๊ฒฐ์ธก๊ณผ 2๋ฐฐ ํฌ์†Œ sampling์€ ์ตœ์•… exact ํ•˜๋ฝ์ด ๊ฐ๊ฐ -0.26%p์™€ -0.48%p ์ด๋‚ด์˜€๋‹ค.

์ด๋Š” canonical ์ž…๋ ฅ ๊ณ„์•ฝ์˜ ๋ณ€ํ˜• ๋‚ด์„ฑ ์ฆ๊ฑฐ์ด์ง€ ์‹ค์ œ Android digitizerยทWDDMยทbattery/latency ๊ฒ€์ฆ์ด ์•„๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹ค์ œ gate๋Š” raw MotionEvent๋ฅผ ๊ฐ€์ง„ P writer/device-disjoint ์—ฐ์†์‹์ด๋‹ค. ์ „์ฒด Python ํšŒ๊ท€๋Š” 276๊ฐœ๊ฐ€ ํ†ต๊ณผํ–ˆ๋‹ค.

Shared-state ๋กœ๋”ฉ ๊ฒฐํ•จ ์ •์ • ๋ฐ 3-seed ์žฌํ•™์Šต

์ •์‹ ๋ฐฐํฌ ๊ตฌ์„ฑ์„ ๊ฐ์‚ฌํ•œ ๊ฒฐ๊ณผ online_adapter.pt๋Š” ์™ธ๋ถ€ modality adapter๋ฟ ์•„๋‹ˆ๋ผ ๊ณต๋™ ํ•™์Šต๋œ trajectory_encoder, exact_head, family_head์˜ shared_state_dict๋„ ์ €์žฅํ•˜์ง€๋งŒ, P boundary ๋กœ๋”๋Š” ์™ธ๋ถ€ adapter๋งŒ ์ฝ๊ณ  shared update๋ฅผ ๋ˆ„๋ฝํ–ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ํ•ฉ์„ฑ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

base checkpoint
โ†’ adapter shared_state_dict
โ†’ modality adapter
โ†’ ์„ ํƒ์  boundary head
โ†’ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•œ ๊ฒฝ์šฐ์—๋งŒ joint delta

๋กœ๋”๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ด๋ฅผ ๋ณด์žฅํ•˜๋Š” ํšŒ๊ท€ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ ๋’ค auxiliary์™€ joint๋ฅผ seed 17ยท31ยท47์—์„œ ๋‹ค์‹œ ํ•™์Šตํ–ˆ๋‹ค.

paired proxy test seed 17 seed 31 seed 47 ํ‰๊ท 
์ •์ •๋œ main baseline exact 82.95% 83.24% 82.92% 83.03%
joint exact 82.71% 82.95% 82.79% 82.81%
exact ๋ณ€ํ™” -0.24%p -0.29%p -0.13%p -0.22%p
์ •์ •๋œ main baseline family 91.22% 91.51% 91.38% 91.37%
joint family 90.77% 90.96% 90.90% 90.88%
family ๋ณ€ํ™” -0.45%p -0.56%p -0.48%p -0.49%p
single-symbol recall 91.58% 94.67% 92.25% 92.83%
cross-boundary recall 98.50% 98.75% 98.17% 98.47%

์„ธ seed ๋ชจ๋‘ official proxy gate๋ฅผ ์‹คํŒจํ–ˆ๋‹ค. Seed 17ยท47์€ single-symbol 95% floor๋ฅผ, seed 31์€ single-symbol floor์™€ family -0.5%p ๋น„ํ‡ดํ–‰ ์กฐ๊ฑด์„ ์‹คํŒจํ–ˆ๋‹ค. ๋”ฐ๋ผ์„œ corrected joint delta๋Š” ์ „๋ถ€ ๊ธฐ๊ฐํ•˜๋ฉฐ ํ˜„์žฌ ์œ ํšจ ๋ชจ๋ธ์€ base + shared_state_dict + modality adapter๋‹ค. ์ด์ „ 78.29% ๊ฒฐ๊ณผ๋Š” ๊ฐ•ํ•œ main encoder๋ฅผ ๋น ๋œจ๋ฆฐ ๋‚ฎ์€ ๊ธฐ์ค€์„ ๊ณผ ๋น„๊ตํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ๋ฌดํšจ๋‹ค.

Joint delta ์—†์ด ์ •์ •๋œ main๊ณผ ์ƒˆ auxiliary head๋งŒ ๋Œ€์ƒ์œผ๋กœ device stress๋ฅผ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ–ˆ๋‹ค. Clean exact/family ํ‰๊ท ์€ ๊ฐ๊ฐ 83.03%/91.37%๋‹ค. ๋ชจ๋“  software stress๊ฐ€ -3%p์™€ boundary recall 90% floor๋ฅผ ํ†ต๊ณผํ–ˆ๊ณ , ์ตœ์•… exact/family ํ•˜๋ฝ์€ affine์—์„œ -0.98%p/-1.08%p์˜€๋‹ค. ์ด๋Š” auxiliary shadow์˜ ์ž…๋ ฅ ๋‚ด์„ฑ๋งŒ ์˜๋ฏธํ•˜๋ฉฐ head์˜ clean single recall์ด 91.42~94.50%๋ผ release ์ฑ„ํƒ ๊ทผ๊ฑฐ๋Š” ์•„๋‹ˆ๋‹ค.

Composite torch.export

๊ธฐ์กด export script๋„ base checkpoint๋งŒ ์ฝ์–ด ์‹ค์ œ main adapter๋ฅผ ์šฐํšŒํ–ˆ๋‹ค. Online์€ online adapter โ†’ shared trajectory encoder, raster๋Š” virtual top-4 โ†’ raster adapter โ†’ shared trajectory encoder๊ฐ€ ๊ทธ๋ž˜ํ”„ ์•ˆ์— ํฌํ•จ๋˜๋„๋ก ์ˆ˜์ •ํ–ˆ๋‹ค. Dual adapter๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ฅธ ๋Ÿฐํƒ€์ž„ ๋ถ„๊ธฐ ๋Œ€์‹  online/raster branch๋ฅผ export ์‹œ์ ์— ๊ณ ์ •ํ•œ๋‹ค.

Seed 17ยท31ยท47 ๋ชจ๋‘ online/raster ๊ฐ๊ฐ ๋Œ€ํ‘œ ์ž…๋ ฅ 76๊ฐœ์—์„œ eager ๋Œ€๋น„ top-1 100% ์ผ์น˜, ์ตœ๋Œ€ logit ์ ˆ๋Œ€์˜ค์ฐจ 0.0์œผ๋กœ strict torch.export gate๋ฅผ ํ†ต๊ณผํ–ˆ๋‹ค. Seed๋‹น ๋‘ graph ํ•ฉ๊ณ„๋Š” 18,657,779 bytes๋กœ 25MB ์˜ˆ์‚ฐ ์•ˆ์ด๋‹ค. ๋‹ค๋งŒ .pt2๋Š” Android LiteRT artifact๊ฐ€ ์•„๋‹ˆ๋‹ค. ๊ณต์‹ LiteRT Torch 0.9.1์€ Linux ํ™˜๊ฒฝ์„ ์š”๊ตฌํ•˜๋ฉฐ WSL ๋ณ€ํ™˜ ํ™˜๊ฒฝ ์„ค์น˜ ์ค‘ WSL filesystem I/O ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด .tflite ๋ณ€ํ™˜๊ณผ runtime parity๋Š” ์•„์ง ๋ฏธ์™„๋ฃŒ๋‹ค.

์‹ค์ œ P ์—ฐ์†์‹ ๋ฐ์ดํ„ฐ ๊ณ„์•ฝ

์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•˜๊ธฐ ์ „์— AIFlow P Formula v1 JSON Schema์™€ fail-closed preflight๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. ๊ฐ formula๋Š” ๋‹ค์Œ ๊ทผ๊ฑฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

  • ๊ณ ์œ  formula_id, ์›๋ณธ ์ถ”์ ์šฉ origin_id
  • ๋น„์–ด ์žˆ์ง€ ์•Š์€ writer_id, device_id, source_id
  • training|validation|test split
  • rights_track=P, commercial_training_allowed=true
  • ์–‘์ˆ˜ canvas ํฌ๊ธฐ
  • token๊ณผ ์›๋ณธ raw stroke๊ฐ€ ํฌํ•จ๋œ ์ •๋‹ต symbol group

Originยทwriterยทdeviceยทsource๊ฐ€ ๋‘˜ ์ด์ƒ์˜ split์— ๋‚˜ํƒ€๋‚˜๋ฉด ์ œํ’ˆ ํ‰๊ฐ€๋ฅผ ๊ฑฐ๋ถ€ํ•œ๋‹ค. Timestamp์™€ pressure๊ฐ€ ์—†๋Š” symbol์€ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๊ด€์ธก๊ฐ’์œผ๋กœ ์œ„์žฅํ•˜์ง€ ์•Š๊ณ  missing slice๋กœ ์„ผ๋‹ค. ๊ฒ€์ฆ๋œ formula์˜ ์‹ค์ œ symbol group์€ boundary ์Œ์„ฑ, ์ธ์ ‘ํ•œ ๋‘ symbol group ๊ฒฐํ•ฉ์€ boundary ์–‘์„ฑ์œผ๋กœ ๋งŒ๋“ ๋‹ค. ์ด ๊ณ„์•ฝ์€ ์‹ค์ œ ์„ฑ๋Šฅ๊ฐ’์„ ๋งŒ๋“ค์ง€๋Š” ์•Š์ง€๋งŒ, ํ–ฅํ›„ P ์ž…๋ ฅ์ด CROHME ์ •๋‹ต group์ด๋‚˜ ํ•ฉ์„ฑ ๊ณ ๋ฆฝ๊ธฐํ˜ธ proxy์™€ ์„ž์ด๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค. ์ „์ฒด ํšŒ๊ท€๋Š” 282๊ฐœ๊ฐ€ ํ†ต๊ณผํ–ˆ๋‹ค.

์‚ฐ์ถœ๋ฌผ

  • src/math_grid_drawer/research/behavior_context06.py
  • src/math_grid_drawer/research/behavior_role_head06.py
  • src/math_grid_drawer/research/math_context_layer.py
  • scripts/train_math_ink_06_behavior_role.py
  • scripts/summarize_math_ink_06_behavior_seeds.py
  • scripts/audit_math_ink_06_behavior_grouping.py
  • scripts/audit_math_ink_06_x_edge_bottleneck.py
  • scripts/sweep_math_ink_06_x_grouping_guard.py
  • scripts/sweep_math_ink_06_cross_gap_guard.py
  • scripts/audit_math_ink_06_multistroke_families.py
  • scripts/sweep_math_ink_06_multistroke_family_guard.py
  • scripts/audit_math_ink_06_multistroke_guard_regressions.py
  • scripts/audit_math_ink_06_local_baseline_overmerge.py
  • scripts/sweep_math_ink_06_component_competition_guard.py
  • scripts/sweep_math_ink_06_local_baseline_guard.py
  • scripts/train_math_ink_06_boundary_behavior_guard.py
  • scripts/train_math_ink_06_p_boundary_auxiliary.py
  • scripts/train_math_ink_06_p_boundary_joint.py
  • scripts/summarize_math_ink_06_p_boundary_joint.py
  • scripts/evaluate_math_ink_06_p_boundary_device_stress.py
  • scripts/export_math_ink_06_litert.py
  • scripts/preflight_math_ink_06_p_formula.py
  • scripts/analyze_crohme_lattice_failures.py
  • tests/test_behavior_context06.py
  • tests/test_behavior_role_head06.py
  • tests/test_p_formula_gate06.py
  • research/contracts/aiflow_p_formula_v1.schema.json
  • research/AIFlow-MATH-INK-0.6-BEHAVIOR-CONTEXT-REPORT-20260724.md
  • research/runs/math_ink_06_behavior_role_3seed_20260724/run_summary.json
  • research/runs/math_ink_06_behavior_grouping_audit_20260724/report.json
  • research/runs/math_ink_06_behavior_grouping_cross_joint_audit_20260724/report.json
  • research/runs/math_ink_06_p_boundary_joint_sharedfix_3seed_20260724/run_summary.json
  • research/runs/math_ink_06_p_boundary_device_stress_sharedfix_3seed_20260724
  • research/runs/math_ink_06_composite_export_seed17_20260724/export_manifest.json
  • research/runs/math_ink_06_x_grouping_guard_20260724/report.json
  • research/runs/math_ink_06_x_edge_bottleneck_20260724/report.json
  • research/runs/math_ink_06_cross_gap_guard_full_selector_20260724/report.json
  • research/runs/math_ink_06_behavior_grouping_full_selector_gap50_20260724/report.json
  • research/runs/math_ink_06_x_grouping_guard_gap50_full_selector_20260724/report.json
  • research/runs/math_ink_06_full_selector_gap50_failure_audit_20260724/report.json
  • research/runs/math_ink_06_cross_gap_guard_family6_full_selector_20260724/report.json
  • research/runs/math_ink_06_multistroke_family_guard_geometry_protected_20260724/report.json
  • research/runs/math_ink_06_multistroke_guard_regression_audit_20260724/report.json
  • research/runs/math_ink_06_full_selector_gap40_family6_protected_failure_audit_20260724/report.json
  • research/runs/math_ink_06_behavior_grouping_full_selector_gap40_family6_protected_20260724/report.json
  • research/runs/math_ink_06_component_competition_guard_20260724/report.json
  • research/runs/math_ink_06_local_baseline_guard_20260724/report.json
  • research/runs/math_ink_06_local_baseline_overmerge_audit_20260724/report.json
  • research/runs/math_ink_06_boundary_behavior_guard_20260724/report.json
  • research/runs/math_ink_06_p_boundary_auxiliary_smoke_20260724/report.json
  • research/runs/math_ink_06_p_boundary_auxiliary_fullsmoke_20260724/report.json
  • research/runs/math_ink_06_p_boundary_joint_3seed_20260724/run_summary.json
  • research/runs/math_ink_06_p_boundary_device_stress_3seed_20260724/report.json