Skip to content

Files

Latest commit

 

History

History
 
 

파일 설명

파일명 파일 용도 관련 절 페이지
apply_filter.py cactus_gray.png 파일에 필터를 적용합니다.
gradient_check.py SimpleCovNet이 기울기를 올바로 계산하는지 확인합니다.
params.pkl 미리 학습된 가중치 값들입니다.
simple_convnet.py “Convolution-ReLU-Pooling-Affine-ReLU-Affine-Softmax” 순으로 흐르는 단순한 합성곱 신경망(CNN)입니다. 7.5 CNN 구현하기 251
train_convnet.py SimpleConvNet으로 MNIST 데이터셋을 학습합니다. 7.5 CNN 구현하기 254
visualize_filter.py 합성곱 1번째 층의 가중치를 학습 전과 후로 나눠 시각화해봅니다. 이미 학습된 가중치 값(params.pkl)을 읽어서 사용하므로 학습 과정은 생략됩니다. 7.6.1 1번째 층의 가중치 시각화하기 254

7장 합성곱 신경망(CNN)

이번 장의 주제는 합성곱 신경망(convolutional neural network, CNN)입니다. CNN은 이미지 인식과 음성 인식 등 다양한 곳에서 사용되는데, 특히 이미지 인식 분야에서 딥러닝을 활용한 기법은 거의 다 CNN을 기초로 하죠. 이번 장에서는 CNN의 메커니즘을 자세히 설명하고 이를 파이썬으로 구현해보겠습니다.

옮긴이_ 합성곱은 공학과 물리학에서 널리 쓰이는 수학적 개념으로, 간단히 정의해보면 다음과 같습니다. “두 함수 중 하나를 반전(reverse), 이동(shift)시켜가며 나머지 함수와의 곱을 연이어 적분한다.” 합성곱 신경망을 영어 발음 그대로 ‘컨벌루션 신경망’으로도 많이 씁니다만, 위 정의와 이번 장에서 설명할 동작 원리를 이해하고 나면 ‘합성곱 신경망’이란 용어가 더 직관적으로 다가올 수도 있을 겁니다.

목차

7.1 전체 구조 
7.2 합성곱 계층 
__7.2.1 완전연결 계층의 문제점 
__7.2.2 합성곱 연산 
__7.2.3 패딩 
__7.2.4 스트라이드 
__7.2.5 3차원 데이터의 합성곱 연산 
__7.2.6 블록으로 생각하기 
__7.2.7 배치 처리 
7.3 풀링 계층 
__7.3.1 풀링 계층의 특징 
7.4 합성곱/풀링 계층 구현하기 
__7.4.1 4차원 배열 
__7.4.2 im2col로 데이터 전개하기 
__7.4.3 합성곱 계층 구현하기 
__7.4.4 풀링 계층 구현하기 
7.5 CNN 구현하기 
7.6 CNN 시각화하기 
__7.6.1 1번째 층의 가중치 시각화하기 
__7.6.2 층 깊이에 따른 추출 정보 변화 
7.7 대표적인 CNN 
__7.7.1 LeNet 
__7.7.2 AlexNet 

이번 장에서 배운 내용

  • CNN은 지금까지의 완전연결 계층 네트워크에 합성곱 계층과 풀링 계층을 새로 추가한다.
  • 합성곱 계층과 풀링 계층은 im2col (이미지를 행렬로 전개하는 함수)을 이용하면 간단하고 효율적으로 구현할 수 있다.
  • CNN을 시각화해보면 계층이 깊어질수록 고급 정보가 추출되는 모습을 확인할 수 있다.
  • 대표적인 CNN에는 LeNet과 AlexNet이 있다.
  • 딥러닝의 발전에는 빅 데이터와 GPU가 크게 기여했다.