본문 바로가기

분류 전체보기

(120)
Word2vec vs GloVe Word2Vec takes texts as training data for a neural network. The resulting embedding captures whether words appear in similar contexts. GloVe focuses on words co-occurrences over the whole corpus. Its embeddings relate to the probabilities that two words appear together. Word2vec은 local 하게 한 문장에서 sliding window 해서 맥락을 파악하여 pair들을 추출한 후, 그걸 ground truth로 삼아서 layer를 통과하고 softmax를 통과했을 때 output이 잘 예..
Time sequence로 정렬하기 개요 RNN에서 나타나는 데이터의 차원을 이해하고 LSTM cell의 output logit을 의미하는 ox가 담긴 ox_batch를 이용해서 loss 값을 구하려면 어떤 shape을 맞춰주어야 하는지 알아보자. 코드 ox_batch = torch.cat(ox_batch).reshape(max_seq_len, batch_size, -1) # (50, 64, d) ox_batch = ox_batch.permute(1,0,2).reshape(batch_size*max_seq_len, -1) # (64, 50, d).reshape(3200, d) y_batch = y_batch.reshape(-1) ox_batch: LSTM cell의 logit인 ox가 담겨있다. ox_batch는 원래 list형이었다. 과..
python 차원 이해하기 (with numpy) 개요 numpy의 numpy.zeros 메소드와 함께 배열을 만들 때 파악해야 하는 요소인 차원에 대해 알아보도록 하자. torch의 tensor 자료형에서도 써먹을 수 있다. 글에서는 numpy.zeros를 줄여서 편하게 np.zeros라고 사용하겠다. 그리고 shape에 들어가는 값에 따른 차원의 변화만을 알아볼 것이다! - np.zeros의 파라미터 각각의 기능에 대한 설명은 아래의 사이트를 참고하자. https://aigong.tistory.com/62 numpy.zeros, numpy.zeros_like 알아보기 numpy zeros, zeros_like 알아보기 우리는 간혹 0으로 가득찬 array를 만들고 싶을 때가 있습니다. 때로는 0으로 가득찬 array 중에서도 어떤 array의 sha..
LSTM 개요 RNN의 내부 구조를 변경한 RNN인 LSTM을 알아보자. 그리고 LSTM 구조가 어떻게 기존 RNN의 문제였던 Memory dependency(gradient 값을 제대로 전달해줄 수 없어서 생기는 문제)를 보완하였는지 알아보자. 기존의 RNN은 어땠나? Vanilla RNN은 위와 같은 형태의 구조를 지녔다. 이전 타임 스텝의 hidden state와 현재의 input x가 더해지고 이 값이 tanh를 통과하면 현재의 hidden state 값이 만들어졌다. 그리고 이 hidden state가 또 다음 타임 스텝의 입력에 영향을 주게 되었다. LSTM RNN 역시 기본적인 틀은 유지하고 있다. 하지만 vanilla RNN에서 문제가 되었던 gradient 값의 전달을 원활하게 해줄 수 있는 구조..
RNN 개요 자연어 처리에서 사용될 수 있는 neural network인 RNN에 대해 알아보자. RNN? RNN은 Recurrent neural network를 의미하는 말이다. 즉, 한국말로 바꿔서 표현해보면 순환 신경망 정도로 표현해볼 수 있다. 이 RNN은 text 같은 sequential 데이터와 시계열 데이터를 다룰 수 있는 신경망이다. 이 RNN이라는 신경망은 도대체 어떻게 생겼으며, 어떻게 자연어 처리를 할 수가 있는 걸까? RNN의 구조 위의 사진 기준으로 보자면 핑크색 노드가 input 초록색 노드가 hidden 파란색 노드가 output이다. 도대체 뭐가 어떻게 흐르는 걸까? forward, backward propagation이 어떻게 진행이 되는 걸까? RNN의 forward propag..
VGG 개요 AlexNet 다음으로 큰 성능 발전을 보였던 VGG에 대해 알아보자. VGG란? 2014년에 제시된, ImageNet classification에 등장한 CNN 모델이다. 이 모델은 AlexNet과 유사한 형태를 가지고 있으나 아주 큰 특징이 하나 있다. 그것은 바로 3x3 Convolution layer만을 사용하여 층을 쌓았다는 점이다. 이것이 왜 특징인가? 1. 3x3 Convolution layer만을 이용하여 network의 depth를 깊게 만들어냈다. 2. 연산 시에 발생하는 parameter의 수를 줄일 수 있다. 이에 더불어 계산 속도도 높일 수 있다. 3. 더 많은 비선형을 적용시킬 수 있다. 따라서 3x3 Convolution layer만을 이용하여 network의 깊이를 깊게..
CNN의 연산 개요 CNN에 존재하는 두 가지 연산인 filter, (max)pooling을 살펴보도록 하자. Filter of Convolutioin layer Convolution layer는 도대체 어떻게 사진의 정보를 담아서 사진을 알아볼 수가 있는 걸까? 그 비밀은 바로 Convolution layer의 filter에 숨겨져 있다. 컴퓨터가 보는 사진은 아래의 모습과 같다. 사진 속의 -1을 0이라고 생각하자. 그럼 그냥 사진의 사이즈에 맞게 0과 1이 가득 차있는 어떤 숫자의 조합일 뿐인 것이다. Filter가 사진의 정보를 담는 방법은 바로 사진의 일부분을 filter로 만들어 input image에 matching을 시키는 것이다. 사진의 맨 왼쪽 위에서부터 오른쪽 아래 끝부분까지 filter로 쭉 ma..
AlexNet 개요 CNN 모델 중 하나인 AlexNet에 대해 알아보자. AlexNet이란? Yann Lecun이 Lenet 모델을 통해 1998년 처음으로 도입했던 개념인 Convolution layer를 가지고 만든 모델이다. 그 모델의 이름이 바로 AlexNet이다. 이 AlexNet 모델은 Alex Krizhevsk와 Geoffrey Hinton등의 인물들이 제안했고, 이는 ImageNet classification 대회에서 2011년에 발표된 모델에 비해 엄청난 성능의 향상을 보여주었다. Structure of AlexNet AlexNet은 LeNet과 크게 다르지 않은 형태로 구축된 모델이다. 하지만 분명 다른 점이 존재한다. 1. 병렬 구조로 쌓았다는 점 2. 더 깊게 Network를 형성했다는 점 3...
Batch normalization 개요 우리의 데이터를 zero-mean, unit-variance로 만들어주는 normalization 기법 중 Batch normalization이 무엇인지 알아보자. 왜 zero-mean과 unit-variance? 우리에게는 여러 가지 normalization 방법들이 존재한다. z-score, minmax, batch normalization 등 이 중 minmax를 제외하고는 normalization을 거침으로써 데이터들의 평균을 0, 분산을 1로 만들어준다. 왜 하필 데이터들의 평균을 0, 분산을 1로 만들어주는 것일까? 그 이유는 normalization을 하고 나서 통과할 함수인 activation function을 보면 알 수 있다. maxout activation function을 제외..
Overfitting과 underfitting 그리고 regularization 개요 데이터를 학습하는 과정에서 발생하게 되는 overfitting과 underfitting이 무엇인지에 대해 알아보자. 그리고 그 overfitting과 underfitting을 해결할 수 있는 방법은 무엇인지 알아보자. Overfitting과 underfitting 인공지능 분야에서 가장 골치 아픈 문제라고 봐도 무방하다고 한다. 이 overfitting과 underfitting이라는 문제는 데이터셋을 학습하는 과정에서 발생한다. 우리는 지도학습의 과정으로 훈련 데이터를 기계에게 학습시킨 다음 검증을 하고 테스트를 한다. 이 과정에 있어서 훈련 데이터에 대해 학습을 진행하는 것은 필수적이다. 검증 데이터셋과 테스트 데이터셋에서 사용할 최적의 가중치를 얻을 수 있기 때문이다. 이때, 훈련 데이터에 있어..