본문 바로가기
Experience/- KT AIVLE School

KT AIVLE School 7주차 정리 - CNN's Layers 정리

by Yoojacha 2023. 3. 13.

강사님께서 연결주의 관점에서 설명해주시면서 함수로 묶어 하나의 레이어 처럼 인식하게 하면서 인간이 이해하기에 직관적인 느낌이 있었습니다. 그런데 이런 레이어들이 꽤 종류가 많아서 한번 정리를 해보고자 했습니다!


Convolutional Layer

  1. 이미지 구조를 파괴하지 않으면서 데이터의 크기 축소
  2. 위치 정보를 보존
  3. Feature Map 생성

Stride

  1. 꼭지점 쪽 정보를 반영이 덜되는 문제 발생
  2. Feature Map을 훑는 간격 설정
model.add( Conv2D(filters=32,               # feature map 의 수 이후 폭, 혹은 filter의 개수 [(이전 폭 - filtermap 폭) / 스트라이드 크기 + 1] -> 다음 레이어의 깊이 -> 필터의 커널의 개수
                  kernel_size=(3, 3),       # filter size 3x3
                  stride=(1,1),             # filter의 훑는 간격
                  padding='same',           # or 'valid' | 이미지에 상하좌우로 페딩을 주어서 아웃풋의 가로세로폭 유지 (Zero Padding)
                  input_shape=(28, 28, 1)   # (행, 열, 채널 수), 인풋레이어 대신 사용 가능
                  activation='relu') )      # 활성화 함수 ('linear' | 'softmax' | 'sigmoid' | 'relu' | 'swish')

Max Pooling (Down Sampling)

  1. 연산량을 줄이기 위해 depth는 그대로 두고
  2. pool_size 에 따라 나오는 레이어의 가로 세로폭 축소
# 2x2 사이즈의 영역을 1x1로 바꾸되 가장 큰 수를 가져와서 연산량을 줄인다.
model.add( MaxPool2D(pool_size=(2, 2)) )

BatchNormalization

  • 배치 단위로 학습할 때 hidden layer의 과정에서 발생하는 문제점 (Internal Covariant Shift)
  • 데이터의 분포가 달라진다라고 주장
  • 이를 개선하는 방법으로 batch normalization 사용하여 데이터의 분포를 정규분포를 따르도록 만들어준다.
  • feature scale이 다르면 gradient descent를 했을 때 피처별로 gradient 편차가 지거나 작아져서 exploding gradient , vanishing gradient 문제가 일어난다.
  • hidden layer -> activation -> BatchNormalization 순으로 했을 때 성능이 좋다고 경험적으로 결론이 남

https://gaussian37.github.io/dl-concept-batchnorm/

 

배치 정규화(Batch Normalization)

gaussian37's blog

gaussian37.github.io

model.add(BatchNormalization())

Dropout

  • Accuracy가 1에 가까워지면서 val_accuracy가 더이상 올라가지 않는 과적합이 발생했을 때에 적용을 고려하기
  • 학습 과정에 생긴 연결고리(간선)들을 일부 랜덤하게 설정한 비율에 맞게 제거한다. (과적합 해결 혹은 모델의 robust 유지)
model.add(Dropout(0.25))

Flatten

  • 데이터를 1차원으로 쭉 풀어준다.
model.add( Flatten() )

참고

 

컨볼루션 신경망 레이어 이야기

이번 강좌에서는 컨볼루션 신경망 모델에서 주로 사용되는 컨볼루션(Convolution) 레이어, 맥스풀링(Max Pooling) 레이어, 플래튼(Flatten) 레이어에 대해서 알아보겠습니다. 각 레이어별로 레이어 구성

tykimos.github.io

 

댓글