[딥러닝] 성능향상(배치 정규화)

Peter·2021년 7월 7일
0

딥러닝

목록 보기
24/47

배치 정규화의 필요성

공변량 변화 현상

  • 트레이닝셋과 테스트셋의 확률분포가 다름

  • 학습이 두세번 진행되면서 첫번째 층의 매개변수가 변화함에 따라 분포가 달라짐
  • 그 달라진 분포가 다음층으로 넘어가면서 또 변화가 일어남
  • 층2, 층3, ...으로 깊어짐에 따라 더욱 심각
  • 학습을 방해하는 요인으로 작용

배치 정규화(batch normalization)

  • 공변량 시프트 현상을 누그러뜨리기 위해 정규화를 층 단위 ㅈ거용하는 기법

  • 입력 또는 중간 결과 z 중 z에 적용하는 것이 유리
  • 일반적으로 완전연결층, 합성곱층 후 혹은 비선형 함수 전 적용시킴
  • 훈련집합 전체 또는 미니배치중 미니배치에 적용하는 것이 유리

배치 정규화 과정

  • 미니배치 단위로 평균과 분산 계산
  • 구한 평균과 분산을 통해 정규화
  • 비례(감마, 크기를 결정하는 값, 스케일)와 이동(베타, 편향성을 결정, 좌우로 움직여서 0점 맞춰줌) 세부 조정

배치 정규화 장점

  • 신경망의 경사도 흐름 개선
  • 높은 학습률 허용
  • 초기화에 대한 의존성 감소
  • 의도하지 않았지만 규제와 유사한 행동을 하며, 드롭아웃의 필요성을 감소시킴

정규화 변환을 수행하는 코드

미니배치 단위

미니배치 단위로 노드마다 독립적으로 아래 코드 수행(감마, 베타 값을 구하기 위해)


미니배치 입력에 가중치와 바이어스텀을 연산한 값에 아래 코드를 수행
감마와 베타는 노드마다 고유한 매개변수이기 때문에 학습으로 알아냄

  1. 미니배치 평균

  1. 미니배치 분산

  1. 정규화

  1. 비례(scale)와 이동(shift)

전체훈련집합 단위

각 노드는 전체 훈련집합을 가지고 독립적으로 아래 코드를 수행

  1. 전체훈련집합 평균

  1. 전체훈련집합 공분산

각 노드에 전체훈련집합의 평균, 공분산, 그 노드에 해당하는 감마(스케일), 베타(좌우 0점맞추기)값을 저장

예측 단계

  • 전체훈련집합 평균과 공분산, z에 대항하는 미니배치의 감마와 베타 값을 활용해서 최정 정규화를 진행

CNN에서 배치정규화

  • CNN에선 노드 단위가 아닌, 특징 맵 단위로 정규화과정 적용
  • 특징 맵의 크기가 p*q라면 미니배치에 있는 샘플마다 pq개의 값이 발생
  • 코드1은 총 pqm개의 값을 가지고 미니배치 평균, 공분산을 계산
  • 감마와 베타는 특징 맵마다 하나씩 존재

배치 정규화의 긍정적 효과 실험사례

  • 가중치 초기화에 덜 민감함
  • 학습률을 크게 하여 수렴 속도 향상 가능
  • sigmoid활성함소로 사용하는 깊은 신경망도 학습이 이루어짐
  • 의도하지 않은 규제효과가 생겨 드랍아웃을 적용하지 않아도 높은 성능을 보여줌

다양한 정규화 방법들

  • 피처맵 단위 -> 배치노멀라이제이션
  • 필터로 생성된 맵 단위 -> 레이어 노멀라이제이션(RGB같은 채널)
  • 요소 하나하나는 인스턴스 노멀라이제이션
  • 이 모든 것을 섞어서 사용하는 그룹 노멀라이제이션
profile
컴퓨터가 좋아

0개의 댓글