1. 임베딩이란?
|
- 자연어 처리 작업에서 특징 추출을 통해 자연어를 수치화하는 과정이 필요하고 이것이 백터화의 과정이자 결과
- 토큰화 작업의 목표는 임베딩을 만들기 위한 단어 사전을 구축하는 것
|
2. 임베딩의 역할
|
- 자연어의 의미적인 정보를 함축
- 자연어의 중요한 특징들을 추출하여 백터로 압축하는 과정
- 임베딩으로 표현된 문장은 실제 자연어의 주요 정보들을 포함하고 있음
- 백터인 만큼 사칙연산이 가능하여 단어 백터 간 덧셈/뺄셈을 통해 단어들 사이의 의미적 문법적 관계를 도출
- 임베딩의 품질을 평가하기 위해 사용되는 단어 유출 평가가 존재함
* 사이트: https://word2vec.kr/search/
- 자연어 간의 유사도 계산
- 자연어를 백터로 표현하면 코사인 유사도를 활용하여 두 백터 간 유사도를 계산할 수 있음
- 코사인 유사도는 -1이상 1이하의 값을 가지며, 값이 1에 가까울수록 유사도가 높다고 판단함
- 전이 학습
- 이미 만들어진 임베딩을 다른 작업을 학습하기 위한 입력값으로 쓰임
- 품질 좋은 임베딩을 사용할수록 목표로하는 자연어처리 작업의 학습속도와 성능이 향상됨
- 매번 새로운 것을 배울 때 scratch 부터 시작한자면 매 학습이 오래 걸림
- 파인 튜닝: 학습하는데 전이학습에 의한 임베딩을 초기화하여 사용한 편,
새로운 작업을 학습함에도 빠르게 학습할 수 있고 성능도 좋아짐
|
3. 단어 출현 빈도의 기반한 임베딩 추축 방법
|
- 원 핫 인코딩
- 자연어를 0과 1로 구별하겠다는 인코딩 방법
- 표현하고 싶은 단어의 인덱스에 1의 값을 부여하고, 나머지 인덱스에는 0을 부여하는 백터 표현 방식
- 예)"...오늘 날씨가 참 좋다.."
-> {...5:"좋다",6:"날씨", ...13:"오늘". 256:"참", 257:"가"...}
- 일반적으로 빈도수를 정렬하고 사용, 인덱스의 순서가 의미가 없음
- 순서가 없는 카테코리컬 피쳐인 경우 클래스 갯수가 3개 이상일 때 원핫 인코딩을 함
- 단어 사전의 크기가 10000개 하면, 총 10000개 중 현재 내가 원하는 단어를 표현하는 1개의 차원에만 1을 ,
나머지 9999개의 차원는 0으로 표현하는 방법
- 대부분의 값들이 0인 행렬을 희소행렬이라하는데
크기는 계속 중가하나 증가하는 크기에 비해 표현의 효율성을 떨어짐 단어의 유사도를 표현하지 못함
- Bag of Words
- 단어들의 순서는 전혀 고려하지 않고 단어들의 출현빈도에 집중하는 자연어 코퍼스의 데이터 수치화 방법
- 각 단어의 고유한 정수 인덱스를 부여하여 단어 집합을 생성하고
각 인덱스의 위치에 단어 토큰의 등장 횟수를 기록한 백터를 만듦
- 단어 단위의 압축 방식이기 때문에 희소 문제와 단어 순서를 반영하지 못함
- 문장을 표현하는 방법 -> 원 핫 인코딩을 모두 더함
- TF-IDF
- 단어의 빈도와 역문서 빈도를 사용하여 문서-단어 행렬 내 각 단어들의 중요한 정도를 가중치로 주는 표현방법
- 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업,
문서 내에서 특정 단어의 중요도를 구하는 작업 둥에서 효과적으로 쓰일 수 있음
- 단어의 중요도를 고려해도 여전히 단어의 빈도로 판단하는 표현방식이기 때문에 맥락적 유사도를 반영하지 못함
|
4. 단어의 순서
|
- 통계 기반 언어 모델
- 단어가 n개 주어졌을 때 언어 모델은 n개의 단어가 동시에 나타날 확률을 반환
- 문장은 어순을 고려하여 여러 단어로 이루어진 단어 시퀀스라고 부르며 n개의 단어로 구성된 시퀀스를 확률적으로 표현
- 딥러닝 모델
- 통계 기반 언어 모델에서는 비도라는 통계량을 활용하여 확률을 추산했지만, 딥러닝 기반 언어 모델들이 등장하면서 입력과 출력사이의 관계를 유연하게 정의할 수 있게 되고 그 자체로 확률 모델로 동작할 수 있음
- MLM(Masked Language Modeling)
- 문장 중간에 마스크를 씌워서 해당 마스크에 어떤 단어가 올지 예측하는 과정에서 학습을 진행
- 문장 전체를 다 보고 중간에 있는 단어를 예측하기 때문에 양방향 학습이 가능
- 대표적인 BERT 모델이 있음
- Next Token Prediction
- 주어진 단어 시퀀스를 가지고 다음 단어로 어떤 단어가 올지 예측하는 과정에서 학습
- 단어를 순차적으로 입력 받은 뒤 다음 단어를 맞춰야하기 때문에 한방향 학습을 함
- 대표적으로 GPT, ELMo등
|