통계, IT, AI

딥러닝: 화풍을 모방하기 (12) - 연습: CNN 구현 본문

머신러닝

딥러닝: 화풍을 모방하기 (12) - 연습: CNN 구현

Harold_Finch 2017. 12. 12. 21:48

1. 개요

    CNN으로 Mnist 데이터를 학습해보자. 먼저 대략적인 구조는 그림 <1.1>과 같다.

<그림 1.1 Mnist 데이터를 적합하기 위한 CNN 구조>


    입력 데이터의 사이즈는 \((1,28,28)\)이다. 흑백 이미지이기 때문에 1개 채널이며 가로, 세로로 28 픽셀이다. 각 원소를 0부터 255사이의 값을 가지는데 이를 정규화하여 0부터 1사이의 값을 갖도록 변환한다.

    합성곱층Convolution Layer에서 필터는 \((30, 5, 5)\)의 사이즈를 갖도록 한다. 따라서 합성곱층의 결과 데이터의 사이즈는 \((30, 24, 24)\)가 된다. 풀링층Pooling Layer은 최대 풀링Max Pooling을 사용하며 \((2,2)\)의 윈도우를 갖도록 한다. 따라서 풀링층의 결과 데이터는 \((30,12,12)\)의 사이즈를 갖는다. 풀링층의 결과 데이터는 Flatten Layer를 통하여 완전연결 신경망과 연결된다. 단, Flatten Layer는 위 그림에 나타내지 않았다. 완전 연결 신경망은 100개의 노드를, 출력층은 클래스의 개수인 10개의 노드를 갖는다. 모든 활성화 함수는 ReLU를 사용한다.


    완전연결 신경망과 비교하기 위하여 은닉층이 없는 모형, 1개의 은닉층을 갖는 모형, 2개의 은닉층일 갖는 모형도 적합한다. 기타 자세한 설정은 이곳에서 확인할 수 있다. CNN 구현은 <밑바닥부터 시작하는 딥러닝>을 참고하였다.

2. 학습 결과

    <그림 2.1>은 CNN을 비롯한 4개의 신경망에 대한 accuracy이다. 붉은색이 CNN, 파란색이 1개, 주황색이 2개의 은닉층을 갖는 완전연결 신경망 그리고 검은색이 은닉층이 없는 신경망이다. CNN의 성능이 우위에 있다는 것을 알 수 있다.

<그림 2.1 CNN 등 4개 신경망 적합 결과>


    CNN의 구조상 다른 신경망보다 오랜 학습시간이 필요하지만, 더 나은 성능을 보인다. CNN이 다른 신경망보다 압도적인 우위를 보이지않는 이유는 Mnist 데이터가 크게 복잡하지 않은 데이터이기 때문이라고 생각한다.


    한편, <그림 2.2>는 학습 전 합성곱 계층의 필터를, <그림 2.3>은 학습 후의 필터를 시각화 한 것이다. 학습 후의 필터가 규칙성을 보이는 것을 확인할 수 있다.[각주:1]

<그림 2.2 학습 전 합성곱 계층의 필터>


<그림 2.3 학습 후 합성곱 계층의 필터>





  1. <딥러닝 제대로 시작하기>의 그림 7-24를 재현하고자 하였으나 그 그림만큼 극적이지 않아 아쉽다. [본문으로]
Comments