검색증강생성(RAG) 구현을 위해서는 임베딩 모델이 필요한데, 한국어를 지원하는 오픈소스 모델 선택지가 다양하지 않다. 그 중 과거 SKT에서 만든 KoSimCSE 모델은 여전히 유효한 선택지이다. 이 모델의 근거가 되는 논문은 2021년 프린스턴 대학에서 발표된 'SimCSE: Simple Contrastive Learning of Sentence Embeddings'(https://arxiv.org/abs/2104.08821) 로, 오늘은 이 논문의 내용을 정리해본다.
제목에서 알 수 있듯이, 이 논문은 대조 학습을 통해 문장 임베딩을 생성하며, 비지도와 지도 학습 방식 모두를 제시한다. 대조 학습은 유사한 문장 쌍(양성 레이블)의 표현은 가깝게, 상이한 문장 쌍(음성 레이블)의 표현은 멀게 학습하면서 임베딩을 만들어낸다. 주로 코사인 유사도와 함께 크로스 엔트로피 손실 함수를 사용하며 별도의 온도 하이퍼파라미터를 통해 학습 강도를 조절할 수 있다.
먼저 제시된 비지도 학습 방식을 살펴보자. 레이블링 작업 없이 의미가 유사한 문장 쌍을 어떻게 만들 수 있을까? 컴퓨터 비전의 대조 학습에서 아이디어를 차용할 수 있다. 사진을 반전, 확대, 회전 등으로 변형한 다음 그것을 원본과 유사한 쌍으로 지정할 수 있다. 그러나 자연어 처리에서는 이를 직접 적용하기 어렵다. 언어는 이미지의 연속적인 형태와 달리 이산적이어서 변환을 거치면 문법 구조가 훼손되기 때문이다.
이 논문의 핵심 아이디어는 다음과 같다. 하나의 문장을 인코더에 통과시키면서 별도의 무작위 드롭아웃을 적용하여 두 개의 서로 다른 임베딩 벡터를 생성한다. 이 두 표현 값을 양성 레이블의 문장 쌍으로 지정하여 대조 학습을 진행하는 것이다. 음성 레이블은 미니 배치 내의 다른 문장들이 된다.
그 다음 지도 학습 방식에 대한 아이디어는 자연어추론(NLI) 데이터셋을 사용하는 것이다. NLI 데이터셋은 전제 문장에 대한 수반, 중립, 모순 문장으로 구성된다. 양성 레이블로 전제와 수반 문장 쌍을, 음성 레이블로 전제와 모순 문장 쌍을 사용할 수 있다. 이런 식으로 음성 레이블을 지정하는 것은 모델이 쉽게 맞추기 어렵게 만들면서, 즉 하드 네거티브 역할을 하면서 정확도를 끌어올린다. 논문의 여러 시도 중 가장 성능이 좋았던 것은 RoBERTa를 이 지도 학습으로 파인튜닝한 것이었다.
보통 임베딩 표현의 품질 측정은 첫째, 정렬, 즉 의미적으로 유사한 문장들이 얼마나 거리상 가까운가와 둘째, 균일성(등방성), 즉 모든 문장들이 서로 얼마나 균일하게 분포해 있는가로 판단할 수 있다. 사전학습 모델로 만든 표현 벡터들은 정렬이 잘 되어있지만 균일하지 않은 편이다. 다시 말해, 임베딩 공간이 좁다. 이에 대해 인위적인 후처리 기법을 적용할 수 있지만, 이는 정렬에 안 좋은 영향을 준다.
재미있는 점은 대조학습의 손실 함수를 최소화하는 것은 수리적으로 임베딩 그램 행렬의 최대 고유값을 줄이는 것이며, 이는 임베딩 공간을 균일하게 만드는 것을 의미한다. 그러므로 훌륭한 사전 학습 모델로 문장 간의 정렬을 유지하면서 대조학습 파인튜닝으로 임베딩을 학습해서 균일성을 끌어올리는 것은 굉장히 좋은 접근법이라 할 수 있다.
#NLP #Embedding
다음 내용이 궁금하다면?
이미 회원이신가요?
2024년 5월 15일 오후 1:17