AI/DL

2nd course: Hyperparameter Tuning, Batch Normalization and Programming Frameworks (C2W3L01 ~ C2W3L10)

hu6r1s 2025. 2. 1. 21:44

Tuning Process (C2W3L01)

딥러닝 모델을 학습시키는 과정에서 가장 어려운 부분 중 하나는 하이퍼파라미터 튜닝입니다. 학습률, 모멘텀, 은닉층의 개수 등 다양한 하이퍼파라미터 값에 따라 모델 성능이 크게 달라지기 때문입니다. 이번 글에서는 딥러닝 모델의 성능을 최대한 끌어올리기 위한 효과적인 하이퍼파라미터 튜닝 방법에 대해 알아보겠습니다.

하이퍼파라미터란 무엇일까?

하이퍼파라미터는 모델 학습 과정에서 직접적으로 학습되지 않고, 사용자가 직접 설정해야 하는 값이다. 대표적인 하이퍼파라미터로는 다음과 같은 것들이 있다.

  • 학습률(Learning rate) : 모델이 학습하는 속도를 조절하는 값
  • 모멘텀(Momentum) : 경사 하강법의 수렴 속도를 높이는 데 사용되는 값
  • 미니배치 크기 : 한 번에 학습하는 데이터의 양
  • 은닉층의 개수와 뉴런 수 : 모델의 복잡도를 결정하는 값
  • 정규화(Regularization) 강도 : 과적합을 방지하기 위한 값

하이퍼파라미터 튜닝의 중요성

하이퍼파라미터를 적절하게 설정하지 않으면 모델의 성능이 크게 저하될 수 있다. 예를 들어, 학습률이 너무 크면 모델이 발산할 수 있고, 너무 작으면 학습이 매우 느려질 수 있다. 따라서 최적의 하이퍼파라미터를 찾는 것은 모델 성능을 향상시키기 위해 매우 중요하다.

하이퍼파라미터 튜닝 방법

무작위 접근

  • 머신러닝이 많들어진지 얼마 되지 않았을 떄는 두 개의 Hyperparameter1, Hyperparameter2로 하이퍼파라미터가 있을 때, 왼쪽의 사진처럼 격자점을 탐색하는 것이 일반적이었다. 이 점들 중 가장 좋은 하이퍼파라미터를 정하는 것이다. 하지만 이 방법은 하이퍼파라미터의 수가 적을 때 쓸 수 있어 딥러닝에서는 좋지 않다.
  • 딥러닝에서는 어떤 하이퍼파라미터가 문제 해결에 더 중요한지  미리 알 수 없기 때문에 오른쪽의 사진처럼 무작위로 점들을 선택하는 것이 좋다. 즉 하이퍼파라미터의 중요도 순위가 다르기 때문에 딥러닝에서는 무작위로 선택하여 탐색하는 것이 좋다.

정밀화 접근

정밀화 접근은 최적의 하이퍼파라미터를 찾기 위해 탐색 범위를 점차 좁혀나가는 방법이다. 먼저 넓은 범위에서 하이퍼파라미터를 탐색한 후, 가장 좋은 성능을 보인 하이퍼파라미터를 중심으로 범위를 좁혀 탐색한다.

하이퍼파라미터 튜닝 시 고려 사항

  • 하이퍼파라미터의 중요도 : 모든 하이퍼파라미터가 동일하게 중요한 것은 아니다. 학습률과 같은 핵심적인 하이퍼파라미터에 집중하는 것이 좋다.
  • 탐색 공간 : 가능한 하이퍼파라미터 값의 범위를 설정해야 한다.
  • 평가 지표 : 모델 성능을 평가할 수 있는 적절한 지표를 선택해야 한다. (예: 정확도, F1 스코어, AUC 등)
  • 계산 자원 : 하이퍼파라미터 튜닝은 많은 계산 자원을 요구할 수 있다. 클라우드 컴퓨팅 서비스를 활용하는 것이 좋다.

마무리

