일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- cnn
- Linear
- Skip Connectioin
- Inception Module
- Inception V1
- DL
- Peephole Connection
- Optimizer
- Gated Skip Connection
- python
- Skip Connection
- Bottleneck Layer
- jupyter
- classification
- AI
- Residual Connection
- Manager
- virtualenv
- vim-plug
- RNN
- Generative
- iTerm2
- Vanilla RNN
- Regression
- GoogLeNet
- GCN
- ResNet
- sigmoid
- version
- DCGAN
- Today
- Total
목록AI (40)
IT Repository
Vanishing Gradient of Vanilla RNN¶ 앞서 Vanilla RNN에서 이야기했던 Gradient Vanishing 문제를 좀더 수식적으로 이해가능하게 살펴보겠습니다. 설명에 앞서 식을 좀더 간단하게 Visualize하기 위해서 $h_t = tanh(U \cdot x_t + W \cdot h_{t-1})$ 식을 1. 위 식에서 $x_t$와 $h_{t-1}$을 concatenation 하고 ($[x_t, h_{t-1}]$) 2. 두개의 파라미터 U와 W를 아우르는 하나의 파라미터인 새로운 W와 점곱 해서 아래와 같이 바꿔서 쓰겠습니다. (행렬 연산을 따라가다보면 동일한 과정이라는 것을 이해할 수 있을 것입니다.) $h_t = tanh(W \cdot [x_t, h_{t-1}])$ 자, ..
RNN (Recurrent Neaural Network)¶ RNN은 시퀀스 데이터를 다루기 위해 고안된 구조입니다. 따라서, 데이터의 순서를 고려할 수 있도록 디자인되었습니다. 제가 예전에 했었던 프로젝트를 예시로 들면서 이를 설명하겠습니다. 프로젝트의 목표는 카카오톡 메시지를 통해 사람의 호감도 추이를 파악해서 현재의 감정 정도를 Regression하는 것이었습니다. 우리가 어떤 사람과 주고 받은 메시지는 매일매일 혹은 매 시간마다의 타임 스텝을 갖고 있는 시퀀스 데이터입니다. 따라서 메시지로 파악하는 호감도 역시 제로 베이스가 아니라, 이전 스텝의 호감도 정보가 반영된다고 생각했습니다. RNN은 시퀀스의 특징을 고려할 수 있는 네트워크 구조를 갖기 위해서 현재 타임스텝의 인풋을 처리할 때에 이전 타임..
What is Sequence Data?¶ 이번에는 순서가 있는 데이터에 대해서 생각해보겠습니다. (1) 예를 들어, 일년의 온도 변화와 같은 데이터는 시간의 순서가 있는 데이터입니다. 오늘의 온도는 어제의 상태에서 변화한 값이고, 이를 더 큰 범위에서 생각해보면 오늘의 온도는 그 전의 모든 결과를 반영하는 값입니다. (2) 이번에는 이전의 온도와 유사한 관점에서 글자 혹은 문장을 생각해보겠습니다. "나는 지금 공부를" 이라는 단어를 순서대로 들었다고 가정했을때에 우리는 "한다" 혹은 "합니다" 등을 예측할 수 있습니다. 오늘의 온도가 그 전의 모든 온도 결과값을 반영하면서 나온 결과인 것과 같이 "한다" 혹은 "합니다" 역시 "나는 지금 공부를" 을 반영한 결과라고 생각할 수 있습니다. 이를 글자 단위..
ResNet (2015)¶ ResNet은 2015년도 ILSVRC 에서 우승을 차지한 모델입니다. 총 152개의 레이어를 가진 Ultra-deep한 네트워크입니다. Difficulty of Training Deep CNN¶ 2014년도에 CNN의 Depth와 Structure을 폭발적으로 발전시킨 이후에 많은 사람들이 Deep CNN에 대한 연구를 시작했습니다. 그러나 우리가 알고 있는 사실과 정반대의 현상들이 관찰되기 시작되었습니다. 아래의 그래프를 먼저 보겠습니다. 위 그래프는 ResNet을 발표한 논문에서 저자가 이 문제를 설명하기 위한 그래프입니다. 이를 보면 더 Deep한 Network가 오히려 더 Shallow한 Network보다 낮은 성능을 기록하는 문제를 확인할 수 있습니다. 생각을 해보면..
GoogLeNet (2014)¶ VGGNet에서 언급하였듯이 GoogLeNet은 2014년도 ILSVRC의 우승 모델입니다. Inception V1이라고 불리며 한번쯤은 들어보았을 만한 Inception V2, V3 시리즈의 초기 버젼입니다. 22개의 레이어를 사용하였으며 GoogLeNet을 시작으로 단순한 CNN 구조에서 좀 더 복잡한 구조의 CNN 모델이 탄생했습니다. 먼저 GoogLeNet의 구조를 가볍게 구경해보겠습니다. 이렇게 복잡하고 깊은 층으로 네트워크를 구성하면 우리가 학습하였듯이 파라미터 수의 증가로 인한 Overfitting과 연산량의 문제가 발생할 수 있습니다. 하지만 GoogLeNet은 놀랍게도 AlexNet 보다도 적은 파라미터의 수와 적은 연산량을 보입니다. (아래 사진 참고) ..
VGGNet (2014)¶ 2014년도 ILSVRC 에서 근소한 차이로 2위를 차지한 모델입니다. 그 해에 1위를 차지한 모델은 이후 설명할 GoogLeNet 입니다. 그러나 GoogLeNet에 비해 훨씬 더 간단한 구조로써 이해가 쉽고 변형하기에 용이하기 때문에 실제로 많은 논문과 실험에서 GoogLeNet 보다 더 많이 사용되는 모델이었습니다. 16~19개의 레이어를 사용하고 16개를 사용한 모델을 VGG16, 19개를 VGG19로 명명했습니다. VGGNet의 특징은 작은 필터로 더 깊은 네트워크를 구성하는 것입니다. Small filters, Deeper networks¶ 동일한 Receptive Field를 가지는 두 개의 뉴런이 있다고 가정합니다. (1) 9x9 filter 1개를 통과한 뉴런의..
Advanced Techniques for CNN¶ 지금까지 기본적인 CNN의 구조와 연산, 그리고 층의 의미를 학습했습니다. 이제부터는 CNN의 좀더 발전된 테크닉들을 유명한 모델들의 Case Study를 통해 알아보겠습니다. AlexNet (2012)¶ AlexNet은 2012년도 ILSVRC (ImageNet Large Scale Visual Recognition Challenge)에서 우승한 Image Classifying Model 입니다. 이 모델의 구조는 아래에서 보시다시피 8개의 레이어를 사용한 크게 복잡하지 않은 단순한 구조입니다. 그러나 이 모델이 갖는 의미는 최초로 CNN 베이스의 우승 모델이라는 것입니다. AlexNet을 시작으로 하여 각종 이미지 태스킹에서 CNN은 폭발적으로 사용..
Convolutional Layer¶ 이제 Convolution Layer를 알아보면서 기존의 FC Layer와 어떤 점이 다른지를 확인해보려고 합니다. (1) 이미 설명했듯이 FC 레이어는 이미지를 다루기 위해서 이미지 행렬을 한 줄로 쭉 펴는 작업(Flatten)이 필요합니다. 이렇게 되면 이미지에서는 분명히 붙어있는 픽셀인데 Flatten한 행렬에서는 서로 떨어져버립니다. 즉, 이미지의 공간적인 구조(Spatial structure)가 무시되어 버립니다. (2) 반면에 이를 Convolutional 레이어는 Convolutional 연산을 사용합니다. 따라서 필터를 슬라이드함으로써 주위 픽셀들을 계산하면서 이미지의 공간적인 구조를 보존하게 됩니다. Conv 연산을 하면 필터의 크기와, Stride,..