본문 바로가기

ML-DL/Base

패딩, 스트라이드, 파라미터 개수 계산, 배치 정규화, 드롭아웃

# 갑자기 개념이 헷갈리는 순간을 위해 정리해놓음

 

  • 합성곱 신경망에서는 뉴런[노드]을 filter 혹은 kernel 이라고 부름
  • 패딩 : 입력 배열 주위를 가상 원소로 채우는 작업
    • 실제 입력값이 아니라서 패딩은 0으로 채움
    • 계산에 영향을 미치지 않으면서 입력과 출력 데이터의 크기를 동일하게 만들 수 있음 [ = same padding]
      • same padding의 출력 크기 : [입력 높이 / 스트라이드 , 입력 너비 / 스트라이드 , 필터 개수]
    • 모서리에 중요한 정보가 있다면 패딩 없으면 feature map에 잘 전달되지 않음 [가중치와 한번밖에 안 곱해지기 때문]
  • 스트라이드 : 이동 개수
    • 스트라이드가 커질 수록 커널 수가 줄어들고, featuer mapd의 크기는 더 작아진다.
  • 파라미터 개수 계산법
    • 1. Convolutional Layer의 경우
      • 필터의 크기 & 필터의 채널 수 & 필터의 개수에 의존
      • convolution 적용할 필터의 한 변의 크기 F_length
      • convolution 입력 채널 수 : C
      • 출력 채널 개수 [= 다음 층의 채널 수] : N
      • bias : 1
      • parameter = $(F_{length} * F_{length} * C + 1) * N$
    • 2. Fully Connected Layer의 경우
      • 2-1. 직전 층이 Convolutional Layer일 경우
        • 필터의 크기 & 필터의 채널 수 & 필터의 개수에 의존
        • 필터 관한 파라미터에 Fully-connected Layer의 노드 수 곱하면 됨
        • 입력 이미지의 한 변의 크기 : $I_{length}$
        • 입력 이미지의 수 : $I_n$
        • 입력 이미지의 채널 수 : $I_c$
        • 현재 층의 노드 수 : $N_{node}$
        • bias : 1
        • parameter = $(I_{length} * I_{length} * I_c * I_n + 1) * N_{node}$
      • 2-2. 직전 층이 Fully-connected Layer일 경우
        • 현재 층의 노드 수 : $FC_i$
        • 직전 층의 노드 수 : $FC_{(i-1)}$
        • bias : 1
        • parameter = $(FC_{(i-1)} + 1) * FC_i$   [모든 노드들이 연결되어 있는 상황을 계산]
  • 손실 함수가 NaN을 반환하기 시작하면 가중치가 overflow 발생시킬만큼 커졌다는 뜻 [ = gradient exploding]
    • 입력 데이터를 스케일 조정하는 이유[0~255 사이의 픽셀 값 대신 -1~1 사이의 값으로 조정]가 gradient exploding을 막기 위해서인데, 훈련될수록 가중치값이 랜덤한 초기값과 멀어지기 때문에 무너짐 = 공변량 변화 [covariate shift]
    • 해결 방법
      • 배치 정규화 [batch normalization] : 배치에 대해 각 입력 채널별로 평균과 표준 편차를 계산한 다음 평균을 빼고 표준 편차로 나누어 정규화
        • 예측할 때는? 샘플이 하나라서 계산할 배치가 없음. 훈련과정에서 이동평균[moving average]을 저장해놓고 이를 사용
  • 드롭아웃 [drop out] : overfitting 문제를 해결하기 위해 regularization 사용 [= 과대적합되면 벌칙 부여]
    • 배치 정규화도 overfitting을 감소시킨다고 알려져 최근에는 드롭아웃 전혀 사용 x

 

 

Parameter 개수 & 출력 이미지 크기 계산

📝이 포스트는 Parameter 개수와 출력 이미지 크기를 계산하는 법에 대해 알아보겠습니다.

velog.io

 

[인공지능][개념] 합성곱 신경망(CNN) - 패딩(Padding)과 스트라이드(Strides), 풀링(Pooling) 완전정복하

합성곱 신경망 (CNN - Convolutional Neural Network) 합성곱 신경망(CNN)은 이미지 데이터를 분류할 때 효과적인 딥러닝이다. 예를 들어, 숫자 이미지를 학습시켜 무슨 숫자인지를 맞춘다거나, 여러 옷 이

itstory1592.tistory.com