01. 워드임베딩
💡워드 임베딩: 단어를 벡터로 표현하는 방법
1) 희소 표현
벡터 또는 행렬(matrix)의 값이 대부분이 0으로 표현되는 방법,
원-핫 벡터는 희소 벡터
희소 벡터의 문제점 : 공간적 낭비, 단어의 개수가 늘어나면 벡터의 차원이 한없이 커진다는 점
2) 밀집표현
희소 표현과 반대되는 표현
벡터의 차원을 단어집합의 크기로 상정하지 않음
사용자가 설정한 값으로 모든단어의 벡터 표현의 차원을 맞춤→ 이과정에서 0,1이 아닌 실수 값을 가지게 됨
3)워드임베딩
- 워드임베딩: 단어를 밀집벡터의 형태로 표현하는 방법
- 임베딩벡터: 밀집벡터를 워드 임베딩하는 과정을 통해 나온 결과
워드임베딩 방법론: LSA,Word2Vec, FastText,Glove
원-핫 벡터 임베딩 벡터
차원 | 고차원(단어 집합의 크기) | 저차원 |
다른 표현 | 희소 벡터의 일종 | 밀집 벡터의 일종 |
표현 방법 | 수동 | 훈련 데이터로부터 학습함 |
값의 타입 | 1과 0 | 실수 |
02.워드 투벡터( Word2Vec)
원-핫 벡터는 단어벡터 간 유의미한 유사도를 계산할 수 없다는 단점을 가짐
⇒ 단어 벡터 간 유의미한 유사도를 반영 할 수 있도록 단어의 의미를 수치화 할 수 있는 방법: 워드투벡터(Word2Vec)
1)희소표현
벡터 또는 행렬의 값이 대부분이 0으로 표현되는 방법- 유의미한 유사성을 표현할 수 없음
⇒ 대안으로 단어의 의미를 다차원공간에 벡터화하는 방법 사용 : 분산표현
2)분산표현
기본적으로 분포 가설이라는 가정 하에 만들어진 표현 방법
⇒ 이 가정은 ‘비슷한 문맥에서 등장하는 단어들은 비슷한 의미를 가진다’라는 가정
분산표현은 분포가설을 이용하여 텍스트를 학습, 단어의 의미를 여러 차원에 분산하여 표현
원-핫 벡터
• Ex) 강아지 = [ 0 0 0 0 1 0 0 0 0 0 0 0 ... 중략 ... 0]
Word2Vec
• Ex) 강아지 = [0.2 0.3 0.5 0.7 0.2 ... 중략 ... 0.2]
요약)
희소표현이 고차원에 각 차원이 분리된 표현 방법이었으면, 분산표현은
저차원에 단어의 의미를 여러 차원에다가 분산해 표현
= 단어벡터 간 유의미한 유사도 계산 가능
3)학습방식
Word2Vec의 학습방식에는 CBOW와 Skip-Gram 두가지
- CBOW는 주변에 있는 단어들을 입력으로 중간에 있는 단어들을 예측하는 방법입니다.
- Skip-Gram은 중간에 있는 단어들을 입력으로 주변 단어들을 예측하는 방법입니다.
4)NNLM vs Word2vec
NNLM : 단어 벡터 간 유사도 구할 수 있도록 워드 임베딩 개념도입
Word2Vec : NNLM + 느린속도와 정확도 개선
[예측 대상 변화]
NNLM: 다음 단어 예측
Word2Vec(CBOW): 중심 단어 예측
= > NNLM : 예측 단어의 이전 단어들만 참고 , Word2Vec : 예측단어 전,후 단어들 참고
[구조 변화]
Word2Vec: NNLM에 존재하던 활성화 함수가 있는 은닉층을 제거( 투사층 다음에 바로 출력층으로 연결되는 구조)
Word2Vec가 NNLM보다 학습속도 강점인 이유 은닉층 제거 +추가적으로 사용되는 기법
-대표적 기법
- 계층적 소프트맥스
- 네거티브 샘플링
04. 네거티브 샘플링을 이용한 Word2Vec 구현
1)네거티브 샘플링(Negative Sampling)
💡Word2Vec이 학습 과정에서
전체 단어 집합이 아니라 일부 단어 집합에만 집중할 수 있도록 하는 방법
SGNS는 중심 단어와 주변 단어가 모두 입력이 되고,
이 두 단어가 실제로 윈도우 크기 내에 존재하는 이웃 관계인지 그 확률을 예측
05. 글로브(GloVe)
카운트 기반과 예측 기반을 모두 사용하는 방법론(단어 임베딩 방법론)
1)기존 방법론에 대한 비판
LSA: DTM , TF-IDF행렬과 같이 문서에서의 각 단어 빈도수를 카운트 한 행렬 ; 전체적인 통계정보를 받아 차원축소하여 잠재된 의미를 끌어내는 방법론
Word2Vec: 실제값과 예측값에 대한 오차를 손실 함수를 통해 줄여나가며 학습하는 예측 기반의 방법론
- LSA 카운트기반, 코퍼스의 전체적 통계 고려
- **but 단어 의미 유추작업 성능⬇️**
- Word2Vec 예측 기반, 단어 간 유추 작업에는 LSA보다 뛰어나지만,코퍼스의 전체적인 통계 정보를 반영하지 못함
- 임베딩 벡터가 윈도우 크기 내에서만 주변 단어를 고려하기 때문에
2)윈도우 기반 동시 등장 행렬
행과 열을 전체 단어 집합의 단어들로 구성하고, i 단어의 윈도우 크기내에서 k 단어가 등장한 횟수를 i행 k열에 기재한 행렬
3)동시 등장 확률
동시등장 행렬로부터 특정단어 i의 전체 등장 횟수를 카운트하고,특정 i가 등장했을때 어떤 단어 k가 등장한 횟수를 카운트하여 계산한 조건부 확률입니다.
4)손실함수
'임베딩 된 중심 단어와 주변 단어 벡터의 내적이 전체 코퍼스에서의 동시 등장 확률이 되도록 만드는 것'
06. 패스트 텍스트(FastText)
단어를 벡터로 만드는 또 다른 방법으로 , 매커니즘 자체는 Word2Vec의 확장
차이점은 W2V은 단어를 쪼개질 수 없는 단위로 생각한다면, FasrWord는 하나의 단어 안에도 여러 단어들이 존재하는 것으로 간주
⇒ 서브워드 고려하여 학습
1)내부단어(subword) 학습
FastText에서는 각 단어는 글자 단위 n-grsm의 구성으로 취급
n을 몇으로 결정하냐에 따라서 단어들이 얼마나 분리 될 지 결정
# n = 3인 경우
<ap, app, ppl, ple, le>
2) 모르는 단어에 대한 대응
FastText의 인공 신경망을 학습한 후에는 데이터 셋의 모든 단어의 각 n-gram에 대해서 워드 임베딩이 됨 → 내부단어를 통해 모르는 단어에 대해서도 다른 단어와의 유사도를 계산할 수 있다는 점
3) 단어 집합 내 빈도수가 적었던 단어에 대한 대응
Word2Vec: 등장빈도수가 적은 단어에 대해 임베딩의 정확도 낮음
FastText : 희귀단어라도, 그 단어의 n-gram이 다른단어의 n-gram과 겹치면, 비교적 높은 임베딩 벡터값을 가짐
5) 한국에서의 FastText
- 음절 단위
<자연, 자연어, 연어처, 어처리, 처리>
2)자모단위(초성,중성,종성 단위)
분리된 결과 : ㅈ ㅏ _ ㅇ ㅕ ㄴ ㅇ ㅓ _ ㅊ ㅓ _ ㄹ ㅣ _
09. 엘모(Embeddings from Language Model,ELMo)
ELMo : 새로운 임베딩 방법론,
사전 훈련된 모델→ 이는 ELMo의 이름에 LM이 들어간 이유입니다.
1) ELMo(Embeddings from Language Model)
- Bank : Bank Account(은행 계좌) , River Bank(강둑) 두가지 의미
같은 표기의 단어라도 문맥에 따라서 다르게 워드임베딩 할 수 있으면 자연어 처리의 성능을 올릴 수 있을 것
⇒ 문맥을 반영한 워드 임베딩(엘모)
2) biLM(Bidirectional Language Model)의 사전 훈련
-RNN언어 모델의 언어모델링
RNN언어 모델 단어단위의 입력받음
- RNN내부의 은닉상태 h(t)는 시점이 지날 수록 점점 업데이트 돼감→ RNN의 h(t)의 값이 문장의 문맥정보를 점차적으로 반영
- 반대방향으로 문장을 스캔하는 역방향RNN도 활용
biLM : ELMo는 양쪽 방향의 언어 모델을 둘 다 학습하여 활용
- ELMo에서 말하는 biLM은 기본적으로 다층구조 전제
**주의)양방향 RNN과 biLM은 다름
- 양방향 RNN은 은닉 상태와 역방향의 RNN의 은닉상태를 연결하여 다음 층의 입력으로 사용
- biLM은 순방향 언어모델과 역방향 언어모델이라는 두개의 별개의 모델을 보고 학습
3) biLM의 활용
1) 각 층의 출력값을 연결(concatenate)한다.
2) 각 층의 출력값 별로 가중치를 준다.
3) 각 층의 출력값을 모두 더한다.
4) 벡터의 크기를 결정하는 스칼라 매개변수를 곱한다.
'AI.ML' 카테고리의 다른 글
[NLP 스터디] 2주차 스터디 - 퀴즈 (0) | 2023.09.20 |
---|---|
[NLP 스터디] 2주차 정리 - 11. NLP를 위한 합성곱 신경망 (0) | 2023.09.20 |
[NLP 스터디] 1주차 정리 - 8. 순환 신경망(Recurrent Neural Network) (0) | 2023.09.19 |
[NLP 스터디] 1주차 정리 - 7. 딥러닝 개요 (0) | 2023.09.19 |
[NLP 스터디] 1주차 스터디 - 퀴즈 (0) | 2023.09.16 |