

📌 이 글은 권철민님의 딥러닝 CNN 완벽 가이드를 바탕으로 정리한 내용입니다.
목차
- 심층 신경망(Deep Neural Network) : 은닉층이 포함된 다중 퍼셉트론
- DNN의 구조
- DNN Traning 개요 : Feed forward(weight update) → Backpropagation(weight update) → Iteration
Deep Neural Network(심층 신경망)
지금까지 배운 퍼셉트론은 간단한 문제만 해결이 가능했다.
보다 복잡한 문제를 해결하려면 Hidden Layer 라는 것이 필요하다. 그냥 Layer를 여러개 쌓는 것이다.
아래 그림처럼 Hidden Layer가 포함된 기다란 퍼셉트론을 Deep Neural Network라고 한다.
입력층의 피쳐들이 100개면, 은닉층이 3개만 있어도 첫번쩨 레이어에 연결이 300개나 된다.
따라서 딥러닝은 파라미터가 머신러닝에 비해서 많다.
첫번째로 f11 = x1*w11 + x2*w21 + x3*w31 가 가중합으로 들어오게 된다.
그 다음 Activation function을 적용 시킨다. 선형으로 데이터를 분류하거나 예측하면 정말 아쉽게 범주에서 벗어나는 경우가 있다. 그때 적용하는 것이 Activation function이다. Activation function에 대해서는 뒤에서 배워보자.
두번째 은닉층으로 가는 건 o1*w^2 11 + o2*w^2 21 + o3*w^2 31 이런식으로 간다.
그런데 이렇게 계속 곱해주고 더해주고 하면 식 자체가 굉장히 복잡해진다.
조금 추상화시켜 보자.
DNN의 구조
DNN이 어떤 구조로 되어있는지 다시 봐보자. 큰 틀에서 볼 것이니 나무보단 숲을 본다고 생각하자.
DNN은 지금까지 배웠던 퍼셉트론과 똑같은데 그냥 갯수가 많아진 것일 뿐이라고 생각하면 쉽다.
먼저 첫번째 레이어에서 여러개의 입력값과 설정한 weight값을 곱해서 output을 뽑아낸다.
아래와 같은 행렬식으로 계산한다.
x1, x2, x3를 넣어 행렬곱 하면 세개 아웃풋인 f11, f12, f13 이 나온다.
그 다음 가중치의 합을 해서 결과가 O1 으로 나오면 다시 다음 레이어에서 똑같이 계산한다.
그러면 f21, f22, f23 가 나온다.
또 다시 가중치 합을 구하면 결과가 O2로 나오게 된다.
입력부터 끝까지 나온 아웃풋을 봐보자.
첫번째 은닉층의 출력을 O1이라고 했을 때, O1 = F1 (x(입력) * w1) 이다.
여기서 F1은 Activation function (시그모이드 또는 ReLU) 이다.
두번째 은닉층도 마찬가지로 계산되고 최종 출력도 마찬가지이다. 이렇게 추상적으로 나타낼 수 있다.
다만, 식으로 풀어야 하고, 가중치를 지속적으로 업데이트 시키기 위해서는 Output과 실제값과 비교를 해야한다.
이때 경사하강법을 적용해야 하는데 이 엄청나게 복잡한 식을 미분을 해야하는게 너무 어렵다.
그래서 심층신경망 같은 경우에는 경사하강법을 적용하지 못한다! 라고 생각했었지만,
이것을 극복한 것이 바로 Back propagation 이다.
DNN Training 개요
DNN을 학습시키려면 먼저 퍼셉트론에서 weight를 업데이트 해주는, 아웃풋을 순서대로 한번 계산한 과정인 Feed Forward 과정을 거친다. 그리고 여기서 획기적인 방법이 나온다. 바로 거꾸로 weight를 업데이트 하는 방법인 Backpropagation을 적용해준다. 이를 반복하면서 학습을 시켜주는 것이 바로 DNN의 학습 과정이다.
Back propagation은 그냥 이거다.
출력층에 가까운 순서대로 거꾸로 미분을 해나가면서 가중치를 업데이트 하는 과정이다.
다음 포스팅에서 좀더 자세히 알아보자.
'🖼 Computer Vision > CNN' 카테고리의 다른 글
CNN - Backpropagation의 Gradient 적용 메커니즘 (0) | 2022.01.19 |
---|---|
CNN - Backpropagation (0) | 2022.01.19 |
CNN - SGD, Mini-Batch GD (0) | 2022.01.19 |
CNN - 보스턴 주택가격 Perceptron 기반 학습 (0) | 2022.01.14 |
CNN - Gradient Descent (0) | 2022.01.14 |