하이퍼파라미터 튜닝은 딥러닝 모델의 성능을 향상시키기 위한 필수적인 과정이다. 다양한 튜닝 방법 중에서 문제의 특성과 계산 자원에 맞는 방법을 선택하여 최적의 하이퍼파라미터를 찾는 것이 중요하다.

Using an Appropriate Scale (C2W3L02)

딥러닝 모델의 성능을 좌우하는 하이퍼파라미터를 튜닝할 때, 단순히 무작위로 값을 선택하는 것만으로는 충분하지 않습니다. 특히, 하이퍼파라미터의 값의 범위가 매우 다르거나, 특정 값에 민감한 경우에는 더욱 신중하게 샘플링 방법을 선택해야 합니다. 이번 글에서는 하이퍼파라미터 튜닝 시 적절한 척도를 선택하는 방법에 대해 자세히 알아보겠습니다.

왜 Scale이 중요할까?

  • 하이퍼파라미터의 민감도 : 모든 하이퍼파라미터가 동일한 범위에서 동일한 정도로 모델 성능에 영향을 미치는 것은 아니다. 예를 들어, 학습률은 매우 작은 값의 변화에도 모델 성능에 큰 영향을 미칠 수 있지만, 다른 하이퍼파라미터는 상대적으로 덜 민감할 수 있다.
  • 탐색 공간 : 하이퍼파라미터의 범위가 매우 넓거나 작은 경우, 균일한 분포로 샘플링하면 효율적으로 탐색 공간을 커버하지 못할 수 있다.

로그 척도를 사용해야 하는 경우

 

  • 지수적으로 변화하는 하이퍼파라미터 : 학습률(learning rate)처럼 매우 작은 값부터 큰 값까지 넓은 범위를 탐색해야 할 때, 로그 척도를 사용하면 작은 값 영역에서도 충분한 샘플을 얻을 수 있다.
  • 특정 값에 민감한 하이퍼파라미터 : 지수 가중 평균에서 사용되는 \( \beta \) 와 같이 1에 가까운 값에서 작은 변화에도 모델 성능이 크게 달라지는 경우, 로그 척도를 사용하여 해당 영역을 더 집중적으로 탐색할 수 있다.

로그 척도를 사용하는 방법

 

  • 범위 설정 : 탐색하고자 하는 하이퍼파라미터의 최솟값과 최댓값을 10의 거듭제곱으로 표현한다.
  • 로그 변환 : 최솟값과 최댓값의 로그를 취하여 새로운 범위를 설정한다.
  • 균일 분포 샘플링 : 새로운 범위에서 균일하게 샘플링한다.
  • 역변환 : 샘플링된 값을 다시 원래 범위로 변환한다.

예를 들어, 학습률을 0.0001부터 1까지 탐색하고 싶다면 다음과 같이 할 수 있다.

  • 최솟값 : \( 10^{-4} \)
  • 최댓값 : \( 10^0 \)
  • 로그 변환 : -4 ~ 0 범위에서 균일하게 샘플링
  • 역변환 : 샘플링된 값을 10의 지수로 변환하여 학습률로 사용
import numpy as np

# 학습률을 0.0001부터 1까지 로그 척도로 샘플링
def sample_learning_rate():
    a = -4  # log10(0.0001)
    b = 0   # log10(1)
    r = np.random.uniform(a, b)
    learning_rate = 10**r
    return learning_rate

 

 

왜 로그 척도를 사용해야 할까?

 

  • 균일한 탐색 : 로그 척도를 사용하면 하이퍼파라미터의 전체 범위에서 균일하게 샘플링할 수 있다.
  • 민감한 영역 집중 : 특정 값에 민감한 하이퍼파라미터의 경우, 해당 영역을 더욱 집중적으로 탐색할 수 있다.
  • 효율적인 탐색 : 불필요한 영역을 탐색하지 않고, 중요한 영역에 집중하여 탐색 시간을 단축할 수 있다.

Hyperparameter Tuning in Practice (C2W3L03)

딥러닝 모델의 성능을 좌우하는 하이퍼파라미터를 조정하는 것은 모델 개발 과정에서 매우 중요한 단계입니다. 이번 글에서는 하이퍼파라미터 튜닝을 위한 두 가지 주요 전략인 판다 접근캐비어 접근에 대해 자세히 알아보고, 각 전략의 장단점을 비교해 보겠습니다.

