TensorFlow 예제도 살펴 보았고,([AI] Tensorflow 예제실행👆)
이번엔 이미지 인식을 위해 가장 유명한 알고리즘인
CNN(Convolutional Neural Network)에 대해 알아보려고 한다.
📚 위키 백과
CNN은 시각적 이미지를 분석하는 데 사용되는 깊고 피드-포워드적인 인공신경망의 한 종류이다. 딥 러닝에서 심층 신경망으로 분류되며, 시각적 이미지 분석에 가장 일반적으로 적용된다.
기본적으로 Cnn은 Input -> Padding -> Convolution Layer -> Pooling -> Convolution Layer -> Pooling -> Convolution Layer ->..............-> Flattening -> Output
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
활성화 함수(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이기 때문에 뉴런이 죽을 수 있는 단점이 존재한다.
Max Pooling
Average Pooling
https://yjjo.tistory.com/8
https://zzsza.github.io/data/2018/02/23/introduction-convolution/
https://bcho.tistory.com/1149