Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 알고리즘
- IPV4
- 프로토콜
- Protocol
- 패스트캠퍼스
- Machine learning
- 네트워크
- 네트워크 관리사
- 파이썬
- 서브넷마스크
- Algorithm
- network
- 머신러닝
- ICQA
- Django
- 자격증
- Dynamic Programming
- 실기
- Windows Server
- 네트워크 자격증
- Python
- 자료구조
- 딥러닝
- 기본 정렬
- 밑바닥부터 시작하는 딥러닝
- dns
- 네트워크 관리사 2급
- 코딩테스트
- FTP
- deep learning
Archives
- Today
- Total
쳉지로그
[밑바닥부터 시작하는 딥러닝] Chapter 7. 합성곱 신경망(CNN) (1) 본문
7.1 전체 구조
합성곱 신경망(Convolutional neural network, CNN)
- 이미지 인식과 음성 인식 등 다양한 곳에서 사용
- 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 CNN을 기초로 함
- 새로 등장하는 계층: 합성곱 계층(convolutional layer), 풀링 계층(pooling layer)
Affine 계층과 CNN 비교
- Affine 계층: 인접하는 계층의 모든 뉴런과 결합: 완전연결(fully-connected) Affine-ReLU 연결
- CNN: 합성곱 계층과 풀링 계층이 추가됨 Conv-ReLU-(Pooling) 흐름
- 출력에 가까운 층에서는 'Affine-ReLU' 구성 사용 가능
- 마지막 출력 계층에서는 'Affine-Softmax' 조합을 그대로 사용
7.2 합성곱 계층
7.2.1 완전연결 계층의 문제점
- 완전연결 계층: 데이터의 형상이 무시됨
(예시) 입력 데이터가 이미지인 경우
- 이미지: 세로, 가로, 채널(색상)으로 구성된 3차원 데이터
- 완전연결 계층에 입력할 때 평탄화(3차원→1차원)
⇒ 완전연결 계층은 형상을 무시하고 모든 입력 데이터를 동등한 뉴런으로 취급하여
형상에 담긴 정보를 살릴 수 없음.
- 합성곱 계층 ⇒ 형상 유지 (이미지의 공간 정보 상태를 유지하면서 학습이 가능한 모델)
- 특징 맵(feature map) : 합성곱 계층의 입출력 데이터
- - 출력 특징 맵(output feature map) : 합성곱 계층의 출력 데이터
- - 입력 특징 맵(input feature map) : 합성곱 계층의 입력 데이터
7.2.2 합성곱 연산
- 합성곱 연산 : 이미지 처리에서 말하는 필터 연산에 해당
- 입력 데이터에 필터(커널)를 적용
- 필터의 윈도우(window)를 일정 간격으로 이동해가며 입력 데이터에 적용
- 입력과 필터에서 대응하는 원소끼리 곱한 후 그 총합을 구함
- = 단일 곱셈-누산(fused multiply-add, FMA)
- CNN에서 필터의 매개변수 : 가중치
- CNN에도 편향 존재 : 편향은 항상 하나(1x1)만 존재
7.2.3 패딩
- 패딩(padding) : 합성곱 연산을 수행하기 전에 입력 데이터 주변을 특정 값(예컨대 0)으로 채움
- 주로 출력 크기를 조정할 목적으로 사용함
7.2.4 스트라이드
- 스트라이드(strid) : 필터를 적용하는 위치의 간격
(예시) 스트라이드가 2인 합성곱 연산 ( ⇒ 필터를 적용하는 윈도우가 두 칸씩 이동)
- 스트라이드를 키우면 출력 크기는 작아짐
- 패딩을 크게 하면 출력 크기가 커짐
- 패딩과 스트라이드의 관계 수식화
- 입력 크기: (H, W) 필터 크기: (FH, FW) 출력 크기: (OH, OW) 패딩: P 스트라이드: S
7.2.5 3차원 데이터의 합성곱 연산
- 채널 쪽으로 특징 맵이 여러 개 있다면 입력 데이터와 필터의 합성곱 연산을 채널마다 수행
- 채널마다 수행한 결과를 더해서 하나의 출력을 얻음
7.2.6 블록으로 생각하기
- 3차원의 합성곱 연산은 데이터와 필터를 직육면체 블록이라고 생각
- 채널 수 C, 높이 H, 너비 W ⇒ (C, H, W)
- 채널 수 C, 필터 높이 FH, 필터 너비 FW ⇒ (C, FH, FW)
- 출력 데이터는 한 장의 특징 맵 (채널이 1개인 특징 맵)
- 합성곱 연산의 출력으로 다수의 채널을 내보내기 위해서는 "필터(가중치)를 다수 사용"
- FN개의 필터를 적용해서 모은 FN개의 맵으로 형상이 (FN, OH, OW)인 블록이 완성됨
- 완성된 블록을 다음 계층으로 넘기는 것이 CNN의 처리 흐름
- 합성곱 연산에서는 필터의 수도 고려해야 함
- ⇒ 필터의 가중치 데이터 = 4차원 데이터 (출력 채널 수, 입력 채널 수, 높이, 너비)
- 합성곱 연산에도 편향이 쓰임 - 편향은 채널 하나에 값 하나씩으로 구성
- 편향의 형상 : (FN, 1, 1)
7.2.7 배치 처리
- 신경망 처리 - 입력 데이터를 한 덩어리로 묶어 배치로 처리했음
- 완전연결 신경망 - 위 방식을 지원하여 처리 효율을 높이고, 미니배치 방식의 학습도 지원
- 합성곱 연산 - 마찬가지로 배치 처리 지원
- ⇒ 각 계층을 흐르는 데이터의 차원을 하나 늘려 4차원 데이터로 저장
- (데이터 수, 채널 수, 높이, 너비) 순
7.3 풀링 계층
- 풀링: 세로, 가로 방향의 공간을 줄이는 연산
(예시) 2X2 최대 풀링을 스트라이드 2로 처리하는 순서
- 2X2 크기의 영여겡서 가장 큰 원소 하나를 꺼냄
- 스트라이드 2로 처리하므로 2X2 윈도우가 원소 2칸 간격으로 이동
(참고) 풀링의 윈도우 크기와 스트라이드는 같은 값으로 설정하는 것이 일반적
7.3.1 풀링 계층의 특징
- 학습해야 할 매개변수가 없다
- 합성곱 계층과 달리 학습해야 할 매개변수가 없음
- 대상 영역에서 최댓값(또는 평균)을 취하는 명확한 처리이기 때문
- 채널 수가 변하지 않는다
-
- 입력 데이터의 채널 수 그대로 출력 데이터로 내보냄
- 채널마다 독립적으로 계산하기 때문
- 입력의 변화에 영향을 적게 받는다 (강건하다)
- 입력 데이터가 조금 변해도 풀링의 결과는 잘 변하지 않음
- 입력 데이터의 차이를 풀링이 흡수
'머신러닝 > 밑바닥부터 시작하는 딥러닝' 카테고리의 다른 글
[밑바닥부터 시작하는 딥러닝] Chapter 5. 오차역전파법 (0) | 2021.04.28 |
---|---|
[밑바닥부터 시작하는 딥러닝] Chapter 4. 신경망 학습(2) (0) | 2021.04.21 |
[밑바닥부터 시작하는 딥러닝] Chapter 4. 신경망 학습(1) (0) | 2021.04.21 |
[밑바닥부터 시작하는 딥러닝] Chapter 3. 신경망 (0) | 2021.04.14 |
[밑바닥부터 시작하는 딥러닝] Chapter 2. 퍼셉트론 (0) | 2021.04.14 |
Comments