Day2 (10.26, 화)

  • Baseline code 돌리기

  • Baseline 프로세스 이해하기

1. Baseline 돌리기

[Baseline Code]

{
    "eval_samples": 474,
    "exact_match": 58.333333333333336,
    "f1": 66.89433020683022
}

현재 baseline으로 주어진 코드 같은 경우에는 이미 대상 context를 주어지게끔 구현되어있다. 하여 Reader부분의 경우 해당 코드를 기반으로 모델을 변경하거나, 기타 기법을 적용하는 방향으로 시도를 해보면 좋을 것 같다.

[Model]

Day1에서 알아본 바와 같이 KLUE BenchMark에서는 RoBERTa-Large가 76.78 점으로 가장 높은걸 알 수 있었다. (Baseline은 KLUE/BERT-base로 62.32 로 기술 되어있음)

{
    "eval_samples": 474,
    "exact_match": 68.75,
    "f1": 77.40300925925928
}

똑같이 3 epoch으로 EM 값이 10점 가량 오른 것을 확인할 수 있었다. 학습 횟수가 좀 작은 것 같아서 epoch를 10으로 늘려서 한번 진행해보기로 한다.

추가로 해당 모델은 QA에 맞지 않아 그에 맞는 걸 사용하는 것을 권장하고 있다.

Some weights of the model checkpoint at klue/roberta-large were not used when initializing RobertaForQuestionAnswering

다른 모델도 체크해보자.

피어세션을 통해 종혁님께서 영어의 경우 EM 91점 까지 나온다고 하였다... 아직 해볼만한게 많은가보다.

실제로 사이트에서 확인해보니 SQuAD 1.1, 2.0에서 EM 스코어 90점이상을 확인할 수 있었다.

[Model]

10 epoch 을 돌리려다 5 epoch 만 돌려서 확인해 보았다.

{
    "eval_samples": 474,
    "exact_match": 65.41666666666667,
    "f1": 72.29943783068785
}

오히려 떨어지는 것을 확인할 수 있었다.

내일은 경현님께서 커스터마이징한 코드를 가지고 WanDB를 활용해서 실제로 점수 하락을 하고 있는지 아니면 일시적인 하락인지 확인을 해봐야할 것 같다.

건수가 적다보니 금방 overfitting 되는 것 같다.

2. 오피스아워

  • QA 관련 동향을 살펴본다

  • ODQA에서 top-k passage를 늘려본다

  • Reader 부분 모델을 바꿔본다.

  • Generation based 도 시도해 본다.

Extraction 모델과 Generation 모델을 합쳐서 사용할 수 있다. 두가지 모델의 loss function을 하나에서 같이 사용이 가능하다. encoder의 weight를 업데이트 할 때 각 모델의 loss를 역전파하는 식으로 합치는 방법도 고민해보면 좋을 것 같다.

Last updated