모두야

CH7) 합성곱 신경망 ( CNN ) 본문

밑.시.딥/1권

CH7) 합성곱 신경망 ( CNN )

미미밍2 2021. 7. 25. 03:00
반응형

합성곱 신경망 Convolutional Neural Network (CNN)

 

CNN 네트워크 구조 살펴보기

- 계층 조합

- 합성곱 계층 (convolutional layer)

- 풀링 계층 (pooling layer)


지금까지 본 신경망은, 인접하는 계층의 모든 뉴런과 결합되어 있었다. [ 완전 연결 (fully-connected 전결합) ]

완전히 연결된 계층을 [ Affine 계층 ] 이라고 구현하였다.

완전 연결 계층 (Affine 계층)으로 이뤄진 네트워크

층이 5개인 완전 연결 신경망이다.

완전연결 신경망은 Affine 계층 뒤에 활성화 함수를 갖는 ReLu 계층 (or Sigmoid 계층)으로 이어진다.

Affine-ReLu 조합이 4개, 마지막 Affine 계층+Softmax 계층을 통해 최종 결정 (확률)을 출력한다.


CNN으로 이뤄진 네트워크 (합성곱,풀링계층 추가)

CNN에는 합성곱Conv와 풀링 계층 Pooling 이 추가된다. 

[ Conv - ReLu - (Pooling) ] 흐름으로 연결 된다.

출력에 가까운 층에서는, Affine+ReLu 를 사용할 수 있다.

마지막 층에서는, Affine+Softmax 를 유지한다. 


7.2 합성곱 계층

CNN에는 패딩padding, 스트라이드stride 라는 용어가 있다.

각 계층 사이에, 3차원 데이터같은 입체적인 데이터가 흐른다는 점에서 완전연결 신경망과 다르다.

 

CNN에서 사용하는 합성곱 계층의 구조를 살펴보자

완전연결 계층의 문제점

지금까지 본 신경망은 완전연결 계층 (Affine 계층) 이였다.

완전연결 계층에서는 인접하는 계층의 뉴런이 모두 연결되고, 출력의 수는 임의로 정하였다. 

문제점?

데이터의 형상이 무시된다!!

 

입력데이터가 이미지일 경우, (가로,세로,채널(색상))으로 구성된 3차원 데이터이다. 

완전 연결 계층으로 넣을 때는 1차원으로 넣어야함ㅜ

MNIST도 (1,28,28)인데 784개의 데이터로 Affine 계층에 입력하였다.

 

합성곱 계층은 형상을 유지한다.

이미지를 3차원으로 받고, 다음 계층으로도 3차원 데이터로 전달한다.

 

CNN에서는 합성곱 계층의 입출력 데이터특징맵 (feature map)이라고 한다.

합성곱 계층의 입력 데이터를 입력 특징맵 (input feature map), 출력 데이터를 출력 특징 맵 (output feature map)이다.


합성곱 연산

합성곱 계층에서 합성곱 연산을 처리한다.

합성곱 연산 : 이미지 처리에서 말하는 필터 연산이다. 

입력 데이터 * 필터 (커널) = 출력

합성곱 연산

-> 필터의 윈도우(window)를 일정 간격 이동하며 입력 데이터에 적용

 

[ 단일 곱셉 누산 FMA ]

입력과 필터에 대응하는 원소끼리 곱한 후 총합을 구한다. 

그 결과를 출력의 장소에 저장한다. 

이 과정을 모든 장소에 대하여 수행하면 합성곱 연산의 출력이 완성된다.

 

 

 

 

 

 

완전연결 신경망

=> 가중치 매개변수 W, 편향 b

 

CNN

필터의 매개변수 = 가중치 W

편향도 존재한다. 편향은 항상 (1X1)이다.


패딩 ( Padding )

입력 데이터 주변을 특정값으로 채운다.

     주변으로 한 칸씩 늘렸으니 패딩=1 이다.

출력 크기를 조정할 목적이다.

-> 합성곱 연산을 반복하면, 크기가 점점 작아진다. 

=> 패딩을 이용하여 입력 데이터의 크기를 고정하고, 다음 계층으로 전달한다. 


스트라이드 ( Stride )

필터를 적용하는 간격 

스트라이드=2 라면, 윈도우가 두 칸씩 이동한다. 


스트라이드 ↑, 출력 크기 ↓

패딩 ↑, 출력크기 ↑

 

계산법

 

정수 값으로 떨어져야 한다. 

 

반올림 등으로 구현하자. 아니면 오류 발생

 

 

 

 

 

 


3차원 데이터 합성곱 연산

 

 

입력 데이터의 채널 수와 필터의 채널 수가 같아야 한다. 

 

 

입력 데이터와 필터의 합성곱 연산을 채널마다 수행한다. 그 결과를 더하여 하나의 출력으로 나타낸다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

블록 모양으로 살펴보면 ( C, H, W )의 형상으로 ( 채널, 높이, 너비 ) 로 3차원 데이터를 다차원 배열로 나타낸다.

출력 = 특징맵은 채널이 1이다. 

다수의 채널로 출력을 내보내고 싶다면 어떻게 할까 ?

=> 필터 (가중치)를 많이 사용하자.

필터를 FN개 적용하면 출력맵도 FN개 생성된다. 

 

합성곱 연산에서 필터의 수도 고려해야한다.!!!!

ex) 채널수 3, 크기 5X5, 필터가 20개 있다면 (20,3,5,5) 라고 한다. 

 

편향은 채널 하나에 값 하나씩으로 구성된다.


배치 처리

신경망 처리에서는 입력 데이터를 한 덩어리로 묶어 배치로 처리하였다.

완전연결 신경망을 구현하면서, 미니배치 학습도 지원하여 처리 효율을 높였다. 

 

합성곱 연산에서도 배치처리를 진행하자.

각 계층을 흐르는 데이터 수를 지정한다.

데이터 N개 일때, 합성곱 연산의 배치 처리 예시

( 데이터 수, 채널 수, 높이, 너비 )

이러한 데이터는 4차원 데이터로 저장된다.

=> 신경망에 4차원 데이터가 하나 흐를 때마다, 데이터 N개에 대한 합성곱 연산이 이뤄진다.

==> N회 분의 처리를 한번에 수행한다. 

 

입력 데이터를 한 덩어리로 묶어 배치로 처리 => 처리 시간을 줄여준다.

 

반응형

'밑.시.딥 > 1권' 카테고리의 다른 글

CH8) 딥러닝  (0) 2021.07.25
CH7) 합성곱 신경망 ( CNN ) - (2)  (0) 2021.07.25
CH6) 학습 관련 기술들  (0) 2021.07.24
CH5) 오차역전파법  (0) 2021.07.24
CH4) 신경망 학습 - (2)  (0) 2021.07.23