Basic Deep Learning/Dive into Deep Learning 리뷰 12

[D2L] 8. RNN

1. Statistical Basic 이전까지 내용에서는 우리가 사용하는 데이터가 어떤 한 분포를 따르고 이 분포에서 추출된 것으로 가정했었다. 하지만 상식적으로 이렇게 특정 분포를 띄는 데이터는 흔치 않다. 글의 문단의 단어들의 경우 분포를 따르지 않고 오히려 그 sequence를 가지고 있을 확률이 높다. 글 뿐만 아니라 비디오의 이미지 프레임, 대화의 음성과 같은 데이터는 모두 sequence를 가지고 있을 확률이 높다. 이 얘기를 한 이유는 이전의 CNN은 spatial information을 잘 다뤘다면 RNN(Recurrent Neural Network)은 sequential information을 잘 다루기 때문이다. RNN은 과거의 변수를 잘 저장하고 이를 최근의 input과 처리하여 o..

[D2L] 9. Modern RNN

RNN 계열에서 자주 쓰이는, 더 fancy한 모델에 대해 다뤄보겠다. 1. GRU(Gated Recurrent Unit) long products of matrices는 gradient vanishing, exploding 문제를 가진다. 이런 gradient anomaly가 현실에서 어떤 문제를 갖는지 그리고 이를 어떻게 해결해야 할지 살펴보자. 1) 초기의 값이 이후 미래 값의 예측에 있어 매우 중요한 경우 gradient anomlay는 큰 문제가 된다. 따라서 중요한 초기 정보를 저장할 수 있는 메커니즘인 memory cell 기능이 필수적이다. memory cell 기능이 없을 시 이후 연속해서 등장하는 모든 값에 악영향을 끼친다. 2) 몇몇 시점의 데이터가 학습에 적절하지 않을 수 있다. 이..

[D2L] 7.1 Modern CNN

이전 장에서 소개한 LeNet에 대해 간략히 소개하였는데 LeNet은 CV필드에서 활발하게 사용되지 못했다. LeNet은 작은 크기의 데이터셋에서는 좋은 성능을 보였으나 좀 더 현실적이고 큰 데이터셋에서는 성능이 좋지 않았기 때문이다. Neural Network에 관해서는 1990년대부터 활발히 연구되었지만 multi channel과 multi layer를 충분히 다룰 만한 computing resource가 없었고 parameter initialization, optimization, regularization 과 같은 스킬에 대한 연구는 당시 많이 이뤄지지 않았다. 그래서 이 때는 end to end(pixel to classification)이 아닌 적은 데이터로 feature extractor를 ..

[D2L] 6. CNN

1. Intro 이번 장부터 Convolution Neural Network에 대해 다루기 시작한다. 구체적인 방법론에 대해 배우기 전 그 기초 내용과 CNN의 intention에 대해 짚고 넘어가고자 한다. image 데이터는 two-dimensional grid of pixel로 표현된다.(색, 채널에 대해서는 이후에 언급) 각각의 pixel 하나 또는 여러개의 수치로 각각 표현되는데 이전까지는 image를 flattening하여 vaector로 다룸으로써 pixel간 spatial relation을 무시하였다. 다시 말해 fully connected MLP를 통해 일차원 벡터를 다뤘던 것이다. 이러한 이전까지 진행했던 방식을 다시 되짚어보았고 CNN은 연산의 효율성이 좋고 GPU 병렬 연산화가 쉽다..

[D2L] 11.1 Optimization and Deep Learning

[ 이론 ] optimization에 대해 이전 장에서도 사용은 하였지만 구체적으로 파헤쳐보지 않았다. 이후 CNN, RNN에 대해 더 공부해보기 전에 optimization algorithm들에 대해 자세히 알아보고 넘어갈려고 한다. optimization의 장점은 이전 장에서도 확인했지만 완벽하지 않고 여러 문제점을 가진다. 이번 장에서는 그 문제점으로는 어떤 것이 있는지 확인해보고자 한다. optimization에 대해 간단히 복습해보면 정의된 loss function의 loss를 minization 하는 과정에서 optimization이 사용된다. 하지만 여기서 분명히 해야 하는 것은 goal of optimization = minimize the objective = reduce training..

