CNN
CNN이란 Convolution Neural Network로 동물의 시각 신경망을 본 따 만들었다.
CNN을 구성하는 가장 중요한 요소로는 Filter와 Convolution 연산이 있다.
Filter(=kernel)
Filter는 입력 데이터로부터 우리가 원하는 특징 또는 패턴 들만 통과하도록 설계하는 도구로 예전에는 filter 값을 지정하여 사용하였으나 최근에는 weight로 학습을 통해 얻어낸다.
CNN의 경우 동물이 사물을 인식하는 방법과 같이 겹겹이 층으로 쌓여 있으며 Convolution과 Pooling으로 이뤄져 있다.
Convolution
Convolution이란 합성곱으로 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자이고 filter 연산에서 이루어진다.
Convolution 작동 방식
stride가 1,1로 지정되어 있는 경우 위와 같이 합성곱 연산이 되며 stride에 따라 output이 달라질 수 있다. 결괏값은 filter와 window의 유사값으로 유사하다면 비교적 큰 값, 유사하지 않다면 비교적 작은 값을 가지게 된다.
3D Convolution
image는 RGB로 3개의 channels을 가지고 있으며 고차원에서의 convolution도 Element-wise multiply후에 모든 값을 더한다.
1D Convolution
일반적으로 자연어는 1D Sequence의 데이터로 추가적으로 전처리가 필요하지만 목적함수에 영향을 미치는 패턴을 1D convolution을 통해 찾을 수 있다.
2D convolution은 2D 특성을 추출하고 1D convolution은 1D 특성을 추출하기 때문에 1D로 이루어진 자연어는 1D filter로 계산한다.
Pooling
input 이미지가 1024 x 1024와 같이 클 경우 이로 인해 생기는 연산량을 줄이기 위해 image 크기를 줄이는 pooling을 실시한다.
max pooling, average pooling 등 다양한 pooling 기법이 있지만 연산량 대비 성능이 뛰어난 max pooling을 주로 사용한다.
Dense Layer
input data가 convolution layer를 지나고 Dense Layer를 지나게 함으로서 최종적으로 사용자가 원하는 형태로 변환한다.
'NLP' 카테고리의 다른 글
NER 기초 (0) | 2024.02.08 |
---|---|
Seq2Seq + Attention 코드로 이해하기 (2) | 2023.12.15 |
[NLP] LSTM(Long Short-Term Memory) (0) | 2023.05.26 |
[NLP] RNN 실습 - Numpy, keras 구현 (0) | 2023.05.26 |
[NLP] RNN(Recurrent Neural Network) (0) | 2023.05.26 |