본문 바로가기
Study/데이터산업 백서

금융 산업에서 고객에게 가치 있는 서비스를 제공할 때 활용되는 CNN

by 23 박은오 2023. 11. 6.

1. 이미지 인식기술이란

 이미지 인식 기술은 사진 또는 동영상에 있는 사람이나 사물을 인공지능 기술을 활용해 인식하는 기술이다. 사람의 얼굴이나 지문을 인식해 보안 인증에 활용할 수 있다. 또는 사진 속 서류에서 글자를 인식하여 서류의 내용을 이해하는 데 활용하거나, 위성사진을 분석해 원자재 등의 투자에도 활용한다.

 

인공지능을 활용한 이미지 인식 기술은 앞서 소개했던 보안 인증과 서류 자동화 등에 편리하게 사용할 수 있지만, 성능이 좋지 않아서 실제 금융 산업에서 활용하는 일은 드물었다. 그런데 2013년 등장한 딥러닝 기술이 발전 하면서, 인공지능을 활용한 기술이 사람의 인식 능력보다 우수하게 되면서 금융 산업에 적극적으로 도입되고 있다.

 

 

2. CNN이란

CNN은 Convolutional Neural Networks의 약자로 딥러닝에서 주로 이미지나 영상 데이터를 처리할 때 쓰이며 이름에서 알수있다시피 Convolution이라는 전처리 작업이 들어가는 Neural Network 모델입니다.

