Autoencoder의 모든 것 - 이활석(NAVER) 을 정리한 것입니다.
https://www.youtube.com/watch?v=o_peo6U7IRM
Classic ML
기존의 Machine Learning 방식에서는 아래와 같은 방식으로 진행된다.
우리의 궁극적인 목표는 주어진 데이터를 제일 잘 설명하는 모델을 찾는 것이다.
따라서 우리가 찾은 모델에 근거해 고정적인 입력값에서 고정적인 출력값이 나오게 된다.
- Collect training data
- Define Function
모델의 종류(ex. RF, XGB 등)를 정의하고, Loss Function을 정의한다. - Learning/Training
Loss를 가장 작게하는 \(theta\)를 찾는다.
\(\theta^* = \underset{a}{argmin}L(f_{\theta^*},y) \) - Predictig/Testing
\(y_{new} = f_{\theta^*}(x_{new}) \)
Deep Neural Networks
딥러닝도 ML과 같은 순서로 진행되지만 몇가지 다른 점이 존재한다.
Define Function
- 딥러닝에서 학습하는 파라미터는 웨이트와 바이어스이다.
- \(\theta = W,b\)
- Loss Function은 아래와 같은 2가지 가정을 충족시켜야 한다.
- 모든 Sample들의 Total Loss는 각 Sample들의 Loss의 합니다.
- Final output으로 구성된 Loss Function만 쓴다.
Learning/Training
보통 딥러닝에서 최적의 파라미터를 찾아가기 위해서 Gradient Descent를 사용하는데, 2가지 전략을 정의해줄 필요가 있다.
- How to update \(\theta\)?
→ Only if \(L(\theta+\Delta\theta)<L(\theta)\)
우리는 무조건 Loss가 줄어드는 쪽으로 이동할 것이다. - When we stop to search?
→ \(L(\theta+\Delta\theta) == L(\theta)\)
Loss값이 변함이 없는 경우 멈출 것이다.
이제 우리는 2가지 전략에 의해서 파라미터를 Update 할 것인데, 1번 전략에서 \(\theta\)를 어떻게 바꿔야 Loss가 줄어들 것인가를 생각해볼 필요가 있다.
일단 우리는 \(L(\theta+\Delta\theta)\)를 Tayper Expansion으로 나타낼 수 있다.
더 많이 미분할수록 정확하게 \(L(\theta+\Delta\theta)\)를 계산할 수 있지만, 1차 derivative로 \(L(\theta+\Delta\theta)\)를 근사 시킬 것이다. 1차 derivative로 근사 시켰기 때문에 어느 정도 값의 차이가 존재한다는 사실을 인지하고 아주 좁은 영역에서만 정확하다는 것을 기억해야 한다.
\(L(\theta+\Delta\theta)\)를 \(L(\theta)+\nabla L*\Delta \theta\)로 근사하였으니 여기에 \(L(\theta)\)를 빼면 결국 \(\nabla L*\Delta \theta\)만 남게 된다.
이때 \(\Delta\theta=-\eta\Delta L\)이라고 하면,이라고하면, \(\Delta L\)는 Gradient의 제곱에 Learning rate이 곱해진 값이 된다.
우리가 처음에 Taylar Expansion에 의해서 1차 derivative로 근사 시켰기 때문에 아주 좁은 영역에서만 우리의 값이 정확하기 때문에 Learning rate을 높게 설정하면 오차가 자주 발생하는 것이다!
위의 과정처럼 우리는 Loss Function의 미분 값을 이용하여 점차 파라미터를 Update 해 나가는데, 데이터의 차원이 너무 크게 되면 미분하는데 오랜 연산과정이 필요하게 된다. 따라서 우리는 Batch Size만큼만 나눠서 미분하는 SGD(Stochastic Gradient Descent)라는 방식을 사용한다.
Backpropagation
딥러닝은 Backpropagation을 이용해 파라미터를 Update 하게 된다.
먼저 Output Layer Error Signal을 계산하는데, C(Loss)를 마지막 출력 값으로 미분한 값과 Activation Function의 미분 값을 element product(원소곱)로 계산한다.
비슷한 방식으로 각 Layer의 Error signal을 계산한다.
이를 계속 진행하면 bias와 weight에 대한 Gradient 값을 구할 수 있게 된다.
'DL Study' 카테고리의 다른 글
#3 Autoencoder의 모든 것 - AutoEncoder (0) | 2022.09.16 |
---|---|
#2 Autoencoder의 모든 것 - Manifold Learning (2) | 2022.09.15 |
LSTM(Long Short-Term Memory) (0) | 2022.09.13 |
Recurrent Neural Network (0) | 2022.09.12 |
Convolution Neural Network (0) | 2022.09.08 |