이미지를 분석한다고 그게 가능한가? 라는 생각을 저도 처음 했었습니다. 상식적으로 feature는 데이터의 값인데 이미지는 어떤 feature가 있는거지 하는 생각 말이죠. 이번 글에서는 이러한 궁금증을 한번 해소해 보겠습니다.
CNN의 구조적 특징
CNN(Convolutional Neural Networks)은 주로 이미지와 같은 구조화된 그리드 데이터를 처리하도록 설계되었습니다. CNN의 아키텍처는 여러 레이어로 구성되며, 각 레이어는 입력 데이터에서 특징을 추출하는 특별한 목적을 수행합니다. 우리가 생각한 기본 구조인 완전 연결 계층과는 좀 다른 특성이 있는데요.
여기서 새로운 '합성곱 계층'과 '풀링 계층'이 개념이 나옵니다. CNN의 계층은 Conv-ReLU-(Pooling)의 흐름으로 연결됩니다. 여기서 풀링이 생략되기도 합니다. 그렇다면 완전 연결층에서 보왔던 Affine-ReLU가 Conv-ReLU-(Pooling)으로 왜 변경했을가요? 그 이유를 알아보는 것이 구조적 특징을 알 수 있는 방법입니다.
완전연결 계층(Affine)의 문제점
우리는 완전연결 계층이 이미지 데이터를 처리하는데는 문제가 있다는 것을 알 수 있습니다. 이미지 데이터는 input 데이터가 형상(모양, 색깔 등)입니다. 그런데 완전연결 계층은 형상을 무시하게 됩니다. 3차원(가로,세로,색상) 정보를 완전연결 계층에 입력할 때에는 1차원 데이터로 플랫하게 만들어 처리하기 때문이죠.
그림처럼 MNIST 데이터셋이 (1, 28, 28)인 이미지를 784개의 데이터로 1렬로 만들어서 입력을 넣는 방식입니다. 예를 들어, 같은 숫자 1임에도 불구하고 좌측으로 한 칸씩만 움직이면 input 값이 20개가 변화하게 됩니다. 3차원 이미지 데이터는 인접한 픽셀의 위치 정보 등 3차원 속에서 의미를 갖는 본질적인 패턴이 존재하는데요. 이를 인지할 수 없죠.
이런 문제점을 보완하기 위해 합성곱 층을 채택했는데요. 이 합성곱 계층의 어떤 이점 때문일가요?
합성곱 계층의 이점
합성곱 계층은 형상을 유지하기 위한 기법입니다. 이미지 1팍셀의 정보를 가지고 있는 것이 아니라 3X3 부분인 9픽셀의 정보를 가지게 하는거죠. 데이터를 3차원으로 입력받아서 마찬가지로 다음 계층으로 3차원 데이터로 전달합니다. 특성맵(feature map)을 활용하는 것입니다. 이런 방식으로 이미지 데이터를 제대로 이해할 가능성이 생기게 됐습니다.
특성맵(Feature map)
합성곱에서 feature map이라는 개념이 나왔는데요. 완전연결 계층이 주변 픽셀을 고려하지 않고 1픽셀만 입력으로 받는 것이라면, feature map을 통해 특징의 연관성을 찾아 이미지를 인식한는 방법으로 사용합니다. 합성곱 계층의 입출력 데이터를 특징맵(feature map)이라고 합니다. 입력을 입력 특징맵, 출력을 출력 특징맵이라고 부르는 식이죠.
CNN의 구조
CNN의 기본 구조는 합성곱 과정과 풀링 과정을 반복하여 거친 뒤 Affine 층(Fully-connected Layer)이 있는 형태입니다. 그래서 우리는 일반적인 신경망에서 Convolution과 Pooling 과정만 배우면 CNN이 어떤 원리로 이미지를 인식하는지 알 수 있습니다. 두 과정은 다른 포스트에서 자세히 다루겠습니다.
- Convolution 과정 : 이미지에서 어떤 특징이 얼마나 있는지를 구하는 과정
- Pooling 과정 : 이미지의 뒤틀림이나 크기변화에 따른 왜곡의 영향을 최소화하는 과정
CNN의 특징 및 장단점
완전연결 계층은 픽셀과 뉴런을 1:1 대응시키기 때문에 사진이 조금만 달라져도 제대로 인식하기 어렵습니다. CNN은 다차원 배열을 통해 데이터를 처리하기 때문에 이런 완전연결 계층의 단점을 보완해 줍니다. 그래서 CNN은 음성인식이나 이미지인식에 주로 사용됩니다.
장점
- 복잡한 비선형 모델의 구현이 가능하다는 것이 장점
- 이미지, 음성인식에 특화되어 있음
- 합성곱 계층은 완전 연결 계층과 달리 형상을 유지할 수 있음
- 완전 연결 계층은 데이터를 1차원으로 바꿔줘야 하지만, 합성곱 계층은 3차원 그대로 쓸 수 있음
단점
- 메로리 관점에서 MLP보다 더 많은 용량을 필요로함
- MLP에 비해 많은 계산량을 필요로함
* 참고 사이트
'딥러닝' 카테고리의 다른 글
CNN의 풀링(Pooling) 이유 및 연산 (1) | 2024.02.23 |
---|---|
합성곱(convolution) 계층의 역할: 필터, 패딩, 스트라이드 (0) | 2024.02.21 |
자기조직화지도(SOM, Self-Organizing Map) 작동 방식과 활용 (0) | 2024.02.19 |
하이퍼파라미터 튜닝 베이지안 최적화(Bayesian Optimization) (0) | 2024.02.15 |
하이퍼파라미터 튜닝 종류: Grid vs Random search (0) | 2024.02.14 |