[Andrew Ng] 2-2. Dropout Regularization

Prettypotato·2026년 2월 15일

Dropout regularization

  • 노드를 삭제할 확률을 설정 후, 노드를 삭제. 그 후 노드에 들어가는 링크나 나가는 링크를 모두 삭제함.
  • 네트워크에 통과 시킬 때마다 죽일 노드를 다시 선택함.
  • 더 작고 간소화된 네트워크가 만들어짐.
  • Dropout이 왜 효과가 있는가?
    • random으로 노드를 삭제 시키기에, 하나의 특성에 의존하지 못하게 만듬. 가중치가 다른 곳으로 분산함.
    • 노드가 필요 이상으로 많다면 loss를 잘 줄이지만 기계적으로 정답을 맞추는 경향이 있음. Dropout을 적용하여 각 노드가 의미있는 특징을 뽑을 수 있도록 함.
  • 우선적으로 cost function이 좋은 함수인지 확인 해야 한다. 따라서 우선 drop out을 사용하지 않고, cost function이 단조 감조인지 확인 후에 사용해야 한다.
  • Train 할 때만 Drop out을 사용하고, Test 할 때는 Drop out을 사용하지 않는다 !

Implementing dropout (”Inverted dropout”)

  • drop out vector of layer 3 ⇒ d3
    • d3 = np.random.rand(a3.shape[0],a3.shape[1]) < keep.prob
      • keep.prob가 0.8이면 node가 삭제될 확률은 0.2다.
    • a3 = np,multply(a3,d3)
      • d3를 곱해서 a3의 몇개의 원소를 0으로 만듬.
    • a3 /= keep.prob
      • a3의 기대값을 유지시키는 것
      • 이전 layer의 뉴런의 0.5 확률로 꺼졌다면.. 현재 layer의 neuron들이 받는 입력 또한 반으로 줄었을 것. 따라서 남은 neuron들의 출력을 2배 scaling 하여 입력 값을 유지.

출처 및 참고 자료

  • Andrew Ng, Improving Deep Neural Network, DeepLearningAI
  • 혁펜하임, Easy! 딥러닝

0개의 댓글