Loading...
2024. 4. 7. 03:02

closed book question answering 개념 이해하기

1. MRC와 ODQA는 무슨차이인가 MRC는 문서가 주어지고 그에 대한 질문이 함께 주어지면 모델이 문서를 읽고 질문에 대한 답을 내는 방식 ODQA는 문서가 주어지지 않았는데 질문이 주어지면 질문과 관련된 문서를 찾고 그 문서로부터 모델이 질문에 대한 답을 내는 방식 2. open domain vs. open book vs. closed book open domain은 질문이 주어질 때 관련된 문서를 찾아 읽고 질문에 답을 내는 task 자체를 나타냄 open book은 질문을 던졌을 때 모델이 질문에 답하기 위해 ‘책’이라고 할 수 있는 거대한 corpus를 접근하게 하는것 closed book은 corpus없이 질문을 받으면 모델이 가지고 있는 사전지식만을 활용하여 정답을 냄 3. core ide..

2024. 4. 7. 02:51

T5 모델 간단하게 알아보기

1. introduction text-to-text format을 적극적으로 밀었던 사실상 첫번째 model? BART랑 유사하면서도 text-to-text format을 활용하여 거의 모든 자연어처리 문제를 text-to-text format으로 해결하자고 제안했다 자세한 부분은 조금 다르겠지만 seq-to-seq original transformer와 유사한 구조를 사용했다 2. pre-training 다양한 모델 구조, 다양한 사전학습목표, 방대한 사전학습용 데이터셋, 다양한 fine tuning 방법등을 마련하여 체계적으로 실험을 수행 당연하지만 이들 중 가장 좋은 방식을 선택하여 방대한 규모의 모델을 학습시킴 BERT나 BART와 마찬가지로 T5같은 모델을 방대한 언어에 사전학습시켜서 fine-..

2024. 4. 4. 03:16

text-to-text format 방법론 간단하게

1. motivation GPT-2로 closed question answering의 가능성을 본 이후로 등장한 방법론 closed question answering는 generation MRC와 유사하다. 단, 둘의 차이라면 전자는 지문없이 질문만 들어간다 closed question answering도 BART같은 seq-to-seq transformer기반의 모델을 사용함 text-to-text format은 그 이름처럼 모든 종류의 NLP task를 text에서 text로 mapping하는 방식으로 치환하겠다는 방법론 input text 앞에 task에 대한 설명을 붙여준다. 그러면 모델이 처음 보는 task더라도 가지고 있는 언어 지식만으로 task를 이해하여 수행한 output을 출력할 수 있..

2024. 3. 31. 02:11

NLP text data 전처리에서 tokenizing할 때 padding이 필요한 이유

text 데이터는 보통 길이가 서로 달라서 전처리할때 padding을 해서 길이를 맞춰준다고 보통 그러는데 왜 해야할까? 보통 batch형태로 데이터를 만들어서 모델을 학습시키는데, 길이가 서로 다르면 batch가 안만들어진다 데이터셋을 다음과 같이 구현하고 dataloader를 만들어본다 class ChatbotDataset(Dataset): def __init__(self, dataset, tokenizer, max_length = 438): self.tokenizer = tokenizer self.data = dataset self.max_length = max_length def __getitem__(self, i): inputs = tokenizer(self.data[i][1], return_t..

2024. 3. 31. 02:03

NLP huggingface model에 input을 제대로 넣었는데 IndexError: index out of range in self가 나는 이유

데이터셋을 다음과 같이 구현하고 def preprocess(data): preprocessed_data = [] for i in range(len(data)): d = data[i] knowledge = ' '.join(d['knowledge']) query = f"질문: {d['query']}\n지식: {knowledge}" answer = f"{d['answer']}" preprocessed_data.append((i,query,answer)) return preprocessed_data T5 토크나이저, 모델 불러온 다음 tokenizer = T5Tokenizer.from_pretrained('digit82/kolang-t5-base') model = T5ForConditionalGeneration..

2024. 3. 30. 00:11

Open domain question answering에서 고민해야할 issue

1. passage의 단위? 앞에서 passage의 엄밀한 정의를 하지 않았는데 위키피디아 같은 경우도 passage를 어떻게 볼지 엄밀하게 정의하지 않았다 영어 위키피디아에서 article로 보면 500만개 정도 있고 paragraph로 보면 3000만개 정도 있고 sentence로 보면 7600만개 정도 있다고 한다 retriever가 reader한테 질문과 관련된 passage를 넘겨줄 때 몇개를 넘겨줘야 적당한가? passage를 정의한 범위에 따라서도 몇개를 넘겨줄지 고려해야함 몇개의 passage를 넘겨주느냐에 따라 모형의 성능도 다르다 위와 같이 큰 단위일수록 적게 넘겨줌 위는 article일때 k=5, paragraph는 k=29, sentence는 k=78로 그냥 설정해보고 실험한 논문 ..