일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 클래스
- NLP
- css
- DB
- OS
- 데이터분석
- 랩실일기
- Linear Algebra
- 컴파일러
- 파싱
- 836
- 웹소프트웨어
- C언어
- 애자일
- 벡터
- 정보검색
- React
- 컴파일
- 언어모델
- 가상메모리
- 자연어처리
- 객체지향설계
- 파싱테이블
- 데이터베이스
- 운영체제
- 스케줄러
- 프로세스
- 소프트웨어공학
- 오픈소스웹소프트웨어
- Agile
- Today
- Total
observe_db
[NLP] 11. 단어 벡터 본문
11/7
단어 임베딩(word Embedding)
: 문자를 숫자들의 배열인 벡터로 변환하는 방법
: 또는 그러한 방법으로 만들어진 단어 벡터.
단어벡터-단어사이의 관계(의미)를 나타냄.
단어 임베딩의 목표
- 쉽게 확보할 수 있는 대량의 원시 말뭉치를 통해
- 비지도 학습(self-supervised learning)을 하고
- 다양한 NLP 시스템에서 범용적으로 사용할 수 있는 단어 벡터를 만드는 것
One-hot Encoding
: 학습 데이터에 존재하는 단어들을 수집하여 vocabulary 구축.
단어들의 등장 빈도순으로 순열 부여.
vocabulary의 크기(=|V|)가 매우 크므로 매우 큰 차원의 sparse vector가 필요하다.
*정보검색에서 나오는 'term'의 수를 5M 정도로 잡는다.
단어의 의미간 관계를 표현할 수 없음.(유의, 반의 등) => 단어 매칭이나 비교 등의 문제
분포 가설(distributional hyothesis)
: 유사한 단어들은 문장에서의 사용 분포(문맥)가 비슷하다는 가설
" You shall know a word by the company it keeps" - J. R. Firth, 1957
Word2Vec에서 사용.: 한 단어와 좌우 문맥 단어를 서로 관련된 벡터로 표현.
언어 모델링 사용 예시
- 이전 단어들이 주어졌을 때 다음 단어 예측
- 문장 내 빠진 단어 예측
- 문장들의 전후 관계 예측
- 문장 내 단어 순서를 무작위로 만들고 원 문장 예측
관계 연산
: 벡터 연산으로 단어간 관계 유추 가능(문법 관계, 지식적 관계 등)
단어 벡터 사이의 연산 가능.
평가 방법
내제 평가: 평가 데이터를 구축하고 이를 이용하여 평가(의미적 유추 관계, 구문적 유추 관계)
외재 평가: 다른 응용프로그램의 입력으로 사용하여 그 성능 변화 측정(감성 분석, 품사태깅, 개체명 인식 등에서 평가)
단어 벡터 구축 방법
Word2Vec
- 언어의 문맥은 양방향 의존성(특정 단어의 의미는 이전+이후 등장 단어의 영향을 받음)을 가진다는 특징을 활용
- CBOW(Continuous Bag-of-Words): 특정 단어를 중심으로 이전/이후에 각각 n개 단어가 주어질 떄 중심 단어를 예측
- Skip-gram: 중심 단어가 주어질 때 이전/이후 각 n개 단어를 예측
CBOW 원리
인코딩
one-hot 벡터에 W를 곱해 인코딩하여 각 문맥 벡터의 평균을 구함.
최종 학습이 끝나면 W를 이용하여 단어 벡터를 구함.
디코딩
인코딩된 벡터를 W'를 곱하여 확장하여 대상 벡터 예측
계산 결과 값에 softmax를 취하여 대상 벡터와 비교
그 손실을 backpropagation(손실 함수는 cross entropy)
Skip-gram 원리
Glove
: 문맥 대신 학습 말뭉치에서 단어간 동시 발생 빈도를 이용
단어 간 동시 발생 빈도 비율이 벡터 공간상 차이가 되도록 임베딩 수행.
FastText
: skip-gram 학습을 사용
단어를 n-gram으로 분리하여 n-gram에 대한 벡터 학습.
subword + Skipgram.
subword model
: 단어 벡터들은 n-gram(부분 단어) 벡터의 합으로 나타냄.
위 수식을 최대로하는 word vector를 구하는 문제(t= target, c=context)
한국어 단어 벡터
문제점
- 제한된 단어 벡터 어휘(많이 쓰이는 영어 단어 중심 단어벡터 생성시 크기가 10만 정도.)
- 한국어는.. 어절단위라 100만 이상.
- 보다 기본적 요소로 분리해야함(자소/음절/형태소 등)
- n-gram 단어(subword)를 이용한 영어 벡터 생성 모델 이용(FastText model)
부분어 분리 단위
어절/형태소/음절/자소/천지인/품사포함.
입력 단위- 어절 단위 학습 / 형태소 단위 학습
'학교 공부 > 자연언어처리(4-2)' 카테고리의 다른 글
[NLP] 14. 거대 언어 모델(LLM) (0) | 2024.11.28 |
---|---|
[NLP] 12. n-gram 언어 모델 (0) | 2024.11.15 |
[NLP] 10. 기계번역 (0) | 2024.11.08 |
[NLP] 9. 정보 추출 (0) | 2024.11.01 |
[NLP] 8. 의미역 분석 (0) | 2024.11.01 |