CS/NLP

이론 3-6. 단어/문장을 벡터로 변환(임베딩)

초코chip 2023. 11. 13. 19:31

파인 튜닝(fine-tuning)

  • 정의: 프리트레인을 마친 모델 위에 작은 모듈을 쌓아 태스크를 수행하는 구조
  • 종류: 다운스트림 태스크에 따라 크게 2가지 방식으로 나뉨
    • 문장 벡터 활용: 문서 분류
    • 단어 벡터 활용: 개체명 인식

 

파인 튜닝 과정

토큰화 진행

문장을 워드피스로 토큰화 + 문장 앞뒤에 시작과 끝을 알리는 스페셜 토큰 추가(CLS, SEP)

 

계산

BERT는 트랜스포머 인코더 블록을 여러 개 쌓은 구조

각 블록의 입력과 출력은 단어의 벡터 시퀀스

블록 내에서 토큰 벡터를 2개씩 짝을 지어 서로의 관계를 모두 고려하는 방식으로 계산

 

최종

  • 문장 벡터
    • BERT 모델의 마지막 블록에서 CLS에 해당하는 벡터를 추출
    • 그리고 여기에 간단한 처리를 해서 최종 출력을 생성

 

  • 단어 벡터
    • BERT 모델의 마지막 블록에서 모든 토큰에 해당하는 벡터를 추출
    • 해당 벡터들 위에 작은 모듈을 추가해 최종 출력을 생성

 

정리

토큰화를 통해 문장 -> 토큰으로 변경

문장 토큰
[
"안녕하세요",
"하이!"
]
[
[2, 19017, 8482, 3, 0, 0, 0, 0, 0, 0],
[2, 15830, 5, 3, 0, 0, 0, 0, 0, 0]
]

각 문장마다 토큰 길이 10개로 지정
-> 토큰의 shape = [2, 10] 

 

모델을 통해 토큰 -> 벡터로 변경. 해당 과정을 임베딩(embedding)이라고 함

토큰 벡터
[
[2, 19017, 8482, 3, 0, 0, 0, 0, 0, 0],
[2, 15830, 5, 3, 0, 0, 0, 0, 0, 0]
]

각 문장마다 토큰 길이 10개로 지정
-> 토큰의 shape = [2, 10] 



벡터의 shape = [2, 10, 768]