관리 메뉴

Data Analysis for Investment & Control

CNN, Convolution Neural Network (가이드) 본문

MachineLearning/Classification

CNN, Convolution Neural Network (가이드)

Jeongseob.Kim 2018. 8. 28. 03:07




현대 딥러닝 분야에서 가장 포션이 큰 분야 중 하나라면 CNN을 들 수 있다. 


하드웨어 성능이 발전하면서 단위 연산 당 가격이 엄청나게 저렴해 졌기 때문에 전에는 컴퓨팅 성능이 따라주지 못해서 구현할 수 없었던 알고리즘들이 ImageNet 대회와 같은 대회를 통해 세상에 알려지면서 많은 기술적 진보를 이루어 내고 있다.


이미 CNN에 관한 많은 학습자료들이 웹에 존재하기 때문에 여기서는 굳이 상세한 설명은 하지 않으며, 회사에서 자체 세미나 과정을 거치면서 개인적으로 추천할만한 과정이나 블로그 또는 논문 등을 정리하려한다.





CNN에 대해서 다는 아니지만 공부를 해본 결과, 동물이나 사람의 시신경 및 뇌를 통해 입력된 시각적 시그널에 대한 반응과 이를 기반으로한 분류(인지)하는 과정을 모델링 하는 것이라고 할 수 있다.


그리고 이것을 가능하게 하기 위해 수 많은 뉴런을 모델링(Kernel 혹은 필터 맵)하고 계속적인 학습을 통해서 같은 종류의 대상을 분류(Classification)하거나 영역을 나눌(Segmentation) 수 있거나 개체를 구분(Object Detection)해 내거나하는 작업이 가능하도록 한다.


예전에 공대 교과과정 중에 '센서 및 신호처리'라는 과목에서 다루었던 필터의 컨볼루션(합성곱)의 개념을 Neural Net에 적용하여 신경망을 학습시킨다고 볼 수 있다. 입력 데이터와 컨볼루션되는 weight의 map(커널 맵이라고 하자)의 집합을 필터의 계수(Coefficient)라고 놓고 보면 결국에는 주어진 입력에 대해 우리가 원하는 신호(Classification의 loss 값)을 얻기 위해 필터의 계수를 조정해 나가는 과정이라고 할 수 있다.


단순히 센서 신호를 low-pass 한다거나 band-pass 하는 수준을 훨씬 넘어서는 거지만 수많은 2차원의 고해상도 데이터(이미지나 영상의 경우)를 통과시켜 학습하는 과정을 통해 수백만개의 계수를 가지고 있는 커널 맵은 학습된 데이터가 가지고 있는 고유의 feature를 구분해 낼 수 있도록 업데이트가 된다. 


다음에 나오는 학습을 위한 자료에서는 위에 설명했던 일들을 잘 수행할 수 있도록 효과적인 알고리즘을 개발하고 그것이 어느 정도의 성능을 가지는지에 대한 설명도 포함되어 있다.


예를 들어, 최초로 CNN을 이용한 구조의 신경망으로 ImageNet 우승한 신경망 구조인 AlexNet에서 부터 VGG Net, GoogLeNet, ResNet 등의 다양한 신경망 구조를 통해 최근까지의 CNN 구조의 연구 동향을 알아보기를 추천한다.


그리고 CNN 신경망 구조의 필수적 요소인 가중치 업데이트 룰, Activation Function의 선택, 2015년부터 거의 필수적으로 쓰이기 시작한 알고리즘인 Batch Normalization, Classification을 위한 Softmax 함수 연산 등 요소적인 부분도 빼놓지 말고 학습해야 한다.




1. Stanford cs231n 강의자료(YouTube, slide 강의자료)

듣다보면 CNN 뿐만 아니라 RNN이나 Unsupervised Learning 등 다른 것들도 다루고 있는데, CNN을 중점으로 가르치고 있으니 차근차근 들어보면 배울 게 많다.


- YouTube(2017년도 버전) : https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv

- Slide(2018년도 버전) : http://cs231n.stanford.edu/syllabus.html


위 링크를 들어가보면 다음과 같이 학습 스케줄이 나온다.


Event TypeDateDescriptionCourse Materials
Lecture 1Tuesday
April 3
Course Introduction
Computer vision overview
Historical context
Course logistics
[slides]
Lecture 2Thursday
April 5
Image Classification
The data-driven approach
K-nearest neighbor
Linear classification I
[slides]
[python/numpy tutorial]
[image classification notes]
[linear classification notes]

