본문 바로가기

기계학습/ML,DL Backgroud 이론 - [대학원] 전공 수업

[기계학습 11~12] 5. Convolutional Neural Networks (CNNs) - 작성 중

#1 Intro

1) DeepLearning on Large Inputs

 

- 예를 들어 1,000 x 1,000 pixel 및 3개 채널의 고양이 사진을 분류하기 위해서 우측 하단처럼 3,000,000 x 1 차원의 input vector와 3,000,000 x 100(single layer perceptron의 개수, 추후(p.9) 상술) 차원의 W Matix가 필요

2) 'Convolutional' Neural Networks

 

 

3) A Bit of History 

- Neocognitrion (1980)

- RBM (2006)

- AlexNet (2012)

 

 

#2 What is Convolution?

1) ConvNet

- ConvNet is a sequence of layers, and every layer of a ConvNet transforms one volume of activations to another through a differentiable function.

합성곱 신경망(콘볼루션 신경망, Convolutional neural network, CNN)은 시각적 영상을 분석하는 데 사용되는 다층의 피드-포워드적인 인공신경망의 한 종류이다. 필터링 기법을 인공신경망에 적용하여 이미지를 효과적으로 처리할 수 있는 심층 신경망 기법으로 행렬로 표현된 필터의 각 요소가 데이터 처리에 적합하도록 자동으로 학습되는 과정을 통해 이미지를 분류하는 기법이다. (위키백과)
합성곱 신경망은 정규화 된 버전의 다층 퍼셉트론이다. 다층 퍼셉트론은 일반적으로 완전히 연결된 네트워크, 즉 한 계층의 각 뉴런이 다음 계층의 모든 뉴런에 연결되는 신경망 구조이다. 이와 같이 네트워크가 완전 연결된 경우 주어진 데이터에 과적합 되는 경향이 있다. 일반적인 정규화를 위해 최적화 함수에 특정 척도를 추가하는 방법이 흔히 쓰이지만, CNN은 정규화를 위한 다른 접근 방식을 취한다. 데이터에서 계층적 패턴을 활용하고 더 작고 간단한 패턴을 사용하여 더 복잡한 패턴을 표현함으로써 정규화와 같은 효과를 내는 것이다. 따라서 합성곱 신경망의 연결 구조의 복잡성은 유사한 기능의 다층 퍼셉트론에 비해 극단적으로 낮다. (위키백과)

 

> ConvNet의 세 가지 구성요소 

 

- ConvNet이란 위의 구성요소들이 layer를 쌓은 것

 

2) Perceptron

 

 

- 기존의 perceptron은 1D벡터로서, 공간 정보를 담지 못한다는 점과, 연산량이 매우 많다는 한계를 갖고 있음

 

3) Convolution Layer

 

컨볼루션 레이어는 입력 이미지를 특정 Filter(Kernel)를 이용하여 탐색하면서 이미지의 특징들을 추출하고, 추출한 특징들을 Feature Map으로 생성한다. 피처맵은 필터가 전체 이미지를 Stride하며 모든 픽셀과 연산을 거쳐 나온 결과값이며, 필터의 크기와 같다.
(https://jarikki.tistory.com/26)

 

- Convolution Layer는 Perceptron과 달리 spatial structure를 보존한다.

 

 

- z축으로는 multiplication만 하므로 depth에 해당하는 차원수는 계속 보존된다.

 

 

- image의 5x5x3 chunk와 filter의 dot product한 결과는 위와 같으며, 이 과정을 전체 이미지로 확장시키면 아래와 같이 도식화할 수 있다.

 

 

 

- 더불어, 필터별로 이미지와 dot product를 할 때 Activation Map이 하나씩 발생하며, 이에 따른 필터/Activation Map 등의 개수는 아래와 같다.

1) Filter 개수 = Activation Map의 개수

2) 입력 데이터의 채널 수 = Filter의 채널 수

 

- 이를 다시 한 번 정리하면 아래와 같다.

 

#3 ConvNet의 세 가지 구성요소

1) Convolutional Layer

- ConvNet is a sequence of convolution layers, interspersed with non-linear activation functions (ex. ReLU)

※ intersperse : 흩뿌리다.

 

> Intro

 

 

> Convolution 계산식 (Skip in Class)

 

 

 

> Receptive Fields

 

- Receptive Fields : output 한 점을 도출하기 위해 input에서 영향을 미친 범위 

 

 

> Hierarchy of Convolution Layers

"Semantic Hierarcy from image"

- Low-Level Feature : 엣지, 컬러 정보등 low-level feature

→ Mid/High-Level Feature : 보다 복잡한 shape 정보 및 보다 정확한 structure feature 

→ Trainable Classifier

 

> Visualization of Convolution

- Conv. Net에서 각 layer가 뭘 배우는지 시각화할 수 있는 사이트

https://www.cs.ryerson.ca/~aharley/vis/conv/

 

> A Closer Look at Spatial Dimensions

 

N x N input (spatially), F x F filter, applied with stride S pad with P pixel border

- output pixel 수 = {(N - F + 2P) / S} + 1

- output pixel 수(Padding = 0일 때) = {(N - F) / S} + 1

 

※ Padding : 이미지 분류 말고 Segmentation 과 같은 task 시 필요

 

(예제) 7x7 input, 3x3 filter, applied with Stride 1 and Zero Padding

 

(일반화 ★)

 

 

- ConvNet의 하이퍼파라미터는 필터 수 K, 스트라이드 크기 S, Zero Padding 크기 P, 가로 또는 세로의 크기를 의미하는 Spatial extent F 총 네 개이다.

- 이때 출력층의 가로/세로는(W2/H2) 입력층의 가로/세로에(W1/H1) 각각 align시켜 계산해야 된다.

 

(예제)

 

6단원에서 상술할 구글넷과 비슷한 원리

 

> The Brain/Neuron View of Conv Layer

 

 

 

2) Fully Connected Layer

 

> Hierarchy of Convolution Layers

 

 

 

 

 

 

 

 

 


 

# Reference

- Deep Learning by I.Goodfellow et al.

- Dive into Deep Learning by A.Zhang et al.

- Korea Univ. AAI107, 'Machine Learning' Lecture