딥러닝 교육 자료 (Deep Learning Lecture)

인터넷에 많은 Machine Learning, Deep Learning 자료들이 존재하지만, SungKim 교수님의 모두의 딥러닝 강의를 듣고나면 그 다음 중급 단계가 없이 바로 고수들의 논문을 중심으로한 너무 어려운 이야기들만 난무하다보니 단계적으로 학습을 이어가기가 어려운 경우들이 있다고 생각합니다.  그래서 Tensorflow 기초부터 이미지, 정형, 자연어 데이터 그리고 ChatBot 을 통한 실무 적용까지 조금더 접근할 수 있는 중급 교육을 기획하여 SK Planet 에서 8월 3주간 교육을 진행하였으며 그 교육 자료와 소스코드를 여러분들에게 공유합니다.

(1) Deep Learning & Tensorflow 기본

딥러닝을 접하기 위해 필요한 Python 필수 라이브러리(Numpy, Pandas 등)에 대한 설명 및 Tensorflow 기본 문법 그리고 딥러닝의 기초에 대해서 설명합니다.
딥러닝을 단편적인 시각이 아닌 전체적인 Work Flow 관점에서 이해하고 접근 할 수 있도록 큰 시각을 제공하고자 합니다.

이태영
managingc@gmail.com

Tensorflow for Deep Learning(SK Planet)

SK Planet 강의 자료 (2017.08.07/2017.08.09)

Source: www.slideshare.net/taeyounglee1447/tensorflow-for-deep-learning?from_m_app=android

(2) Docker 활용 DL 서비스 환경 구축 및 정형 데이터 분석

 Docker Compose 를 활용한 Deep Learning 개발 및 서비스 환경 구축을 통해 Python 기반으로 데이터를 수집, 전처리, 저장하고 모델을 생성하여 서비스하기 위한 전체적인 파이프라인을 구축 할 수 있도록 한다. 또한 정형데이터 분석을 통해 좋은 모델을 만들기 위한 Insight 와 최근 Kaggle 등에서 Hot 한 ML 알고리즘인 Bagging, Xgboost 를 활용한 정형데이터 모델링과 딥러닝 (Wide & Deep) 을 활용한 모델링을 소개하고 비교할 수 있도록 한다.

백지현
intwis100@gmail.com

Tensorflow service & Machine Learning

Django + Celery + Tensorflow Serving Machine Learning Bagging Boosing Deep Learning

Source: www.slideshare.net/JEEHYUNPAIK/tensorflow-service-machine-learning

 

(3) 실무에서 만나는 이미지 DL 분석을 위한 접근방법

 실제 업무에서 만나는 이미지 데이터는 우리가 예제로 많이 알고 있는 Mnist, Cifar 등을 분석할때와는 많은 차이가 있다. 생각처럼 좋은 모델이 나오지 않는 경우가 대부분일 것이다. 실제 이미지를 LMDB나 HDF5 같은 포맷으로 변환하여 저장하고 각종 Augmentation 기법을 사용하여 데이터를 보충하고 Object Detection, Denosing Auto Encoder 등을 활용하여 이미지를 정재하고 최적의 모델을 만드는 일련의 과정을 설명

김영재
youngjaekim0129@gmail.com

Image Deep Learning 실무적용

Image Deep Learning 실무적용 전처리 학습 평가 Service

Source: slideshare.net/YoungjaeKim42/image-deep-learning

(4) NLP 프로세스와 Deep Learning 적용

 자연어처리를 위해 우리가 해결해야 할 문제는 간단한 스팸분석부터 Sematic Search 와 같이 사람의 말을 의미적으로 이해해야하는 문제까지 다양하다. 여기서는 우리가 자연어분석하는 정석적인 프로세스에 대해서 이야기하고자 한다. 일반적으로 우리가 자연어를 분석할때는 Speech Recognition > Lexicical Analysis > Syntatic Analysis > Semantic Analysis > Discourse Analysis 의 단계로 분석이 이루어지게 되며각각의 Step 에서 또다시 다양한 문제와 해결 방법들을 제시하고 있는데 가장 핵심적인 방법들을 위주로 각각의 STEP 이 왜 중요하고 어떤 어려움이 있으며 DL 을 활용하여 어떻게 접근하는지 설명하고자 한다.