Discussion SectionFriday
April 6
Python / numpy / Google Cloud [python/numpy notebook]
Lecture 3Tuesday
April 10
Loss Functions and Optimization
Linear classification II
Higher-level representations, image features
Optimization, stochastic gradient descent
[slides]
[linear classification notes]
[optimization notes]
Lecture 4Thursday
April 12
Introduction to Neural Networks
Backpropagation
Multi-layer Perceptrons
The neural viewpoint
[slides]
[backprop notes]
[linear backprop example]
[derivatives notes]
(optional)
[Efficient BackProp] (optional)
related: [1], [2], [3] (optional)
Discussion SectionFriday
April 13
Backpropagation [slides]
Lecture 5Tuesday
April 17
Convolutional Neural Networks
History
Convolution and pooling
ConvNets outside vision
[slides]
ConvNet notes
A1 DueWednesday
April 18
Assignment #1 due
kNN, SVM, SoftMax, two-layer network
[Assignment #1]
Lecture 6Thursday
April 19
Training Neural Networks, part I
Activation functions, initialization, dropout, batch normalization
[slides]
Neural Nets notes 1
Neural Nets notes 2
Neural Nets notes 3
tips/tricks: [1], [2], [3] (optional)
Deep Learning [Nature] (optional)
Discussion SectionFriday
April 20
Tips and tricks for tuning NNs [slides]
Lecture 7Tuesday
April 24
Training Neural Networks, part II
Update rules, ensembles, data augmentation, transfer learning
[slides]
Neural Nets notes 3
Proposal dueWednesday
April 25
Project Proposal due[proposal description]
Lecture 8Thursday
April 26
Deep Learning Hardware and Software
CPUs, GPUs, TPUs
PyTorch, TensorFlow
Dynamic vs Static computational graphs
[slides]
Discussion SectionFriday
April 27
PyTorch / Tensorflow [pytorch notebook]
Lecture 9Tuesday
May 1
CNN Architectures
AlexNet, VGG, GoogLeNet, ResNet, etc
[slides]
AlexNet, VGGNet, GoogLeNet, ResNet
A2 DueWednesday
May 2
Assignment #2 due
Neural networks, ConvNets
[Assignment #2]
Lecture 10Thursday
May 4
Recurrent Neural Networks
RNN, LSTM, GRU
Language modeling
Image captioning, visual question answering
Soft attention
[slides]
DL book RNN chapter (optional)
min-char-rnn, char-rnn, neuraltalk2
Discussion SectionFriday
May 4
Midterm Review [slides]
MidtermTuesday
May 8
In-class midterm
Location: Various (see Piazza for more details).
SCPD Midterm Info
Lecture 11Thursday
May 10
Detection and Segmentation
Semantic segmentation
Object detection
Instance segmentation
[slides]
Discussion SectionFriday
May 11
Practical Object Detection and Segmentation [slides]
Lecture 12Tuesday
May 15
Generative Models
PixelRNN/CNN
Variational Autoencoders
Generative Adversarial Networks
[slides]
MilestoneWednesday
May 16
Project Milestone due
Lecture 13Thursday
May 17
Visualizing and Understanding
Feature visualization and inversion
Adversarial examples
DeepDream and style transfer
[slides]
DeepDream
neural-style
fast-neural-style

Lecture 14Tuesday
May 22
Deep Reinforcement Learning
Policy gradients, hard attention
Q-Learning, Actor-Critic
[slides]
A3 DueWednesday
May 23
Assignment #3 due [Assignment #3]
Lecture 15
Guest Lecture
Thursday
May 24
Invited Talk: Andrej Karpathy [slides]
Discussion SectionFriday
May 25
Weak Supervision [slides]
Lecture 16
Guest Lecture
Tuesday
May 29
Invited Talk: Jitendra Malik
[slides]
Lecture 17Thursday
May 31
Student spotlight talks, conclusions [slides]
Discussion SectionFriday
June 1
Video Understanding [slides]
Final Project DueThursday
June 7
Project Report due
Poster SessionTuesday
June 12
Jen-Hsun Huang Engineering Center
12:00 pm to 3:15 pm



위의 과정이 워낙에 유명해서 구글링을 해보면 강의 내용에 대한 한글 번역을 해 놓은 사이트들이 있다. 찾아가면서 공부해 가면 좋을 듯...



2. ratsgo's blog에 소개된 CNN 관련 글


이기창님의 블로그(https://ratsgo.github.io/)에는 상당히 설명이 이해하기 쉽도록 작성된 글이 많다 그 중에 CNN과 관련된 글은 다음과 같다.


CNN의 역전파(backpropagation)

CNN 주요 모델들

Softmax-with-Loss 계층


그 밖에도 머신러닝과 관련된 유용한 글들이 많으니 참고하도록 하자.


3. CNN의 요소 알고리즘


앞서 얘기 했던 CNN 신경망 구조의 필수적 구성 요소나 배경지식은 외부 링크 혹은 이 블로그에서 따로 정리하려고 한다.


- ReLU 함수를 왜 사용해야 하는가

- Batch Normalization

- Softmax 함수 설명

- SVM 기반의 loss function

- Fully Connected Layer






'MachineLearning > Classification' 카테고리의 다른 글

ReLU(Rectified Linear Unit)  (0) 2018.09.14
RNN, Recurrent Neural Network과 LSTM  (0) 2018.08.28
CNN, Convolution Neural Network (가이드)  (0) 2018.08.28
      
0 Comments
댓글쓰기 폼