딥러닝을 공부하면서 내가 헷갈렸던 개념들과 각 함수들의 순서, 쓰임, 역할에 대해서 정리해보려고 한다.
손실 함수 (Loss Function)
손실 함수는 모델이 예측한 값과 실제 값 사이의 차이를 측정하여 오차를 계산한다. 이 오차를 줄이는 것이 모델 학습의 목표이다.
손실 함수는 학습 과정에서 출력된 예측 값과 실제 값(레이블) 사이의 차이를 계산하는 데 사용된다.
대표적인 손실 함수는 다음과 같다.
- 회귀 문제: MSE
- 분류 문제: Cross-Entropy Loss
손실 함수의 순서는 순전파 후, 모델이 예측한 값과 실제 값 간의 차이를 계산하는 과정에서 사용된다.
활성화 함수 (Activation Function)
활성화 함수는 각 뉴런이 계산한 값에 비선형성을 부여한다. 딥러닝 모델은 비선형 문제를 다루기 때문에 활성화 함수가 필요하다.
활성화 함수는 각 뉴런의 출력 값에 적용되어 다음 층으로 전달하기 전, 비선형 변환을 제공한다.
대표적인 활성화 함수는 다음과 같다.
- ReLU: 중간층에서 많이 사용되며 학습 효율이 높다.
- Sigmoid: 출력 값이 0과 1 사이로 제한되며, 이진 분류에 적합하다.
- Softmax: 다중 클래스 분류 문제에서 각 클래스의 확률을 반환한다.
순서는 순전파 과정에서 각 층에서 연산된 값에 적용된다. 예를 들어, 첫 번째 은닉층에서 활성화 함수를 적용한 후 두 번째 은닉층으로 값을 전달한다.
최적화 알고리즘 (Optimizer)
최적화 알고리즘은 손실 함수를 최소화하기 위해 모델의 가중치를 업데이트하는 알고리즘이다. 손실 값이 작아지도록 가중치를 조정하는 과정을 반복한다. 손실 함수의 기울기를 계산한 후, 그 기울기를 기반으로 가중치를 업데이트하는 데 사용된다.
대표적인 최적화 알고리즘은 다음과 같다.
- SGD (Stochastic Gradient Descent): 경사 하강법의 기본적인 형태.
- Adam: 학습률을 적응적으로 조정하는 최신 최적화 알고리즘.
순서는 역전파 단계에서 기울기를 계산한 후, 그 기울기를 바탕으로 가중치를 업데이트하는 과정에서 사용된다.
역전파 (Backpropagation)
역전파는 손실 함수의 결과를 기반으로 각 가중치가 손실에 미친 영향을 계산하는 과정이다. 이를 통해 가중치가 업데이트된다.
손실 함수 계산 후, 역전파를 통해 기울기(gradient)를 계산하고, 최적화 알고리즘에 의해 가중치가 조정된다.
순서는 손실 함수가 계산된 후 역전파가 이루어지며, 기울기가 계산되어 가중치 업데이트에 사용된다.
학습 과정에서의 순서
- 순전파 (Forward Pass):
- 모델에 입력 데이터를 전달하고, 활성화 함수를 거쳐 출력 값을 계산한다.
- 이 과정에서 입력 데이터를 여러 층(layer)을 거치며 각 층마다 활성화 함수가 적용된다.
- 손실 함수 계산:
- 손실 함수를 사용해 모델이 예측한 값과 실제 값(레이블) 간의 차이를 계산한다. 이때의 차이는 모델이 얼마나 예측을 잘못했는지를 나타내며, 이를 기반으로 모델을 업데이트할 필요성이 결정된다.
- 역전파 (Backpropagation):
- 손실 함수의 결과를 바탕으로 기울기(gradient)를 계산한다. 기울기는 각 가중치가 손실에 얼마나 기여했는지를 나타낸다.
- loss.backward() 메서드를 사용해 기울기를 계산한다.
- 최적화 (Optimization):
- 최적화 알고리즘을 사용해 계산된 기울기를 바탕으로 가중치를 업데이트한다. 이 과정에서 손실 값을 최소화하기 위한 방향으로 가중치가 변경된다.
- optimizer.step()을 호출해 가중치 업데이트를 수행한다.
- 반복:
- 이 과정은 여러 번의 에폭(epoch) 동안 반복되며, 모델이 점차 손실 값을 줄이면서 더 좋은 예측을 할 수 있게 된다.
헷갈리기 쉬운 개념
- 손실 함수 vs 활성화 함수: 손실 함수는 모델의 예측 성능을 평가하는 데 사용되며, 활성화 함수는 각 뉴런에서 입력 값을 비선형 변환해 모델이 복잡한 패턴을 학습할 수 있도록 돕는다.
- 손실 함수 vs 최적화 알고리즘: 손실 함수는 모델의 오차를 측정하는 기준이고, 최적화 알고리즘은 이 오차를 줄이기 위해 가중치를 조정하는 방법을 제공한다.
- 차원 (Dimension): 데이터를 표현하는 구조로, 0차원은 스칼라, 1차원은 벡터, 2차원은 행렬, 그 이상은 텐서로 불린다. 차원은 모델 입력, 출력, 레이어 간 연산 과정에서 중요한 역할을 한다.
- Flatten vs Reshape: Flatten은 데이터를 1차원으로 변환하고, Reshape은 데이터의 차원을 바꾸는 작업이다.
- Gradient Descent vs Stochastic Gradient Descent (SGD): Gradient Descent는 전체 데이터를 사용해 경사 하강을 수행하는 반면, SGD는 무작위로 선택된 일부 데이터(배치)를 사용하여 가중치를 업데이트하는 방법이다.
- Batch, Epoch, Iteration: Batch는 한 번에 모델에 넣는 데이터 묶음, Epoch는 전체 데이터를 한 번 학습하는 과정, Iteration은 배치 단위로 한 번 학습할 때마다 반복되는 과정이다.
💡 요약:
1. 순전파: 입력 데이터가 모델을 통과하며 활성화 함수에 의해 변환되고 출력 값을 생성한다.
2. 손실 함수: 출력 값과 실제 값 사이의 차이를 계산하여 모델의 성능을 평가한다.
3. 역전파: 손실 값을 바탕으로 기울기를 계산하여 가중치가 손실에 미친 영향을 알아낸다.
4. 최적화 알고리즘: 역전파에서 계산된 기울기를 사용해 가중치를 업데이트하여 손실을 최소화한다.
5. 반복 학습: 이 과정은 여러 에폭 동안 반복되며, 모델의 성능이 점차 개선된다.
이렇게 딥러닝을 공부하면서 헷갈렸던 개념들을 정리해봤다.
전이 학습에서 learning rate 의미
전이학습에서 learning rate는 모델이 학습하는 동안 가중치(모델 파라미터)를 얼마나 크게 업데이트할지를 결정하는 하이퍼파라미터이다. 학습률은 일반적으로 0과 1 사이의 값을 가지며, 값이 클수록 파라미터가 크게 업데이트되고, 값이 작을수록 파라미터가 천천히 업데이트된다.
구체적으로, 학습률이 너무 크면 모델이 최적 해에 도달하기 전에 큰 폭으로 이동해 제대로 수렴하지 못하거나 발산할 수 있다. 반대로, 학습률이 너무 작으면 학습이 매우 느리게 진행되어 학습 시간이 길어지거나 지역 최적해에 갇힐 위험이 있다.
전이학습에서는 이미 학습된 가중치에서 출발해 새로운 데이터에 적합하도록 미세 조정을 하는 것이므로, 일반적으로 기존에 학습된 가중치를 너무 크게 변화시키지 않기 위해 작은 학습률을 사용하는 경우가 많다.
+ 24.10.23 전이학습 내용 추가
'Deep Learning' 카테고리의 다른 글
텍스트 데이터 전처리 방법 (토큰화, 정제, 정규화, Stemming, Lemmatization 등) (2) | 2024.11.12 |
---|---|
딥러닝 모델 구현에서 PyTorch의 쓰임 (2) | 2024.10.28 |
[Pytorch] tensor shape 변경에서 -1과 1 쓰임 그리고 슬라이싱 (1) | 2024.10.23 |
가중치 초기화의 중요성과 Xavier 초기화, He 초기화 소개 (1) | 2024.10.17 |
딥러닝에서 손실 함수의 선택: Maximum Likelihood와 확률적 해석 (MSE, Cross-Entropy) (1) | 2024.10.16 |