분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
[Private 1위, 0.9911] GraphCodeBERT + UniXcoder
안녕하세요 :)
GraphCodeBERT와 UniXcoder 모델을 soft voting ensemble하여 사용했습니다.
Negative Sampling은 BM25Plus를 사용했습니다.
학습 데이터의 개수는 다음과 같습니다.
frac: 0.01, 약 1M
frac: 0.02, 약 2M
* single model
- GraphCodeBERT (frac: 0.01) / pl: 0.98831, pr: 0.98859
- GraphCodeBERT (frac: 0.02) / pl: 0.98892, pr: 0.98909
- UniXcoder (frac: 0.01) / pl: 0.98911, pr: 0.98942
* ensemble model
- GraphCodeBERT(frac: 0.02)+ UniXcoder(frac: 0.01) / pl: 0.99084, pr: 0.99111
NVIDIA A100(40GB) X 2을 사용하여 학습했습니다.
최종 code 및 자세한 내용은 github를 참고해 주시기 바랍니다.
https://github.com/GNOEYHEAT/CodeSim_cpp
감사합니다.
네! 위의 code로 계산했습니다!!
GraphCodeBERT(frac:0.02, cv:5), UniXcoder(frac:0.01, cv:5) 총 10개의 모델을 앙상블 했습니다.
단일 모델과 앙상블 모델 모두 threshold는 따로 조정하지 않았습니다.
GraphCodeBERT는 text_len를 512로, UniXcoder는 text_len을 1024로 학습하였습니다.
Sampling parameter frac의 값이 다르고 stratified k-fold를 사용한 앙상블 모델이기 때문에 각 모델이 학습하는 데이터는 차이가 있습니다.
validation 경향이 일치하고 분포를 확인했을 때 특이점을 발견하지는 못했습니다.
private 비율이 높아서 threshold를 조정할 생각은 하지 않았습니다!
label이 0과1이면 예측을 할때 threshold를 0.5로 두는게 조정하지 않는 것이라고 생각해 질문 드렸습니다. 상세한 답변 감사합니다 !
이번대회에서 성능에 가장 영향을 미친게 이 부분인 것 같네요
손실 함수로 BCEWithLogitsLoss를 사용했습니다!
output layer에 sigmoid 함수를 사용하지 않고 계산했기 때문에 치역은 구간 [0, 1]이 아닙니다.
때문에, threshold를 0 값으로 산술평균 했습니다!
질문 감사합니다 고생하셨습니다 :)
아 BCEWithLogitsLoss로 모델을 학습시키면 output이 sigmoid에 넣은 것처럼 나오니 sigmoid에서 y가 1/2이 되는 0을 기준으로 예측하신 거군요.. 이해됐습니다.. 감사합니다..
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
단일 모델 similar 구하실 때
np.where(preds>0, 1, 0)
이 코드로 구하셨나요 ??