nlp.stanford.edu/projects/tacred/
TACRED
TACRED라는 관계 추출(분류) 데이터셋이 있다.
최근에 와이프 실험을 도와주다가 다루게 된 데이터셋
대략 10만 개의 example로 구성 된 relation extraction dataset이다.
(42개의 릴레이션 분류 문제)
비공식적으로는 72.78의 정도의 SOTA에 근접한 테스트 F1 스코어를 얻었고,
논문을 준비중이다.
모델 구현하면서 배운 것 메모...
스케쥴러를 쓸 경우 warm-up ratio 하이퍼파라미터가 생각보다 큰 영향을 끼칠 수 있음
데이터 불균형이 매우 심할 경우 CrossEntropy의 클래스별 weight을 (1-학습셋 상에서 비율)로 세팅해주면 precision/recall/f-measure가 훨씬 더 균형있게 학습 됨
전체 데이터 기준 일부를 샘플링 하여 여러 모델을 학습 & bagging 앙상블 한 것 보다
(80% 학습 * 5 models with fixed random seed)
전체 데이터 셋으로 학습하되 random seed만 다르게(셔플링이 다르게 됨) 하여
여러 모델 학습 후 앙상블 한게 성능이 더 좋았음.
(100% 학습 * 5 models with different random seeds)
학습 데이터를 다르게 가져갈 때
서로 다른 로컬 미니멈으로 빠지게 되어서 다양한 모델을 학습할 수 있기 때문에
서로 다른 데이터(전체 80%)를 학습한 모델 5개를 모아 앙상블(확률 값 평균)하면
거의 항상 향상되는 것을 봐왔고 즐겨 쓰는 방식이었는데
random seed를 다르게 해서 데이터 셔플 결과를 다르게 해도 시작점이 달라지기 때문에
결국 다양한 모델을 학습할 수 있게 되고
더 많은 데이터로 학습할 수 있기 때문에 성능까지 더 좋아진듯 하다.
구현
코드는 깃헙에 공개 예정...
아래는 베이스라인 코드 및 논문
nlp.stanford.edu/pubs/zhang2017tacred.pdf
Re-TACRED (Revicsed-TACRED)
TACRED 데이터셋을 개선시킨 버전의 데이터셋,
어노테이션이 잘못된 문장 혹은 정의가 모호한 관계를 바로잡거나 없앤버전의 데이터셋이다.
약 24% 정도의 어노테이션이 수정되었다고 함.
기존의 10만 문장 정도에서 9만 문장 정도가 남았고, 40 개의 릴레이션이 남음.
'DL&ML > code.data.tips' 카테고리의 다른 글
분류 문제 관련 torch loss (BCEWithLogitsLoss, CrossEntropyLoss, LogSoftmax, NLLLoss) (0) | 2021.04.14 |
---|---|
torch amp mixed precision (autocast, GradScaler) (0) | 2021.04.13 |
Focal Loss (2) | 2021.04.13 |
KL divergence 구현 예시 (0) | 2021.04.13 |
Weighted Cross Entropy (0) | 2021.04.06 |