김승우
tmddno1@gmail.com

NLP Deep Learning with Tensorflow

Understand what is natural language process and how can we approach this problem with deep learning especially using google tensorflow

Source: www.slideshare.net/mobile/ssuser2294b5/nlp-deep-learning-with-tensorflow

 

(5) NLP 를 활용한 ChatBot 및 Ontology 실무적용

 NLP 자연어 처리 프로세스를 통해 기계가 이해할 수 있도록 사람의 언어를 분석하고 이것을 서비스 아키택쳐 측면에서 어떻게 응용하고 서비스에 접목하여 응용할 수 있는지
다양한 Step by Step 소스코드와 Docker Compose 환경 (Django, Celery, Neo4j) 등 다양한 실제 서비스에 활용되는 기술들을 활용하여 간단한 데이터 수집(Information Extraction) 부터 Frame Based Chat Bot 예제까지 직접 개발하고 설명한다.

김수상
healess@naver.com

Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용

도입 AI Chatbot 소개 Chatbot Ecosystem Closed vs Open Domain Rule Based vs AI Chat IF Flow and Story Slot AI기반의 학습을 위한 Data 구성 방법 Data를 구하는 법 / Train을 위한 Word R…

Source: www.slideshare.net/mobile/healess/python-tensorflow-ai-chatbot

 

실습 소스코드

TensorMSA/tensormsa_jupyter

tensormsa_jupyter – Jupyter notes for education

Source: github.com/TensorMSA/tensormsa_jupyter

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하는 방법으로 해결한다. 자세한 내용은  역시 성킴 교수님의 모두의 연구소 자료가 좋겠다. [링크]

About AI

  • AI 어디까지 왔는가?

도입-

“AI는 1950년대부터 존재하던 학문이다, 다만 최근에 들어 Google Deep Mind 의 효과적인 AlphaGo 마케팅으로 기존에 관심이 없던 많은 사람들도 주목하기 시작했다. 그렇다면 인류역사상 가장 복잡한 게임이라는 바둑마저 정복한 AI는 이미 사람을 넘어선 것인가? 많은 언론이 이야기하는 것처럼 AI 가 인간을 대체하는 날을 걱정해야 하는 수준에 온 것인가? AI 의 현주소와 우리의 대응에 대해서 이야기해보고자 한다. “

  • AI의 역사와 암흑기
    ai timeline에 대한 이미지 검색결과

현대 AI 의 연구는 1950년대부터 시작되었다. 그 당시의 AI 연구자들은 인간수준의 AI를 수십년안에 만들 수 있을 것이라고 생각했으며, 당시 선구자였던 Herbert A.Simon은 1965년에 “앞으로 20년안에 기계는 인간이하는 모든 일을 할 수 있게 될 것” 이라고 말했다. 하지만 1970년대에 들어 AI 연구자들은 인간수준의 AI를 만드는 일이 얼마나 어려운 일인지 과소 평가했다는 것을 깨닫게 된다. 시장은 점점 실용적인 AI 개발에 대한 요구를 하게 되고, AI 에 대한 기업과 사회의 시각이 점점 회의적으로 바뀌면서 AI에 대한 지원도 끊기게 된다. 1980년대 Expert System (Rule Base AI)를 통해 어느 정도의 성공을 거두면서 AI 에 대한 불씨를 살리는가 했으나, 결국 1980년대 AI시장은 완전히 붕괴하고, AI 는 암흑기에 빠지게 된다.

1-2 현대의 AI

