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] |