[Ch6] 컨볼루션 신경망과 컴퓨터 비전
6.1 컨볼루션 신경망의 동기와 전개
동물의 감각 기관은 수용장으로 구성
고양이 실험
- 에지 방향에 따라 반응하는 뉴런이 정해져있음
- 같은 방향에 반응하는 뉴런은 같은 열에 배치되어있음
6.2 컨볼루션 신경망의 구조와 동작
6.2.1
컨볼루션
- 신호에서 특징을 추출하거나 신호를 변환하는데 사용하는 연산
-
신호처리, 영상처리, 컴퓨터 비전 등에 널리 쓰임
- n차원신호에 커널을 적용하면 특징 맵을 얻을 수 있음(마스킹 느낌이구먼…)
- 컨볼루전 연산을 적용한 결과를 특징 맵이라고 함
- 왜 특징이냐? -> 예시설명(에지)(커널을 적용한 결과는 입력 영상의 크기가 같고 특징을 담고 있기 때문에), 원하는 특징을 추출할 수 있게 됨
- 곱하고 그 결과를 다 더해줌
6.2.2 컨볼루션층과 풀링층
컨볼루션 신경망의 구성
- 컨볼루션층: 컨볼루션으로 특징맵을 추출하는 층
- 풀링층: 요약 통계량을 구하는 층
컨볼루션층을 구현할때 몇가지 아이디어
- 가장자리가 없어지는 문제(층을 많이 쌓을수록 가장자리가 없어짐, 커널의 크기가 클수록 빨리 없어짐) - 덧대기로 해결
- 보폭 - 입력 영상이 아주 큰 경우 영상 크기를 일부러 작게 줄이는 방법: 커널을 두 화소에 한번씩 적용
- 바이어스
- 컨볼루션층은 여러개의 커널을 사용하여 풍부한 특징 맵을 생성함(다중커널)
부분 연결성과 가중치 공유
- 부분 연결성: 다층 퍼셉트론에서는 모든 노드 쌍이 연결된 완전연결 구조이지만 컨볼루션 신경망에서는 에지의 개수가 커널의 크기임(h)
- 가중치 공유: 영상 전체에 동일한 커널을 적용하므로 가중치 공유에 따라 학습이 알아내야 하는 매개변수는 h개에 불과
풀링층
- 최대풀링: 커널 안에 있는 화소 중에서 최댓값을 취하는 연산
- 평균 풀링: 화소의 평균값을 취함
효과
- 지나치게 상세한 특징 맵에서 핵심을 추출해 성능을 높임
- 특징 맵의 크기를 줄여 메모리 효율과 계산 속도를 끌어올림
6.2.3
6.3 컨볼루션 신경망의 학습
컨볼루션 신경망은 커널을 학습 깊은 다층 퍼셉트론과 동일
6.3.1 손실 함수와 옵티마이저
- 손실함수: 신경망이 범하는 오류 측정(평균제곱오차, 교차 엔트로피)
- 예측 값과 샘플의 레이블 값과의 차이를 측정
- 옵티마이저: 손실 함수의 최저점을 찾아감, 미분 사용
6.3.2 통째 학습
고전적인 컴퓨터 비전 특징을 추출하는 커널을 사람이 직접 설계. 이러한 설계 방식을 수작업 설계 라고 함
- 자연현상과 같이 복잡한 데이터에서는 아주 낮은 성능
딥러닝 이후
- 특징을 학습으로 알아냄(특징학습)
- 특징 추출과 분류를 동시에 학습으로 알아냄
- 입력 패턴에서 최종 출력에 이르는 전체 과정을 학습한다는 의미에서 통째학습 이라고 함
6.3.3 컨볼루션 신경망의 성능이 월등한 이유
- 통째 학습 및 특징 학습을 한다: 특징 추출과 분류를 동시에 최적화하는 학습 방법은 따로 최적화 한 뒤 결합하는 학습 방법보다 뛰어남
- 신경망의 깊이를 더욱 깊게 하여 풍부한 특징을 추출한다.: 컨볼루션층은 부분 연결성과 가중치 공유로 인해 학습해야 할 매개변수의 개수가 적어 신경망의 깊이를 충분히 깊게 해도 학습이 잘 됨
- 컨볼루션 연산은 데이터의 원래 구조를 유지한 채 특징을 추출함: 입력 데이터가 3차원 텐서라면 컨볼루션층이 출력하는 특징 맵도 3차원임. 컨볼루션 연산은 영상의 화소의 이웃 화소와의 상관관계 정보를 그대로 유지하는 강점이 있음.(깊은 다층 퍼셉트론에서는 x. 여긴 영상을 1차원으로 펴서 이웃 정보가 사라짐)