Sentence-BERT
Sentence-BERT는 문장 쌍 분류, 두 문장의 유사도 계산 등에 사용되는 모델이다.
문장 표현 계산
사전학습된 Bert에서 문장표현을 가져와서 사용한다. 여기서 문제점은 파인튜닝없이 Bert를 사용하는 경우 [CLS] 토큰의 문장표현이 정확하지 않다는 것이다. 그래서 문장표현으로 [CLS] 대신 모든 토큰에 풀링(Pooling)을 적용해 계산한다.
- 평균 풀링 : 모든 토큰에 평균 풀링을 적용하면 문장 표현은 모든 단어의 의미를 갖는다.
- 최대 풀링 : 모든 토큰에 최대 풀링을 적용하면 문장 표현은 중요한 단어의 의미를 갖는다.
샴 네트워크 Sentence-BERT
BERT를 파인튜닝해 문장 쌍 태스크에 사용하기 위해 샴네트워크 아키텍처를 사용한다.
샴 네트워크란 동일한 가중치를 공유하는 2개의 동일한 네트워크로 구성된 모델이다. 2개의 동일한 사전 학습된 BERT모델을 사용해 문장 1의 토큰을 하나의 BERT로 문장 2의 토큰을 다른 하나의 BERT로 입력하고 주어진 두 문장의 표현을 계산한다. 보통 평균 풀링을 사용.
문장 분류 태스크
풀링을 통해 얻어낸 문장 쌍 표현을 결합하고 가중치를 곱해 소프트맥스 함수에 입력한다. 교차 엔트로피를 손실함수로 사용. (하단 그림 참조)
문장 회귀 태스크
풀링을 통해 얻어낸 문장 쌍의 표현 u, v의 코사인 유사도를 계산한다. MSE를 손실함수로 사용.
트리플렛 네트워크
문장 쌍을 위해 2개의 모델을 사용했듯이 이번엔 3문장을 사용하기 위해 3개의 모델을 사용한다.
기준(anchor)문장, 긍정, 부정의 세문장이 있을 때 기준문장과 긍정문 사이의 유사도가 높아야 하고 기준문과 부정문 사이의 유사도는 낮은 표현을 계산하는 것이 목적이다. 트리플렛 목적함수는 다음과 같다.
$$ max(||s_a - s_p||-||s_a- s_n|| + \epsilon, 0) $$
식에서 || || 는 거리 메트릭을 나타내며 거리 메트릭으로 유클리디안 거리를 사용하기 때문에 절대값 기호가 붙었다. 엡실론은 마진을 나타낸다. 트리플렛 함수를 최소화하면 긍정문과 기준문 사이의 유사도가 부정문과 기준문 사이의 유사도보다 더 커지는 방향으로 학습이 된다.