본문 바로가기

AI

CNN 이란?

오늘은 이미지 및 영상 인식을 위한 딥러닝의 기본 모델인 CNN에 대해 알아보도록 하겠다.

(다만, 필자는 시계열 데이터를 분석하기 위한 사전 조사이다.)

 

CNN 

Convolutional neural network의 약자로, 합성곱 계층을 쌓아 만들어낸 모델.

주로 이미지와 같은 시각적 데이터를 처리하는 데 탁월한 성능을 보이는 신경망 모델이며, 

시계열 데이터 분석이나 자연어 처리에도 적용할 수 있다. (데이터 패턴을 찾는데 최적화)

 

 

CNN의 구조

https://kr.mathworks.com/discovery/convolutional-neural-network.html

 

CNN은 입력계층과 출력계층, 그리고 그 사이의 여러 은닉 계층으로 이루어져 있다.

각 계층이 영상 및 시계열 데이터에서의 서로 다른 특징을 검출해낼 수 있다.

 

은닉 계층에서는 해당 데이터의 고유한 특징을 학습한다는 의도로 데이터를 변경시키는 연산을 하는데, 

주로 컨벌루션 계층, 활성화(ReLU)계층, 풀링계층을 사용한다. 

Convolution Layer : 필터(작은 크기의 행렬)를 이동시키며 연산해 특징을 추출해내며, feature map을 결과로 얻는다.

Pooling Layer : 보통 Max Pooling을 사용하며, 커널에서 가장 큰 값을 사용하므로써 데이터 전체 크기를 줄인다. 

                          Max pooling외로는, Average pooling을 많이 사용함.

 

? 커널과 필터의 차이점 ? 

색 하나의 특징을 추출하는 역할을 하는 '커널'  ex) 커널1 : 빨강색 추출 , 2 : 파랑색 추출 ...

각각의 색을 추출하는 커널이 모이면 '필터'  ex) 필터1 : 색을 추출, 2 : 투명도 추출 ... 

 

 

해당 은닉계층에서는 모든 은닉 뉴런에 대해 동일한 가중치나 편향값을 사용하기에, 
위치에 상관없이 동일한 특징을 검출할 수 있다. 

예로, 사진에 자동차가 어디에 있건, 인식할 수 있다.

 

 

여러 계층을 통해 특징을 학습 수, 각 특징들을 통한 분류를 시작한다.

 

Flatten layer를 통해 평탄화 진행 (3 x 3 => 9 x 1)

 

fully-connected layer : 모든 노드와 완전 연결. 

K 차원의 벡터를 출력하는 완전 연결 계층으로,  (K : 예측 가능한 클래스의 수)

100개의 특성으로 한번에 분류하는 것이 아닌, 10개씩 1차 분류.. 2차분류.. 하기 위함.

 

이를 활용해 마지막 계층에서 최종 분류 출력을 제공한다.

 

모델 사용 방식

일반적으로 사전에 학습된 모델을 불러와 전이학습을 수행하여 사용한다.

 

전이학습이란? 

한 영역에서 이미 훈련을 마친 모델을 유사한  다른 영역에서 적응시켜 사용하는 것

 

Fine-tuning 

 

  • 사전 학습된 모델의 전체를 다시 학습하는 방법.
  • 기존의 가중치를 초기값으로 사용하고, 모든 층의 파라미터를 업데이트하여 새로운 데이터셋에 맞게 모델을 조정함.
  • 데이터가 충분하고, 기존 모델과 새로운 문제의 유사성이 클 때 사용.

 

Feature Extraction 

 

  • 사전 학습된 모델에서 초기 층은 그대로 두고, 마지막 층(fc-layer)만 다시 학습하는 방법.
  • 기존의 기본 특징(가장자리, 텍스처)을 유지하면서, 새로운 문제에 맞는 분류 작업을 위한 층만 조정.
  • 데이터가 적거나, 빠르게 학습하고 싶을 때 사용.

 

 

대표적인 모델로는 VGG, ResNet, Inception등이 있다.

 

시계열 데이터 분석으로서의 CNN

LSTM은 장기적인 의존성에 강점이 있던 반면, CNN은 지역적인 패턴을 학습하는데에 보다 강점이 있다.

CNN은 주로 1D 합성곱(Convolution)을 사용하여 데이터의 시간 축을 따라 패턴을 학습한다.

이때 필터는 입력 데이터의 일부 구간을 스캔하며 중요한 특징을 추출하고,

이를 통해 시계열 데이터의 특정 구간에서 발생하는 국소적 패턴을 인식할 수 있다.

 

예를 들어, 주식 시장의 특정 시간 구간 동안 발생하는 급격한 가격 변동이나

특정 시점에 발생하는 센서의 이상 신호를 탐지하는 작업에서 CNN은 보다 효과적이다.

CNN의 필터가 짧은 시간 동안 발생하는 패턴을 집중적으로 학습하기 때문에, 지역적 특징을 잘 반영할 수 있기 때문이다.

 

 

이후 pytorch를 통한 CNN 구현과 Time Series 분석을 다루어보겠다.

'AI' 카테고리의 다른 글

LSTM 예측 - BEMS 시계열 데이터  (1) 2024.08.27
Local 원격저장소를 통해 DVC 사용하기  (0) 2024.08.21
Pytorch를 통한 주가 분석 (LSTM, GRU)  (0) 2024.08.20