-
문장 기반 임베딩 모델의 Semi-supervised 학습 방법자연어처리(NLP)와 인공지능(AI) 2024. 5. 23. 23:30
본 글은 [Open-Up] 오픈소스 소프트웨어 통합지원센터로부터 지원받아 작성하였습니다.
모델을 학습하기 위해서는 대량의 labeled 학습 데이터가 필요하다.
그렇지만, 대량의 labeled 학습 데이터 구축에는 비용과 시간의 문제가 발생하므로
보통은 Semi-supervised 학습을 통해 문장의 표현을 잘 이해한 기초 모델을 만들고,
이후에 labeled 데이터로 추가 학습을 진행한다.
여기서 문장의 표현을 잘 이해하기 위한 Semi-supervised 학습 방법은
크게 Self-prediction과 Contrastive learning로 구분할 수 있다.
[Self-prediction]
Self-prediction이란, 하나의 data 내에서 한 부분을 통해서 다른 부분을 예측하도록 하는 학습 방법이다.
Self-prediction은 다음과 같이 크게 4가지로 구분될 수 있다.
[그림] Self-Prediction
출처 : Self-prediction and Contrastive Learning, Weng & Kim
- Autoregressive generation : 이전의 behavior를 통해 미래의 behavior를 예측. 주어진 문장에서 다음에 올 단어를 예측하는 방식 등을 취한다. (ex. GPT의 자기회귀 예측)
- Masked prediction : 정보의 일부를 마스킹하고, 마스킹되지 않은 부분을 통해 마스킹 된 영역을 예측한다. (ex. BERT의 MLM)
- Innate relationship prediction : 오리지날 데이터에 변형을 가하고, 그 변형된 정보가 무엇인지 예측하는 방식. 주로 이미지에서 많이 활용된다. (ex. DiffCSE)
- Hybrid self-prediction : 위의 3가지 방식을 혼합하여 활용하는 방식. (ex. DALL-E)
[Contrastive learning]
다른 방법인 Contrastive learning은 embedding space에서 유사한(positive) sample끼리는 거리가 가깝도록 하고, 유사하지 않은(negative) sample들끼리는 서로 거리를 멀게 하는 것이 목적이다. 즉, 모델이 sample들 사이의 관계 또는 거리를 파악하도록 하는 것이다.
[그림] Contrative learning
출처 : Self-prediction and Contrastive Learning, Weng & Kim
**Contrastive learning 에서 쓰이는 기본적인 용어들**
- Anchor : 현재 기준이 되는 데이터샘플 (query라고도 함)- Positive pair : 기준이 되는 데이터샘플과 같은 class를 가지는 상관관계가 높은 데이터샘플 (key라고도 함)- View : anchor와 같은 semantic을 가지는 데이터샘플 (positive sample).사물을 보는 다양한 시각이 있듯이 anchor와 동일한 의미를 가지는 다른 샘플들을 생성할 수 있다.anchor 기준으로부터 augmentation을 한 샘플이나 아예 다른 modality가 view가 될수도 있다.(ex. 개를 음성과 이미지로 표현한다면 그 음성과 이미지는 같은 정보를 나타내는 view들이다.)- Negative pair: 기준이 되는 데이터샘플과 다른 class를 가지는 상관관계가 낮은 데이터샘플=> 따라서, 좋은 Positive Pair와 Negative Pair를 선정하는 방식이 굉장히 중요함.Contrastive learning 방법에 대한 논문은 대부분 이 방식에 대해 제안한다.Contrastive learning에서 좋은 representation이란, alignment 와 uniformity를 잘 만족시킬 수 있어야함.
- Alignment: positive paired instance 사이의 거리를 의미하는 척도로, positive 샘플끼리 거리가 가까울수록 잘 임베딩되었다고 볼수 있음.
- Uniformity: 임베딩이 얼마나 균일하게 분포하는지 의미하는 척도로, 전체 샘플의 임베딩이 균일하게 분포할 수록, 각 단어가 다른 문맥에서의 고유한 의미를 보존할 수 있기 때문에 균일한 것이 좋음. 분산/표준편차의 개념
- Contrastive learning으로 학습 진행 → negative pair와 positive pair가 멀어지도록 강제 → embedding space를 균일하게 분포하도록 함 → Alignment와 Uniformity를 모두 만족하는 representation 생성
[학습 사례]
많은 학습 방법론들이 위에서 설명한 Self-prediction과 Contrastive learning에 속한다고 볼 수 있는데, 21년에 발표된 TSDAE에서 제안한 방식은 Self-Prediction 중 Maked prediction에 해당한다.
TSDAE는 [그림] TSDAE의 구조에서 보이는 것처럼 Encoder-Decoder 구조의 모델을 활용하였는데, 학습 시에는 문장의 일부 단어를 랜덤으로 제거하여 Encoder에 입력하도록 하였다. 그리고 Encoder를 통해 생성된 임베딩이 다시 Decoder를 통해 본래의 문장으로 생성되도록 하는 것이 주요 아이디어였다. 문장의 일부 단어를 제거하는 Noise를 포함하더라도 임베딩이 온전한 표현력을 가질 수 있도록 Denoising Encoder로써 일반화된 성능을 끌어올리고자 하였다.
[그림] TSDAE의 구조
출처 : https://blog.ml6.eu/multilingual-domain-specific-sentence-transformers-d34f071763d0
21년에 발표된 SimCSE는 Contrastive learning을 통한 학습 방법론을 제안했는데, drop-out을 활용하여 하나의 문장을 Positive Pair(유사 문장)로 구성한 것, 그리고 학습 단위인 Batch 내에서 다른 문장은 Negative로 취급한 것이 핵심 아이디어다. drop-out은 일반화된 모델의 성능을 위해 랜덤하게 일부 뉴런을 비활성화시키는 방식인데, 같은 문장이 입력되더라도 출력되는 임베딩 값이 달라질 수 있게 된다. SimCSE는 이 부분을 활용하여, 동일 문장을 2번 Encoder에 입력함으로써 마치 유사한 문장 2개가 입력되는 것처럼 활용하였다.
[그림] SimCSE의 drop-out을 활용한 input 구조 출처 : SimCSE 논문
22년에 발표된 DiffCSE는 MLM과 SimCSE를 조합한 방식을 제안하였는데, 특히 Self-prediction 중 Innate relationship prediction을 추가로 활용한 것이 핵심 아이디어다. 학습 시에 원 문장의 일부를 마스킹하고, 마스킹 된 부분을 Generator 통해 생성한 뒤, 변형된 전체 문장에서 어느 부분이 마스킹된 것인지 Discriminator를 통해 맞히게 하였다. (GAN을 알고 있다면, 이해가 더 쉬울 것이다) 이렇게 마스킹된 부분을 맞히는 작업을 피드백(Loss 함수)에 반영함으로써, 데이터 증강을 위해 수행한 삭제, 마스킹 등의 행위가 문장 본래의 의미를 잃게하는 것을 보상하고자 하였다.
[그림] DiffCSE의 학습 구조 출처 : DiffCSE 논문
728x90'자연어처리(NLP)와 인공지능(AI)' 카테고리의 다른 글
Batch Size, Iteration, Step, Epoch 이해하기 (4) 2024.09.22 왜 대부분의 LLM은 Decoder-only 형태로 구현되는걸까 (2) 2024.06.05 음성인식에서 쓰이는 FFT(Fast Fourier Transform)와 STFT(Short Time Fourier Transform) 그리고 Spectrogram의 개념과 차이점 (0) 2024.05.23 Retrieval-Augmented Generation(RAG)의 흐름과 아키텍쳐 (1) 2024.05.21 RAG와 LLM 그리고 임베딩(Embedding) 모델의 동향 (1) 2024.05.20