[출처: https://rubber-tree.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-CNN-Convolutional-Neural-Network-%EC%84%A4%EB%AA%85]

Fully Connected Layer 만으로 구성된 인공 신경망(다중 퍼셉트론)의 입력 데이터는 1차원(배열) 형태로 한정된다. 한 장의 컬러 사진은 3차원 데이터이다. 배치 모드에 사용되는 여러 장의 사진은 4차원 데이터이다(그림 속에서 직육면체로 표현). 사진 데이터로 전연결(Fully Connected) 신경망을 학습시켜야 할 경우에, 3차원 사진 데이터를 1차원으로 평면화시켜야 한다. 사진 데이터를 평면화 시키는 과정에서 공간 정보가 손실될 수밖에 없다. 결과적으로 이미지 공간 정보 유실로 인한 정보 부족으로 인공 신경망이 특징을 추출 및 학습이 비효율적이고 정확도를 높이는데 한계가 있다. 이미지의 공간 정보를 유지한 상태로 학습이 가능한 모델이 바로 CNN이다

3. CNN의 구조

[출처: https://rubber-tree.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-CNN-Convolutional-Neural-Network-%EC%84%A4%EB%AA%85]

CNN은 위 이미지와 같이 이미지의 특징을 추출하는 부분과 클래스를 분류하는 부분으로 나눌 수 있다. 특징 추출(Feature extraction) 영역은 Convolution Layer Pooling Layer를 여러 겹 쌓는 형태로 구성된다. Convolution Layer는 입력 데이터에 필터를 적용 후 활성화 함수를 반영하는 필수 요소이다. Convolution Layer 다음에 위치하는 Pooling Layer는 선택적인 레이어이다.

 

CNN 마지막 부분에는 이미지 분류(Classification)를 위한 Fully Connected Layer 추가된다. 이미지의 특징을 추출하는 부분과 이미지를 분류하는 부분 사이에 이미지 형태의 데이터를 배열 형태로 만드는 Flatten 레이어가 위치 한다.

그럼 위에서 볼드 처리한 각 Layer가 어떻게 동작하는 지 알아보도록 하자.

 

4.  특징 추출(Feature extraction)

Convolution Layer

Color 이미지는 3D

이미지 데이터는 그림 4와 같이 높이X너비X채널의 3차원 텐서 (tensor)로 표현될 수 있다. 만약, 이미지의 색상이 RGB 코드로 표현되었다면, 채널의 크기는 3이 되며 각각의 채널에는 R, G, B 값이 저장된다.

[출처: https://rubber-tree.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-CNN-Convolutional-Neural-Network-%EC%84%A4%EB%AA%85]

Filter 적용

하나의 합성곱 계층에는 입력되는 이미지의 채널 개수만큼 필터가 존재하며, 각 채널에 할당된 필터를 적용함으로써 합성곱 계층의 출력 이미지가 생성된다예를 들어, 높이X너비X채널이 4X4X1인 텐서 형태의 입력 이미지에 대해 3X3 크기의 필터를 적용하는 합성곱 계층에서는 아래 그림과 같이 이미지와 필터에 대한 합성곱 연산을 통해 2X2X1 텐서 형태의 이미지가 생성된다.(+bias)

[출처: https://rubber-tree.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-CNN-Convolutional-Neural-Network-%EC%84%A4%EB%AA%85]

 

Stride

이미지에 대해 필터를 적용할 때는 필터의 이동량을 의미하는 스트라이드(stride)를 설정해야한다. 아래 그림은 동일한 입력 이미지와 필터에 대해 스트라이드 값에 따른 출력 이미지의 변화를 보여준다. CNN을 구현할 때 합성곱 계층의 스트라이드는 주로 1로 설정된다.

[출처: https://rubber-tree.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-CNN-Convolutional-Neural-Network-%EC%84%A4%EB%AA%85]

Padding

위에서 봤던 두 그림에서 볼 수 있듯이 입력 이미지에 대해 합성곱을 수행하면, 출력 이미지의 크기는 입력 이미지의 크기보다 작아지게 된다. 4x4 였던 입력 이미지가 합성곱을 수행하여 2x2 의 출력 이미지의 크기를 갖는다. 그러므로 합성곱 계층을 거치면서 이미지의 크기는 점점 작아지게 되고, 이미지의 가장자리에 위치한 픽셀들의 정보는 점점 사라지게 된다. 이러한 문제점을 해결하기 위해 이용되는 것이 패딩 (padding)이다.

[출처: https://rubber-tree.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-CNN-Convolutional-Neural-Network-%EC%84%A4%EB%AA%85]

패딩은 위의 그림과 같이 입력 이미지의 가장자리에 특정 값으로 설정된 픽셀들을 추가함으로써 입력 이미지와 출력 이미지의 크기를 같거나 비슷하게 만드는 역할을 수행한다.  Zero-padding(이미지의 가장자리에 0의 값을 갖는 픽셀을 추가하는 것)의 경우, 이미지 손실이 없음을 확인할 수 있다.

 

활성화 함수

가중합의 결과를 놓고 1 또는 0을 출력해서 다음으로 보내는 0과 1을 판단하는 함수이다.

[출처: 모두의 딥러닝]

Pooling Layer

이미지의 크기를 계속 유지한 채 Fully Connected layer로 가게 된다면 연산량이 기하급수적으로 늘 것이다적당히 크기도 줄이고, 특정 feature를 강조할 수 있어야 하는데 그 역할을 Pooling layer에서 하게 된다.

 

*처리 방법: Max Pooling, Average Pooling, Min Pooling

 

CNN에서는 주로 Max Pooling 사용한다이는 뉴런이 가장 큰 신호에 반응하는 것과 유사하다고 한다이렇게 하면 노이즈가 감소하고 속도가 빨라지며 영상의 분별력이 좋아진다.

아래 그림은 stride 2로 설정된 max-pooling 기반 풀링 계층의 동작을 보여준다.

[출처: https://rubber-tree.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-CNN-Convolutional-Neural-Network-%EC%84%A4%EB%AA%85]

위의 그림에서는 2X2 크기의 선택 영역마다 max-pooling을 적용했으며, 일반적으로 Pooling layer stride는 선택 영역의 높이 또는 너비의 크기와 동일하게 설정된다.

 

이미지 데이터의 특징은 인접 픽셀들 간의 유사도가 매우 높다는 것이다. 따라서 이미지는 픽셀 수준이 아니라, 특정 속성을 갖는 선택 영역 수준으로 표현될 수 있으며, Pooling layer은 이미지 데이터의 이러한 특징을 바탕으로 설계되었다. Max-pooling의 경우에는 선택 영역에서 가장 큰 값을 해당 영역의 대표값으로 설정하는 것과 같다. CNN에서는 이러한 Pooling layer을 이용함으로써 아래와 같은 다양한 이점들을 얻을 수 있다.

 

   ▷ 선택 영역 내부에서는 픽셀들이 이동 및 회전 등에 의해 위치가 변경되더라도 출력값을 동일하다. 따라서 Pooling layer을 이용할 경우이미지를 구성하는 요소들의 이동 및 회전 등에 의해 CNN의 출력값이 영향을 받는 문제를 완화할 수 있다.

   ▷ CNN이 처리해야하는 이미지의 크기가 크게 줄어들기 때문에 인공신경망의 model parameter 또한 크게 감소한다. 따라서 Pooling layer을 이용함으로써 CNN 학습 시간을 크게 절약할 수 있으며오버피팅 (overfitting) 문제 또한 어느정도 완화할 수 있다.

4.  이미지 분류(Classification)

Fully Connected Layer

지금까지 설명한 내용이 '특징 추출'을 위한 작업이었고 그 다음부터는 분류 작업이다. 이미지 특징을 추출하여 이것이 무엇을 의미하는 데이터 인지를 분류 작업하는 것이다.

 

여기에도 2가지 종류의 Layer가 있다.

  • Flatten Layer : 데이터 타입을 Fully Connected 네트워크 형태로 변경. 입력 데이터의 shape 변경만 수행
  • Softmax Layer : Classification 수행

출처

https://rubber-tree.tistory.com/entry/%EB%94%A5%EB%9F%AC%EB%8B%9D-%EB%AA%A8%EB%8D%B8-CNN-Convolutional-Neural-Network-%EC%84%A4%EB%AA%85