Deep Learning/Deep Learning by C++

Deep Learning by C++

sekimm 2022. 9. 13. 18:16

딥러닝(deep learning)이란? 

  딥러닝은 머신러닝의 한 기법으로, 사람의 뇌신경 세포에 전기적인 행동 방식에 영감을 얻어 이를 단순화한 구조를 컴퓨터로 재현 가능한 알고리즘으로 정의해서 사용하는 방법을 다룬다. 딥러닝도 머신러닝과 마찬가지로, 학습을 통해 데이터로부터 일반적인 규칙을 도출하는데, 딥러닝의 경우 신경망(neural network)의 학습을 통해 규칙을 도출하는 방식이다. 

딥러닝(deep learning)의 열풍 배경?

  사실 딥러닝의 개념은 1985년 Rosenblatt가 제안한 perceptron이 시작이다. 하지만 딥러닝이 본격적으로 주목받기 시작한 것은 그보다 훨씬 후인 2010년이 지나서부터이다. 그 이유는 다음 내용으로 정리할 수 있다. 

 

  1. Neural Network의 혁신

neural network가 처음 나왔을 때는, model(network)의 layer가 2~3층으로 구성되어졌고 데이터를 바탕으로 training하여서 model을 구축하였다. 하지만 복잡한 현실 세계의 상황들에 쓰이기 위해서는, model의 layer가 훨씬 깊어야 했고 layer가 깊어졌을 때에  network가 제대로 학습될 수 있는 알고리즘이나 기법들이 개발되지 않았었다. 하지만, data pre -processing, pre-training, drop out 기법, Activation Function 등 여러 방법들이 개발되면서, 이제 훨씬 깊은 layer를 가진 model에서도 제대로 학습이 가능해졌다.

 

  2. GPU의 발전 

앞서 언급했듯이, 딥러닝을 이용하여 현실 세계의 많은 문제들에 사용되기 위해서는 model의 layer가 더 깊어지는 것이 필요하고, 이 말은 컴퓨터가 해야되는 계산의 양도 훨씬 더 방대해진다는 것을 의미한다. 이전까지는 그 많은 양의 연산을 처리하는 능력이 부족하여, 학습하거나 사용하는 것에 많은 시간이 걸렸다. 하지만 GPU 등의 병렬 처리 계산 유닛들의 발달 및 병렬 계산 유닛의 클라우드화가 실현됨으로써, 복잡한 model에 대한 학습 시간이 단축되었고, 딥러닝 실행 환경을 갖출 수 있게 되었다. 

 

 

 

=========================================================================================

앞으로 다룰 아래 내용들은

C++로 배우는 딥러닝(저자 : 후지타 타케시)를 읽고서 얻은 지식들을, 나만의 방식으로 이해된 것을 정리할 예정이다. 

 

<목차>

이론

  1. C++ 기초
  2. GPU 활용 & CUDA 프로그래밍 & 행렬 연산
  3. Single-Layer Perceptron & Multi-Layer Perceptron
  4. Parameter Estimation
  5. Back propagation

구현

  1. back propagation 구현
  2. Model 및 Optimizer 구현
  3. MNIST 학습&평가
  4. Iris 학습&평가
  5. Optimization 구현
  6. Overfitting 방지 구현
  7. Auto-in-coder 구현
  8. Convolutional Neural Network 구현
  9. CIFAR-10을 사용한 이미지 인식