Skip to content

Lexical Learning 03 KO

teamswyg edited this page Sep 30, 2026 · 1 revision

저비용 특징 학습 03: 16개 계수로 개선 신호, 최종 시험은 보류

English · 실행 전 계획 · 전체 결과·모델 해시 · 직전 실제 자료 학습

8,192개 교차 특징 계수 대신 16개 계수로 학습하니 검증 순위 지표가 개선됐다. 그러나 주 후보의 AUC 0.5729는 사전 기준 0.60에 미달한다. reserve1 2,403개와 reserve2 2,401개를 사용하지 않고, 승격·기본 적용을 보류한다. 이것은 의미 이해 모델이 아니라 의미 모델이 넘어야 할 저비용 어휘 기준선이다.

달라진 점

이전 모델은 질문 단어와 코드 단어의 많은 조합을 작은 표에 넣었다. 새 기준선은 단어 겹침 비율, 단어 집합 유사도, 연속 두 단어 일치, 문자 3개 조각의 겹침, 선언 이름과의 일치 등 12개 특징(절편 포함)을 사용한다. 서로 다른 식별자 표기인 parseHTTPResponse와 parse_http_response를 단어로 나눠 비교한다. 길이 4개 특징을 추가한 16차원 변형도 비교해 단순히 질문/코드 길이로 자료의 편향을 배운 것은 아닌지 살핀다. 기본 matching 변형에서는 길이 네 칸이 0이다.

이름 추출은 def, func, function 뒤 토큰을 읽는 휴리스틱이며 언어 파서가 아니다. 따옴표 안 키워드나 Go receiver 선언을 잘못 읽을 수 있다. 원래 코드 전체는 나머지 특징에 사용하므로 잘못 읽은 이름으로 입력을 잘라 버리지 않는다. CoSQA의 Python 쌍으로 검증했으며 Go 저장소 성능을 주장하지 않는다.

16개 계수의 BCE 학습·추론은 Go로 구현했다. 기존 학습기의 기본 8,192차원 동작을 유지하면서 차원을 명시할 수 있게 했고, 잘못된 특징 index를 거부한다. runtime 모델 형식은 새 특징 계약 riido-lexical-features-v1이다. 기존 .hbin과 섞으면 안 된다. 이번 JSON 가중치는 실험용이며 riido-hints --model에 바로 넣을 수 없다.

같은 자료에서 비교

분할과 입력 범위는 이전 실험 그대로다. development 12,189개 중 11,263개 학습, validation607개 중 553개 선택/진단이다. 학습926개·검증54개가 길이 한도로 제외됐다. 아래 수치는 553개에 맞춰 비교했다. 이전 주기의 최종 2,400개 결과와 직접 비교한 표가 아니다.

방법 검증 AUC seed1729 seed2718
BM25 0.5378 동일 기준선
단어 교집합 0.5502 동일 기준선
matching FP32 0.5729 0.5730
matching INT8 0.5730 0.5732
matching 3진 PTQ 0.5701 0.5701
matching 3진 STE 0.5772 0.5762
matching+길이 FP32 0.5786 0.5781
matching+길이 INT8 0.5786 0.5781
matching+길이 3진 PTQ 0.5835 0.5835
matching+길이 3진 STE 0.5762 0.5762

2변형 × 2seed × 2학습률 × 2학습방식으로 16가지 설정을 각각100 epoch 실행했다. batch128/L2=0.0001. 변형·seed·학습 방식별 검증 BCE 최소값으로 epoch/학습률을 선택하고, FP32에서 INT8/PTQ를 파생해 총16개 내보내기를 기록했다. AUC는 선택 후 진단이며 점수 크기가 축소돼도 순서가 같으면 유지될 수 있다. 특히 PTQ의 작은 손실 차이만으로 정확도 향상을 주장하지 않는다.

사전에 주 후보를 matching FP32 seed1729로 정하고 검증 AUC≥0.60 및 같은 자료 BM25보다≥0.03 높음을 최종 시험 검토 조건으로 고정했다. 두 번째 조건만 충족했다. 가장 잘 나온 탐색 변형으로 주 후보를 바꾸거나 문턱을 낮추지 않는다. 모든 값은 반복 사용한 검증 자료의 점 추정이고 통계적 개선 확정·실제 검색 개선·LLM 비용 절감 증거가 아니다.

비용과 재현

  • Apple M4 Pro/24GiB/Go1.27.1 CPU, 전체 실행 wall1.61초/userCPU1.27초/최대RSS58,638,336B(55.92MiB)/swap0. 원천 읽기·분할·특징·16설정 학습·내보내기 포함. 직전 225.84MiB보다 작지만 특징·설정 수·epoch가 달라 동일 작업의 속도 비교는 아니다.
  • 읽기 쉬운 JSON 모델 파일은 출처/종류/가중치를 포함해509~712B. 계수16개의 float64 메모리는128B지만 파서·토큰·전체 프로세스 비용은 추가된다. 이 JSON은 packed 1.58-bit 파일이 아니다. 3진은 가중치 값/학습 방식이며 실행은 부동소수점이다.
  • 공개된 짧은 Go 예문의 특징 추출 microbenchmark: 3회 평균 측정값 각각5,469/5,407/5,410ns/op, 6,360B/op,134allocs/op. 단일 짧은 입력의 평균이며 p95·64후보 검색·전체 에이전트 비용이 아니다. 추가 할당 감소 여지는 있지만 품질과 실제 후보 검색 검증이 우선이다.
  • 모든16개 모델 SHA256은 재실행과 동일했다. 단위 시험은 camel/snake/Unicode, 길이 제거 대조군, 빈 입력 유한성, reserve 변화의 학습 격리, 차원 범위, 기존 기본 차원과의 계수 동일성을 확인한다. 원문·모델·프로파일은 Git에 넣지 않는다.
go run ./cmd/riido-lextrain --out .cache/lexical-training-new
go test ./internal/lexicalhint -run '^$' -bench BenchmarkFeatures -benchmem

고정 CoSQA 로컬 파일이 필요하고 출력 폴더는 새 것이어야 한다. 계획 파일 해시가 다르면 실행을 거부한다. 종료0은 실험 실행 성공이며 PrimaryReadyForFinal=false, Promotion=false다.

다음 PDCA

단어 조합을 무작정 늘리는 것보다 공유 가능한 일치 특징을 학습하는 편이 이 검증 자료에서 나았다. 다만 동의어·다른 표현과 코드 동작의 관계는 여전히 부족하다. 다음에는 이 기준선을 유지하고, 정적 의미 임베딩 또는 작은 공유 어휘 표현이 추가 메모리 대비 이득을 주는지 별도 고정 계획으로 검증한다. 필요하면 충돌/용량 대조군을 사용해 원인을 분리한다. 독립 최종 시험 없이 이번 상승을 실사용 개선으로 발표하지 않는다.

CoSQA 코드 MIT/데이터 C-UDA 구분과 로컬 계산·집계 공개 원칙을 유지한다. 모델 본체는 Git에 없고, 새 형식의 검증·라이선스/공개 내용 검토 전 HF에 게시하지 않았다. 원래 Laya 라우터와 별도의 연구이며 인코더를 16계수로 대체했다는 의미가 아니다.

Clone this wiki locally