1. CNN 이란?
이미지 인식 패턴을 찾는데 유용한 알고리즘으로 데이터를 학습하고 새로운 데이터가 들어왔을 때 이미지를 분류해낼 수 있는 알고리즘이다. 자율주행차, 얼굴인식 등에 주로 쓰이는 알고리즘이기도 하다.
예를들어
영상을 인식을 통해 영상 안의 강아지와 고양이를 인식하고 분류할 것이라면,
1) 먼저 카메라로 촬영한 영상의 이미지를 가져온다.
2) 그다음으로 전처리 과정이 필요하다. 잡음을 없애고 단순화하기 위함이다.
3) 영상 분할 기법을 사용해서 영상에서 동물과 배경을 분리한다.
4) 추출된 동물 이미지에서 동물의 특징값을 계산한다.
5) 이 특징값들을 이용하여 분류기는 최종 판단을 내린다. => 강아지인지 고양이인지
위의 방법은 전통적인 영상 인식 시스템에서 특징을 추출하는 과정이다.
이렇게 하면 사람이 직접 특징을 선택해주고 추출해줘야하고 이것이 분류에 영향을 미치게 된다.
같은 이미지인데 오른쪽에 치우쳐있는 이미지와 왼쪽에 치우쳐있는 이미지를 위치가 다르다는 이유로 다르게 인식해버린다는 단점이 있다. 따라서 특징 추출 과정 해결을 위한 딥러닝 알고리즘이 필요했는데 이것이 바로 CNN 이다.
CNN 은 부분적인 수용영역을 갖는 컨볼루션 커널을 도입하여 층을 쌓아가며 입력 이미지를 재조합한다.
CNN 을 통해 층을 쌓아가며 입력 이미지의 정보를 재조합하고 점진적으로 추상적인 특징맵을 학습한다.
특징 추출과 분류 두단계를 하나로 통합할 수 있다.
2. CNN 의 일반적인 구조
- 입력층
- 컨볼루션층, 풀링층 => 여러번 반복 된다.
입력층에서 컨벌루션 연산을 통하여 특징을 뽑아내는 특징맵이 존재한다. 풀링 연산을 적용한다. (풀링 연산: 입력의 차원을 줄임) 신경망의 맨 끝에는 완전히 연결된 구조의 전통적인 분류 신경망(MLP) 이 있어 추출된 특징을 바탕으로 물체를 인식한다.
이미지 (3차원 데이터)
입력레이어 -> 컨볼루션 레이어 -> 풀링 레이어 -> 출력 레이어 ( 인공신경망, 회귀, 분류)
컨볼루션 신경망)
CNN 은 입력 특성 맵을 받는다. 이 맵은 3차원 행렬, 처음 2차원의 크기가 픽셀로 표시한 이미지의 길이 및 너비에 대응
세번째 차원의 크기는 3, 이는 R,G,B 등 컬러 이미지의 채널 3개에 해당한다.
CNN 은 각각 세가지의 작업을 맡는 여러개의 모듈로 구성되어 있다.
컨볼루션은 입력 특성 맵의 타일을 추출한 다음 이 타일에 필터를 적용하여 새로운 특성을 산출한다.
그 결과 생성된 출력 특성 맵, 즉 합성곱된 특성은 입력 특성 맵과 크기 및 깊이가 달라질 수 있다.
컨볼루션 단계에서 타일크기와 동일한 크기의 행렬인 필터가 입력 특성 맵의 그리드를
한 번에 한 픽셀씩 가로 및 세로 방향으로 이동하면서 해당하는 타일을 추출한다.
CNN 은 각 필터 - 타일 쌍마다 필터 행렬과 타일 행렬의 요소를 곱하고,
생성된 행렬의 모든 요소를 더하여 하나의 값을 얻는다.
학습 단계에서 CNN 은 입력 특성 맵에서 텍스처, 가장자리, 모양 등 유의미한
특성을 추출하는 데 가장 적합한 필터 행렬의 값이 어느정도인지 학습하게 된다.
입력에 적용되는 필터의 수가 늘어날수록 CNN 이 추출할 수 있는 특성의 수도 증가한다.
하지만, 필터가 많아질수록 학습시간도 늘어날 수 밖에없다.
그렇기 때문에 정확한 이미지 분류에 필요한 특성을 추출하는데 최소한의 필터만 사용하는
신경망을 구축하는 것을 목표로 한다.
2. ReLU
CNN 은 모델에 비선형을 주기 위해 컨볼루션 작업이 끝날 때마다 합성곱된 특성에
RELU 변형을 적용한다. F(x) = max(0,x) 로 적용되는 ReLU 함수는
x>0 인 모든 값에 대해 x를 x<=0 인 모든값에 대해 0을 반환한다.
3. 풀링
처리 시간을 줄이기 위해 합성곱된 특성을 다운 샘플링한다.
가장 중요한 특성 정보는 남겨 두면서 특성 맵의 차원 수를 줄인다.
이 과정에서 사용되는 알고리즘이 최대풀링이다.
최대풀링의 과정은 컨볼루션과 비슷하다.
4. 완전 연결형 레이어
컨볼루션 신경망의 끝에는 하나 이상의 완전 연결형 레이어가 있다.
첫번째 레이어에 있는 모든 노드가 두번째 레이어의 모든 노드와 연결되어 있다면
두 레이어가 완전히 연결되었다고 한다.
완전 연결형 레이어는 컨볼루션을 통해 추출된 특성을 기반으로 분류를 진행한다.
일반적으로 최종적인 완전 연결형 레이어에는 소프트맥스 활성화함수가 포함되어 있는데,
이함수는 모델에서 예측하고자 하는 분류 라벨별로 0 -1 까지 확률 값을 출력한다.
참고
developers.google.com/machine-learning/practica/image-classification/convolutional-neural-networks
'빅데이터 & 인공지능' 카테고리의 다른 글
신경망의 딥러닝의 여러가지 문제 (0) | 2020.11.22 |
---|---|
MLP 신경망 (Multi-Layer Perceptron) (0) | 2020.11.21 |
기계학습, 머신러닝이란? (0) | 2020.10.19 |
빅데이터란 무엇인가 (0) | 2020.06.02 |
파이썬을 이용한 머신러닝 ) 다중선형회귀분석 (0) | 2020.04.28 |