판다 접근 (Pandas Approach)

한 번에 하나의 모델에 집중하여 꾸준히 개선해 나가는 방식이다. 마치 팬더가 한 번에 한 마리의 새끼를 낳아 정성껏 키우는 것과 같다.

장점

 

  • 모델에 대한 깊이 있는 이해를 얻을 수 있다.
  • 학습 과정을 세밀하게 관찰하고 조절할 수 있다.
  • 계산 자원이 적게 필요하다.

단점

 

  • 시간이 오래 걸릴 수 있다.
  • 최적의 하이퍼파라미터를 찾지 못할 가능성이 있다.

캐비어 접근 (Caviar Approach)

동시에 여러 모델을 학습시켜 다양한 하이퍼파라미터 조합을 평가하는 방식이다. 마치 물고기가 많은 알을 낳아 일부만 살아남도록 하는 것과 같다.

장점

  • 다양한 하이퍼파라미터 조합을 빠르게 평가할 수 있다.
  • 최적의 하이퍼파라미터를 찾을 확률이 높다.

 

단점

  • 많은 계산 자원이 필요하다.
  • 각 모델에 대한 이해가 부족할 수 있다.

어떤 접근법을 선택해야 할까?

 

  • 계산 자원 : 충분한 계산 자원이 있다면 캐비어 접근을 통해 다양한 하이퍼파라미터를 빠르게 탐색할 수 있다.
  • 시간 : 빠른 시간 내에 결과를 얻어야 한다면 캐비어 접근이 유리하다.
  • 모델의 복잡성 : 모델이 복잡하고 학습 시간이 오래 걸리는 경우에는 판다 접근이 적합할 수 있다.
  • 전문성 : 모델에 대한 깊이 있는 이해가 필요하다면 판다 접근이 더 적합하다.

Normalizing Activations in a Network (C2W3L04)

딥러닝 모델 학습 시, 배치 정규화(Batch Normalization)는 필수적인 기술 중 하나로 자리 잡았습니다. 배치 정규화는 신경망의 각 층에서 활성화 값을 정규화하여 학습을 안정화시키고, 모델의 일반화 성능을 향상시키는 데 크게 기여합니다. 이 글에서는 배치 정규화의 개념과 작동 원리를 자세히 알아보고, 왜 딥러닝 모델 학습에 효과적인지 살펴보겠습니다.

배치 정규화의 기본 개념

배치 정규화는 신경망의 각 층에서 입력값을 정규화하여 학습을 안정화하는 기법이다. 우리가 로지스틱 회귀 같은 모델을 학습할 때 입력 변수를 정규화하면 학습이 빨라지는 것을 경험할 수 있다. 배치 정규화는 이 개념을 확장하여 신경망의 각 층에서도 정규화를 수행하는 것이다.

예를 들어, 일반적인 신경망에서는 입력값 \( x \) 만을 정규화하지만, 심층 신경망에서는 각 층의 활성값 \( a \)도 정규화할 수 있다. 특히, 배치 정규화에서는 활성 함수 이전의 값 \( z \) 를 정규화하는 것이 일반적이다.

배치 정규화의 구현 방법

  1. 평균 계산: 미니배치(batch) 내의 은닉 유닛 값 \( z^{(i)} \) 의 평균 \( \mu \) 를 계산한다. \( \mu = \frac{1}{m} \sum_{i=1}^{m} z^{(i)} \)
  2. 분산 계산: 해당 배치 내의 값들에 대한 분산 \( \sigma^2 \) 을 계산한다. \( \sigma^2 = \frac{1}{m} \sum_{i=1}^{m} (z^{(i)} - \mu)^2 \)
  3. 정규화 수행: 평균을 빼고 표준편차(분산의 제곱근)로 나누어 정규화한다. 수학적 안정성을 위해 분모에 작은 값 \( \epsilon \) 을 추가한다. \( \hat{z}^{(i)} = \frac{z^{(i)} - \mu}{\sqrt{\sigma^2 + \epsilon}} \)
  4. 스케일링과 시프트 적용: 정규화된 값에 학습 가능한 파라미터 \( \gamma \) 와 \( \beta \)  를 곱하고 더하여 새로운 값 \( z^{(i)} \) 를 생성한다. \( z^{(i)}_{\text{new}} = \gamma \hat{z}^{(i)} + \beta \)
    여기서  \( \gamma \) 와 \( \beta \)  는 신경망이 학습을 통해 조절할 수 있는 변수로, 정규화된 값이 특정한 평균과 분산을 가지도록 조정할 수 있다. 

