다운로드
작성자: admin 작성일시: 2016-07-05 22:39:19 조회수: 7211 다운로드: 509
카테고리: 머신 러닝 태그목록:

CNN 기초

CNN(Convolutional Neural Network)

신경망의 레이어 수가 많아질수록 입력과 출력 사이의 비선형성을 잘 표현할 수 있지만 대신 찾아내야할 파라미터의 수가 많아져서 현실적으로 최적화가 불가능하다. 이를 해결하기 위해 이미지 입력의 경우 파라미터의 수를 대폭 줄이면서 특징을 찾아내는 방법이 CNN(Convolutional Neural Network) 모형이다.

  • 파라미터 수를 줄이기 위해 전체 이미지가 아닌 일부 영역의 값만 선형조합하여 특징을 찾아낸다.
  • 특징이 어느 위치에 있는지 모르기 때문에 영역을 이동시키면서(scanning) 특징을 찾는다. 다만 이동하는 동안 특징 계산 가중치값은 변하지 않는다.
  • 한 종류의 특징만 사용하지 않고 여러 종류의 특징을 찾는다.

완전연결망

다음 그림은 기존의 완전연결망(fully-connected networkd) 혹은 밀집망(dense network)라고 불리는 기존의 신경망 모형과 CNN 모형을 비교한 것이다. 전체 이미지로부터 $i$번째 특징 $\phi_i$를 구하려면 가중치 $w_i$를 이용하여 입력 이미지의 전체 데이터 즉 $x_1$부터 $x_N$을 모두 조합해야 한다.

$$ \phi_i = \sigma \left( w_i^Tx \right) = \sigma \left( \sum_{k=0}^{N^2-1} w_i[k] x[k] \right) $$

이 때 가중치와 입력 이미지는 1차원 벡터로 펼친 것과 같다.

이미지 필터링

하지만 CNN 모형에서는 입력 이미지 중 $M \times M$ 크기의 영역만을 이용하여 특징 $\phi_{ij}$를 계산한다.

$$ \phi_{i,j,k} = \sigma \left( \sum_{k_1=0}^{M-1}\sum_{k_2=0}^{M-1} w[k_1, k_2] x[i+k_1, j+k_2] \right) $$

이 식에서는 입력 데이터 $x$와 가중치 $w$를 1차원 벡터로 펼치지 않고 2차원인 행렬 형태 그대로 사용하므로 $x[\cdot,\cdot]$ 기호로 표현하였다. 이러한 계산방식을 이미지 필터링(image filtering)이라고 한다. 이미지 필터링에서 가중치는 커널(kernel), 필터(filter), 마스크(mask)라고도 부른다. $i,j$는 특징을 계산하는데 사용되는 입력 이미지의 위치를 나타낸다. $k$는 여러가지의 가중치값을 병렬적으로 동시에 사용할 때 어떤 가중치인지를 나타낸다.

스캐닝

이 때 가중치를 곱하는 위치 $i,j$를 변화시키는 것을 스캐닝(scanning)이라고 한다. 정상적인 방법으로 스캐닝을 하면 $i=0, j=0$부터 $i=N-M, j=N-M$까지 바뀔 수 있다. 이렇게 되면 특징값 행렬은 원래의 이미지 행렬보다 폭과 높이가 $M-1$만큼 작아진 $(N-M+1) \times (N-M+1)$ 크기의 이미지가 된다.