기계학습에서 자주 사용하는 정규화 기법 - 드롭아웃
드롭아웃은 신경망에서 자주 사용되는 정규화 기법입니다. 훈련 중에 드롭아웃은 각 갱신마다 입력 중 일부를 무작위로 0으로 설정합니다. 이는 네트워크가 더 견고한 표현을 학습하도록 강제하고 단일 입력이나 특징에 지나치게 의존하는 것을 방지합니다.
자세한 내용을 예시를 통해 설명하겠습니다:
예를 들어 입력층에 4개의 뉴런, 첫번째 은닉층에 6개의 뉴런, 출력층에 3개의 뉴런으로 이루어진 단순한 신경망이 있다고 가정해봅시다. 훈련 중에 드롭아웃을 적용하기로 결정하고 드롭아웃 비율을 0.5로 설정합니다(즉, 각각의 업데이트에서 뉴런의 50%가 무작위로 드롭아웃됩니다).
첫 번째 업데이트에서 무작위로 어떤 뉴런을 드롭아웃할지 선택합니다. 예를 들어 은닉층에서 뉴런 1과 3이 드롭아웃되었다고 가정해봅시다. 이렇게 되면 이들 뉴런의 입력은 0으로 설정되고 그들의 연결은 일시적으로 해제됩니다. 은닉층의 나머지 뉴런과 입력층 및 출력층의 뉴런은 여전히 활성 상태입니다.
다음으로, 네트워크는 순전파를 진행합니다. 활성 상태인 뉴런들은 가중치를 사용하여 입력에 기반한 출력을 생성합니다. 이 출력은 다음 층(출력층)으로 전달되어 최종 예측을 생성합니다.
역전파 단계(가중치 갱신 시)에서는 활성 상태인 뉴런만 그래디언트에 기여합니다. 드롭아웃된 뉴런은 순전파에 기여하지 않았기 때문에 업데이트되지 않습니다. 이 업데이트 단계는 확률적 경사 하강법(SGD)이나 Adam과 같이 옵티마이저를 사용하여 수행됩니다.
다음 업데이트에서는 이 과정이 반복됩니다. 이와 같이 무작위로 뉴런을 드롭아웃함으로써, 네트워크는 더 다양한 표현을 학습하도록 장려됩니다. 이렇게 함으로써 네트워크가 특정 입력에 지나치게 의존하는 것을 방지할 수 있습니다. 네트워크는 각 순방향 훑기에서 다양한 부분 집합의 뉴런을 함께 고려하여 예측을 수행하게 됩니다.
테스트나 추론 과정에서는 드롭아웃이 꺼지고 모든 뉴런이 다시 활성화됩니다. 그러나 훈련 중 사용된 드롭아웃 비율로 가중치를 저하시키는 조정이 이루어집니다. 이 스케일링 과정은 추론 중에도 모든 뉴런의 영향을 반영할 수 있도록 합니다.