배치 정규화의 장점

  • 학습 속도 향상: 입력값이 적절히 정규화되므로 가중치 업데이트가 더 원활하게 이루어져 학습 속도가 빨라진다.
  • 기울기 소실 및 폭주 방지: 정규화를 통해 기울기의 변화 폭이 일정해져 신경망의 안정성이 증가한다.
  • 일반화 성능 향상: 배치 정규화는 일종의 정규화 기법으로 작용하여 과적합(overfitting)을 줄이는 데 도움이 된다.
  • 하이퍼파라미터 튜닝 부담 감소: 학습률 등 하이퍼파라미터에 덜 민감해지므로 보다 폭넓은 하이퍼파라미터 조합이 효과적으로 작동한다.

Fitting Batch Norm Into Neural Networks (C2W3L05)

은닉층에서의 계산

은닉층의 각 유닛은 두 단계의 계산을 수행한다.

  • 첫 번째로 z를 계산하고,
  • 두 번째로 활성화 함수를 적용하여 a를 계산한다.

배치 정규화 적용

  • 배치 정규화를 적용하지 않는 경우, 입력값 \( x \) 가 첫 번째 은닉층에 주어지면 \( w^{[1]} \) 과 \( b^{[1]} \) 에 따라 \( z^{[1]} \) 을 계산한다. 그리고 활성화 함수에 \( z^{[1]} \) 을 주어서 \( a^{[1]} \) 을 계산한다.
  • 배치 정규화에서는 \( z^{[1]} \) 을 받아서 배치 정규화를 적용한다. 이 과정은 \( \beta^{[1]} \) 과 \( \gamma^{[1]} \) 의 영향을 받다. 그러면 새로 정규화된 \( z^{[1]} \) 값을 얻게 되고, 이를 활성화 함수에 줘서 \( a^{[1]} \) 을 얻는다.
  • 이러한 과정은 다음 층에서도 반복된다. 즉, 배치 정규화는 z를 계산하고 a를 계산하는 사이에 이뤄진다. 여기서 비정규화된 z 값 대신 정규화된 값 \( \hat{z}^{[1]} \) 를 사용한다.

신경망의 변수

신경망의 변수는 \( w^{[1]} \) , \( b^{[1]} \) 부터 \( w^{[L]} \) , \( b^{[L]} \) 까지 있으며, 추가로 ( \beta^{[1]} \) , ( \gamma^{[1]} \) , \( \beta^{[L]} \) , \( \gamma^{[L]} \) 등이 있다. 이 변수들은 각 층에 배치 정규화를 할 때 사용된다.

최적화

  • 변수를 찾기 위해 경사 하강법 등 어떤 최적화를 쓸지 고민할 차례이다.
  • 예컨대 어떤 층에서 \( dβ^{[l]} \) 을 계산했다고 가정하자. 그리고 \( \beta \) 를 \( \beta \) - (학습 속도) * d \( \beta \)^[L]로 수정한다.
  • 물론 Adam, RMSprop, 모멘텀 등을 써서 \( \beta \) 나 \( \gamma\) 를 업데이트할 수도 있다.

딥러닝 프레임워크

딥러닝 프로그래밍 프레임워크를 사용하면 배치 정규화를 따로 구현할 필요가 없다. 단 한 줄의 코드로 구현이 가능한다.

