본문 바로가기

Deep Learning71

게이트가 추가된 RNN RNN의 문제점 기울기 소실(Gradient Vanishing), 기울기 폭발(Gradient Exploding) * 위 그림은 RNN의 역전파 과정을 나타낸 것이다. +의 경우 상류에서 흘러들어온 기울기를 그대로 흘려보내기 때문에 신경쓰지 말고 MatMul과 tanh의 기울기 역전파 과정을 살펴보자. * y=tanh(x)의 경우 미분 값이 ${\partial y \over \partial x} = 1 - y^2$이다. 기울기를 그래프로 그려보면 다음과 같다. * tanh(x)미분 값은 모두 1 이하이고, x가 0에서 멀어질수록 0에 다가가다가 0으로 수렴한다. 값이 모두 1 이하이기 때문에 역전파를 계속 거치면서 tanh노드의 역전파가 계속되면 기울기가 0이 된다. * MatMul 연산의 경우 상류로부.. 2022. 2. 10.
순환신경망(RNN) 확률과 언어모델 word2vec 을 확률 관점에서 바라보기 * CBOW 모델에서 t 번째 단어가 target이고 양 옆의 단어가 context라면 target 단어에 $w_t$가 올 확률은 아래와 같다. $P(w_t | w_{t-1}, w_{t+1})$ * 이렇게 CBOW 모델은 사후확률을 추측한다. * 만약 context를 설정하는 윈도우를 target의 왼쪽 두 단어로 생각하면 확률은 다음과 같다. $P(w_t | w_{t-2}, w_{t-1})$ * 그리고 이에 대한 손실함수는 아래와 같다. $L = - log P(w_t | w_{t-2}, w_{t-1})$ * 이렇게 주어진 context에서 target을 추론하는 모델은 다음에 설명할 언어모델에서 사용된다. 언어 모델(Language Model).. 2022. 2. 10.
word2vec 속도개선 * 앞서 살펴본 word2vec 포스팅에서는 corpus에 포함된 단어 수가 많아지면 계산량이 커져 시간이 오래걸린다는 단점이 존재했다. 이를 개선하기 위해 두 가지를 도입한다. 1) Embedding layer 추가 2) Negative Sampling 손실함수 추가 * word2vec 속도를 개선하고 대용량 데이터인 PTB를 가지고 훈련해보자. Word2vec 개선 1) * 우리가 저번 포스팅에서 다룬 CBOW는 corpus의 크기가 작을 때는 문제가 없지만, corpus의 크기가 커질수록 문제가 생긴다. * 어휘 100만개, hidden layer의 뉴런이 100만개인 CBOW 모델을 생각해보자. * 이렇게 단어의 수가 많을 경우 2가지 계산에서 병목현상이 발생한다. 1) 입력층의 one-hot 표.. 2022. 2. 10.
Word2Vec 추론 기반 기법과 신경망 통계 기반 기법의 문제점 * 우리가 저번 포스팅에서 다룬 통계 기반 기법의 마지막 부분인 차원축소 또한 문제점이 존재한다. 차원 축소를 위해서는 PPMI를 만들어야 하고, PPMI 행렬의 크기는 corpus에 있는 단어의 개수에 비례한다. 만약 corpus에 있는 단어 개수가 100만개라면 100만 x 100만 크기의 행렬에 SVD를 적용해야 하는데 이는 매우 많은 연산량을 요구한다. * 이를 해결하기 위해 추론 기반 기법을 사용할 것이다. 추론 기반 기법은 데이터 전체에 대해 SVD를 한 번에 시행하는 통계 기반 기법과는 달리 미니배치 학습을 통해 작은 데이터를 여러번에 걸쳐 학습한다. 이 때 여러 GPU, 여러 머신을 사용한 병렬 계산을 통해 속도를 높이는 것이 가능하기 때문.. 2022. 2. 3.