이번시간에는 모델 성능과 관련된 여러 가지 문제점 및 해결법등에 대하여 알아보도록 하겠다.
1. 과적합과 과소적합
모델 훈련과정에서 학습데이터의 오차가 일반화 오차에 비해서 현격하게 낮아지는 현상을 Overfitting(과적합)이라고 부르고, 학습데이터의 오차가 매우 큰, 정확히 예측하지 못할 경우 Underfitting(과소적합)되었다고 부른다.
제일 왼쪽 그림과 같이 모델이 너무 간단하여 예측자체를 못하는 그래프가 Underfit.
제일 오른쪽 그림과 같이 모델이 너무 복잡하여 학습데이터셋에만 딱 맞는 그래프를 Overfit.
가운데 그림처럼 모델이 적당하게 구성되어 train, test 셋에서 모두 성능이 좋은 경우를 가장 이상적인 학습이라고 본다.
이러한 underfitting과 overfitting이 왜 이뤄지는지를 분산과 편향의 개념에서 설명해 볼 것이다.
2. 분산과 편향
분산과 편향의 개념을 설명할 때 가장 많이 등장하는 그림이다.
1. 왼쪽 위 : 분산과 편향이 모두 낮을 경우는 정답을 잘 맞춘다.
2. 오른쪽 위: 분산이 높고 편향이 낮은 경우에는 정답에 근접하지만, 예측값끼리의 차이가 크다.-> 모델의 파라미터가 배워야 할 정보량보다 많은 경우(복잡한 경우)
3. 왼쪽 아래:분산이 낮고 편향이 높은 경우에는 예측값들끼리 균일하지만, 정답과 많이 떨어져 있다. -> 모델의 파라미터가 배워야 할 정보량보다 적은 경(단순한 경우)
4. 오른쪽 아래: 분산이 높고 편향이 높은 경우에는 예측값도 불균등하고 정답과도 멀리 떨어져 있다.
즉, 분산은 예측값들끼리의 차이를 의미하며, 편향은 정답과 예측값의 차이를 의미한다.
모델에서 복잡성이 증가하면 분산은 증가하고 편향은 감소하는 경향이 있고, 복잡성이 감소하면 편향은 증가하고 분산은 감소하는 경향이 있다. 이 말이 즉 복잡성이 증가하면 오버피팅되고 복잡성이 감소하면 언더피팅 된다는 위에서 한 말과 동일한 것이다.
분산과 편향은 Trade-off 관계에 있기 때문에 모델을 설계하고 학습할 때는 편향과 분산 두 가지를 동시에 최소화하는 방향을 고려해야 한다. 이는 적절한 복잡성을 가진 모델을 찾아 평가 데이터에서의 일반화 성능을 높이는 것이 목표이다.
3. Local minima, Global minima
다음으로 지역해와 전역해이다. 앞서 경사하강법을 배울 때 등장했었는데 다시 짚고 넘어가도록 하겠다.
우선 지역최소값(local minima)는 손실함수의 특정영역에서 가장 낮은 점을 의미하고, 전역최소값은 손실함수 전체에서 가장 낮은 점을 의미한다. 우리의 목표는 손실함수 내의 최소값인 Global minima를 찾는 것이 목표이지만, 한번 지역해에 빠지면 모델의 학습이 더 이상 진행되지 않기 때문에 초기 가중치나, learning rate를 적절하게 선정하여 지역해에 빠지지 않도록 해야 한다.
4. 드롭아웃
드롭아웃 Dropout은 모델 학습 시, 임의의 가중치 노드를 일정확률로 비활성화시키는 방법으로 학습이 잘 된 모델은 일부노드를 비활성화시켜도 여전히 좋은 성능을 유지할 것이라는 가정을 깔고 간다.
이는 과적합을 방지하기 위하여 모델의 중간 가중치 노드를 제거하여 학습이 진행되지 않도록 하는 것으로 모델 학습 중에 손실함수에 대한 그래디언트가 전달되지 않아 가중치 업데이트가 되지 않도록 한다.
또한 드롭아웃은 앙상블이 되는 효과가 있는데, 여기서 앙상블이란 개별적으로 학습 시킨 여러 모델의 결과를 종합하여 추론하는 방식인데, 이 드랍아웃이 적용될 때 매 epoch마다 랜덤으로 노드를 삭제시키기 때문에 각기 다른 모델을 학습시키는 것으로 해석 가능하고 추론시에는 모든 뉴런을 사용한다.
5. Feature scaling
다음으로는 정규화 기법이다. 정규화: Feature scaling은 서로 다른 입력 데이터의 값을 일정한 범위로 맞추는 작업이다.
이러한 연산을 통해서 모델 학습시 모든 특징을 편향 없이 학습할 수 있다. 딥러닝에서는 일반적으로 0과 1 사이로 정규화를 시킨다.
이러한 feature scaling을 진행하는 이유는 위에서의 A와 B를 통해 어떠한 target을 예측할 때 두 feature의 스케일이 크게 차이 나면, 모델이 학습할 때 어느 하나에 민감하게 반응하게 결정될 수도 있다.
딥러닝에는 대표적인 4가지 정규화 방법들이 있다. 이미지를 예를 들어 설명해 보자. (H: 이미지 높이, W:이미지 너비, C:채널 수, N: 배치 사이즈)
5-1. 배치 정규화
Batch Normalization: 배치 정규화는 일반적으로 가장 많이 사용되는 정규화 기법으로 배치 단위의 데이터를 기준으로 평균과 분산을 계산하여 활성화 레이어 이후 출력을 정규화하는 방법이다. 이를 통해 모델을 안정적으로 학습할 수 있게 만들어준다.
이를 사용하는 이유는 배치단위로 학습하게 될 경우 `Internal Covariant Shift`라는 문제점이 발생하는데 이는 학습 과정에서 계층 별로 입력의 데이터 분포가 달라지는 현상을 말한다.
간단하게 살펴보면 첫 번째 레이어에서 활성화함수가 시그모이드라고 할 때, 이 출력은 0~1이 나올 것이다. 이후 2번째 레이어에서 가중치와 편향을 잠깐 생략해서 생각해 보자. 0~1 사이의 출력이 다음 활성화 함수로 들어가면 출력의 범위가 더 줄어들 것이다. 이렇게 입력과 출력 데이터가 점점 한쪽으로 편향되는 현상이 발생한다. 이를 Internal Covaiant Shift라고 한다. 이는 기울기 소실 혹은 폭발 문제에 이를 수도 있다.
또한 이것과 유사하게 배치 단위로 학습을 하게 되어도 배치 단위 간 데이터 분포가 날 수도 있다. 이를 해결하기 위해 배치정규화를 실시한다. 각 배치별로 데이터가 다양한 분포를 가지더라도 출력의 형태가 같아지도록 하려면 논문에 의하면 fully connect layer 이후, 활성화 함수 이전에 적용하여야 한다고 한다.
이때 정규화를 시킬 때 보통 가우시안 분포로 정규화를 시키며 이는 $ z = \frac{X - \mu}{\sigma} $인데, 사실 이대로 진행되면 이후 활성화함수(ReLU)를 거치게 되었을 때 음수 부분이 사라지는, 정규화가 의미 없어지는 현상이 일어나므로 정규화를 살짝 변형해 주기 위해 $\gamma와 \beta$의 값을 추가해 준다. 이들은 학습을 통해 결정된다. 즉 $ y = \gamma * z + \beta $로 설정하고 이때 z는 정규분포, \gamma와 \beta를 학습한다는 것이다.
https://eehoeskrap.tistory.com/430
5-2. 레이어 정규화
다음으로 레이어 정규화 Layer Normalization은 배치 정규화의 단점을 보완한 방법 중 하나이다. 배치 정규화는 텍스트와 같은 시계열에서는 활용하기가 어려워 RNN, LSTM 등에서 적용할 수가 없다. 또한 배치 정규화는 배치사이즈가 작을 경우 예를 들어 1인경우 분산은 0이 되기 때문에 적용할 수도 없다.
위와 같이 데이터가 들어왔을 때 layer normalization은 각 데이터 내부의 정규화를 진행한다. 이에 배치사이즈에 영향을 받지 않는다. 아래의 결과에서 보다시피 RNN구조의 모델 실험에서 배치정규화보다 빠른 수렴을 보여줬다.
5-3. 인스턴스 정규화
인스턴스 정규화 Instance Normalization은 각 데이터 샘플의 각 채널에서 평균과 분산을 계산하여 정규화를 한다. 일반적으로 이미지 스타일 변환과 같은 분야에서 각 데이터의 고유한 정보를 유지하기 위하여 사용된다.
5-4. 그룹정규화
그룹정규화는 인스턴스 정규화의 확장버전으로 채널을 여러 그룹으로 나눈 뒤에, 각 그룹 내에서의 평균과 분산을 계산하여 정규화하는 방법이다. 이 또한 배치 사이즈가 적을 경우를 대비하기 위한 방법이다.
5-5. 정규화 요약
배치 정규화: 배치 단위로 학습 시 발생할 수 있는 분포를 정규화하여 모델 학습을 안정화함.
레이어 정규화: 시계열 데이터와 같은 시퀀스입력에 적용이 힘든 배치 정규화의 단점을 보완
인스턴스 정규화: 이미지 스타일 변환과 같이 각 데이터만의 고유한 정보를 유지할 때 이용
그룹 정규화:인스턴스 정규화의 확장버전으로 배치 사이즈의 크기가 작아도 잘 동작하는 방법을 제안
'ML & DL > 개념정리' 카테고리의 다른 글
최적화 알고리즘 (0) | 2023.12.26 |
---|---|
가중치 초기화, 규제, 학습 (0) | 2023.12.26 |
RNN, LSTM, GRU (1) | 2023.12.22 |
CNN: Convolution Neural Network (0) | 2023.12.21 |
PyTorch 시작 (0) | 2023.12.21 |