드롭 아웃 ( paper , description )은 일부 뉴런의 출력을 0으로 설정합니다. 따라서 MLP의 경우 아이리스 플라워 데이터 세트에 대해 다음 아키텍처를 가질 수 있습니다 .
4 : 50 (tanh) : dropout (0.5) : 20 (tanh) : 3 (softmax)
다음과 같이 작동합니다.
함께 , , , , (단순화를위한 바이어스 무시) W 1 ∈ R 50 × 4 D ∈ { 0 , 1 } 50 × 1 W 2 ∈ R 20 × 50 W 3 ∈ R 20 × 3
함께 및
여기서 동작 곱하여 와 포인트 - 방식 (참조 마드 제품 ).
따라서 매번 행렬 샘플링하기 때문에 드롭 아웃은 노드가 0으로 곱해집니다.
그러나 CNN의 경우 정확히 무엇이 빠졌는지 명확하지 않습니다. 세 가지 가능성을 볼 수 있습니다.
- 완전한 기능 맵 삭제 (따라서 커널)
- 커널의 한 요소를 삭제 (커널의 요소를 0으로 대체)
- 기능 맵의 한 요소 삭제
답변에 참조 / 견적을 추가하십시오.
내 생각
Lasagne는 (3)을 수행한다고 생각합니다 ( 코드 참조 ). 이것은 가장 간단한 구현 일 수 있습니다. 그러나 원래 아이디어에 더 가까운 것은 (1) 일 수 있습니다.
Caffe와 비슷한 것 같습니다 ( code 참조 ). tensorflow의 경우 사용자가 결정해야합니다 ( 코드 - noise_shape=None
전달 될 때 어떤 일이 발생하는지 잘 모르겠습니다 ).
어떻게해야합니까
(2)와 (3)은 네트워크가 공간 위치에 불균형을 추가하게 만들 수 있으므로 바람직하지 않습니다. 따라서 (1)이 유일한 변형입니다. 그러나 기본 구현을 사용하면 어떻게 될지 잘 모르겠습니다.