ML
[NLP] Sentence-BERT 살펴보기
Sentence-BERT Sentence-BERT는 vanila BERT/RoBERTa를 fine-tuning하여 문장 임베딩 성능을 우수하게 개선한 모델이다. BERT/RoBERTa는 STS 태스크에서도 좋은 성능을 보여주었지만 매우 큰 연산 비용이 단점이었는데, Sentence-BERT는 학습하는 데 20분이 채 걸리지 않으면서 다른 문장 임베딩보다 좋은 성능을 자랑한다. 등장 배경 기존의 BERT로는 large-scale의 유사도 비교, 클러스터링, 정보 검색 등에 많은 시간 비용이 들어간다. BERT로 유사한 두 문장을 찾으려면 두 개의 문장을 한 개의 BERT 모델에 넣어야 유사도가 평가된다. 따라서 문장이 10000개 있으면 10C2 번의 연산 후에 유사도 랭킹을 얻을 수 있다. 클러스터링이나..
[NLP] Google의 BERT 이해하기
BERT란 무엇인가 BERT(Bidirectional Encoder Representation from Transformer) : Google에서 만든 문맥을 고려한 Transformer 기반 고성능 텍스트 임베딩 모델. 임베딩 모델이 문맥을 고려할 때의 장점 👉🏻 다의어∙동음이의어를 구분할 수 있다. A: He got bit by Python(파이썬이 그를 물었다). B: Python is my favorite programming language(내가 제일 좋아하는 프로그래밍 언어는 파이썬이다). Word2Vec: 정적 임베딩, A에서의 'Python' 임베딩 == B에서의 'Python' 임베딩 BERT: 동적 임베딩, 트랜스포머 모델 기반이므로 문장의 각 단어를 문장 내 모든 단어들과 연결시켜 문..
[NLP] Transformer 알아보기 - (1) Encoder
* 이 글은 구부정.. 스터디의 일환으로, '구글 BERT의 정석' 책을 읽고 정리한 글입니다. 트랜스포머 소개 NLP의 다양한 문제들을 해결하기 위해 주로 사용되었던 RNN과 LSTM 네트워크에는 장기 의존성 문제(long-term dependency)가 있다. 이런 RNN의 한계점을 극복하기 위해서 「Attention Is All You Need」 논문에서 '트랜스포머'라는 아키텍처를 제안했다. 트랜스포머는 RNN의 순환 방식 대신 순수하게 어텐션만 사용한 모델이다. 트랜스포머는 셀프 어텐션(self attention)이라는 특수한 형태의 어텐션을 사용한다. 기계번역에서의 사용 예시를 통해 트랜스포머의 작동 원리를 살펴보자. 트랜스포머는 인코더-디코더로 구성된 모델로, 인코더에 원문을 입력하면 인코더..
[파이토치로 배우는 자연어처리] 레스토랑 리뷰 감성 분류하기 - (3) 감성 분류 모델 만들기
이 글은 한빛미디어의 '파이토치로 배우는 자연어처리' 글을 읽고 정리한 것입니다. 저번 포스트까지 텍스트 데이터를 정제하고, 단어-인덱스를 매핑하는 사전을 만들고, 사전을 바탕으로 리뷰 문장을 벡터화하는 과정을 마쳤다. 이번 포스트에서는 이렇게 가공해 둔 문장을 가지고 모델을 만들어 학습시키고 성능을 측정해 보도록 하겠다. GitHub - mori8/NLP-Pytorch-practice: PyTorch Zero To All(by Sung Kim) 강의와 '파이토치로 배우는 자연어 처리' 책 PyTorch Zero To All(by Sung Kim) 강의와 '파이토치로 배우는 자연어 처리' 책을 읽고 정리하기 위한 저장소 - GitHub - mori8/NLP-Pytorch-practice: PyTorch ..
[파이토치로 배우는 자연어처리] 레스토랑 리뷰 감성 분류하기 - (2) 문장 토큰화와 Dataset
이 글은 한빛미디어의 '파이토치로 배우는 자연어처리' 글을 읽고 정리한 것입니다. 이어서, 전처리된 데이터셋을 가지고 본격적으로 분류 모델을 만들어볼 것이다. 전처리가 끝난 텍스트 데이터를 토큰화, 벡터화한 후 Dataset으로 만드는 과정을 코드로 작성해보자. 우리는 여기서 ReviewDataset, Vocabulary, ReviewVectorizer 클래스를 만들 것이다. ReviewDataset: csv 파일을 받아 데이터셋을 로드하고, 이 데이터셋을 바탕으로 ReviewVectorizer 객체를 만든다. ReviewVectorizer: 각각 리뷰와 별점 정보를 담고 있는 Vocabulary 객체 2개를 만들어 관리한다. Vocabulary: 객체는 매핑을 위해 텍스트를 처리하고 어휘 사전을 만드는..