미니 배치 적용

  • 지금까지 경사 하강법을 이용해서 배치 정규화로 전체를 학습시켰다. 하지만 실제로는 배치 정규화가 훈련 집합의 미니 배치에 적용된다.
  • 실제로는 첫 번째 미니배치에 대해서 \( z^{[1]} \) 을 계산한다. 그리고 이 미니 배치 안에서 \( z^{[1]} \) 의 평균과 분산을 계산한 뒤에 평균을 빼고 표준편차로 나눠 배치 정규화를 진행한다. 물론 \( \beta^{[1]} \) 과 \( \gamma^{[1]} \) 을 이용해서 값을 조정해줘야 한다. 이 과정을 통해 첫 번째 미니 배치에서 \( z^{[1]} \) 을 얻게 되고, 활성화 함수를 적용해 \( a^{[1]} \) 을 얻는다.
  • 그리고 \( z^{[1]} \) 를 \( w^{[1]} \) 와 \( b^{[1]} \) 를 이용해 계산해낸다. 이 과정의 반복이다.
  • 이렇게 첫 번째 미니 배치에 대해 경사하강법을 이용해서 과정을 마쳤으면 두 번째 미니 배치 \( X^{2} \) 로 이동한다. 그리고 \( X^{2} \)에 대해 비슷한 방법으로 \( z^{[1]} \) 을 계산하다. 그리고 배치 정규화를 써서 \( z^{[1]} \) 을 계산한다. 이 정규화에서는 두 번째 미니배치에 있는 데이터만을 이용해서 진행한다. 두 번째 미니배치만 이용해서 평균과 분산을 계산하는 것이다. 그리고 \( \beta \) 와 \( \gamma \) 로 보정해서 \( \hat{z} \) 를 얻는다. 이 과정의 반복이다.

Why Does Batch Norm Work? (C2W3L06)

배치 정규화가 작동하는 이유

이 영상에서는 배치 정규화가 작동하는 이유에 대해 설명한다. 배치 정규화가 작동하는 이유는 크게 두 가지이다.

첫 번째 이유는 입력 특성을 정규화하여 학습 속도를 높이는 것이다. 입력 특성을 비슷한 범위로 정규화하면 학습 속도를 높일 수 있다. 배치 정규화는 입력층뿐만 아니라 은닉층에서도 비슷한 일을 한다.

두 번째 이유는 신경망에서 깊은 층의 가중치가 앞쪽 층의 가중치의 변화에 영향을 덜 받도록 하는 것이다. 이를 통해 신경망의 학습 속도를 높일 수 있다.

배치 정규화는 이 두 가지 이유 외에도 규제 효과가 있다. 배치 정규화는 은닉층에 잡음을 추가하여 일반화 효과를 높인다.

하지만 배치 정규화는 일반화를 목적으로 사용하기보다는 학습 속도를 높이는 용도로 사용하는 것이 좋다. 일반화는 배치 정규화의 부수 효과이다.

배치 정규화의 한계점

배치 정규화는 한 번에 미니 배치의 데이터를 다룬다. 따라서 테스트 과정에서는 예측을 해서 신경망을 평가한다. 예시의 미니 배치가 없다. 한 번에 예시 하나씩을 처리하는 것이다. 따라서 테스트 과정에서는 예측이 잘 맞도록 조금 다른 접근을 해야 한다.

다음 영상에서는 배치 정규화를 이용해 신경망을 학습시키는 방법에 대해 다루도록 하겠다.

Batch Norm At Test Time (C2W3L07)

배치 정규화는 신경망 학습 시 미니배치 단위로 데이터를 정규화하여 학습 속도를 향상시키고 일반화 성능을 높이는 기법입니다. 하지만 테스트 과정에서는 미니배치가 아닌 개별 샘플을 처리해야 하기 때문에 학습 과정과는 다른 방식으로 배치 정규화를 적용해야 합니다.

학습 과정에서의 배치 정규화

 

  • 미니배치 단위 정규화: 학습 시에는 미니배치 내의 데이터를 이용하여 평균과 분산을 계산하고, 이를 이용해 데이터를 정규화한다.
  • 수학적 안정성: 분산을 계산할 때 분모가 0이 되는 것을 방지하기 위해 작은 값 \( \epsilon \)을 더한다.
  • 학습 파라미터: \( \gamma \) 와 \( \beta \) 를 통해 정규화된 데이터의 스케일과 이동을 조절한다.

