BN 과 Dropout 가 공동으로 사용 할 때 발생 하 는 문 제 를 해결 합 니 다.

3317 단어 BNDropout
BN 과 Dropout 의 공동 사용 에 문제 가 생 겼 습 니 다.
BN 과 Dropout 를 단독으로 사용 해도 통합 가속 훈련 속 도 를 줄 일 수 있 지만,함께 사용 하면 1+1>2 효과 가 나타 나 지 않 고,반대로 단독으로 사용 하 는 것 보다 더 나 쁜 효 과 를 얻 을 수 있다.
관련 연구 참고 논문:Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift
본 논문 의 저 자 는 Dropout 와 BN 간 의 충돌 을 이해 하 는 관건 은 네트워크 상태 전환 과정 에서 신경 분산(neural variance)의 불일치 행위 가 존재 한 다 는 것 을 발견 했다.
그림 1 의 신경 응답 X 가 있 으 면 네트워크 가 훈련 에서 테스트 로 바 뀌 었 을 때 Dropout 는 무 작위 생존 율(즉 p)을 통 해 응답 을 크기 조정 하고 학습 에서 뉴 런 의 방 차 를 바 꿀 수 있 으 며 BN 은 X 의 통계 슬라이딩 방 차 를 유지 하고 있다.
이러한 분산 이 일치 하지 않 으 면 수치 가 불안정 할 수 있다(아래 그림 의 빨간색 곡선 참조).
네트워크 가 깊 어 지면 서 최종 예측 수치 편차 가 누적 되 어 시스템 의 성능 을 떨 어 뜨 릴 수 있다.
간단하게 말하자면,작가 들 은 이 현상 을'방 차 편 이'라 고 명명 했다.
사실 Dropout 가 없 으 면 실제 피 드 의 뉴 런 방 차 는 BN 이 누적 한 미끄럼 방 차 와 매우 가깝다(아래 그림 의 파란색 곡선 참조).이것 은 비교적 높 은 테스트 정확 도 를 보장 한다.


저 자 는 이런 한 계 를 어떻게 깨 뜨 릴 것 인 가 를 모색 하기 위해 두 가지 전략 을 채택 했다.
하 나 는 모든 BN 층 뒤에 Dropout 를 사용 하 는 것 이 고,다른 하 나 는 Dropout 의 공식 을 수정 하여 분산 에 그다지 민감 하지 않 게 하 는 것 이다.바로 고 스 Dropout 이다.
첫 번 째 방안 은 비교적 간단 하 다.
드 로 풋 을 모든 BN 층 뒤에 두 면 된다.이렇게 하면 방 차 편 이 문제 가 생기 지 않 지만,사실은 문 제 를 회피 하 는 느낌 이 든다.
두 번 째 방안
Dropout 원문 에서 언급 한 고 스 Dropout 는 Dropout 형식 에 대한 확장 이다.저 자 는 고 스 드 로 풋 을 한층 더 넓 히 고 드 로 풋 을 고 르 게 분포 하 는 것 을 제시 했다.이렇게 하면 좋 은 점 은 바로 이 형식의 드 로 풋(일명'Uout')상대방 의 차 이 를 나타 내 는 민감 도가 낮 아 졌 다 는 것 이다.전체적으로 보면 전체적인 편차 가 그렇게 심각 하지 않다 는 것 이다.
BN,dropout 의 몇 가지 문제 와 사고
1.BN 의 scale 초기 화
scale 은 일반적으로 1.0 으로 초기 화 됩 니 다.
가중치 초기 화 를 연상 할 때 relu 활성화 함 수 를 사용 할 때 무 작위 정태 분포 초기 화 가중치 의 공식 은 sqrt(2.0/nin)이 고 그 중에서 Nin 은 입력 노드 수 입 니 다.즉,일반적인 방법 보다 2 의 제곱 근 이 큰 것 이다.
그렇다면 relu 전 BN 은 scale 을 루트 2 로 초기 화 하 는 것 도 훈련 을 가속 화 할 것 인가?
여기 서 주로 의문점 이 하나 있다.BN 의 한 목적 은 각 층 의 방 차 를 통일 시 켜 하나의 통 일 된 학 습 률 을 적용 하 는 것 이다.그러면 sigmoid,relu 등 여러 가지 네트워크 가 동시에 존재 한다 면 상기 방법 은 서로 다른 학습 율 에 적응 하 는 효과 로 통일 방 차 를 할인 하지 않 을 까?
미 처 실험 효 과 를 보지 못 했 습 니 다.해 본 친구 가 있 으 면 효 과 를 알려 주세요.
2.dropout 후의 표준 차 변화 문제
실천 에서 droptut 을 발견 한 후에 데이터 의 표준 차 이 를 바 꾸 었 다.(표준 차 이 를 크게 만 들 고 데이터 의 평균 값 이 0 이 아니면 심지어 평균 값 도 달라 질 수 있다).
BN 을 동시에 사용 했다 면,BN 은 훈련 시 훈련 집의 평균치 와 기준 차 를 보 존 했 기 때문이다.dropout 는 저 장 된 평균 값 과 표준 차 의 정확성(미래 예측 데이터 의 수요 에 적응 하지 못 함)에 영향 을 주 고 네트워크 의 정확성 에 영향 을 줄 것 이다.
입력 데이터 가 정태 분포 라면 dropout 후 sqrt(0.5)를 곱 하면 원래 의 표준 차 이 를 회복 할 수 있 습 니 다.그러나 0 이 아 닌 평균 값 변화 와 비정 태 분포 데이터 에 대해 서 는 어떤 좋 은 방법 으로 해결 할 수 있 습 니까?
3.희소 자체 코드 의 희소 계수
희소 한 자체 코딩 은 0 에 가 까 운 추가 벌칙 인 자 를 사용 하여 은 층 의 대부분 노드 를 억제 하고 본질 적 으로 은 층 의 출력 평균 값 을 마이너스(활성화 전)로 한다.예 를 들 어 벌칙 인 자 는 0.05 이 고 sigmoid 에 대응 하 는 입력 은-3.5 이다.즉,은 층 활성화 전의 출력 중간 값 은-3.5 이다.그러면 활성화 전에 BN 을 한 층 추가 할 수 있 는 지,베타 는-3.5 로 설정 할 수 있다.이렇게 하면 비교적 빨리 배 울 수 있 습 니까?
테스트 를 통 해 BN 의 베 타 를 마이너스 로 설정 하면 훈련 속 도 를 높 일 수 있다.네트워크 가 초기 화 될 때 는 드 물 기 때문이다.
그러나 부작용 이 있 는 지 이론 적 인 연구 가 없다.
4.max pooling 은 비 선형 이 고 avg pooling 은 선형 이다.
총결산
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기