[AI] CNN(Convolutional Neural Network) 개념정리

seongguk·2020년 8월 10일
2

DeepLearning

목록 보기
8/10
post-thumbnail

📊 CNN

TensorFlow 예제도 살펴 보았고,([AI] Tensorflow 예제실행👆)
이번엔 이미지 인식을 위해 가장 유명한 알고리즘인
**CNN(Convolutional Neural Network)**에 대해 알아보려고 한다.

📚 위키 백과

CNN은 시각적 이미지를 분석하는 데 사용되는 깊고 피드-포워드적인 인공신경망의 한 종류이다. 딥 러닝에서 심층 신경망으로 분류되며, 시각적 이미지 분석에 가장 일반적으로 적용된다.

  • 즉 CNN은 Convolutional Neural Network의 약자로 DNN(Deep Neural Network)의 한 종류 이며, 인간의 시신경을 모방하여 만든 딥러닝 구조 중 하나.

기본적으로 Cnn은 Input -> Padding -> Convolution Layer -> Pooling -> Convolution Layer -> Pooling -> Convolution Layer ->..............-> Flattening -> Output


🧮 Convolution

  • 수학적 개념이라 헷갈리는 설명이 많아,
    이미지가 들어왔을 때 특징을 뽑아내는 과정으로 이해.

** 📃 용어 정리 **

Kernel Size :

  • kernel size는 **convolution의 시야(view)**를 결정.
  • 보통 2D에서 3x3 pixel로 사용.

Stride :

  • stride는 이미지를 횡단할 때 커널의 스텝 사이즈를 결정.
  • 기본값은 1이지만 보통 Max Pooling과 비슷하게 이미지를 다운샘플링하기 위해 Stride를 2로 사용.

Padding :

  • Padding은 샘플 테두리를 어떻게 조절할지를 결정.
  • Padding된 Convolution은 input과 동일한 output 차원을 유지하는 반면, 패딩되지 않은 Convolution은 커널이 1보다 큰 경우 테두리의 일부를 제거 가능.

Input & Output Channels :

  • Convolution layer는 Input 채널의 특정 수(I)를 받아 output 채널의 특정 수(O)로 계산
  • 이런 계층에서 필요한 파라미터의 수는 IOK로 계산.
  • K는 커널의 수.

** 📃 종류**

no_padding_no_strides

arbitrary_padding_no_strides

same_padding_no_strides

full_padding_no_strides

no_padding_strides

padding_strides

padding_strides_odd


🧮 Convolution Layer

  • 전체가 아닌 일부분만 빨간색 테두리(필터 혹은 커널)를 통해 가중치와 입력값을 곱한 값에 활성화 함수를 취하여 특징들을 뽑는 과정.

활성화 함수(Activation Function)
필터 들을 통해서 특징 맵이 추출되면 이 특징 맵에 활성화 함수를 적용하여 값을 활성화
있다, 없다를 구분하기 위해 활성화 함수를 사용하는데 sigmoid function와 ** ReLU function**가 있다.

sigmoid function

간단하게 정리하면, 결과 값을 참/거짓 으로 나타내는 것이 아니라, 참에 가까워면 0.5~1사이에서 1에 가까운 값을 거짓에 가까우면 0~0.5 사이의 값으로 리턴하는 것.

ReLU function

igmoid 함수를 activation 함수로 사용할 경우, 레이어가 깊어지면 이 Back propagation이 제대로 작동을 하지 않기 때문에, 요새는 ReLu라는 함수를 사용하는데
특징은

  • x>0 이면 기울기가 1인 직선이고, x<0이면 함수값이 0이된다.
  • sigmoid, tanh 함수와 비교시 학습이 훨씬 빨라진다.
  • 연산 비용이 크지않고, 구현이 매우 간단하다.
  • x<0인 값들에 대해서는 기울기가 0이기 때문에 뉴런이 죽을 수 있는 단점이 존재한다.

🧮 Pooling Layer

  • Convolution Layer 사이 사이에 들어가는 층.
  • 데이터의 공간적인 특성을 유지하면서 크기를 줄여주는 층이며, 특정 위치에서 큰 역할을 하거나, 전체를 대변할 수 있는 특징을 추출 가능.
  • Max Pooling과 Average Pooling으로 나누어짐.

Max Pooling

Average Pooling

압도적으로 결과가 좋은 Max Pooling를 사용.


출처 및 참조 :

https://yjjo.tistory.com/8
https://zzsza.github.io/data/2018/02/23/introduction-convolution/
https://bcho.tistory.com/1149

profile
감자칩 입니다.

0개의 댓글