3.1 추론 기반 기법과 신경망
3.1.1 통계 기반 기법의 문제점
대규모 말뭉치를 다루게 되면 O(n**3)의 SVD를 적용하는 비용이 너무 큼
- 통계 기반 기법 : 학습 데이터를 한꺼번에 처리 (배치 학습)
- 추론 기반 기법 : 학습 데이터의 일부를 사용하여 순차적으로 학습 (미니배치 학습)
- 말뭉치의 어휘 수가 많아 SVD 등 계산량이 큰 작업을 처리하기 어려운 경우에도 신경망 학습시킬 수 있음,
(데이터를 작게 나눠 학습 & GPU 이용한 병렬 계산 가능하기 때문)
3.1.2 추론 기반 기법 개요
추론
- 주변 단어(맥락)가 주어졌을 때 "?"에 무슨 단어가 들어가는지를 추측하는 작업
- 추론 문제를 반복해서 풀면서 단어의 출현 패턴을 학습
추론 기반 기법에 모델 등장
- 모델로 신경망 사용
- 모델은 맥락 정보를 입력받아 (출현할 수 있는) 각 단어의 출현 확률 출력
- 틀 안에서 말뭉치를 사용해 모델이 올바른 추측 내놓도록 학습
- 그 학습의 결과로 단어의 분산 표현을 얻는 것이 추론 기반 기법의 전체 그림
- 통계 기반 기법과 동일하게 분포 가설에 기초 : '단어의 의미는 주변 단어에 의해 형성된다'
3.1.3 신경망에서의 단어 처리
신경망이 처리할 수 있도록 단어를 '고정 길이의 벡터'로 변환
- 원핫 표현으로 변환 : 원소 중 하나만 1, 나머지는 모두 0
원핫 표현 변환 방법
- 총 어휘 수만큼 원소를 갖는 벡터 준비
- 인덱스가 단어 ID와 같은 원소를 1로, 나머지는 모두 0으로 설정
- 단어를 고정 길이 벡터로 변환하면, 신경망의 입력층은 뉴런의 수를 '고정'할 수 있음
단어를 벡터로 나타내어 신경망 구성 '계층'들이 벡터 처리 = 단어를 신경망으로 처리
신경망
- 완전연결계층
- 화살표에 가중치(매개변수) 존재
- 입력층 뉴런과의 가중합이 은닉층 뉴런
3.2 단순한 word2vec
- '모델'을 신경망으로 구축
- word2vec에서 제안하는 CBOW(continuous bag-of-words) 모델
3.2.1 CBOW 모델의 추론 처리
* 타깃 = 중앙 단어, 맥락 = 주변 단어
CBOW 모델
- 맥락으로부터 타깃(target)을 추측하는 용도의 신경망
- 입력 : 맥락(단어들의 목록), 원핫 표현으로 변환하여 전처리
- 입력층 2개, 은닉층 거쳐 출력층
- 두 입력층에서 은닉층으로의 변환은 똑같은 완전연결계층 (가중치는 Win)이 처리
* 맥락으로 고려할 단어를 2개로 정했기 때문에 입력층 2개, 맥락에 포함시킬 단어가 N개라면 입력층도 N개 - 은닉층에서 출력층 뉴런으로의 변환은 다른 완전연결계층 (가중치는 Wout)이 처리
- 은닉층의 뉴런은 입력층의 완전연결계층에 의해 변환된 값, 입력층이 여러 개이면 전체를 '평균'
- 출력층 뉴런 하나하나가 각각의 단어에 대응
- 출력층 뉴런은 각 단어의 '점수' 뜻함, 값이 높을수록 대응 단어의 출현 확률 높아짐
- 점수란 확률로 해석되기 전의 값, 소프트맥스 함수를 적용해서 '확률' 얻을 수 있음
- 가중치 Win의 각 행에는 해당 단어의 분산 표현 담겨 있음
- 학습을 진행할수록 맥락에서 출현하는 단어 잘 추측하는방향으로 분산 표현 갱신
- 벡터에 '단어의 의미'가 잘 녹아들어 있음 - 은닉층 뉴런 수를 입력층 뉴런 수보다 적게 하는 것이 중요!
- 단어 예측에 필요한 정보 '간결하게' 담게 됨, 밀집벡터 표현을 얻을 수 있음
- CBOW 모델의 가장 앞단에는 2개의 MatMul 계층, 이 두계층의 출력 더해짐
- 0.5를 곱해서 '평균' = 은닉층 뉴런
- 다른 MatMul 계층이 적용되어 '점수' 출력
* 편향을 사용하지 않는 완전연결계층의 처리는 MatMul 계층의 순전파와 같음 - 입력층 MatMul 계층은 가중치 W_in을 공유
3.2.2 CBOW 모델의 학습
- 지금까지 CBOW 모델은 출력층에서 각 단어의 점수를 출력
- 점수에 소프트맥스 함수를 적용하면 '확률' 얻을 수 있음
* 확률 = 맥락(전후 단어)이 주어졌을 때 그 중앙에 어떤 단어가 출현하는지
- ex) 맥락 you, goodbye, 정답 레이블 say
- CBOW 모델의 학습에서는 올바른 예측을 할 수 있도록 가중치 조정
- 결과로 가중치 Win에 단어의 출현 패턴을 파악한 벡터가 학습
3.2.3 word2vec의 가중치와 분산 표현
word2vec에서 사용되는 신경망에는 두 가지 가중치
- 입력 측 완전연결계층의 가중치(Win) : 각 행이 각 단어의 분산 표현
- 출력 측 완전연결계층의 가중치(Wout) : 단어의 의미가 인코딩된 벡터 저장
word2vec(특히 skip-gram) 모델에서는 '입력 측의 가중치만 이용한다'가 가장 대중적인 선책
- 많은 연구에서 출력 층 가중치는 버림
- 입력 측 가중치 Win 만을 최종 단어의 분산 표현으로 이용
3.3 학습 데이터 준비
3.3.1 맥락과 타깃
- word2vec의 신경망 입력은 '맥락', 정답 레이블은 '타깃'
- 신경망에 '맥락'을 입력했을 때 '타깃'이 출현할 확률을 높여야 함
- 맥락의 수는 여러 개, 타깃은 오직 하나
- 말뭉치에서 맥락과 타깃을 반환하는 함수 작성
3.3.2 원핫 표현으로 변환
- 맥락과 타깃을 원핫 표현으로 변환
- 단어 ID를 이용했을 때 맥락의 형상은 (6, 2), 원핫 표현으로 변환하면 (6, 2, 7)
3.4 CBOW 모델 구현
- 초기화 메서드
- 필요한 계층 생성
- 신경망 순전파 구현
- 신경망 역전파 구현
3.4.1 학습 코드 구현
- 학습데이터 준비하여 신경망에 입력
- 기울기를 구하여 가중치 매개변수를 순서대로 갱신
- 학습을 거듭할수록 손실이 줄어듦
- 학습이 끝난 후 가중치 매개변수를 보면, 각 행에 대응하는 단어 ID의 분산 표현 저장되어 있음
→ 단어를 '밀집벡터'로 나타낼 수 있게 됨 = '단어의 분산 표현'
3.5 word2vec 보충
3.5.1 CBOW 모델과 확률
CBOW 모델을 확률 표기로 나타냄
- 맥락으로 w_t-1과 w_t+1이 주어졌을 때 , 타깃이 w_t가 될 확률
[식 3.1]을 이용한 CBOW 모델의 손실 함수
- 교차 엔트로피 오차 적용
- 음의 로그 기능도라고 함
- CBOW 모델의 학습이 수행하는 일은, 손실함수 [식 3.3]의 값을 가장 작게 만드는 것
- 이 때 가중치 매개변수가 우리가 얻고자 하는 단어의 분산 표현
3.5.2 skip-gram 모델
word2vec은 2개의 모델 제안
- CBOW 모델 : 여러 맥락으로부터 중앙의 단어(타깃) 추측
- skip-gram 모델 : 중앙의 단어(타깃)로부터 주변의 여러 단어(맥락) 추측
skip-gram 모델
- 입력층 하나
- 출력층은 맥락의 수만큼 존재
- 출력층에서는 (Softmax with Loss 계층 등을 이용해) 개별 손실 구함, 개별 손실을 모두 더한 값을 최종 손실로 함
skip-gram 모델을 확률 표기로 나타냄
- w_t가 주어졌을 때 w_t-1과 w_t+1이 동시에 일어날 확률
[식 3.5]을 이용한 skip-gram 모델의 손실 함수
- skip-gram 모델의 손실 함수는 맥락별 손실을 구한 다음 모두 더함
CBOW 모델 vs, skip-gram 모델
CBOW | skip-gram |
타깃 하나의 손실 구함 | 맥락의 수만큼 추측하므로, 손실 함수는 각 맥락에서 구한 손실의 총합 |
학습 속도 면에서 빠름 | 단어 분산 표현의 정밀도 면에서 결과 더 좋음, 특히 저빈도 단어나 유추 문제의 성능 면에서. |
- 따라서 skip-gram 모델이 성능 면에서 더 뛰어난 경향 있음
- 직관적으로도 skip-gram 모델은 하나의 단어로부터 그 주변 단어들을 예측하므로, 더 어려운 문제에 도전
3.5.3 통계 기반 vs. 추론 기반
- 통계 기반 기법 : 말뭉치의 전체 통계로부터 1회 학습하여 단어의 분산 표현 얻음
- 추론 기반 기법 : 말뭉치를 일부분씩 여러 번 보면서 학습
새 단어가 생겨서 단어의 분산 표현을 갱신해야 하는 상황
통계 기반
- 계산 처음부터 다시 수행
- 단어의 분산 표현을 조금만 수정하고 싶어도, 동시발생 행렬을 다시 만들고 SVD 수행하는 일련의 작업 다시
추론 기반(word2vec)
- 매개변수를 다시 학습할 수 있음
- 지금까지 학습한 가중치를 초깃값으로 사용해 다시 학습, 효율적 갱신 가능
두 기법의 분산 표현 성격이나 정밀도 비교
- 통계 기반에서는 주로 단어의 유사성이 인코딩 됨
- 추론 기반(word2vec)은 단어의 유사성과 복잡한 단어 사이 패턴까지 파악되어 인코딩
ex) king - man + woman = queen
=> 실제 단어의 유사성을 정량 평가해본 결과, 의외로 두 기법의 우열 가릴 수 없다고 함
추론 기반 기법과 통계 기반 기법은 서로 관련
- skip-gram과 네거티브 샘플링을 이용한 모델은 모두 말뭉치 전체의 동시발생 행렬에 특수한 행렬 분해를 적용한 것과 같음
= 두 세계는 (특정 조건 하에서) '서로 연결되어 있다'
3.6 정리
- 추론 기반 기법은 추측하는 것이 목적이며, 그 부산물로 단어의 분산 표현을 얻을 수 있다.
- word2vec은 추론 기반 기법이며, 단순한 2층 신경망이다.
- word2vec은 skip-gram 모델과 CBOW 모델을 제공한다.
- CBOW 모델은 여러 단어(맥락)로부터 하나의 단어(타깃)를 추측한다.
- 반대로 skip-gram 모델은 하나의 단어(타깃)로부터 다수의 단어(맥락)을 추측한다.
- word2vec은 가중치를 다시 학습할 수 있으므로, 단어의 분산 표현 갱신이나 새로운 단어 추가를 효율적으로 수행할 수 있다.
'AI > NLP 기초' 카테고리의 다른 글
[NLP 기초] 6. 게이트가 추가된 RNN (0) | 2024.02.20 |
---|---|
[NLP 기초] 5. 순환 신경망(RNN) (0) | 2024.02.19 |
[NLP 기초] 4. word2vec 속도 개선 (1) | 2024.02.14 |
[NLP 기초] 2. 자연어와 단어의 분산 표현 (1) | 2024.02.13 |
[NLP 기초] 1. 신경망 복습 (1) | 2024.02.13 |