오피스아워

베이스라인을 일단 제대로 이해하고 작동원리를 알고가자!

1. Baseline이 어떻게 생겼나

1.1. what it does?

Q-A Task

  • Retrieval: 주어진 Query와 유사한 문서를 찾는다. (retrieval.py)

  • Reader: 문서내에서 정답을 찾는다. (train.py)

Train

  1. Reader 훈련시키기

    관련 문서를 뽑아낸 상황에서 정답을 찾는 모델을 훈련합니다.

QA 관련 동향을 살펴본다.

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

Reader 부분 모델을 바꿔본다

Generation based도 시도해본다.

2. 미세먼지 tip

2.1. black

코딩 이외에 고민되는 코딩 규칙들을 알아서 구현해줌.

저장하면 알아서 해줌

2.2. github .

소스코드 까보기

깃헙에서 . 누르면 코드 에디터로 나

2.3. simple_parsing

Arguments.py

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

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

Q. 교육의 의미가 혹시 있다고 생각해주신다면…. 혹시prepare_train_feaature 함수에 eval set을 넣어서 evaluation 함수를 실행하면 큰 문제가 생길까요…??

=> @재형님 확인을 위해 eval dataset을 사용해서 전처리 하신다는 의미일까요 ! Train 데이터 일부를 선택해서 확인하는게 조금 더 바른 방향 같습니다.

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

=> 나온 결과에 대해서 어떤 답을 선택할지에 대해 정할 수 있다. 또한 각각 모델을 구하는게 아니라 둘을 합쳐서 하나의 모델로 사용할 수 있다.

Last updated