밑바닥부터 시작하는 딥러닝 - word2vec 속도 개선(2)

이번 글에서는 word2vec의 두 번째 개선을 해볼 것이다. 은닉층 이후의 처리(행렬 곱과 Softmax 계층의 계산)이다. 네거티브 샘플링이라는 기법을 사용해 볼 것이다. Softmax 대신 네거티브 샘플링을 이용하면 어휘가 아무리 많아져도 계산량을 낮은 수준에서 일정하게 억제할 수 있다. 은닉층 이후 계산의 문제점 어휘가 100만 개, 은닉층 뉴런이 100개일 때의 word2vec을 예로 생각해보자. 입력층과 출력층에는 뉴런이 각 100만 개씩 존재한다. 이전에는 Embedding 계층을 도입하여 입력층 계산에서의 낭비를 줄였다. 남은 문제는 은닉층 이후의 처리이다. 첫 번째는 거대한 행렬을 곱하는 문제이다. 큰 행렬의 곱을 계산하려면 시간이 오래 걸린다. 또한 역전파 때도 같은 계산을 수행하기 때..