Chapter 16 structured probabilistic models for deep learning - 1
Chapter 7 Regularization for deep learning - 3
1. 7.11 배깅과 기타 앙상블 학습법
(다음장의 드랍아웃 공부에 배깅의 개념이 필요)
배깅(Bootstrap Aggregating) :
여러 모델을 결합 -> 일반화 오차를 줄일 수 있음
여러 모델들의 예측을 동시에 고려하는 것이 일반화에 좋은 이유
각 모델들에 의한 예측이 서로 다른 오차를 갖기 때문.
배깅과 같은 앙상블 기법은 거의 대부분의 경우 일반화 오차를 줄일 수 있는 강력하고 믿을 만한 방법
2. 7.12 Dropout
Dropout이란?
- 하나의 샘플을 훈련할 때마다 각각의 노드를 확률적으로 삭제하는 것. (출력유닛은 삭제x)
- 큰 모델의 정칙화를 위한 강력하고 계산비용이 낮은 방법.
- 많은 뉴런들로 구성된 신경망 모델의 내부에서 배깅과 유사한 효과를 얻을 수 있게 함.
3. 7.12 Dropout
신경망에서 유닛을 삭제하여 얻을 수 있는
모든 부분망을 학습하고, 실전에서는 모든
부분망을 동시에 사용함. -> 배깅과 유사.
But 신경망이 커질수록 생성될 수 있는 부
분망의 가짓수는 지수적으로 증가하여 현실
적으로 모든 부분망을 학습하는 것은 불가
능.
배깅과 달리, 드롭아웃에서는 모델들이 매
개변수(w, b)를 공유
=> 극히 일부의 부분망들에 대한 학습만으
로 다른 부분망들도 적절한 매개변수 값을
갖게 됨.
4. 7.12 Dropout
그럼 드롭아웃이 가져오는 구체적인 효과를 알아보자.
이를 명확하게 알기 위해 모델은 확률분포 𝑝 𝑦 𝒙 를 출력 한다고 생각해보면..
배깅
각 모델 𝑖가 𝑝 𝑖
𝑦 𝒙 를 출력.
전체모델의 출력:
𝑝 𝑦 𝒙 =
1
𝑘
𝑖=1
𝑘
𝑝 𝑖 (𝑦|𝒙)
드롭아웃
각 부분망은 𝑝 𝑦 𝒙, 𝝁 를 출력.
전체모델의 출력:
𝑝 𝑦 𝒙 =
𝝁
𝑝(𝝁)𝑝(𝑦|𝒙, 𝝁)
𝝁 : 2진 마스크 벡터.
각 유닛들에 대해 확률적으로 부여한 이진수를 저장.
0이면 해당 유닛 삭제
- 각 마스크가 하나의 부분망을 표현
- 전체모델의 출력은 모든 가능한 마스크에 대해 각 마
스크가 만들어질 확률과, 그때의 부분망의 출력값을
곱하여 모두 더한 것.
- 지수적으로 많은 항이 포함되지만 10~20개정도의 마
스크만을 사용해서 이에 근사하는 계산값을 얻음.
5. 7.12 Dropout
즉, 각 개별 유닛의 관점에서 볼 때,
드롭아웃은 모든 유닛을 포함하면서 각 유닛 i에서 나가는 방향의 가중치들에
유닛 i가 포함될 확률을 곱한 하나의 모델의 출력값 𝑝 𝑦 𝒙 를 계산함으로써 앙
상블에 근사하는 효과를 내는 것. (가중치 비례 추론 규칙)
i
𝑤𝑖 ∗ 𝑝(포함)
6. 7.12 Dropout
각 노드가 속할 확률을 0.5로 하여 드롭아웃을 적용 할 신경망에 비선형성이 없는 경
우, 드롭아웃 적용하지 않고 모델을 훈련시킨 뒤 모든 가중치에 0.5를 곱하면 정확히 같
은 효과가 발생.
비선형성이 존재할 경우, 가중치 비례 추론 규칙에 근사하는 효과를 얻을 수 있음.
(이론적 증명 아직 없음)
i
𝑤𝑖 ∗ 𝑝(포함)
7. 7.12 Dropout
드롭아웃의 장점
1. 계산 비용이 아주 낮음
2. 적용할 수 있는 모델이나 훈련절차에 별다른 제한이 없음
그 외
1. 선형신경망에서 드롭아웃은 각각 다른 λ를 갖는 L2가중치 감쇄와 동일하다.
2. 이진 마스크가 아닌 실수값을 갖는 마스크를 가중치들에 곱했을 때 더 나은 성과를 얻을 수도 있다.
8. 7.12 Dropout
드롭아웃의 직관적 이해
레이어2의 한 노드가 코를 탐지함
그 노드를 삭제하고 다른 노드들을 훈련시킨다는 것은?
코에 완전히 의존하지 않고 다른 특징들을 통해서도
얼굴을 탐지할 수 있게 모델을 훈련시키는 것.
9. 7.13 대립 훈련
대립 견본: 원본 데이터와 유사(사람
이 보기에)하지만 모델에서 전혀 다
른 아웃풋이 출력되는 데이터.
대립 훈련: 훈련데이터에 인위적으
로 노이즈를 가한 데이터를 포함하
여 신경망을 훈련하는 것.
대립훈련의 핵심 아이디어
서로 다른 클래스들은 대부분의 경우 연결되지 않은 manifold상에 놓
여있으며, 작은 변화를 준다고 해서 다른 클래스의 manifold로 변화되
지 못할 것이다.
10. 7.14 Tangent Distance, Tangent Prop, and Manifold Tangent Classifier
Manifold:
한 위치에서 그에 이웃한 위치로 이동하는 변환이 실제로 존재하는 영역
같은 클래스는 같은 manifold 상에 존재할 것.
Manifold의 접선벡터를 사전에 정의하여 manifold에서 벗어날 수록 출력값이 달라지고,
Manifold상에서 움직일 땐 출력값이 달라지지 않는 벌점항을 모델에 부여