테스트 과정에서의 배치 정규화

  • 개별 샘플 처리: 테스트 시에는 미니배치가 없으므로 개별 샘플에 대해 정규화를 수행해야 한다.
  • 평균과 분산 추정: 학습 과정에서 계산된 각 미니배치의 평균과 분산을 이용하여 전체 데이터의 평균과 분산을 추정한다. 일반적으로 지수 가중 평균을 사용하여 최근의 데이터에 더 큰 가중치를 부여한다.
  • 정규화: 추정된 평균과 분산을 이용하여 테스트 샘플을 정규화한다.

왜 지수 가중 평균을 사용하는가?

  • 최신 데이터 반영: 지수 가중 평균은 최근 데이터에 더 큰 가중치를 부여하여 모델이 학습된 데이터 분포의 변화에 더 잘 적응할 수 있도록 한다.
  • 안정성: 전체 데이터를 이용하여 평균과 분산을 계산하는 것보다 지수 가중 평균을 사용하는 것이 계산적으로 효율적이며, 데이터 분포의 변화에 더 민감하게 반응할 수 있다.

테스트 과정에서의 배치 정규화 과정 요약

  1. 학습 과정: 각 미니배치에 대해 평균과 분산을 계산하고 지수 가중 평균을 통해 전체 데이터의 평균과 분산을 추정한다.
  2. 테스트 과정:
    • 테스트 샘플을 입력으로 받는다.
    • 학습 과정에서 추정된 평균과 분산을 이용하여 입력 샘플을 정규화한다.
    • 정규화된 값에 \( \gamma \) 와 \( \beta \) 를 적용하여 최종 출력을 얻는다.

Softmax Regression (C2W3L08)

이번 강의에서는 이진 분류를 넘어 다중 클래스 분류 문제를 해결하기 위한 소프트맥스 회귀에 대해 알아보았습니다. 소프트맥스 회귀는 여러 개의 클래스 중 하나를 선택하는 문제에 효과적으로 사용되는 분류 알고리즘입니다.

소프트맥스 회귀의 개념

 

  • 다중 클래스 분류: 고양이, 개, 병아리 등 여러 개의 클래스 중 하나를 선택하는 문제
  • 소프트맥스 함수: 신경망의 출력층에서 사용되는 활성화 함수로, 각 클래스에 대한 확률을 계산하여 합이 1이 되도록 정규화한다.
  • 출력: 소프트맥스 함수의 출력은 각 클래스에 대한 확률값을 가진 벡터로, 가장 높은 확률값을 가진 클래스를 예측 결과로 사용한다.

소프트맥스 회귀의 작동 원리

  1. 신경망 구축: 입력층, 은닉층, 출력층으로 구성된 신경망을 만든다.
  2. 선형 변환: 출력층에서 입력 데이터에 가중치와 편향을 곱하여 선형 변환을 수행한다.
  3. 소프트맥스 함수 적용: 선형 변환 결과에 소프트맥스 함수를 적용하여 각 클래스에 대한 확률을 계산한다.
  4. 손실 함수: 크로스 엔트로피 손실 함수를 사용하여 예측값과 실제 레이블 간의 차이를 계산한다.
  5. 학습: 역전파 알고리즘을 통해 가중치와 편향을 업데이트하여 손실 함수를 최소화한다.

소프트맥스 함수의 특징

  • 확률 분포: 출력값은 각 클래스에 대한 확률 분포를 나타내므로, 모든 클래스에 대한 확률의 합은 1이 된다.
  • 선형 결정 경계: 소프트맥스 회귀는 선형 결정 경계를 생성한다. 즉, 클래스 간의 경계가 직선 또는 평면으로 나타난다.
  • 다중 클래스 분류: 다양한 클래스 분류 문제에 효과적으로 적용될 수 있다.

