본문 바로가기

전체 글68

ColBERT: Efficient and effective passage search via contextualized late interaction over BERT 1. 개요 ODQA(Open Domain Question Answering)와 기존의 해결방식 Open Domain Question Answering은 질문이 주어졌을 때, 해당 질문의 답을 포함하는 문서를 대량의 문서집합으로부터 찾아서, 해당 문서에서 질문에 알맞은 답을 추출해내는 task입니다. 이 논문이 출시되었을 당시엔 BERT를 활용한 방식이 SOTA를 달성한 상태였습니다. 그러나 BERT를 사용하는 방식은 기존 방식들에 비해 너무 느리다는 문제가 있었습니다. BERT 방식이 기존 방식들보다 느린 이유는 질문과 관련 있는 문서를 찾는 방식에 있습니다. BERT는 질문과 문서 사이의 관련도(유사도)를 측정하기 위해 아래와 같은 과정을 거칩니다. 질문(Query)과 문서(Document)를 하나의 .. 2023. 4. 27.
[딥러닝 기초] 일단 만들어보기 안녕하세요. 딥러닝 기초 강의 포스팅을 시작해 보겠습니다. 제가 생각했을 때 뭐든 처음 시작할 때는 일단 흥미를 붙이는 것이 가장 중요하다고 생각됩니다. 그렇기 때문에 우선 직접 코드를 작성해보고, 학습을 수행해 보고, 결과를 눈으로 확인하는 것으로 시작하고자 합니다. Colab 실습은 우선 colab으로 시작하고자 합니다. colab은 인터넷 브라우저에서 python 스크립트를 작성하고 실행할 수 있도록 해주는 사이트입니다. 딥러닝을 하기 위해선 gpu도 필요하고, gpu 사용을 위한 환경설정도 필요하고, 가상 환경 설정도 해야 하고.. 미리 준비해야 하는 것이 많고 복잡합니다. Colab은 이런 설정들이 미리 되어 있는 컴퓨터의 서버를 빌리는 겁니다. 이런 복잡한 준비 절차들을 생략할 수 있고, 누구.. 2023. 4. 24.
[딥러닝 기초] 딥러닝 기초 내용 포스팅의 목표 안녕하세요 제가 아는 지식을 이용해 딥러닝 기초부터 시작하는 글을 포스팅 해보려 합니다. 제가 그동안 딥러닝을 공부하면서 느낀 점은 다음과 같습니다. 기초 강의는 많지만 그 이후에 대한 강의가 부족함. (기초는 알겠는데 그 이후에 뭘 해야 할지를 모름) 논문 리뷰, 코드 리뷰 등 다양한 주제로 좋은 글들이 블로그 포스팅 형태로 많지만 초보자 입장에선 해당 주제의 키워드를 모른다면 해당 내용을 알 수가 없음. 블로그 글을 들어가 보면 설명이라기 보다는 자신이 공부한 내용을 기록한 경우가 많음. 물론 잘 설명하는 블로그도 있고 책도 있겠지만 개인적으로 느끼기엔 아직 그런 컨텐츠가 부족하다고 느껴져서 조금이라도 이런 부분에 이바지하고자 기초부터 블로그 포스팅을 시작해 보고자 합니다. 제 목표는 다음과 같습니다.. 2023. 4. 24.
Poly-encoders: architectures and pre-training strategies for fast and accurate multi-sentence scoring 1. 배경 소개 NLP에는 2개의 시퀀스를 서로 비교하고 분석해야하는 종류의 task가 있습니다. 예를 들면 NLI나 ODQA와 같은 task가 있겠습니다. NLI는 두 문장의 관계를 '관계 있음', '관계 없음', '상반됨' 3가지로 분류하는 task이고, QA는 질문이 주어졌을 때, 질문에 대한 답을 추론하는데 도움이 될만한 관련 문서를 찾고, 그 문서로부터 질문에 대한 답을 추출해야 하는 task입니다. "사형제도는 폐지되어야 합니다." - "사형제도를 지지하는 것은 옳지 않습니다." 분류 : '관계 있음' 관련 문서 1. "63빌딩 혹은 63 스퀘어는 대한민국 서울특별시 영등포구 여의도동에 있는 마천루이다. 이전 명칭은 한화 63시티이고 지상높이는 249m(해발 264m)이다." 2. "인종은 제.. 2023. 4. 20.
BART: Denoising Sequence-toSequence Pre-training for Natural Language Generation, Translation, and Comprehension 본 포스트는 BART(https://arxiv.org/pdf/1910.13461.pdf)논문의 리뷰입니다.1. 간단 소개지금까지 transformer를 활용한 구조로써 GPT와 BERT를 알아 봤었습니다. BERT는 transformer의 양방향 인코더를 활용해 "[MASK]"로 가려진 텍스트를 추측하는 방식으로 학습했고, GPT는 transformer의 단방향 디코더를 활용해 다음 텍스트 토큰을 예측하는 방식으로 학습됩니다. 이에 자연스럽게 BERT는 문장 전체의 의미를 유추하고 이를 분류하는 데에 특화되고, GPT는 다음 텍스트를 생성하는 데에 특화되었습니다.그렇지만 이 2가지 장점을 모두 합칠 수는 없을까? 해서 등장한 게 BART입니다. BART는 BERT+GPT입니다. 다르게 말하면 transf.. 2023. 4. 13.
ODQA를 위한 사전 학습 방식 : ORQA와 REALM 저번 DPR 포스트에 이어서 ODQA 해결책으로 제시된 ORQA와 REALM을 살펴보도록 하겠습니다. 둘을 함께 살펴보는 이유는 둘 다 pre-training을 사용해 ODQA문제를 해결하고자 했고, masking과 연관이 있다는 점에서 비슷하다고 느껴졌기 때문입니다. 0. ODQA ODQA(Open-Domain-Question-Answering) 문제를 다시 소개하자면, 크게 2가지의 임무를 수행해야 합니다. 광범위한 Open-domain corpus로부터 질문과 관련 있는 문서 찾기 (Retrieval) 관련 문서들로부터 정답 추출하기 (Reader) Reader의 경우 BERT를 통해 꽤 좋은 효과를 보고 있습니다. Reader는 BERT를 사용해 문서에서 정답 단어의 위치를 찾는 역할을 수행합니다.. 2023. 4. 5.
Dense Passage Retrieval for Open-Domain Question Answering 배경 Open-Domain Question Answering QA 문제는 질문에 대한 답을 내는 과제입니다. 일반적으로 질문이 주어지면, 정답이 포함된 passage를 보고 거기서 정답을 찾아내는 방식을 사용합니다. Open-Domain Question Answering은 좀 더 어려운 과제로, 정답이 포함된 passage를 제시해주지 않습니다. 모델이 직접 정답과 관련된 passage를 찾아서 정답을 내야 합니다. Open-Domain 예시로 KorQuAD를 살펴보겠습니다. KorQuAD는 10만여개의 wikipedia 문서와 약 5만개의 질문-답변 쌍으로 이루어진 데이터셋입니다. 이 과제를 해결하는 방법은, 1) wikipedia 문서들 중에서 질문과 관련 있는 문서를 찾은 뒤(retrieval), .. 2023. 3. 30.
SimCSE: Simple Contrastive Learning of Sentence Embeddings Sentence BERT에 이어서 SimCSE를 살펴보겠습니다. SimCSE는 Sentence BERT의 업그레이드 버전이라고 볼 수 있습니다. SimCSE는 아래와 같은 점들을 기여합니다. 1. contrastive learning을 unsupervise 방식으로 수행하는 방법을 제시 2. 더 효율적인 방식의 supervised learning. 3. Supervised learning에서 hard-negative의 적용. 하나씩 알아가 보도록 하겠습니다. 1. Contrastive Learning Contrastive learning이란 서로 연관 있는 임베딩끼리는 가깝게, 연관 없는 임베딩끼리는 멀도록 매핑하는 학습방법을 뜻합니다. SBERT에서는 NLI 데이터셋을 이용해 'entailment' 라.. 2023. 3. 22.
Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks 1. 개요 Semantic textual similarity(STS)는 두 문장 사이의 유사도를 측정하는 NLP task입니다. 이 task 역시 BERT를 사용했을 때의 성능이 훨씬 좋았죠. BERT는 STS task를 두 문장을 한 번에 입력받은 뒤에 두 문장의 관계를 분류하는 식으로 해결합니다. 그러나 이런 방식은 실용적으로 활용되기에 너무 비효율적입니다. 논문에 따르면 원하는 문장과 가장 유사한 문장을 10,000개의 문장 중에서 찾으려고 한다면 $n(n-1)/2=49,995,000$번의 연산이 필요합니다. 이를 V100 GPU를 사용해 수행하고자 하면, 65시간이 걸린다고 합니다. 이 정도 시간이 걸린다면 검색 추천이나 알고리즘 등에 사용하기는 어렵겠죠. Sentence-BERT(이하 SBERT.. 2023. 3. 20.