21세기에 들어 AI 는 GPU가속을 이용한 연산속도의 비약적 발전, Big Data 처리 기술의 발달에 따른 Deep Learning(Deep Learning (Machine Learning <기계학습>의 한 분야로 2부에서 설명예정) 알고리즘의 재조명을 통하여 이미지 인식, 자연어 인식, 음성인식 등 기존에 잘 해결하지 못하던 문제를 해결하며, 제 2의 전성기를 누리고 있다.

[음성인식에서의 성능 향상]

deep learning voice recognition에 대한 이미지 검색결과

기존의 음성인식 알고리즘으로 애러율이 13% ~ 15% 에 달하던 성능을 Deep Learning 을 도입하면서 5% 미만으로 극적으로 개선하면서 그 우수성을 증명하였으며, 최근에는 Amazon Alex 와 같은 인공지능 스피커를 통해서도 AI를 실생활에서 느껴볼 수 있다.
이미지 인식에 있어서는 Deep Learning은 2016년 기준 사람의 수준에 근접한 인식률을 보여줄 정도로 발전되었다.

[AI 의 이미지 인식 정확도]

ILSVRC2016에 대한 이미지 검색결과출처 : ILSVRC2016 (http://image-net.org/challenges/LSVRC/2016/results)

또, 컴퓨터가 인간을 이길 수 없다고 알려진 바둑에서 세계 정상급 프로 선수인 이세돌 9단을 4:1로 이긴 AlphaGO 또한 MCTC(Monte Carlo Tree Search) 와 Deep Learning 을 복합적으로 활용하여 Game 에서의 AI 의 가능성을 증명하였다.

1-2현재 AI 의 수준은?

그렇다면 현재 AI 는 정말 인간을 대체할 만큼 발전한 것인가? 우리는 우리의 일자리를 두고 기계와 경쟁을 해야 하는가? 이 질문에 대답하기에 앞서서 AI 의 단계 구분에 대해서 설명하고자 한다.

(1) Narrow Artificial Intelligence
(2) General Artificial Intelligence
(3) Super Artificial Intelligence

Narrow Artificial Intelligence 는 특정한 분야에 주어진 일만 처리할 수 있으며, 그 일을 처리할 수 있는 똑똑한 AI 가 되기 위하여 많은 데이터 전문가, AI 전문가, 비즈니스 전문가가 많은 시간을 투자하여 좋은 AI를 만들어야만 하는 단계로 우리가 영화에서 보는 것과 같은 수준의 AI 와는 많은 거리가 있는 단계라고 볼 수 있다.

General Artificial Intelligence 는 컴퓨터가 인간처럼 스스로 학습하고, 생각하는 수준을 이야기하는 것으로 평균적인 인간수준의 지능을 갖춘 AI 단계라고 볼 수 있다. 기계의 사고 유무를 판단하기 위한 기준으로 1950년대 앨런튜링은 “컴퓨터로부터의 반응을 인간과 구별할 수 없다면 컴퓨터는 생각할 수 있는 것” 이라는 정의를 하고 Turing Test 라는 것을 고안하였으나, 현대에 와서는 기계의 사고유무를 판단하는 방법으로 부족하다는 의견이 대두되고 있다.

Super Artificial Intelligence는 영화 Avengers에서 아이언맨이 인공지능 비서인 자비스와 같은 수준을 생각하면 될 듯 하다. 가장 훌륭한 인간의 뇌보다도 더 뛰어난 수준으로 인간이 초월하는 수준의 인공지능으로 실질적으로 사람이 AI 에 지배 받는 것을 걱정해야 하는 수준이 바로 이 수준이 될 것이다turing test에 대한 이미지 검색결과

그렇다면 현재 AI 는 Narrow, General, Super AI 중 어떤 단계에 있는 것일까?
우선 General Artificial Intelligence를 판단하기 위한 테스트 방법으로 가장 유명한 Turing Test 의 결과를 한번 살펴보자

[그림. Turing Test 란?]

Turing Test 사람들 사이에 기계를 넣어 놓고, 온라인 통신 Chatting system을 통해 심판들이 5분간의 대화를 진행하여 30% 이상의 심판을 속일 수 있는가 없는 가를 테스트하는 것으로, 2014년 최초로 Eugene(우크라이나 13세 소년 역할 부여)가 Turing Test를 통과하였다. 그렇다면, 우리의 AI 기술은 사람처럼 생각하는 General AI 의 수준에 도달한 것인가?

아래는 2014년 테스트 당시의 대화 내용의 일부이다. 대화 내용을 보면 정말 Eugene 이 사람처럼 느껴지는가?

사실은 영어가 익숙하지 않은 13세 소년의 역할부여, 지속적으로 특정 주제로 유도하는 트릭 사용 및 어떠한 상황에도 사용할 수 있는 두리뭉실한 표현들을 주로 사용하는 등 테스트 자체를 통과하기 위한 수 많은 Trick 이 주요하였으며, 기술적으로 생각하는 AI를 만들어 Test를 통과한 것과는 거리가 멀다는 것이 대부분 관계자들의 생각이다.

[2014 Turing Test를 통과한 Eugene]turing test eugene conversation에 대한 이미지 검색결과

출처 : Times (http://time.com/2847900/eugene-goostman-turing-test/)

몇 가지 이야기를 더 해보자, General AI 정의에서 가장 큰 특징은 스스로 학습하고(사람이 데이터 수집, 모델링 등 개입 하지 않음), 상황에 맞는 다양한 일들을 수행할 수 있는 범용성에 있다. 그렇다면 최근에 가장 크게 화두가 된 AlphaGO 는 바둑을 스스로 배웠는가? 아니면 수많은 프로그래들의 노력이 투입되어 바둑을 학습 시켰는가? AlphaGO 는 바둑에서는 세계수준의 Player 인 이세돌을 격파할 정도로 뛰어난 능력을 가지고 있는 것은 분명하지만, 바둑 이외의 일도 할 수 있는가? AlphaGO는 Narrow Artificial Intelligence 의 전형이라고 볼 수 있으며, 결론적으로 현재 우리가 사용하고 있는 AI 는 모두 우리가 생각하는 General AI 와는 거리가 먼 Narrow AI라고 생각하면 된다.

1-3 Path to General AI

스스로 학습하고 생각하는 사람 수준의 AI가 언제쯤 어떠한 형태로 개발될 것인지 묻는다면, 정답을 말 할 수 있는 사람은 없을 것이다.
하지만, Weak AI 에서 Strong AI로 진화하기 위해 필요한 요소들을 도출해 보면 그 난이도와 소요 시간은 짐작할 수 있을 것이다.

(1)Computing Power

Artificial Intelligence 란 기본적으로 인간의 뇌가 사고하는 방식을 모방하는 것이기 때문에 인간만큼 복잡한 생각을 하기 위해서는 인간의 뇌만큼 복잡한 인공 신경망을 연산할 만큼의 Processing power 는 기본적으로 필요할 것이다. 인간의 뇌는 10^11의 뉴런을 가지고 있으며, 아기의 경우 10^15 의 뉴런을 가지고 있다고 한다.
인간의 뇌를 시뮬레이션 할 정도의 컴퓨팅 파워를 갖게 된다고 General AI를 달성할 수 있는 것은 아니지만 그 정도의 Computing Power는 필수 요건이라고 생각되며, 비용 및 H/W 최소화를 고려하지 않을 경우 원하는 Processing Power 를 달성하기까지 10년 정도의 시간이 소요될 것으로 예측하지만, 이 또한 소형화 전력소모 등을 고려하면 양자컴퓨터와 같은 다음 세대의 기술이 필요할 가능 성을 배제할 수 없다. Estimates of how much processing power is needed to emulate a human brain에 대한 이미지 검색결과

[Estimates of how much processing power is needed to emulate a human brain at various levels (from Ray Kurzweil, and Anders Sandberg and Nick Bostrom)]

(2) Self Learning & Reasoning

General AI로 가기 위한 방법은 크게 Top Down 방식과 Bottom Up 방식이 있을 수 있겠다. Top Down 방식이란 지금까지 AI를 틀을 완전히 깨고 새로운 시각에서 General AI를 바라보고 연구하는 것이고, Bottom Up 은 지금까지 우리가 해결해 왔던 수많은 문제의 해법들을 모아서 궁극적으로 General AI를 달성하는 방안이다.
AI 에 제 2의 전성기를 열어준 Deep Learning 이 General AI로 가는 문 또한 쉽게 열어줄 것인가? 아니면 또 다른 패러다임의 변화가 필요할 것인가
어떤 방향이던지 1950년대 인공지능 학자들이 20년이면 General AI 에 도달 할 수 있을 것이라 확신하였던 오판을 되돌아보면, 그리 쉽지 않을 길이 될 것이라는 것이 명확하다.

(3) Robot technology
진정한 General AI 의 완성은 외부 환경과 상호작용 가능한 물리적인 Robotic Body 와 Software 적인 AI 의 결합이라고 볼 수 있다.
결국 궁극적인 General AI는 Software Algorithm 의 발전만으로 달성할 수 있는 것이 아니며, 산업전반의 모든 연관 기술들이 전반적으로 발전되었을 때 달성 가능한 목표인 것이다.

1-4 우리의 대응은 ?  

진정한 AI로 가기 위해서는 산업 전반의 모든 기술들이 전반적으로 발전해야 하며, 너무 많은 기술적인 난관들이 존재하기 때문에 General AI 는 당장에 우리에게 다가올 현실은 아닐 것이다.
때문에 향후 몇 년은 누가 더 Narrow AI 를 잘 활용할 수 있는 CASE를 발굴하고 먼저 적용하는지가 관건일 것이다.

[우리가 준비해야 할 것들]

  • Infrastructure : 클라우드 서비스 등
  • Data Management : Big Data 관리 기술
  • AI Frame Work : 업무 특화 F/W 개발
  • Business Apply : 비지니스 적용을 위한 Insight

하지만, 얼마나 많은 노력과 시간이 소요되더라도, General AI를 향한 인간의 탐구는 멈추지 않을 것이며, 결국에는 도달할 미래라고 생각된다.
장기적으로는 당장은 AI 와 관련이 없는 것 같은 기술도 궁극적인 General AI 를 생각하면 결국에는 관련이 있다는 점을 염두하고 향후 General AI 도달에 중요하다고 생각되는 분야를 사전에 예측하고 투자할 필요가 있다.

Deep Insight

Deep Learning Project에서 Deep Insight를 얻기 까지는 많은 시간이 소요된다.

주어진 과제에 급급하여 Project를 하다보면, 우리가 얻는 것은 신기루 뿐이다.

Data를 바라보고 수집하고 Parameter들을 Estimation하면서 그들의 Tendency를 유추해 나가고 그들의 표면적인 모습들이 아닌 Deep Relation의 Attribute까지 밝혀낼 수 있으려면 우리는 우리의 목표와 기준 잣대로 평가하기 보다는

Hyper Parameter들의 수많은 궤적들을 Business측면의 Reassign된 Vector평면 속에서 의미를 추론해 나가야 한다.

AutoML이 대두되고 있지만 이는 현재는 논문 Scope을 벗어나지 못하고 있다.

예를 들자면 자연어 처리의 경우 인간은 상대방이 한 말을 벡터차원에 뿌리고 그들의 유사도와 긴밀성을 추론하여 판단하지 않는다.

즉 우리는 수많은 가정속에 그것들을 녹이고 그것의 경향성을 판단할 뿐이지 그것이 맞다고는 볼수 없다

즉 Mechanic, Bio, Industry 등 모든 Input과 Output이 될 수 있는 지점을 바로보고 그들을 유추할 수 있는 것은 바로 Input과 Output Data들을 수 없이 바라보고 애정을 갖고 있는 사람들이다.

그들과 긴밀하게 커뮤니케이션 하지 않고서는 AutoML에 대한 구현은 쉽지 않을 것이다.

인간과 Deep Learning 그들은 Deep Tendency를 갖고 있기 때문이다.

사람과 기계 마찬가지로 그들의 깊숙한 고민까지 털어놓을 수 있게 까지는 많은 시간이 소요될 것으로 본다.