티스토리 뷰

CNN, Convolutional Neural Network 이란 무엇일까?

다음의 그림은 CNN의 과정을 잘 나타내는 그림이다.

CNN은 Convolution과 Pooling, Dense(또는 Fully Connected)라는 세가지 종류의 계층을 통해 만들어진다.

 

CNN은 크게 Feature Extraction(특징 추출) Classification(분류) 2단계로 나뉜다.

 

 Feature Extraction(특징 추출) : 입력 데이터(input)의 고유한 특징을 찾아가는 단계

 

 Classification(분류): 찾은 특징들을 가지고 class를 고르는 단계

 

 

 

▶ Convolution Layer 와 Pooling Layer을 여러 곂 쌓아 특징을 충분히 추출한 후 이를 배열 형태로 만드는 Flatten layer을 통해 최종적으로 배열 형태의 Dense Layer(Fully Connected) 을 만들어 분류모델에 적용하게 된다. 특징추출과 관련된 Layer는 다음과 같다.


Feature Extraction(특징 추출)

특징 추출은 초기 원시 데이터 세트를 처리하기 위해 더 관리하기 쉬운 그룹으로 축소하는 차원 감소 프로세스이다. 데이터 양을 효과적으로 줄이면서 원본 데이터 세트를 정확하고 완전하게 설명하는 방법이라고 할 수 있다.

 

1. Convolutoin Layer

합성곱(Convolution), 채널(Channel), 필터(Filter)&Stride, 패딩 (Padding)의 과정을 거쳐 만들어 진 Layer를 Convolution Layer라고 부른다.

 

model.add(Conv2D(filters=10, kernel_size = (3,3), 
                 padding='same', 
                 input_shape = (28,28,1) ))
filters layer에서 나갈 때 몇개의 filter를 만들 것인지
kernel_size filter(Weight)의 사이즈
strides 몇 개의 pixel을 skip 하면서 훑어지나갈 것인지 ( 사이즈에도 영향을 준다. )
padding zero padding을 만들 것인지. VALID는 Padding이 없고, SAME은 Padding이 있음 (사이즈에도 영향을 준다.)
activation Activation Function을 만들것인지. 당장 설정 안해도 Layer층을 따로 만들 수 있다.

2. Pooling (풀링) 

풀링 레이어는 Convolution layer의 Output을 Input으로 사용하며, Activation Map의 크기를 줄이거나 특정 부분을 강조하는 용도로 사용된다. 어느정도 특징이 추출되었으면 모든 특징을 다 사용하는 것이 아니라 특징 중에서 특출난 것으로만 사용하겠다는 것으로 주로 사용되는 방법은 Max pooling으로 정사각 행렬의 특정 영역 안의 값의 최대값을 그 정사각 행렬의 대푯값으로 사용하는 방법이다. 여기서 사용되는 정사각 행렬은 일반적으로 Stride로 설정했던 크기와 동일하다.

 

3. Fully Connected Layer / Dense Layer

선택적 Pooling을 거쳐 만들어진 최종적인 Convolution layer를 Neural Network의 Input으로 사용하기 위해 행렬이 아닌 배열로 만들어주는 과정이 필요한데 Flatten Layer가 그 역할을 한다. 이 과정까지 거치면 처음 Input에서 특징만 추출한 최종적인 Layer가 완성되고, 이를 Neural Network에 적용해 최종적으로 우리가 원하는 분류를 수행하게 된다.

 

 Flatten

  • tf.keras.layers.Flatten()
  • CNN에서 Convolution Layer와 Pooling Layer를 반복적으로 거치면서 주요 특징만 추출되는데 이 때 추출된 주요 특징은 2차원 데이터로 이루어져 있지만 Dense와 같이 분류를 위한 학습 레이어에서는 1차원 데이터로 바꾸어서 학습이 되어야 한다. 이때 Flatten Layer가 2차원 데이터를 1차원 데이터로 바꾸는 역할을 한다.

https://jeongminhee99.tistory.com/121

 

 

 

CNN 더 알아보기 클릭

 

'Artificial Intelligence > Deep Learning' 카테고리의 다른 글

[DL] DNN/RNN/CNN 차원 비교 테이블  (0) 2022.07.13
[DL] RNN 파라미터 개수 카운팅  (0) 2022.07.13
[DL] DNN & CNN 파라미터 개수 카운팅  (0) 2022.07.10
[DL] drop-out  (0) 2022.07.08
[DL] 참고 포스팅  (0) 2022.07.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함