딥러닝 다층화에 의한 문제점 및 구현에 필요한 과정
딥러닝의 다층화에 따른 문제는 몇가지 존재한다.
- 국소 최적해 함정
- 과적합
- 기울기 손실
- 장기간의 학습 시간
A같은 지점에서 전역 최적해가 아닌 국소 최적해에 빠져 학습이 더 이상 진행이 되지않을 수 있다. 큐브 맞출 때를 예로 들자면, 한 면만 맞춘 것이 A에 대한 예이다. 또한 B의 지점 같은 경우는 기울기가 급감해서 더 이상 진행 되지 않는다. 큐브를 아무리 맞춰도 면이 맞추어지지 않는 상황을 예로 들 수 있다.
문제 해결 방안
- 최적화 알고리즘으로 변경
- 배치 사이즈 최적화
- 하이퍼 파라미터 최적화
- 규제화
- 가중치 초깃값 최적화
- 조기 종료
- 데이터 확장
- 드롭아웃(dropout)
- 데이터 전처리
하이퍼 파라미터 최적화는 매우 필수 적이다. 가중치와 편향은 학습을 통해 조정되지만, 신경망 층 수와 뉴런 수, 학습률 등은 미리 결정해 둘 필요가 있다. 이 값들이 어떻게 설정되느냐에 따라 학습 결과가 크게 좌우된다.
규제화(regularization)은 가중치에 제한을 두는 것이다. 제한을 두면 가중치가 극단적인 값이 되어 국소 최적해에 빠지는 것을 방지한다.
데이터 전처리(data preprocessing)는 데이터를 미리 다루기 쉽도록 조작해 두는 것이다. 정규화(normalization)는 데이터가 특정 범위 안에 들어가도록 변환 하는 것이다.
예를 들면 흑백 이미지 원소는 0에서 255까지의 범위 값을 가지는데 이것을 255로 나누면 0에서 1 사이의 범위로 들어온다.
import numpy as np
def normalization(x):
x_max = np.max(x)
x_min = np.min(x)
return (x - x_min) / (x_max - x_min)
드롭아웃(dropout)은 출력층 이외의 뉴런을 일정한 확률로 무작위 제거하는 방법이다. 다음은 묘사한 그림이다.
드롭아웃으로 제거되는 뉴런은 가중치와 편향을 수정할 때마다 바뀐다. 층의 뉴런이 제거되지 않고 남을 확률을 p라고 하면 은닉층의 p = 0.5, 입력층은 p = 0.8~0.9의 값이 많이 사용된다.
드롭아웃은 비교적 구현하기 쉽고 과적합을 방지하는 데도 큰 효과가 있다.
위 그림과 같이 드롭아웃을 이용한 신경망을 여러개 조합해 성능을 향상시키는 방법을 앙상블 학습(ensenble learning)이라고 한다. 과적합을 쉽게 방지하고 적은 계산량으로 높은 효과를 달성할 수 있는 우수한 방법이라 광범위하게 사용되고 있다.
다음에 딥러닝 구현을 해보자.