• toc {:toc}

Introduction

LeNet-5가 만들어지기 전까지 손글씨에 대한 패턴 인식에 대한 연구가 계속해서 이루어지고 있었다. 전통적인 패턴인식 시스템의 경우 hand-designed feature extractor, fully-connected multi-layer classifier 2가지 모듈로 이루어져 있다. 이 시스템은 여러 문제가 있다.
LeNet_traditional_model{: .center}


전통적인 시스템의 문제점

1. input과 관련된 정보만 추출한다.

hand-designed feature extractor의 경우 input에 적절한 정보만 선택한다. 부적절한 정보는 제거한다. 단순히 봤을 때는 왜 문제가 되는가 싶지만 input에 적절한 정보만 선택하는 것은 결국 overfitting을 만들고 일반화를 이루지 못한다. 때문에 각 경우에 맞는 더 많은 input 데이터를 필요로 하게 된다.

feature extractor는 설계한 사람이 추출한 정보만 classifier로 전달되기 때문에 제한된 정보가 전달된다. 결국 이상적인 학습은 feature extractor 자체에서 이루어지는 것이라 말한다.

2. parameter가 너무 많다.

하나의 이미지는 몇 백개의 pixel을 가진다. fully-connected multi layer에서 첫 번째 layer만을 보더라도 몇 만 개의 가중치를 포함한다. parameter가 너무 많은 경우 시스템의 capacity를 증가시키기 때문에 더 큰 training set을 요구한다. 추가적으로 많은 parameter를 처리해야 하므로 메모리 할당량도 매우 증가한다.

손글씨는 여러 스타일이 있기 때문에 input에 translation, distortion이 생긴다. fully-connected layer는 이런 input에 관련된 결과값을 생성하도록 학습된다. 공통적으로 나타나는 특징이더라도 비슷한 가중치 패턴들 가진 다수의 유닛을 통해 결과값을 출력한다. (중복적으로 사용하게 된다) 때문에 모든 가중치 패턴을 학습하는 것은 많은 학습 instance를 필요로 한다.

3. input의 topology가 완전히 무시된다.

이미지를 fully-connected layer를 통해 나열해 사용하기 때문에 2D input의 위치 정보를 이용하지 못한다.


LeNet-5

Convolution Network

Convolution Network는 3개의 아이디어로 결합되어 있다.

(local receptive fields, shared weights, sub-sampling)

1. local receptive fields

CNN은 receptive field를 local로 제한하여 edge, end-point, corner와 같은 local feature를 추출한다. 추출된 feature들은 다음 layer의 입력이 되어 고차원의 특징을 추출한다.

이를 통해 input이 distortion이나 shift가이발생하더라도 비슷한 특징을 갖는 배열이 receptive field에 추출되면 해당 특징을 반영한 feature map을 만들 수 있다.

해당 local에 대한 계산을 진행하기 때문에 parameter의 수도 줄일 수 있다.

2. shared weight

CNN은 동일한 weight와 bias를 공유하여 사용한다. 이를 이용하여 shift에 대한 불변성을 얻는다.

→ CNN은 input의 처음부터 끝까지 이동하며 feature map을 만든다. 이 때 가중치는 이동할 때 동일한 weight와 bias를 사용하기 때문에 위치가 바뀌더라도 동일한 특징을 추출한다.

이렇게 shared weight를 통해서 계산 capacity를 줄일 수 있고 학습할 parameter의 수도 줄여준다.

다른 논문에서 증명된 이론에 따르면

: test set의 오차율

: train set의 오차율

: 상수

: measure of effective capacity or complexity of the machine

: 상수

: training sample 수

가 성립하기 때문에 capacity가 줄어들면서 두 set의 오차율도 줄일 수 있다. ⇒ Overfitting을 방지

3. sub-sampling

논문에서 말하는 sub-sampling은 average pooling과 같다.

한 번 local feature가 추출되면 정확한 위치 정보는 점점 덜 중요해진다. 각 위치에 대한 정확한 위치는 패턴 인식과 무관하고 입력값에 따라 특징이 나타나는 위치가 다를 수 있기 때문에 잠재적으로 유해하다고 말한다.

위치에 대한 정확도를 감소시키는 간단한 방법은 feature map의 해상도를 감소시키는 것이다. local averaging과 sub-sampling을 수행하는 sub-sampling layer를 이용하여 해상도를 감소시켜 shift와 distortion에 대한 결과의 민감도를 줄인다.

위치 정보를 감소시키며 발생하는 손실은 더 많은 filter를 사용해 더 다양한 feature를 추출하여 상호보완할 수 있도록 한다.



## LeNet-5의 구조

Input → Conv1 → Subsampling2 → Conv3 → Subsampling3 → Conv5 → FC → FC → Output LeNet{: .center}

Input

  • size : 32x32x1

실제 문자 이미지는 28x28x1의 형태이고 20x20 크기의 숫자가 중앙에 있다. 크기를 키움으로써 receptive field 중앙 부분에 corner, edge같은 특징들이 나타나길 기대했다.

Conv1

  • size : 5x5
  • kernel = 6
  • stride = 1
  • output : 28x28x6
  • 156개의 trainable parameters, 122,304 connections

Subsampling2

  • size : 2x2
  • kernel = 6
  • stride = 2
  • output : 14x14x6
  • 12개의 trainable parameters, 5,880 connections

Conv3

  • size : 5x5
  • kernel = 16
  • stride = 1
  • output : 10x10x16
  • 1,416개의 trainable parameters, 151,600 connections

Subsampling4

  • size : 2x2
  • kernel = 16
  • stride = 2
  • output : 5x5x16
  • 32개의 trainable parameters, 2,000 connections

Conv5

  • size : 5x5
  • kernel = 120
  • stride = 1
  • output : 1x1x120
  • 10,164개의 trainable parameters

FC6

  • tanh를 활성화 함수로 사용한다.
  • input = 120
  • output = 84

⇒ 각각의 문자가 7x12크기의 비트맵인 ASCII set을 해석하기 적합한 형태로 산출될 것을 기대하고 output을 84로 선택했다.

FC7

  • RBF(Euclidean Radia Basis Function unit)을 활성화 함수로 사용한다.
  • input = 84
  • output = num_classes = 10

Loss function

  • MSE(Mean Squared Error, 평균 제곱 오차)를 사용했다.


참고

[1] http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf

[2] https://deep-learning-study.tistory.com/368