Data Analysis for Investment & Control
CNN, Convolution Neural Network (가이드) 본문
현대 딥러닝 분야에서 가장 포션이 큰 분야 중 하나라면 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 Type | Date | Description | Course Materials |
---|---|---|---|
Lecture 1 | Tuesday April 3 | Course Introduction Computer vision overview Historical context Course logistics | [slides] |
Lecture 2 | Thursday 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 Section | Friday April 6 | Python / numpy / Google Cloud | [python/numpy notebook] |
Lecture 3 | Tuesday 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 4 | Thursday 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 Section | Friday April 13 | Backpropagation | [slides] |
Lecture 5 | Tuesday April 17 | Convolutional Neural Networks History Convolution and pooling ConvNets outside vision | [slides] ConvNet notes |
A1 Due | Wednesday April 18 | Assignment #1 due kNN, SVM, SoftMax, two-layer network | [Assignment #1] |
Lecture 6 | Thursday 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 Section | Friday April 20 | Tips and tricks for tuning NNs | [slides] |
Lecture 7 | Tuesday April 24 | Training Neural Networks, part II Update rules, ensembles, data augmentation, transfer learning | [slides] Neural Nets notes 3 |
Proposal due | Wednesday April 25 | Project Proposal due | [proposal description] |
Lecture 8 | Thursday April 26 | Deep Learning Hardware and Software CPUs, GPUs, TPUs PyTorch, TensorFlow Dynamic vs Static computational graphs | [slides] |
Discussion Section | Friday April 27 | PyTorch / Tensorflow | [pytorch notebook] |
Lecture 9 | Tuesday May 1 | CNN Architectures AlexNet, VGG, GoogLeNet, ResNet, etc | [slides] AlexNet, VGGNet, GoogLeNet, ResNet |
A2 Due | Wednesday May 2 | Assignment #2 due Neural networks, ConvNets | [Assignment #2] |
Lecture 10 | Thursday 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 Section | Friday May 4 | Midterm Review | [slides] |
Midterm | Tuesday May 8 | In-class midterm Location: Various (see Piazza for more details). | SCPD Midterm Info |
Lecture 11 | Thursday May 10 | Detection and Segmentation Semantic segmentation Object detection Instance segmentation | [slides] |
Discussion Section | Friday May 11 | Practical Object Detection and Segmentation | [slides] |
Lecture 12 | Tuesday May 15 | Generative Models PixelRNN/CNN Variational Autoencoders Generative Adversarial Networks | [slides] |
Milestone | Wednesday May 16 | Project Milestone due | |
Lecture 13 | Thursday May 17 | Visualizing and Understanding Feature visualization and inversion Adversarial examples DeepDream and style transfer | [slides] DeepDream neural-style fast-neural-style |
Lecture 14 | Tuesday May 22 | Deep Reinforcement Learning Policy gradients, hard attention Q-Learning, Actor-Critic | [slides] |
A3 Due | Wednesday May 23 | Assignment #3 due | [Assignment #3] |
Lecture 15 Guest Lecture | Thursday May 24 | Invited Talk: Andrej Karpathy | [slides] |
Discussion Section | Friday May 25 | Weak Supervision | [slides] |
Lecture 16 Guest Lecture | Tuesday May 29 | Invited Talk: Jitendra Malik | [slides] |
Lecture 17 | Thursday May 31 | Student spotlight talks, conclusions | [slides] |
Discussion Section | Friday June 1 | Video Understanding | [slides] |
Final Project Due | Thursday June 7 | Project Report due | |
Poster Session | Tuesday June 12 | Jen-Hsun Huang Engineering Center 12:00 pm to 3:15 pm |
위의 과정이 워낙에 유명해서 구글링을 해보면 강의 내용에 대한 한글 번역을 해 놓은 사이트들이 있다. 찾아가면서 공부해 가면 좋을 듯...
2. ratsgo's blog에 소개된 CNN 관련 글
이기창님의 블로그(https://ratsgo.github.io/)에는 상당히 설명이 이해하기 쉽도록 작성된 글이 많다 그 중에 CNN과 관련된 글은 다음과 같다.
그 밖에도 머신러닝과 관련된 유용한 글들이 많으니 참고하도록 하자.
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 |