DL Trend ‘17.7.9

Deep Learning 관련하여 요즘 관심있게 보는 기술들.. 시간이 없어서 정리는 못하지만, 이렇게 기록해 놨다가 천천히 하나씩 블로그에 작성할 예정 ..

1 . Android Tensorflow 
Java 버전 Tensorflow를 완벽하지는 않지만 링크와 같이 지원하고 있는데 [링크] 
역시 Android 에서 Tensorflow 도 지원한다  [링크]
Python 과 비교하여 완벽한 기능을 제공하지는 못할 것으로 예상되지만, Java 개발자들이 워낙 많기 때문에 가장 대중적인 신경망들 위주로 충부한 의미가 있을 것 같다.
찾아보니 아주 간단하게 Tensorflow 에서 훈련한 모델을 Android 에 심어서 개발하는 튜토리얼도 존재한다. [링크]

2. Quantize Neural Network 
훈련할때와는 다르게 예측할때에는 어짜피 내부적으로 잡음 (여기서는 소숫점 이하)는 버려버리는 특성이 있으니, 모델을 만들때 애초에 정수화해서 저장함으로써 용량을 줄이고 모바일에서의 속도와 관련된 이슈들을 해결해 보자이런 이야기 인듯 함 [링크]

3. Segmentation & Object Detection 
보통 CNN 을 보면 Input Matrix 의 사이즈가 정해져 있기 때문에 RCNN 같은 Object Detection을 해보면 결과물이 해당 물체와 그 주변을 포함한 사각형 이미지가 되기 마련인데 이러한 문제를 보완하여 해당 사물만 Pixel 단위로 정확히 추출하기 위해 나온 방법이 Segmentation 이라고 함.   [링크]
이러한 목적을 달성하기 위해 나온 신경만 구조가 있는데 U-Net 이라고 한다. [링크]

4. VAE (variational autoencoder)
코드 관점에서 보면 흔히 알고 있는 Stacked Auto Encoder 가 일반적인 Vector를 그냥 Input 에 넣는다고 하면, Variational Autoencoder 는 확률 분포를 Vector 로 표현해서 잡음처럼 추가하여 넣어준다. 이렇게 하면 Prediction 때 Input 의 확률 분포를 Random 하게 조작함으로써, 무언가를 Generation 하는 효과를 얻을 수 있다. [링크][링크]

5. YOLO (You Look Only Once) 
Object Detection 을 하는 방법에는 RCNN, Fast RCNN 등 여러가지가 있지만, 실시간성이 중요한 CCTV 나 자율자동차 등에서는 이미지 한장을 여러번 탐색하는 과정을 거치는 기존 알고리즘들의 속도가 만족스럽지 않다. 그래서 한장의 사진을 구획으로 나눠 단 한번만 각 구획단위 평가를 한후 , 구획간의 조합을 통해 Object Detection 을 하여 속도를 비약적으로 향상시킨 YOLO 같은 것이 유용하다. [링크] [링크]

6. AutoML
최근 Google 에서는 주어진 데이터에 알맞는 Neural Network 의 구조를 자동으로 탐색하는 알고리즘에 대해서 이야기하는데, 필요한 Computing Power 를 줄이기 위한 다양한 알고리즘들을 이야기 하고는 있지만 궁극적으로는 무지막지한 TPU(GPU 상위버전)을 통해 엄청난 반복을 통한 것으로 아직은 DL Engineer 의 자리를 위협할 수 있는 물건은 못된다. [링크] 
반면에 신경망을 최적화하기 위해 중요한 Hyper Parameter Tunning 작업 같은 경우 많은 연구가 이루어져 왔는데, Hyper Parameter Random Search [링크]
Genetic Algorithm 을 활용한 근사 최적 Hyper Parameter Set 의 탐색 [링크]
당연하게도 복수의 GPU 서버를 활용한 전체적인 작업 시간의 단축 등으로 자동화가 가능한 추세라고 볼 수 있다.  이미 Cloud 서비스로 제공하고 있는 Google 의 Cloud AI 에서도 보여지고 있는 기능이다. [링크]

7. GAN  (Generative Adversarial Model)
요즘 너무 Hot 에서 아마 모르는 사람이 없을 것 같은 슈퍼스타급 알고리즘
개인적으로 생성모델인데, 생성 모델을 만들기 위해서 너무 많은 데이터가 필요하다.
Classification 모델을 만들기 위해 부족한 데이터에 사용하기에도 애매하고, 실무에 사용하기에는 애매한 녀석이지만 우선 아이디어가 매우 Hot 하다. 생성하는 모델과 (Generator) 와 생성된 데이터를 검수하는 녀석(Adversarial)이 서로 경쟁하며 성능을 개선해 간다는 것이 주요 아이디어. [링크]

8. Deep Q Learning
통상적으로 Reinforcement Learning 이라고 하면 Q-Table 을 활용한 알고리즘을 생각하는데 최근(이제는 좀 오래전..)에 Google 에서 Q-Table 대신에 Deep Learning 을 활용하는 방법을 내놓았으며, 이것이 Deep Q Learning 이라 불리는 듯하다.  기본적인 Environment, Action, Reward, State 등으로 구성되는 사상은 유사지만, Deep Learning 을 Reinforcement 에 적용하려면 해결해야 하는 두 가지 문제 (1. Corellation / 2.Non Stationary Target 문제) 를 해결해야 하는데 각각 Buffer 와 Sampling 그리고 별도의 Network를 만들고 주기적으로 Copy하는 방법으로 해결한다. 자세한 내용은  역시 성킴 교수님의 모두의 연구소 자료가 좋겠다. [링크]

Leave a Reply

Your email address will not be published. Required fields are marked *