코드의 시간 복잡도 예측은 알고리즘 분석에서 중요한 문제로, 개발자가 작성한 코드의 성능을 평가하는 데 필수적입니다. 하지만 정확한 시간 복잡도 계산은 이론적으로 판별 불가능한 문제이며, 수작업으로 복잡도를 주석 달아주는 것은 전문가의 개입이 필요하기 때문에 데이터 부족 문제가 심각합니다.
최근에는 시간 복잡도 예측을 위한 데이터셋과 기초적인 모델이 등장했지만, 라벨이 부족한 환경(low-resource setting)에서는 기존 접근법이 효과적으로 작동하지 않음이 관찰되었습니다. 이에 따라, 적은 양의 라벨 데이터만으로도 성능을 높일 수 있는 방법론이 필요합니다.
TCProF의 전체 구조
우리는 준지도 학습(SSL) 기법을 활용한 TCProF 프레임워크를 제안합니다. TCProF는 다음 세 가지 핵심 기법을 결합하여 소량의 라벨 데이터만으로도 높은 성능을 달성할 수 있습니다.
데이터 증강(Augmentation)
Co-Training 기법
기호 기반(Sym) 모듈
심볼릭 모듈의 구조
심볼릭 모듈 실제 사용 시나리오.
우리는 CodeComplex(Java, Python) 및 CorCoD 데이터셋에서 TCProF의 성능을 평가했습니다.
기존 Self-Training (ST) 기법 및 JointMatch (최신 준지도 학습 프레임워크)와 비교한 결과, TCProF는 기존 기법 대비 60% 이상의 성능 향상을 달성했습니다.
특히, Self-Training 대비 TCProF(UniXcoder)의 성능 향상폭이 64.81%에 달함을 확인했습니다.
SSL 베이스라인과의 비교 실험.