learnc: 기존 C 코드의 상수를 데이터에 맞춰 최적화하기 (JPEG 9.1% 감소, WebRTC VAD에서 F1 +4.9)
요약
learnc는 수정되지 않은 C 코드 내의 이름 지정 상수를 사용자가 정의한 점수 함수를 이용해 최적화하고, 그 결과를 새로운 파일로 재작성하는 도구입니다. 이 도구를 JPEG 양자화 테이블에 적용했을 때 9.1%의 BD-rate 감소율을 보였으며, WebRTC VAD 상수 최적화를 통해 F1 점수를 향상시키는 등 실질적인 성능 개선 효과를 입증했습니다.
핵심 포인트
- C 코드 내 상수를 데이터 기반으로 자동 최적화하는 learnc 도구 소개
- JPEG 양자화 테이블에 적용 시 9.1%의 BD-rate 감소율 달성
- WebRTC VAD 상수 최적화를 통해 F1 점수 향상 확인
- 대규모 가중치 세트보다는 수십~수백 개의 상수에 적합함
learnc는 수정되지 않은 C 코드 내의 이름 지정 상수(named constants)를 사용자가 작성한 점수 함수(score function)와 비교하여 조정하고, 새로운 값으로 동일한 파일을 다시 작성합니다. 홀드아웃 데이터에 대한 결과는 다음과 같습니다: JPEG, stb_image_write.h (128개의 양자화 테이블 항목, 12개의 Kodak 이미지로 최적화되었으며 나머지 12개에서 테스트): scikit-image를 사용하여 libjpeg에서 독립적으로 확인한 결과, 동일 SSIM 수준에서 9.1%의 BD-rate 감소율을 보였습니다. mozjpeg의 테이블은 2.7%의 개선에 그쳤습니다. 이미지 1을 참조하세요. Google의 WebRTC VAD (vad_core.c의 모든 상수, LibriParty 개발 데이터로 최적화): LibriParty 평가에서 F1 점수가 0.810에서 0.859까지 향상되었습니다. 이미지 2를 참조하세요. 한계점: 1 bpp 미만의 JPEG 개선은 불가능합니다. 수십 개에서 수백 개의 상수에 가장 적합하며, 대규모 가중치 세트에는 적합하지 않습니다. 코드 (MIT): https://github.com/devanmolsharma/learnc · /u/keep_up_sharma 제출
AI 자동 생성 콘텐츠
본 콘텐츠는 r/MachineLearning (hot)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기