[Chapter 3] 딥러닝, 그것이 알고 싶다
1. MLP, 행렬과 벡터로 표현하기
- MLP의 동작 방식은 `웨이트 곱하고 바이어스와 함께 더하고 액티베이션`의 연속
- 개념적으로는 단순하지만 수식으로 표현할 경우 노드의 수와 층의 수에 따라 길고 복잡해질 수 있음
- 하지만, 행렬과 벡터를 이용할 경우 간단하게 표현할 수 있음
주어진 신경망은 다음과 같은 구조를 가집니다:
- 입력층: 2개 노드 (x₁, x₂)
- 은닉층: 2개 노드 (h₁, h₂)
- 출력층: 1개 노드 (y)
- 가중치: w₁~w₆
- 바이어스: b₁, b₂, b₃
- 활성화 함수: a(·)
- 손실 함수: E = ½(t - a(y))²
부연 설명
- 수식의 경우 Hidden Layer가 늘어날수록 웨이트를 곱하고 바이어스를 더하고 액티베이션까지 표현하는 양이 많아지므로 매우 복잡한 것을 호가인할 수 있음
- 반면, 행렬과 벡터를 이용하면 `웨이트 행렬 곱하고 바이어스 벡터와 함께 더하고 액티베이션`의 연속으로 간결하게 표현 가능
- 위 표현 방식은 더 깊고 복잡한 네트워크에도 쉽게 적용 가능하며 대부분의 딥러닝 연구와 구현에서 널리 사용됨
2. 비선형 (Non-linear) 액티베이션의 중요성
- 앞선 MLP를 행렬과 벡터로 표현해 보니 입력 벡터 x의 함수임을 확인할 수 있었음
- 따라서 더 많은 층과 노드를 사용하면 더 복잡한 함수를 표현할 수 있는데 여기에는 중요한 조건이 있음
- 활성화 함수로 비선형 함수를 사용해야 깊어질수록 더 복잡한 함수를 만들 수 있음
- 앞서 선형 함수는 f(x) = x의 형태로 쉽게 말해 들어온 값이 그대로 나가게끔 하는 액티베이션이라고 언급했었음
- 따라서 선형 액티베이션만을 사용할 경우 아무리 깊게 만들어도 Fully Connected 레이어 한 층과 동일한 수준의 복잡도를 가짐
- 반면 비선형 액티베이션을 사용할 경우 입력과 출력 간의 비선형 관계를 나타낼 수 있으며, 깊어질수록 더 복잡한 함수도 표현할 수 있음
- 여기서 `복잡도`란 함수가 표현하는 입력과 출력 간의 관계가 복잡한 정도를 의미
2.1 그렇다면 선형 (Linear) 액티베이션은 필요 없는 것인가?
- 그렇다고 선형 액티베이션은 필요 없는 액티베이션이라는 것은 아님
- 회귀 문제에서는 출력값의 범위가 제한되지 않아야 하므로 마지막 층에 선형 액티베이션을 사용
- ex) 100층 네트워크를 설계할 때, 일반적으로 앞의 99층에는 비선형 액티베이션을 사용하고 마지막 층에는 선형 액티베이션을 사용
- 물론 x^2과 같은 비선형 함수를 사용할 수도 있지만, x^2과 같은 다항 함수는 그래디언트 게산 시 문제가 발생할 수 있으므로, Universal Approximation Theorem에 위배되는 액티베이션이기도 함
- MobileNetV2 같은 경우 선형 액티베이션을 모델 중간에서 사용하기도 함
- 노드 수가 줄어드는 레이어에서는 액티베이션을 하지 않음으로써 비선형성은 다소 포기하되 정보 손실을 막고, 반대로 노드 수가 늘어나는 레이어에서는 비선형 액티베이션을 사용함으로써 정보 손실을 최소화하면서 충분한 비선형성을 확보하자는 아이디어에서 도출됨
- 비선형 액티베이션 중 널리 쓰이는 ReLU (Rectified Linear Unit)는 양수 입력은 그대로 출력하고, 음수 입력은 0으로 만듦
- 아래 그래프와 같이 ReLU는 음수 입력을 0으로 만들기 때문에 정보 손실을 일으킬 수 있음
- 또한, 노드 수가 줄어드는 층에서는 차원 축소로 인한 정보 손실도 발생
- 따라서 노드 수가 줄어드는 층에서는 이러한 손실을 피하기 위해 선형 액티베이션을 사용할 수 있음
비선형 액티베이션 | 선형 액티베이션 | |
장점 | 네트워크의 `복잡도`를 높이므로 입력과 출력 사이의 복잡한 관계를 표현하는 능력을 위해 필수적 | `정보 손실`은 없음 |
단점 | `정보 손실`을 야기할 수 있음 | `복잡도`를 증가시키지 않음 |
위와 같은 특성 때문에 현대 딥러닝 모델 설게에서는 이 둘의 장단점을 고려하여 적절히 조합하여 사용합니다.
- 이를 통해 복잡한 패턴을 잘 학습하면서도 중요한 정보를 보존할 수 있는 균형 잡힌 모델을 만들 수 있음
3. 역전파 (Backpropagation)
- 깊은 인공 신경망의 각 파라미터에 대한 Loss의 편미분을 효율적으로 계산하는 핵심 알고리즘
- 출력층에서 시작하여 입력층 방향으로 계산을 진행하기 때문에 `역전파`라는 이름이 붙음
- 해당 알고리즘의 핵심은 연쇄 법칙 (Chain Rule)의 적용과 중간 계산 결과의 재사용에 있음
- 신경망에서 중간 계산이 겹치는 근본적인 이유는 연쇄 법칙 때문
- 각 층의 가중치에 대한 그래디언트를 계산할 때, 이전 층들의 계산 결과가 반복적으로 사용
- 이러한 중간 결과의 재사용은 계산 효율성을 크게 향상하기 때문에 출력층부터 시작해 입력층으로 이동하며 계산을 수행하고 이것이 `Backpropagation`이라고 불리는 이유
부연 설명
- 순전파로 예측을 수행하고 손실 계산
- 역전파를 통해 출력층부터 입력층 방향으로 각 층의 에러를 계산
- 연쇄법칙을 사용하여 각각의 가중치와 바이어스에 대한 손실의 기울기를 계산하고 이를 이용해 모델을 갱신
- 출력층의 각 노드(Y₁, Y₂, ..., Yₘ)는 은닉층의 모든 노드로부터 입력을 받음
- 은닉층의 각 노드는 입력층의 모든 노드로부터 입력을 받음
- 이러한 완전 연결 구조로 인해 그래디언트 계산 시 중복이 발생
- 위 과정을 반복하여 신경망이 학습됨
3.1 기울기 소실 (Vanishing Gradient) 문제
- 기울기 소실은 깊은 신경망에서 역전파 과정 중 기울기가 점차 작아져 하위층의 학습이 제대로 이루어지지 않는 현상
- 기울기 소실 문제가 발생하는 원인은 다음과 같음
- 액티베이션 함수의 특성: sigmoid, tanh 함수의 미분값이 1보다 작음
- 연쇄 법칙의 특성: 여러 층을 거치며 1보다 작은 값들이 계속 곱해짐
- 네트워크 깊이: 층이 깊어질수록 문제가 심화됨
정리하면 역전파는 출력층에서 입력층 방향으로 계산을 진행하며 각 파라미터에 대한 Loss의 편미분을 효율적으로 구합니다.
- 중간 결과를 재사용함으로써 계산 효율성을 크게 높이는 것이 특징
- 깊은 층으로 갈수록 나타나는 1보다 작은 액티베이션 함수의 미분값에 의해 기울기 소실과 같은 딥러닝의 주요 과제를 이해하는데 중요한 통찰을 제공
- 이처럼 역전파는 계산 효율성을 높이고 인공 신경망의 작동 원리를 명확히 해석할 수 있게 해주어, 현대 딥러닝 발전의 핵심 기술로 자리 잡음
3.2 학습 과정에서 Forward Propagation이 필요한 이유
- 학습 과정에서 순전파는 역전파를 위해 존재
- 순전파 과정에서 각 층의 출력값과 활성화 함수의 입력값 등 중간 계산 결과를 저장
- 이러한 중간값들은 역전파 단계에서 그래디언트를 계산하는 데 사용
- 이처럼 순전파와 역전파는 서로 밀접하게 연관되어 작동
4. 정리
정리하면 인공 신경망의 학습 과정은 다음과 같이 진행됩니다.
- 순전파: 각 층의 출력값과 활성화 함수의 입력값 등 중간 계산 결과 저장
- 역전파: 순전파 과정에서 저장했던 값들을 이용해 그래디언트 계산
- 최적화: SGD, Adam 등의 알고리즘을 사용해 파라미터 업데이트
위 과정을 Loss 값이 충분히 작아질 때까지 반복함으로써 인공 신경망이 학습되는 것입니다.
참고
혁펜하임의 Easy! 딥러닝