Convolutional Neural Network (합성곱 신경망)
1998년 얀 레쿤 교수가 소개한 신경망, 이미지 인식 분야에서 강력한 성능을 냄.
음성인식이나 자연어 처리 등에도 사용가능하고 활용성이 매우 뛰어남.
What is Convolution?
영상 처리 분야에서 convoulution(합성곱)이라는 것은 주로 filter 연산에 사용된다.
영상으로부터 특정 feature들을 추출하기 위한 필터를 구현할 때 사용한다.
즉, 3 by 3 또는 그 이상의 window 혹은 mask를 영상 전체에 대해 반복적으로 수행하면, 그 mask의 계수 값들에 따라 적절한 결과를 얻을 수 있다.
쉽게 이야기하면 평면 행렬에서 지정한 영역의 값들을 하나의 값으로 압축한다고 생각하면 된다.
CNN이란?
합성곱(Convolution) 연산을 사용하는 ANN의 한 종류이다.
Convolution을 통해 3차원 데이터의 공간적 정보를 유지한 채 다음 레이어로 보낼 수 있다.
기본적으로 Convolution layer와 Pooling layer로 구성된다.
하나의 값으로 압축할 때 convolution layer는 weight와 bias를 적용하고, pooling layer는 단순히 값들 중 하나를 선택해서 가져오는 방식이다.
지정한 크기의 영역을 window라고 하고, window의 값을 오른쪽, 그리고 아래쪽으로 한칸씩 움직이면서 은닉층을 완성한다.
움직이는 크기를 변경할 수 있고, 몇 칸씩 움직일지 정하는 값을 Stride라고 한다.
예를 들어, stride = 2 이면 두 칸씩 건너 뛰면서 필터를 적용하면 된다.
입력층의 윈도우를 은닉층의 뉴런 하나로 압축할 때, convolution layer에서 윈도우 크기만큼의 weight와 1개의 bias를 적용한다.
예를 들어 윈도우 크기가 3 by 3이라면 3X3개의 weight와 1개의 bias가 필요하다. 이 3X3개의 weight와 1개의 bias를 kernel이라고 한다.
이 커널은 해당 은닉층을 만들기 위한 모든 윈도우에 공통으로 적용된다.
CNN의 가장 중요한 특징인데, 예를 들어 입력층이 28 X 28이라고 했을 때, 기본 신경망으로 모든 뉴런을 연결하면 784개의 가중치를 찾아내야 하지만, convolution layer 에서는 9개의 가중치만 찾아내면 된다.
따라서 계산량이 매우 적어져 학습시간이 줄어든다.
'DeepLearning' 카테고리의 다른 글
Deep Learning | GAN (Generative Adversarial Network) (0) | 2021.07.05 |
---|---|
Deep Learning | Autoencoder (0) | 2021.07.05 |
Deep Learning | MNIST (0) | 2021.06.30 |
Deep Learning | Learning Model 재사용 & 텐서보드 사용 (0) | 2021.06.30 |
Computer Vision Summary | 컴퓨터 비전 총정리 -2 (0) | 2021.06.30 |
댓글