본문 바로가기

Deep Learning/밑바닥부터 시작하는 딥러닝15

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.
딥러닝 등장 이전의 자연어와 단어의 분산 표현 단어의 의미 * 자연어처리는 컴퓨터에게 인간의 언어를 이해할 수 있게 만드는 기술이다. 컴퓨터가 인간의 언어를 이해하기 위해서는 먼저 문장의 최소 단위인 단어를 이해하는 법을 알아야 할 것이다. 우리가 다루게 될 컴퓨터가 단어를 이해할 수 있도록 인간의 단어를 표현하는 방법은 아래와 같이 3가지이다. 1) 시소러스(thesaurus)를 활용한 기법 - 인간이 사전에 만든 유의어 사전인 시소러스를 활용 2) 통계 기반 기법 3) 추론 기반 기법(word2vec) - 신경망 이용(다음 포스팅에서 다룰 것임) * 먼저 시소러스부터 살펴보자. 시소러스(thesaurus) 기법 * 시소러스는 우리가 사용하는 일반적인 국어사전과 같이 단어와 단어의 뜻이 기술되어있는 것이 아니라 유의어 관계를 정의해 놓은 사전을 뜻.. 2022. 2. 1.
합성곱 신경망(CNN) 완전연결층 CNN이전의 구조 - 완전연결층 * 우리가 지금까지 살펴본 network는 완전연결층(Fully-connected layer)으로 이뤄져있었다. 완전 연결층은 말 그대로 이전 층의 뉴런들과 다음층의 뉴런들이 하나도 빠짐없이 서로 연결되어있는 구조를 띠는 층을 뜻한다. 조금 생소할수도 있으니 다음 자료를 통해 이해해보자. * 일반적인 DNN구조이다. 잘 보면 이전 층의 뉴런들과 다음 층의 뉴런들이 모두 각각 연결되어있는 것을 확인할 수 있다. * 그리고 이 완전연결층을 구현할 때 우리는 지금까지 Affine layer와 ReLU layer를 사용하였다. 이렇게 말이다. * 앞서 mnist dataset을 통해 이미지를 분류하는 과정을 생각해보자. 이미지가 network로 입력될 때 flatten.. 2022. 1. 30.