딥러닝 드롭아웃(dropout) 말 그대로 빼버리는 것

CNN에 드롭아웃 적용하여 과적합을 방지하자

심층 학습 뉴럴 네트워크는 몇 가지 방법으로 훈련 데이터 세트를 빠르게 초과할 수 있습니다. 서로 다른 모델 구성을 가진 뉴럴 네트워크의 결합은 과적합을 줄이는 것으로 알려져 있지만, 여러 모델을 훈련하고 유지하는 데 추가적인 컴퓨터 비용이 필요합니다. 단일 모델을 사용하여 교육 중에 노드를 임의로 삭제하여 다수의 서로 다른 네트워크 아키텍처를 갖는 것을 시뮬레이션할 수 있습니다. 이것은 드롭아웃이라고 불리며 모든 종류의 딥러닝 네트워크에서 과부하를 줄이고 일반화 오류를 개선하기 위한 매우 저렴하고 매우 효과적인 조절 방법을 제공합니다. 이 포스트에서, 여러분은 과적합을 줄이고 딥러닝 조직의 일반화를 개선하기 위한 드롭아웃 규칙의 사용을 이해하게 될 것입니다. 요약을 해드리면 다음과 같습니다. 뉴럴 네트워크의 큰 무게는 훈련 데이터를 초과하는 더 복잡한 네트워크의 표시입니다. 가능한 한 네트워크에서 노드를 삭제하는 것은 간단하고 효과적인 정규화 방법입니다. 더 많은 훈련과 체중 제한의 사용이 있는 대규모 네트워크는 드롭아웃을 사용할 때 제안됩니다. 상대적으로 작은 데이터 셋에 대해 훈련된 큰 신경 네트는 훈련 데이터를 초과할 수 있습니다. 이는 모델이 교육 데이터의 통계적 노이즈를 학습하는 효과가 있으며, 이로 인해 모델을 새 데이터로 평가할 때 성능이 저하됩니다. 과도한 채우기로 인해 일반화 오류가 증가합니다. 과도한 끼워 맞춤을 줄이는 한 가지 접근법은 동일한 데이터 세트에 가능한 모든 뉴럴 네트워크를 맞추고 각 모델의 예측 값을 평균화하는 것입니다. 이는 실제로는 불가능하며 앙상블이라는 서로 다른 모델의 작은 집합을 사용하여 근사치를 구할 수 있습니다. 무제한 연산을 사용하는 경우 고정 크기 모델을 정규화하는 가장 좋은 방법은 매개 변수의 모든 가능한 설정에 대한 예측을 평균화하고 각 설정을 훈련 데이터에서 후방 확률로 가중시키는 것입니다. 앙상블 근삿값의 경우에도 여러 모델을 적합하고 저장해야 한다는 문제가 있으며, 모델이 크고 교육하고 튜닝하는 데 며칠 또는 몇 주가 걸릴 경우 문제가 될 수 있습니다. 드롭아웃은 서로 다른 구조를 가진 다수의 뉴럴 네트워크를 병렬로 훈련시키는 것과 유사한 규칙화 방법입니다. 훈련 중에, 일부 레이어 출력물은 무작위로 무시되거나 제거됩니다. 이는 계층을 마치 노드 수와 이전 계층과의 연결이 다른 계층처럼 보이고 처리되는 효과가 있습니다. 실제로, 교육 중에 계층에 대한 각 업데이트는 구성된 계층의 다른 뷰로 수행됩니다. 장치를 제외한다는 것은 모든 들어오고 나가는 연결과 함께 네트워크에서 장치를 일시적으로 제거하는 것을 의미합니다. 드롭아웃(dropout)은 훈련 과정을 노이즈화 하는 효과가 있어서 한 계층 내의 노드들을 가능한 한 많이 혹은 적게 입력에 대한 책임을 떠맡게 합니다. 이러한 개념화는 네트워크 레이어가 결합되어 이전 레이어의 오류를 수정하고 모델을 보다 견실하게 만드는 경우를 시사합니다. 드롭아웃은 주어진 계층에서 희박한 활성화를 시뮬레이션하며, 이는 흥미롭게도 네트워크가 실제로 측면 효과로서의 밀접한 표현을 배우도록 장려합니다. 따라서, 오토 코딩 모델에서 밀집한 표현을 권장하기 위한 활동 규제화의 대안으로 사용될 수 있습니다. 드롭아웃 상태인 계층의 산출물은 무작위로 하위 샘플링되기 때문에, 훈련 중에 용량을 줄이거나 네트워크를 얇게 만드는 효과가 있습니다. 따라서 드롭 다운을 사용할 때 더 많은 노드와 같은 더 넓은 네트워크가 필요할 수 있습니다. 드롭아웃은 뉴럴 네트워크에서 계층별로 구현됩니다. 이것은 완전히 연결된 밀집 계층, 대류 계층, 그리고 긴 단기 메모리 네트워크 계층과 같은 반복되는 계층과 같은 대부분의 유형의 계층과 함께 사용될 수 있습니다. 드롭아웃(dropout)은 가시 계층 또는 입력 계층뿐만 아니라 네트워크의 모든 숨겨진 계층에 구현될 수 있습니다. 출력 계층에서 사용되지 않습니다. 드롭된 이라는 용어는 뉴럴 네트워크에서 단위를 삭제하는 것을 가리킵니다. 계층의 출력이 떨어지거나 역으로 계층의 출력이 유지되는 확률을 지정하는 새로운 하이퍼 매개 변수가 도입되었습니다. 이 해석은 논문과 코드 라이브러리에 따라 다를 수 있는 구현 세부 사항입니다. 일반적인 값은 숨겨진 계층에서 각 노드의 출력을 유지하기 위한 0.5의 확률이며, 가시적 계층에서 입력 값을 유지하기 위한 0.8과 같은 1.0에 가까운 값입니다. 적합한 네트워크를 사용하여 예측할 때는 교육 후에 드롭아웃을 사용하지 않습니다. 드롭아웃으로 인해 네트워크의 무게는 정상보다 더 커질 것입니다. 따라서 네트워크를 완성하기 전에 먼저 가중치는 선택한 드롭아웃 비율에 의해 척도가 정해집니다. 그런 다음 네트워크를 정상적으로 사용하여 예측할 수 있습니다. 웨이트 재예약은 미니 배치가 끝날 때마다 매번 업데이트한 후에 훈련 시간에 수행할 수 있습니다. 이를 역으로 드롭한다 라고도 하며 훈련 중에 웨이트(weights)를 수정할 필요가 없습니다. 케라스와 파이 토치에서 깊이 있는 학습 라이브러리 모두 이런 방식으로 드롭아웃을 구현한다. 드롭아웃은 실제로 잘 작동하며, 아마도 웨이트 조절 및 활동 조절의 필요성을 대체할 수 있습니다. 드롭아웃 하이퍼 포머의 기본적인 해석은 한 계층에서 주어진 노드를 훈련시킬 확률입니다. 여기서 1.0은 드롭아웃을 의미하지 않고 0.0은 해당 계층에서 출력이 없음을 의미합니다. 숨겨진 층에 떨어뜨리기 위한 좋은 가치는 0.5와 0.8 사이입니다. 입력 레이어는 0.8과 같이 더 큰 드롭아웃 속도를 사용합니다. 여기까지 드롭아웃에 대해서 자세하게 알아보았는데요? 사실 내용은 파고들면 더 많습니다. 그러나 내용이 너무 길어지면 지루할 수 있으니 다음 글에서 다시 이어가도록 하겠습니다. 감사합니다.

Leave a Comment