소프트맥스 회귀의 장점

  • 간단하고 효과적: 구현이 간단하고 다양한 문제에 적용 가능하다.
  • 확률값 제공: 각 클래스에 대한 확률값을 제공하여 불확실성을 정량화할 수 있다.
  • 다양한 분야 활용: 이미지 분류, 텍스트 분류 등 다양한 분야에서 활용된다.

Training Softmax Classifier (C2W3L09)

이번 강의에서는 소프트맥스 회귀를 더 깊이 이해하고, 소프트맥스 층을 이용하여 신경망을 학습시키는 방법에 대해 알아보았습니다.

소프트맥스 함수의 의미와 로지스틱 회귀와의 관계

  • 소프트맥스 함수: 입력값을 확률 값으로 변환하여 각 클래스에 대한 확률을 나타낸다.
  • 하드맥스와의 비교: 하드맥스는 가장 큰 값에만 1을 할당하는 반면, 소프트맥스는 모든 값에 대한 확률을 부드럽게 나타낸다.
  • 로지스틱 회귀와의 관계: 소프트맥스 회귀는 이진 분류를 위한 로지스틱 회귀를 다중 클래스 분류로 확장한 것이다. 클래스가 2개일 때 소프트맥스 회귀는 로지스틱 회귀와 동일한 결과를 얻는다.

소프트맥스 회귀를 이용한 신경망 학습

  • 손실 함수: 소프트맥스 크로스 엔트로피 손실 함수를 사용하여 예측값과 실제 레이블 간의 차이를 계산한다.
  • 경사 하강법: 손실 함수를 최소화하기 위해 경사 하강법을 사용하여 모델의 파라미터를 업데이트한다.
  • 역전파: 역전파 알고리즘을 통해 각 파라미터에 대한 기울기를 계산하고, 이를 이용하여 파라미터를 업데이트한다.

소프트맥스 회귀의 장점

  • 다중 클래스 분류: 다양한 클래스 분류 문제에 효과적으로 적용할 수 있다.
  • 확률 값 제공: 각 클래스에 대한 확률값을 제공하여 불확실성을 정량화할 수 있다.
  • 간단하고 효과적: 구현이 간단하고 다양한 분야에 활용 가능하다.

핵심 개념 정리

  • 소프트맥스 함수: 입력값을 확률 값으로 변환하는 함수
  • 크로스 엔트로피 손실 함수: 소프트맥스 회귀에서 주로 사용되는 손실 함수
  • 역전파: 오차를 역전파하여 모델의 파라미터를 업데이트하는 알고리즘

The Problem of Local Optima (C2W3L10)

이번 강의에서는 딥러닝 최적화 과정에서 발생하는 문제점과 그 해결 방안에 대해 좀 더 깊이 있게 알아보겠습니다.

딥러닝 최적화의 오해: 지역 최적값

  • 저차원 공간에서의 직관: 2차원 그래프에서 쉽게 볼 수 있는 여러 개의 지역 최적값은 고차원 공간에서는 흔하지 않다.
  • 고차원 공간의 현실: 고차원 공간에서는 오히려 '안장점'이 더 많이 존재한다. 안장점은 어떤 방향에서는 최댓값, 다른 방향에서는 최솟값을 가지는 점으로, 학습이 지연되는 주요 원인이 된다.
  • 지역 최적값보다 안정지대가 문제: 지역 최적값보다 안정지대에서 학습이 오랫동안 정체되는 것이 더 큰 문제이다. 안정지대는 경사가 거의 0에 가까워 학습 알고리즘이 쉽게 빠져나오기 어려운 영역이다.

딥러닝 최적화의 해결 방안

  • 최적화 알고리즘의 발전: 모멘텀, RMSprop, Adam 등 다양한 최적화 알고리즘은 안정지대를 벗어나도록 돕고 학습 속도를 향상시킨다.
  • 학습률 조절: 학습률을 적절히 조절하여 학습 과정을 안정화시키고, 지역 최적값에 빠지는 것을 방지한다.
  • 배치 정규화: 배치 정규화를 통해 학습 과정을 안정화시키고 일반화 성능을 향상시킬 수 있다.