제1회 딥러닝 컨퍼런스 2017 1일차
주최 : 서형석 대표 @ 딥러닝그룹
1. 베이지안 딥러닝 - 김용대 : 서울대학교 통계학과
Intro
Bayesian에 전반적인 내용을 다룰 예정. 끝 부분에서 베이지안 딥러닝에 대해서 언급하고 발표를 마칠 예정임.
사후분포Posterior distribution는 우도함수Likelihood function 과 사전분포Prior distribution의 곱에 비례한다.
시간에 따라서 분포가 변하는 상황에 대해서 bayesian 접근은 꽤나 좋은 접근방식이 될 수 있다.
장점 : prediction의 정확도가 매우 높은 편 / Uncertainty quantization
- 불확실성에 대한 확률을 계산하기 좋다
단점 : computation is hard / Need full observation of distribution
Bayesian computation
크게 세 가지로 나누어진다. 손으로 구하기 / monte-carlo 사용하기 / approximation 사용하기 (나머지 3개)
- Analytical approaches with conjugate priors
- Monte-Carlo method
- Variational Inference
- Assumed Density Filtering
- Expectation Propagation
- assume density의 확장판
Deep learning with bayesian 모델
시작한 지 얼마 되지 않아서 아직 가시적인 연구결과에 대해서는 적용된 것이 없다.
딥러닝의 여러 가지 아키텍쳐
- deep neural network
- deep belief network / deep boltzmann machine
- stack encoder
실제로는 deep neural network만 사용되고 나머지는 참고로만 알아두면 된다. 주로 CNN, RNN이 사용된다는 것마 알아두면, 상관없다.
Deep latent gaussian model (DLGM)
Probabilistic Neural Network Models
- 둘 다 모두 수학적으로 엄청나게 어려운 계산이 들어가는 부분이라 이해하고 사용하기가 쉽지 않다. approximation을 하는 방법이 다양하게 가능하다.
2. deep generative model 관련 최근 연구들 - 신진우 : KAIST 전기전자
Recent trends
- classification : CNN
- natural language process : RNN
Generative deep learning
- Application : image regeneration & recommendation
example
- generate a image for the style of artist
- making a 복원된 image
- image compression
Part I : graphical model approach
- Markov random field, restricted Boltzmann machine
Approach
Gibbs distribution
MRF(Markov Random Field) / RBM(Restricted Boltzmann Machines) / DBM(Depp Boltzmann Machines)
: two-state markov state
Part II : Neural network approach
de-noising auto-encoder, variational auto-generator
가장
Hot한 토픽 논문
Generatvie adversarial Network (GAN) [Goodfellow et al.2014]
Game and decision making
- deep reinforcement learning
Research in agorithmic intelligence lab
- image compression via neural networks
- jpeg을 뛰어 넘는 그림 압축 알고리즘 만들어내기 : rate 120
- 굉장히 의미 있는 가시적 결과가 나오고 있음
- NP-Hard 문제 도전하기 : TSP 문제
Lab 서버 운영
- Lab에서 사용하고 있는 GPU 서버 50대 운영 : Titan X
- 유명한 해외 Lab은 100대 정도는 돌리는 경우도 많다고 함
3. Building Deep Learning - 김인중 : 한동대학교
A Review of a Neural Network algorithms
vector형태로 표현할 수 있는 모든 데이터는 Neural Network의 입력, 혹은 출력으로 사용될 수 있다.
Implmentation of Neural Network
Deep learning algorithms on GPU
- 특징
- GPU 특성상 ALU가 수백개에서 수천개를 내부에 가지고 있다.
- 성능
- 일반적으로는 딥 러닝 알고리즘을 적용할 때 CPU에 비해서 이미지 인식은 60배 정도 빠르며, training을 하는 데 있어서는 20배 정도 성능의 차이가 난다.
- 주의할 점
- parallel하게 연산을 처리할 수 있는 상황이 아니라면 오히려 CPU보다 연산이 느릴 수도 있는 상황이 존재할 수 있으니 주의해야 한다.
Neural Networks Demonstration on XOR
- 직접 소스코드를 짜 보면, 많으 부분 deep learning에 대한 이해도가 높아진다.
- learning rate은 왠만하면 작게 하는 게 좋음 (0.001 정도)
Generated Neural Networks
- ex> autoencoder, restricted Boltzmann Machines
- generated같은 경우는 원래 자신의 형태를 다시 만들어야 하는 constraint를 가지고 있다. 따라서 hidden layer가 일반적인 NN에 비해서 많이 가지고 있게 된다.
- generated가 일반적인 NN 보다는 훨씬 어려운 문제를 다루고 있다고 볼 수 있으며, 응용할 수 있는 분야도 많다고 볼 수 있다.
Restricted Boltzmann Machines : RBM
- 역시 양방향 네트워크의 특성을 가지고 있음.
- energy function + sigmoid function으로 표현됨
- RBM input / output
- RBM probability functions
RNN : Recurrent Neural Network
Main features
- RNNs are Turing-complete
- sequence to sequence mapping
- best approach to following problems
- Speech recognition
- skype translation (error rate goes 45% -> 17%:LSTM)
- skype translation (error rate goes 45% -> 17%:LSTM)
- handwriting recognition
- machine translation
- Speech recognition
problems in RNN
- vanishing gradient problems
- long term dependency의 문제가 있음
- But, LSTM approach solved this problem
- 더 자세한 설명은 다음 참고 Understanding LSTM RNN
- long term dependency의 문제가 있음
Practical Advices
- deep learning을 제대로 이해하는 데 있어서 실제로 알고리즘의 내부를 실제로 코딩을 하는 것을 크게 추천한다.
- 하지만, 굉장히 복잡한 작업이며, 특히나 CNN, RNN 등은 그 복잡도가 엄청 어렵다.
- Theory를 완전히 이해해야만 수식을 하나하나 되집어 가면서 봐야만 한다.
- 특히 GPU는 fault tolerant한 특성을 가지고 있기 떄문에, 디버깅이 매우 힘든 프로그래밍 중 하나이다. 따라서, 디버깅 툴인 trace 등을 통해서 제대로 잡히지 않는 경우가 허다하다.
- 디버거를 통하지 않고, trace & watch만으로는 힘든 부분이 있어서, 머리로 모든 알고리즘의 로직을 완성하고, 디버깅을 수행하기를 추천함.
- CPU 알고리즘을 먼저 구현하고, 그 다음에 GPU 알고리즘을 구현하는 것을 추천함.
Q & A
Useful Links
모두를 위한 머신러닝/딥러닝 - 김성훈 교수
Deep Learning Research Blog by Andrej Karpathy
Understanding LSTM RNN
Back-propagation algorithm for MLP, CNN, RNN by 김수형 전남대 교수