Programmer Application Note

2017년 8월 2일 수요일

합성곱 신경망(convolutional neural network)

오후 5:55 Posted by PAN.SPOT , , No comments
1. CNN 신경망이란
   - 합성곱계층 과 폴링계층이 추가된 신경망 구조를 가지며, 3차원 데이터 같이 입체적인 데이터가 흐른다.  이미지를 예로 들면 가로,세로,채널(색상)으로 구성된 3차원 데이터 인데 이전까지의 완전연결 계층에서는 3차원 데이터를 평평한 1차원 데이터로 바꾸어 입력 하였지만 CNN에서는 3차원 형상정보를 그대로 입력하여 3차원에 담겨있는 정보를 같이 비교 하게 된다. CNN에서는 입출력 데이터를 입력,출력 특징맵 (feature map)이라고 한다.



2. 합성곱(Convolutional)
   - 합성곱 연산은 입력데이터에 필터(커널)를 적용하는데 필터는 (높이,너비) 형태로 표현되며 아래와 같이 세로,가로 (4,4)의 입력 데이터가 입력 될 때 필터(3,3)의 합성곱은 (2,2) 가된다. 필터의 윈도우를 일정간격(stride) 만큼 이동 시켜  단일 곱셈-누산(FMA) 방식으로 계산한다. 각 원소를 곱하고 그값들을 모두 더한다. 이때도 바이어스(편항)도 존재한다.


3. 패딩(padding)
   - 입력 데이터 주변에 특정값(if 0)을 채우는것을 패딩이라 하며 이렇게 하였을 때 출력값의 크기를 조정 할 수 있다. 즉 (4,4)크기의 입력 데이터에 패딩을 1 추가 하면 (6,6) 데이터가 되고 이때 출력은 (4,4)로 바뀐다.


4. 스트라이드(stride)
   - 필터의 윈도우의 이동 하는 값을 나타낸다.


5. 입력 크기 (H,W),필터크기(FH,FW),패딩(P), 스트라이드(S)에 따른 출력크기(OH,OW)계산


6. 합성곱 연산의 형상
   - 채널을 추가한 실제 입력 데이터 처리 관계 즉 채널(색상)이 여러개인 있는 이미지를 합성곱 연산에 넣으면 1개의 채널을 가진 데이터가 출력 데이터가 된다.

  - 이때 필터를 여러개 적용 한다면 출력데이터도 여러개의 채널로 출력 될 수 있기 때문에 CNN에서는 필터가 4차원 데이터 이며 (출력 채널 수 , 입력 채널 수 ,높이 ,너비)로 적용 한다.



   - 배치 처리된 입력 데이터가 들어 왔을 때는 아래와 같이 계산된다. 입력데이터는 (데이터 갯수,채널,높이,너비) 순으로 형상이 이루어 진다.



7. 풀링(Pooling)
   - 풀링은 세로 가로 방향의 공간을 줄이는 연산으로 최대 풀링(max pooling)을 많이 사용하며, 예를 들어 2x2 최대 풀링이라면 2x2 영역에서 최대값의 원소 하나로 집약 하여 출력 한다. 이때 스트라이트 또한 2로 한다. 3x3 이면 스트라이트도 3이다.

8. im2col
   합성곱 연산 시 im2col 함수를 사용하여 4차원 데이터를 2차원 행렬로 반환해주는데 이렇게 하면 합성곱 연산이 보다 간결 해진다.

밑바닥부터 시작하는 딥러닝 - 파이썬으로 익히는 딥러닝 이론과구현 / 사이토고키 | 한빛미디어


0 개의 댓글:

댓글 쓰기