CNN
2012년 이미지 인식 대회에서 토론토대 교수인 제프리 힌튼의 AlexaNet이 압도적인 차이로 이김
AlexaNet은 컨볼루션 신경망인 CNN이다.
CNN은 이미지를 인식하는 대표적인 신경망 모델이다.
CNN은 사람의 시각 피질을 참고하여 만든 것이다.
뇌의 시각 피질은 서로 계층적으로 연결되어있다.
낮은 계층에서는 단순한 패턴을 인식하고, 높은 계층에서 이를 조합하여 복잡한 패턴으로 추상화한다.
네오코고니트론에 지도학습에 적용한 CNN을 공개함
당시 은행에서 수표의 숫자를 인식하는데 사용할 정도로 성능이 좋았음
MNIST 데이터셋은 얀 르쿤이 모델을 훈련시키기 위해 만든 것이다.
이때 CNN 모델이 가진 문제는 해상도가 크거나 복잡한 사진은 학습하지 못했다.
20년이 지난 뒤 CNN은 다시 화려하게 부활한다
딥러닝의 창시자인 제프리 힌튼이 CNN의 고질적인 문제를 해결했기 때문임
신경망의 층이 깊어지면 학습이 안되던 문제를 ReLU 활성화 함수로 해결했다.
훈련 데이터에만 맞게 학습되던 오버피팅은 드롭아웃 기법을 써서 완화했다.
덕분에 지금은 CNN이 딥러닝의 핵심 모델이 되었다.
CNN의 기제
- 사진이 입력으로 들어오면 먼저 특징을 추출한다(ex. 눈의 모양, 부리 모양, 깃털 모양 등)
- 이 과정을 컨볼루션이라고 한다
- 특징을 추출하는 패턴은 정사각형 모양의 필터다. 이 필터를 입력의 왼쪽 상단부터 오른쪽으로 이동하며 각 위치마다 포개지는 숫자를 곱해서 모두 더한다.
- 컨볼루션 결과를 기록한 것이 특성 맵이다.
- 말 그대로 필터의 특성이 어떤 입력에 많이 존재하는지 보여주는 지도임
- 그 위치가 필터와 유사하다는 것을 의미함
- 일반 신경망은 모든 노드가 연결되어있고, 각 연결의 가중치를 학습한다.
- 반면 CNN은 미리 고정된 연결은 없다
- 대신 컨볼루션 과정을 통해 출력을 계산한다
- CNN에서 학습하는 것은 바로 필터의 가중치
- 사람이 직접 특징 필터를 만들지 않고, 모델이 학습을 통해 스스로 배운다
필터의 동작 방식
- 가로와 세로를 판별하는 필터가 있다
- 같은 이미지라도 필터를 통과하면 추출된 패턴이 달라진다
- 필터의 개수만큼 특성 맵이 나오고
- 맥스 풀링으로 특성 맵의 크기를 줄인다(맥스 풀링은 가장 큰 값만 추출하여 출력을 작게 만드는 방법이다)
- 컨볼루션과 맥스 풀링은 한 층으로 하여 쌓아 올린다
CNN의 목표
- 사진이 무엇인지 맞추는 것
- 마지막으로 완전연결 신경망을 붙여 특성맵을 사진의 클래스로 최종 분류한다