일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- sequential data
- 감성분석
- topic modeling
- 사회연결망분석
- 구글클라우드플랫폼
- QANet
- 허깅페이스
- Google Cloud Platform
- semantic network
- sensibleness
- 분류모델평가
- 토픽모델링
- word representation
- ROC-AUC Curve
- 동적토픽모델링
- 의미연결망
- type-hint
- GCP
- sbert
- Holdout
- Enriching Word Vectors with Subword Information
- Meena
- 임베딩
- hugging face
- degree centrality
- 알파베타가지치기
- Min-Max 알고리즘
- word2vec
- 머신러닝
- dynamic topic modeling
- Today
- Total
Dev.log
Hugging Face의 Sentence Transformer 본문
Hugging Face
Hugging Face는 다양한 트랜스포머 모델과 학습스크립트를 제공하는 모듈입니다. 원래 PyTorch등과 같은 딥러닝 라이브러리 를 통해 layer나 module을 선언해주고 학습 스크립트 역시 전부 구현해야하지만 Hugging Face를 사용하면 이러한 수고를 덜 수 있다는 장점이 존재합니다. 즉, Hugging Face의 transformer를 통해 최첨단 사전 훈련 모델을 쉽게 다운로드하고 훈련할 수 있는 API를 사용할 수 있다고 이해할 수 있습니다. 또한 이런 사전 훈련된 모델을 사용하면 컴퓨팅 비용, 탄소 발자국을 줄이고 모델을 처음부터 훈련하는 시간을 절약할 수 있다는 장점이 존재합니다. Hugging Face의 transformers 모델들에서는 크게 아래와 같은 방식에서 사용할 수 있습니다.
- 📝 텍스트: 100개 이상의 언어로 텍스트 분류, 정보 추출, 질문 답변, 요약, 번역 및 텍스트 생성.
- 🖼️ 이미지: 이미지 분류, 객체 감지 및 분할.
- 🗣️ 오디오: 음성 인식 및 오디오 분류.
- 🐙 멀티모달: 테이블 질문 답변, 광학 문자 인식, 스캔한 문서에서 정보 추출, 비디오 분류 및 시각적 질문 답변.
Hugging Face에서는 AlBERT, BART, BARThez, BARTpho 등 다양한 모델들을 제공하여 주는데, 자세한 내용은 아래 링크에서 확인 할 수 있습니다.
본 포스팅에서는 Hugging Face에서 제공하는 Sentence Transformer를 통해 간단한 챗봇을 구현해 보도록 하겠습니다. Sentence Transformers는 최첨단 문장, 텍스트 및 이미지 임베딩을 위한 Python 프레임워크입니다. Sentence Transformers 는 SBERT (Sentence BERT)라고도 불리며, BERT의 임베딩 성능을 향상시킨 모델입니다. BERT로 부터 문장벡터를 얻을때는 BERT의 [CLS] 토큰의 출력 벡터를 문장 벡터로 간주하거나 각 task에 맞춰 모든 단어의 의미를 반영할건지 중요한 단어의 의미를 반영할건지에 따라 각각 모든 단어의 출력 벡터에 대해서 average pooling 과 max pooling을 수행하여 문장 벡터로 얻을 수 있습니다. SBERT는 이와 같은 BERT의 문장 임베딩을 응용하여 BERT에 fine tunning을 진행합니다. SBERT에 대해 자세한 설명은 아래의 논문에서 확인 할 수 있습니다.
SBERT는 크게 2가지 방법으로 학습이 진행된다고 할 수 있는데, NLI(Natural Language Inferencing) 문제와 같은 문장 쌍분류 테스크를 통해 fine tunning을 진행할 수 있고, STS(Semantic Textual Similarity)문제와 같이 문장 쌍으로 회귀 문제를 푸는 방식으로 Fine tuning을 진행 할 수 도 있습니다. 이러한 SBERT를 SentEval(문장 임베딩을 특징으로 사용하여 로지스틱 회귀 분류기를 훈련함으로써 다양한 문장 분류 작업에서 문장 임베딩을 평가)을 사용한 SBERT 문장 임베딩을 10-fold cross-validation를 통해 평가를 하였을때, 아래와 같은 성능을 확인 할 수 있습니다.
Hugging Face에서 제공하는 Sentence Transformer는 아래의 코드로 간단히 사용할 수 있습니다.
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('paraphrase-MiniLM-L6-v2')
#Sentences we want to encode. Example:
sentence = ['This framework generates embeddings for each input sentence']
#Sentences are encoded by calling model.encode()
embedding = model.encode(sentence)
'자연어처리' 카테고리의 다른 글
Gensim의 Latent Dirichlet Allocation를 통한 분석 (0) | 2022.07.16 |
---|---|
Graph centrality를 통한 금융 자연어 데이터 분석 (0) | 2022.06.10 |
Sentence BERT (0) | 2022.05.11 |
Bag of Words (0) | 2022.05.10 |
문서간 유사도: Jaccard Similarity & Cosine Similarity (0) | 2022.04.29 |