728x90

1. Convolution

2개 함수를 잘 섞어주는 오퍼레이터로서 정의한 것

  • Continuous convolution(연속형)

  • Discrete convolution(이산형)

  • 2D image convolution
    • I : 전체 이미지
    • K : 필터

2D convolution in action

2D 컨볼루션을 한다는 말은 변환하려는 이미지를 특정한 필터에 찍어서 해당 필터가 적용된 이미지로 변환한다는 의미

2. RGB Image Convolution

  • 필터가 1개이면 출력 이미지의 필터도 1개이므로 흑백이미지이다.
  • 아래의 결과 피쳐 맵을 보면 28*28*3이 아닌 28*28*1인 것을 알 수 있다.

  • 결과 피쳐맵의 채널이 4개이려면 4개의 5*5*3짜리 필터가 필요

3. Convolutional Neural Networks

  • CNN은 컨볼루션 레이어(convolution layer), 풀링 레이어(pooling layer), 완전연결 레이어(fully connected layer)로 이뤄져 있다.
  • 컨볼루션 레이어와 풀링 레이어 : 이미지에서 유용한 정보를 뽑아냄
  • 완전 연결 레이어 : 분류, 수치 예측 등 요즘은 fully connected layer를 없애거나 최소화시키는 추세(학습 파라미터 수(이것이 클수록 학습이 어렵고 일반화가 어렵다.) 크게 의존하지 않기 위함)

4. 스트라이드(stride)와 패딩(padding)

패딩

원하는 크기의 출력 데이터를 얻기 위해 패딩, 스트라이드 등을 적용한다. 패딩은 입력 데이터 주변을 특정 값(예컨대 0)으로 채우는 처리이다. 폭 N짜리 패딩을 적용했다면 입력 데이터 사방 N개 픽셀을 특정 값으로 채운다. 그럼 출력 데이터의 크기가 기존에는 (M, M) 이었다면, N짜리 패딩 적용 후 (M+2N, M+2N) 짜리 특징 맵을 출력한다.

따라서 패딩은 출력 크기 조정 시 주로 쓰인다. 합성곱 연산을 할 때마다 출력 데이터 크기가 작아지면 어느 시점에서 출력 크기가 1이 되어 버린다. 이는 곧 더 이상 합성곱 연산을 적용할 수 없다는 뜻이다. 패딩을 설정하면 입력 데이터의 공간적 크기를 고정한 채로 다음 계층에 전달할 수 있다.(물론 줄이거나 키우는 것도 가능하다.)

스트라이드

필터를 적용하는 위치의 간격을 스트라이드라 한다. 스트라이드를 N으로 설정하면 필터를 적용하는 윈도우가 N칸씩 이동한다. 패딩을 크게 하면 출력 크기가 커진 데에 반해 스트라이드를 크게 하면 출력 크기가 작아진다.

  • 입력 크기 : (H, W)
  • 필터 크기 : (FH, FW)
  • 출력 크기 : (OH, OW)
  • 패딩 : P
  • 스트라이드 : S

3차원 데이터의 합성곱 연산

  • 입력 데이터와 필터의 합성곱 연산을 채널마다 수행
  • 주의점 : 입력 데이터의 채널 수 = 필터의 채널 수
  • 필터 자체의 크기(커널의 크기)는 원하는 값으로 설정 가능

5. Exercise

컨볼루션 레이어(빨강색으로 이어지는 레이어들)에 비해 dense 레이어(파란색으로 이어지는 레이어들)가 1000배 더 큰 파라미터 수를 가진다.

→ 파라미터를 줄이려면 컨볼루션 레이어를 많이 쌓고 dense레이어(fully connected layer)를 줄여야 한다.

→ 그럼 컨볼루션 레이어는 늘고, 파라미터 수는 줄고 성능은 높이게 된다.

6. 1 X 1 Convolution

1개의 픽셀로 채널 방향으로 크기를 줄이는 역할을 한다.

  • 사용 이유
    • 차원 축소 목적
    • 층은 깊게 하면서 동시에 파라미터 수는 줄이기 위해
    • e.g., bottleneck architecture : 1*1 컨볼루션을 통해 신경망을 더 깊게 쌓으면서, 파라미터주는 줄일 수 있게 됨

 

 

추가학습

1. convolution 의 수식이 잘 와닿지가 않는다. 추가적으로 학습할 것.

728x90