[D2L] 4.8 Numerical Stability and Initialization

이전 장에서는 당연하 듯 진행했지만 사전에 정해진 분포에 따라 parameter initialization을 실행했다. 이것에 대해 자세히 살펴보도록 한다. 또한 activation function에 따른 여러 initialization 형태들도 살펴본다. 여러개의 layer가 있는 deep network의 gradient 연산을 수식화하면 다음과 같다. 여기서 numerical underflow문제가 발생할 수 있음을 확인해야 한다. numerical underflow란 너무 많은 확률값들을 곱할 때 생긱는 문제로 이는 그 연산값을 표현하기 어렵다는 문제뿐만 아니라 gradient 연산 자체를 불안정하게 만든다. 불안정한 optimization algorithm은 두가지 문제를 낳을 수 있는데 파라미터..

[D2L] 4.7 Forward, Backward Propagation & Computational Graph

[ 이론 ] 이전 내용에서 이미 forward, backward propagation을 포함해 모델링을 했었다. 이번 장에서는 그 구현을 자세히 살펴본다. Forward Propagation = calculation and storage of intermediate variables for a neural network in order form the input layer to output layer. 하나의 hidden layer가 있고 bias는 고려하지 않는다고 가정했을 때의 forward propagation과정이다. L2 norm이 더해지는 과정도 포함한다. 이를 graph형태로, 사각형은 variable을, 원은 operator로 표현하면 다음과 같다. backward propagation은 ..

[D2L] 4.6 Dropout

[ 이론 ] overfitting을 막기 위한 방법으로 이전 장에서는 weight decay에 대해 배웠고 이번 장에서는 dropout에 대해 다뤄본다. 이전 장 weight decay의 핵심은 평균이 0인 가우시안 분포의 값을 가지는 weight을 가정하였고 model로 하여금 그 weight을 많은 feature들에 분산시키고자 하였다. 소수의 weight만 값이 커지는 문제를 방지하기 위해서이다. overfitting은 보통 feature이 example보다 많을 때 발생한다고 알려져있다. 또한 다루었던 linear model은 feature간 interaction을 반영하지 못하는데 더 직관적으로 말하자면 positive, negative weight 값만을 규정할 뿐, context를 반영하지 ..

[D2L] 4.5 Weight Decay

[ 이론 ] 4.4에서는 머신러닝 차원에서의 overfitting과 underfitting에 관해 다뤘다. 요약하자면 다음과 같다. generalization error는 training error로 추정될 수 없으며 training loss만 최소화하고자 하는 것은 반드시 generalization error도 함께 최소화하지 않는다. 따라서 머신러닝 알고리즘은 overfitting에 주의해야 한다. validation set을 통해 generalization error를 측정한다. underfitting은 모델이 training error를 줄이지 못함을 말한다. 위 사진처럼 overfitting은 generalization loss가 training loss보다 클 경우를 말한다. overfitti..

[D2L] 4.1~ 3 Multilayer Perceptron

[ 이론 ] 이전 장에서 배운 linear transformation은 linearity라는 매우 강한 가정이 필요하다. 즉, 이 가정이 성립하지 않는다면 사용할 수 없다는 것. 실제 linearity = weaker monotonicity로 linearity를 가지는 두 변수는 완전 동일하지는 않지만 한 변수의 증감과 다른 변수의 증감에 동일한 규칙성이 있어야 한다. 하지만 이 가정은 당연 성립되는 경우가 더 적다. 이런 경우에는 task를 어떻게 수행해야 할지 궁금한데 그것에 대한 방법이 multiayer perceptron layer(MLP)이라고 말하고 있다. 1. Incorporating Hidden layers 좀 더 구체적으로 말하자면 하나 이상의 hidden layer를 사용하는 것이다. ..