Sentence-Transformers (UKPlab)
Sentence embedding 관련 패키지 리서치 중 Sentence-Transformers Github 코드를 자세히 살펴볼 기회가 생겼다.
해당 패키지의 구조부터 자세한 상세 기능, 그리고 BERT 모델 사용 시 HuggingFace Transformers 와의 호환성까지 살펴보려 한다.
Sentence-Transformers & hug/trans 학습 방법 병합
학습 병합 유무: 불가능
학습하는 Process가 hug/trans의 Trainer class와 Sentence-Transformers의 SentenceTransformer class에서 fit 메서드와 다르기 때문.
hug/trans Trainer class 학습 process
- 데이터 인코딩
- 인코딩된 데이터를 input으로 넣어 모델에서 계산
- 모델의 output과 데이터 label을 비교하여 loss 계산
- loss를 이용한 model weight 업데이트 (backpro.)
- (1~4) 반복 & final model 저장
Sentence-Transformers SentenceTransformer class 학습 process
- 데이터 인코딩
- 모델 정의
- loss 정의
- 이때 (2)에서 정의한 모델 객체를 인자로 사용하여 loss 객체 생성
- 검증 class 정의
- (2)에서 정의한 모델 객체의 fit 메서드를 이용한 학습 진행
- 이때 (3)에서 정의한 loss 객체를 인자로 사용
- (1~5) 반복 & final model 저장
Loss class는 nn.Module을 받아 forward 메서드가 계산되는 형식.
즉, 객체와 객체 사이를 오가며 model weight 업데이트 되는 process…
Sentence-Transformers & hug/trans 검증&예측 방법 병합
input datasets: only one sentence
output from model: embedding vector
input과 output을 위와 같이 고정한 뒤, 성능 측정 logit을 따로 구성한다면 가능
Comments
Sentence-Transformers 패키지 학습 Process는 위의 사진과 같이 HuggingFace Transformers Trainer class와 다르기 때문에 병합을 위해서는 많은 수정이 필요하다.
SBERT 학습 Process를 HuggingFace Transformers Trainer class와 통일하길 원한다면 Sentence-Transformers 패키지 보다는 다른 패키지를 찾아보는 것을 권장한다.
학습 Process검증 및 예측 Processsentence-transformers 상세 기능HuggingFace transformers와 어떻게 다른지
반응형
'Natural Language Processing > Github 훑어보기' 카테고리의 다른 글
[Code review] Sentence-Transformers 상세 기능 (0) | 2022.07.08 |
---|---|
[Code review] Sentence-Transformers 검증 및 예측 Process (0) | 2022.07.06 |
[Code review] Sentence-Transformers 학습 Process (0) | 2022.07.05 |
[Code review] Sentence-Transformers 훑어보기: 구조 (0) | 2022.07.04 |
댓글