생물의 눈은 어떻게 눈앞의 경치를 인식하고 있을까요? 눈에 닿는 빛을 처리하는 시신경의 구조에 주목하여 만들어진 뉴럴 네트워크 모델 중 CNN( Convolutional Neural Network )이라는 것이 있습니다.
눈에 비치는 경치를 생물은 어떻게 인식하고 있는가. 이를 알기 위해서는 고양이처럼 2색형 색각 동물(적록 색과 파란색만 인지)의 시신경을 연구하는 것이 정석으로, 1900 년대 중반까지 연구가 활발히 진행되었습니다. 생물의 시신경을 모방하여 만들어진 네오 코그니트론 모델이 CNN의 뿌리입니다.
그 이후로 발전이 계속되어 CNN은 2010년대에 ImageNet이라는 교사가 있는 이미지 데이터 세트가 공개된 것을 계기로 주목을 받았습니다.
1. 화상 처리
CNN은 이미지를 처리하는 기술로 유명하지만 이미지 처리는 고전적으로 필터링이 일반적입니다.
필터링은 원래 이미지와 필터 각각에 숫자가 대응시키고, 그것을 각각 곱하여 합치는 것을 반복함으로써 실현됩니다.
원본 이미지 | 출력이미지 |
예를 들어 2차 미분 계수를 사용하여 이미지의 색상 변화를 감지하는 라플라시안 필터를 사용하면 윤곽선을 감지할 수 있습니다.
또한 가우스 함수형의 필터를 사용하면 평활화( smoothing : 변동이나 불연속성 등이 있을 때, 이런 변동이나 불연속성을 약하게 하거나 제거하여 매끄럽게 하는 조작)가 가능합니다.
조금 어려울 수 있지만, 필터를 사용하면 이미지의 중요한 요소를 추출할 수 있다고 생각하시면 됩니다.
이렇게 이미지에 사용되는 필터링을 신경망으로 표현하고 학습할 수 있도록 한 것이 CNN입니다.
CNN은 컨볼루션과 풀링이라는 필터링을 여러 번 반복함으로써 실현됩니다. 우선 컨벌루션입니다.
2. 컨볼루션(Convolutional : 합성곱)
CNN 중에서도 필터 처리에 해당하는 연산이 이루어지는 것입니다만, 이미지의 필터 처리와 같이, 특정 필터를 원본 이미지에 대하여 옆으로 슬라이드해 가면서 곱해 나갑니다. 이것을 컨벌루션이라고 합니다. CNN에서 처리하는 필터는 커널이라고도 합니다.
이 필터(커널)를 이용한 연산의 좋은 점은, 이미지를 일일이 픽셀마다 보는 것이 아니라, 필터 사이즈만큼 모아서 처리하는 것으로, 이미지로서의 특성을 남기면서 처리할 수 있다는 것입니다.
이렇게 하면 새로운 출력을 만들 수 있지만 신경망에서는 어떤 연산에 해당하는 것일까요?
단순화를 위해 (3 × 3) 픽셀의 입력 이미지에 (2 × 2) 필터를 적용하는 경우를 생각해 봅시다.
먼저 입력 이미지의 숫자를 제1층에 넣습니다.
신경망은 여럿의 제1층으로부터 인풋을 받아 가중치 w를 곱하여 더한 후 다음 층으로의 출력으로 삼는 것입니다.
컨벌루션에서는 원래 이미지의 숫자에 필터의 숫자를 곱하고 더해가기 때문에, 필터의 숫자가 곧 가중치의 숫자에 해당합니다. 아래 그림과 같이 가중치를 곱하여 계산을 하면, 필터에 의한 이미지 처리와 동일한 작업이 수행됩니다.
이것을 모든 뉴런이 연결된 신경망(아래 그림)과 비교하면 다음 레이어에 연결된 뉴런의 수가 적다는 것을 알 수 있습니다.
이 뉴런이 연결되지 않은 부분은 그 가중치가 0으로 해석될 수도 있습니다. 즉, 일반 신경망의 가중치 밸런스가 극단으로 기울어져 있는 것에 불과합니다.
사실 CNN의 컨볼루션(합성곱)은 얼핏 보면 이미지를 위한 특별한 처리를 하고 있는 것처럼 느껴지지만, 그 실태는 가중치에 극단적인 편향을 갖게 한 신경망에 지나지 않는다는 것입니다.
이미지의 경우, 가까이 있는 주변의 연결되어 있는 픽셀 사이의 관계가 중요하다는 것을 알고 있기 때문에, 그 이외의 뉴런의 연결을 굳이 끊어 버리는 것으로, 정밀도를 좋게 하고자 하는 아이디어적 해법입니다.
오차 역전파에 의한 신경망의 학습은, 가중치 w의 값(과 바이어스)을 최적화해 나가는 것이었습니다. CNN의 경우 이 가중치에 해당하는 것이 필터의 숫자이기 때문에, 즉 그 학습은 곧 필터의 최적화를 의미하는 것으로 해석이 가능합니다.
3. 풀링(Pooling)
CNN에는 컨볼루션 외에도 출력 데이터를 한 번 압축하기 위한 풀링 레이어가 있습니다. 풀링 레이어는 매우 잘 작동하는 것으로 밝혀졌지만 그 근본적인 이유는 완전히 이해되지는 않았습니다.
이 레이어는 데이터를 압축하고 다운 샘플링하기 위한 필터를 제공합니다.
예를 들어 최대 풀링(max pooling)이라고 하는 풀링은 특정 범위의 최댓값을 추출하여 데이터를 압축합니다.
최대 풀링 외에도 유명한 것으로 평균 풀링 등이 있습니다만, 어느 방법이든 데이터를 압축하는 것으로 계산 비용을 절감하거나, 과학습을 억제하는 등의 이점을 가질 수 있습니다.
또한 필터를 약간 움직인다 해도 최대치와 평균치가 그다지 크게 변하지 않는 경우가 많기 때문에 이미지의 소소한 위치 변화에 대하여 견고한 모델을 만들 수 있습니다.
여기까지 나온 컨볼루션과 풀링을 번갈아 여러 번 실행하고 마지막으로 모든 뉴런을 연결하여 이미지나 분류 결과를 출력할 수 있으면 CNN이 완성된 것입니다.
앞에서 언급한 바와 같이 CNN의 연산은 언뜻 보면 필터에 의한 이미지 처리의 응용입니다만, 그 본질은 「이미지는 가까운 다수의 픽셀 간에 관계가 중요하다」라는 사전 정보에 근거하여 신경망 모델 가중치를 극도로 편향시키는 제약을 부과하는 것에 불과하다는 것입니다.
그 사실을 알고 있다면 그 응용 범위가 이미지에만 머무를 필요가 없습니다. 그 주목할만한 것이 주가에 응용한 예입니다.
주가 차트를 이미지 데이터로 학습시켜, 심층 학습을 통한 주식시장 예측을 할 수 있습니다.
주식의 양봉, 음봉 차트를 본뜬 간단한 이미지를 만드는 것으로 간단히 시작할 수 있습니다.
이 작업은 위에 언급했던 CNN 해석을 통하여 주식 차트 중, 중요 정보들이 가까운 픽셀상에 형태로서 모이도록 기호화(coding) 한 것에 지나지 않습니다.
"필요한 정보들을 적절한 모양으로 정리하여 데이터를 기호화하고, 최적화된 필터 처리를 하는 것이 CNN이다."라고 추상화하여 해석한다면 그 응용 범위는 어디까지나 넓어질 수 있을 것입니다.
앞으로 어떤 도메인에 CNN이 손을 뻗어 나갈지 눈을 뗄 수 없겠습니다.
'AI · 인공지능 > 알기쉬운 AI' 카테고리의 다른 글
[알기쉬운 AI - 37] 설명 가능한 AI(XAI : Explainable AI) 4 - 블랙 박스인가 투명성인가 (0) | 2023.03.07 |
---|---|
[알기쉬운 AI - 36] 설명 가능한 AI(XAI : Explainable AI) 3 - 해석 가능한 모델의 추출 (0) | 2023.02.02 |
[알기쉬운 AI - 35] 설명 가능한 AI(XAI : Explainable AI) 2 - XAI의 적용 방법 (0) | 2023.01.20 |
[알기쉬운 AI - 34] 설명 가능한 AI(XAI : Explainable AI) 1 - AI의 예측에 근거는 필요한가? (0) | 2022.11.06 |
[알기쉬운 AI - 32] 신경망은 만능인가...? (1) | 2021.10.24 |
[알기쉬운 AI - 31] GAN (Generative Adversarial Networks) (3) | 2020.06.07 |
[알기쉬운 AI - 30] LSTM (Long Short-Term Memory) (0) | 2020.05.29 |
[알기쉬운 AI - 29] RNN(Recurrent Neural Network) (1) | 2020.05.23 |