Skip to content

2021 10 14 Baseline Office Hour

snoop2head edited this page Oct 15, 2021 · 5 revisions

Q&A

Q. truncation을 하면 새로운 예제가 되는데, stride를 줘서 이전 예제와의 연결성을 부여하는 이유를 알 수 있을까요!? 저는 혹여나 answer이 잘리는 문제를 조금이라도 더 방지하기 위함이라고 생각했습니다.!

  • 하나의 인풋이 길이가 너무 길어지게 되면 PLM을 사용할 경우에는 max len을 설정해줄 수 밖에 없습니다. 따라서 해당 값으로 truncate만 해주게 될 경우 우리는 문장의 앞쪽 fragment만 학습을 하게 됩니다. 긴 길이의 문장도 PLM으로 처리하면서 + 뒷쪽 문장도 같이 보기위해서 stride를 사용하고, 최대한 앞쪽 context를 반영하기 위해 연결성을 방지합니다. ( answer이 잘리는 문제는 stride를 걸어도 생기긴 합니다)

Q. 답변해주셔서 감사합니다! 만약 A라는 sequence가 둘로 나뉘어져서 A-1 / A-2로 쪼개진다면, doc_stride가 반영되는 부분은 A-2일텐데(A-1의 끝부분 포함하므로), 문장의 앞쪽 fragment만 학습을 하게 된다는 말씀이 어떤 의미인지 알 수 있을까요! 최대한 앞쪽 context를 반영하기 위해 연결성을 방지한다는 말씀도 이해를 못 했습니다..! 괜찮으시다면 추가 설명을 부탁드려도 될까요🙏!

  • (제가 단어를 잘못썼는데 연결성을 방지하는게 아니라 유지하는것입니다 ㅠㅠ) 덧붙여서 말씀드리자면 동일한 질문이 들어왔을 때 answer가 완전히 구분되어서 달라져버린다면 모델이 헷갈려 할 수 있습니다 ㅎㅎ 그러니 context를 조금 더 고려해주는식으로 모델을 구현하고 있어요.

Q. tokenizer 때문에 [데이터셋상 정답]과 [모델이 학습하는 정답]이 다르게 되는데 이런 문제는 어떻게 해결하면 좋을까요? 예를 들어 정답이 '강아지 풀'인데, 정답에 대한 토큰화가 '강##', 'UNK', '풀' 으로 된 것처럼

  • 해당 경우에는 모델의 정답을 바로 사용하는게 아니라, 후처리 과정에서 post process를 통해 tokenized 값을 decoding 을 통해 합쳐주는 과정이 있습니다. 그리고 말씀하시는 예제같은 케이스가 발생할 경우에는 정확하게 합치지 못하는 경우가 발생할 수는 있습니다.
  • 다만 roberta 모델이라면 저런식으로 단어 사이에 unk 가 발생할 확률이 매우 낮습니다 (굉장히 큰 vocab을 가지므로)

Q. stride을 걸어도 answer가 잘리는 경우는 그러면 완전히 해결이 불가능한 문제인가요? 그냥 낮은 확률에 맞기는 수밖에 없는 것일까요?

  • 네 그런 경우가 있습니다.
  • 이런 문제가 있기 때문에 최근에 long sequence 를 다루는 모델이 나오고 있죠 !

Q. context가 두개로 잘렸다고 가정하고, answer가 잘린 두개의 context에 모두 있다고 가정했을때, 두개의 정답이 tokenized_examples에 저장될까요?

  • yes

  • 과제가 baseline 파악에 너무너무 도움이 되었습니다 ㅎㅎㅎ

  • import *은 하지 않기로 ㅎㅎ,,, 어디에서 오는 지 알 수 없다,.

Recommendations

Q. extraction-based랑 generation-based mrc의 결과를 앙상블할 수도 있나요!! .. 어떤식으로 output앙상블이 가능한 지 더 여쭤봐도 될까요!

  • BLUE Score일 수도 있고, Rule base로 걸러서 어떤 모델의 output을 선택할 것인지의 ensemble로 보셔도 될 것 같고.
  • 아니면 단일 모델로 extraction-based와 generation-based를 합쳐도 됩니다. extraction-based나 generation-based는 encoder을 활용하는 거기 때문에, loss를 같은 걸 쓰고 backpropogation을 같이 할 수 있을 겁니다. 이건 여러분들이 시도를 해보시고.

Q. MRC챌린지에서 korquad로 pretrained된 모델을 사용해도 되나요? 외부 데이터셋은 사용말라고 써저있긴한데 기학습 가중치는 제한없이 허용된다고 해서 그렇습니다.

  • KorQuad로 저장되어 있는 모델을 finetuning하는 것을 허용할 것 같습니다.
  • 이전에 공지드렸듯이, 기학습 가중치 (pretrained weight) 사용에 제한은 없습니다.
  • 다만 KLUE MRC 데이터로 학습된 기학습 가중치 사용은 금지합니다. KLUE 프로젝트에서 공개된 KLUE MRC 데이터셋의 일부는 현 리더보드 테스트셋을 포함하고 있습니다. 따라서 KLUE MRC 데이터로 기학습된 가중치를 사용하는 것은 ‘테스트셋을 분석하고 사용(학습)하는 행위이기 때문에 본 대회와 부스트캠프 AI Tech 학습에서는 금지합니다.
  • 추가적으로 대회 참가자 분들은 사용하는 기학습 가중치를 공지게시판의 ‘기학습 가중치 공지’ 게시글에 댓글로 pretrained weight 정보와 접근 가능한 링크(link)를 반드시 공유 부탁드립니다. 이미 공유가 되어 있을 경우 추가로 공유주실 필요는 없습니다.
  • 오피스아워에서 말씀드린 것처럼, 재미있는 앙상블 모델도 만들어 보실 수 있으니 다양한 방법으로 모델링을 해보시는걸 추천드립니다 🙏 🙏

Q. mrc 이외의 모델을 사용해서 모델을 중간중간에 inference하면서 활용하는 것은 허용되는건가요?

  • 네.

Useful MRC Reference

Clone this wiki locally