-
합성곱 신경망 (CNN)
특징
1. Dense 층과 합성곱 층
- Dense 층 : 입력 특성 공간에 있는 전역 패턴을 학습
- 합성곱 층 : 지역 패턴 학습
2. 평행이동불변성
어떤곳에서 학습했던지간에 이미 패턴을 학습했다면 어느 위치에 있어도 이 패턴을 인식할 수 O
3. 공간적 계층 구조 학습
첫번째 층은 작은 지역 패턴 학습 ex) 에지
두번째 층은 더 큰 패턴 학습 ex) 고양이의 귀
4. 특성맵
(height, width, channels) 3D 텐서
height와 width는 네트워크가 깊어질수록 작아지고, channels는 RGB면 3, 흑백이면 1
합성곱 연산은 입력특성맵에서 작은 패치들을 추출 -> 모든 패치에 같은 변환을 적용하여 출력 특성맵을 만듦
5. 출력특성맵
(height, width, channels)
여기에서의 channels는 출력텐서의 깊이. Conv2D층에 전달된 첫번째 매개변수에 의해 조절됨 (보통 32개 or 64개)
즉, RGB입력처럼 특정 색을 의미하는것이 아니라, 필터의 개수를 의미
예를들어, MNIST예제에서 (28, 28, 1) 크기의 특성맵을 입력받고, (26, 26, 32) 크기의 특성맵 출력이것은 32개의 필터를 적용하는데, 필터의 크기가 26x26 인것. ( = 응답맵 )
* 응답 맵 : 입력의 각 위치에서 한 패턴에 대한 2D 맵
6. 합성곱의 정의
- 입력으로 부터 뽑아낼 패턴의 크기 : 보통 3 x 3 or 5 x 5 사용
- 특성맵의 출력 깊이 : 합성곱으로 계산할 필터의 수, 점점 깊어짐 ( = 점점 커짐 )
이 두개의 파라미터는 Conv2D(output_depth, (window_height, window_width)) 로 전달됨
출력과 입력 크기가 다를 수 있는 이유
패딩을 추가하거나 스트라이드를 사용하게 되면 출력의 높이와 너비값이 입력값과 달라질 수 있음
1. 패딩
- 입력과 동일한 높이와 너비를 가진 출력 특성 맵을 얻고 싶을 때 사용
- 입력 특성맵의 가장자리에 행과 열 추가
- padding 매개변수로 설정 : valid -> 패딩 사용 X, same -> 패딩 사용 O
( 기본값은 valid )
2. 스트라이드
- 두번의 연속적인 윈도우 사이의 거리
- 기본값 : 1
- ex) stride 2 사용 -> 특성맵의 너비와 높이가 2의 배수로 다운 샘플링됨
- 실전에서는 잘 사용 X, 보통은 stride 대신 최대풀링연산 사용함
3. 최대 풀링 연산
역할 : 강제적으로 특성 맵을 다운샘플링
물론, 유일한 방법은 아니고 스트라이드나 평균풀링을 사용할 순 있지만 최대풀링이 더 효과적!
* 다운샘플링하는 이유
: 처리할 특성 맵의 가중치 개수를 줄이기 위해서
* 다운샘플링을 하지 않고 합성곱으로만 이루어진 모델을 만든다면?
: 마지막 층의 필터는 초기 입력의 영역에 대한 정보만 담고 있음.
마지막 합성곱 층의 특성이 전체 입력에 대한 정보를 가지고 있어야 함
또한, 최종 특성 맵이 매우 많은 가중치들을 가지게 되어 심각한 과대적합이 발생할것
<케라스 창시자에게 배우는 딥러닝>(길벗, 2018)을 학습하고 개인 학습용으로 정리한 내용입니다.
'인공지능 > 케라스 창시자에게 배우는 딥러닝' 카테고리의 다른 글
[5. 컴퓨터 비전을 위한 딥러닝] 5.3 사전훈련된 컨브넷 사용하기 (0) 2021.01.24 [5. 컴퓨터 비전을 위한 딥러닝] 5.2 소규모 데이터셋에서 컨브넷 훈련하기 (0) 2021.01.20 [4. 머신러닝의 기본요소] 4-5. 보편적인 머신 러닝 작업 흐름 (0) 2021.01.13 [4. 머신러닝의 기본요소] 4-3, 4-4. 데이터 전처리 및 과대적합과 과소적합 (0) 2021.01.12 [4. 머신러닝의 기본요소] 4-1, 4-2. 머신러닝의 분류 및 모델 평가 방법 (0) 2021.01.11 댓글