Chris Choi's Blog

Archive for the ‘Tech’ Category

지하철 독서

leave a comment »

이제는 지하철에서 독서를 하는 사람을 찾기가 쉽지 않다. 더불어 지하철에서 독서를 하기가 쉽지 않다. 왜냐고? 사람이 조금만 많아도 이곳 저곳에서 스마트폰을 들이대니까. 가장 인상 깊은 장면 하나. 마주보고 서 있는 사람들이 스마트폰을 보겠다고 같은 위치에서 팔의 높이만 다르게 스마트폰을 들고 있다. 재미있다. 공간 쟁탈전이다.

Advertisements

Written by Chris Choi

February 8, 2019 at 11:36 pm

Posted in Tech

AlphaStar

leave a comment »

Atari, Mario

Q-Learning Algorithm을 사용했습니다.

 

[Video 1. ‘MarI/O – Machine Learning for Video Games’ 출처: SethBling YouTube Channel]

 

Supervised Learning

DNN Deep Neural Network 이 인간의 플레이를 Input으로 이용해

 

Reinforcement Learning

Reinforcement Learning은 다음의 요소들을 대상으로 합니다.

 

  • Environment: 수행 환경입니다.
  • Agent: Action의 주체입니다.
  • State: 현재의 State를 이해합니다. (Observation) Action으로 인해 변화된 State를 다시 이해합니다.
  • Action: Agent는 가용한 Action 중 현재의 State를 고려해 가장 적절한 Action을 취합니다. Action의 결과로 State가 바뀝니다.
  • Reward: 그 결과로 Reward를 받습니다.

 

 

[Video 1. ‘The Theory of Everything, Demis Hassabis’ 출처: ZeitgeistMinds YouTube Channel]

 

Atari 아케이드 게임과 Mario 게임의 State는 화면입니다. Pixel 상의 RGB를 읽어 State를 이해합니다. Reinforcement Learning의 효율성을 고려해 색상을 Gray화 해서 용량을 줄입니다. 정지 화면을 읽는 것은 아닙니다. 이동을 이해해야 하므로 4개의 Frame을 읽습니다. OpenAI는 Gym이라는 Toolkit을 제공해 화면을 이해하고 Reinforcement Learning을 할 수 있도록 지원합니다.

다행히 단순한 게임에서 취할 수 있는 Action은 십 여 가지입니다. 각 Action에 대한 ‘Future Reward’를 계산합니다. 당장 얻게 될 Reward가 높은 Action이 최선의 선택은 아닙니다.

Reward는 포인트입니다. Pixel 상의 RGB 변화가 State의 변화입니다.

Agent끼리 대결하며 새로운 전략이 만들어집니다. Reward가 전략의 유불리를 판단합니다.

MDP Markov Decision Process 는 현재의 State가 과거의 State와 Action의 결과이며, 현재 Action을 취할 때 과거의 State와 Action을 고려하지 않는 것을 전제로 합니다. 이 때 미래의 Reward에는 Discount가 존재합니다. Discount가 없다면 State와 Action은 무한대로 이어질 것입니다. 반대로 Discount가 100%라면 바로 다음 Reward가 가장 큰 Action을 선택하게 되먀, Future Reward는 존재하지 않습니다. Discount는 그 사이에 존재하게 될 것입니다.

Reinforcement Learning은 낯선 환경을 이해하기 위한 Exploration과, 이해하고 있는 환경 하에서 Reward를 극대화 하기 위한 Exploitation의 균형을 잡아야 효율성을 극대화 할 수 있습니다.

 

StarCraft

StarCraft는 위의 게임들과는 차이가 있습니다. 정답이 없는 전략을 개발해야 합니다. 장기와 단기 전술의 조화가 필요합니다. 상대와 한 수씩 번갈아 가면서 두는 바둑과 달리 상대와 동시에 수를 둡니다. 경우의 수가 훨씬 더 복잡합니다. Atari 아케이드 게임처럼 게임이 한 눈에 들어오지도 않습니다.적지 않은 사람들이 DeepMind의 도전에 의구심을 가졌습니다. 하지만 DeepMind는 훌륭한 성과를 보여 주었습니다.

인간이 게임을 하는 조건과 유사하게 했습니다

Written by Chris Choi

January 29, 2019 at 8:15 pm

Posted in Tech

Tagged with ,

AI Transformation

leave a comment »

Andrew Ng은 Google Brain Team과 Baidu AI Group 등을 거치며 AI의 지평을 넓히는 데 많은 기여를 했습니다. 스탠포드에서 학생들을 가르치고,  대표적인 MOOC 서비스인 Coursera를 창업한 경험도 있습니다. 이제는 Landing AI의 CEO로서 기업들이 AI Transformation을 지원하고 있습니다.

 

[Link 1. ‘Open Education 미래, Coursera’]

 

Andrew Ng은 “AI Transformation Playbook: How to lead your company into the AI era” 라는 제목으로 기업들이 AI를 도입할 때 고려해야 할 단계들을 제시하고 있습니다. 다섯 단계는 다음과 같습니다.

 

1. Execute pilot projects to gain momentum

2. Build an in-house AI team

3. Provide broad AI training

4. Develop an AI strategy

5. Develop internal and external communications

 

1. Execute pilot projects to gain momentum

파일럿 프로젝트로 AI의 첫 발을 내딛습니다. 이를 통해 AI와 가까워지고, 사내 투자를 유도합니다. 단, 스터디 성격의 프로젝트는 큰 의미가 없습니다. 또한 비즈니스 측면에서 분명한 가치가 있어야 합니다. 파일럿 프로젝트를 내부 자원만으로 수행하는 것이 여의치 않을 수 있습니다. Domain knowledge를 보유한 내부 팀과 AI 기술을 보유한 외부 팀의 협업으로 시작하는 것도 방법입니다.

Andrew Ng은 Google 재직 시 Google Speech, Google Maps 등 내부 프로젝트를 성공시켜 구성원들의 신임을 얻은 경험을 공유하고 있습니다.

 

Its speech-recognition team swapped out part of their old system for a neural network and encountered, in pretty much one fell swoop, the best quality improvements anyone had seen in 20 years. Their system’s object-recognition abilities improved by an order of magnitude.

‘The Great A.I. Awakening’, Gideon Lewis-Kraus, The New York Times, December 14th, 2016

 

내부 서비스, 내부 시스템 개선은 AI의 실체를 구성원들이 직접 확인할 수 있게 함으로써 모먼텀을 이끌어낼 수 있습니다.

 

2. Build an in-house AI team

Playbook, 그리고 AI Transformation 전제는 회사 전반에 AI 적용하는 것입니다. 그것이 목적이 아니라면 굳이 중앙화된 AI 전담 조직을 두어야 할 필요는 없습니다. AI 전담 조직은 다양한 사내 프로젝트를 수행하면서 프로세스와 표준을 정립하고, 사내의 다양한 니즈를 아우를 수 있는 플랫폼을 개발합니다. 그것이 경쟁 우위 Competitive advantage 가 될 수 있습니다.

전담 조직의 JD Job Description 은 기존과 다를 수밖에 없습니다. JD와 리크루팅을 HR에 맡기면 인력 수급의 효율성이 떨어질 수 있으므로, AI 전담 조직이 수행하도록 합니다.

 

3. Provide broad AI training

앞서 말씀 드렸던 것처럼 Andrew Ng은 Coursera의 공동 창업자입니다. MOOC, YouTube를 비롯한 디지털 컨텐츠를 잘 활용하는 것이 다른 어떤 방법보다 효율적임을 잘 아는 분입니다. 구성원들이 디지털 컨텐츠를 재미있게 접하고 잘 소화할 수 있도록 ‘Curate’ 하는 것이 CLO Chief Learning Officer 의 핵심 업무임을 강조합니다. 기존처럼 지속성이나 파급 효과가 떨어지는 일회성 초빙 교육은 지양해야 합니다. 우리 회사만의 커리큘럼을 만들어 갈 수 있도록 전문가와 협업하는 것도 AI 지식 전파의 중요한 부분입니다.

대상에 따라 교육의 목적과 방법이 달라야 합니다. 경영층은 AI의 사업 적용 전략을 수립하고, 사내 자원을 효율적으로 투입하는 데 목적을 두어야 합니다. 특히 AI를 적용할 수 없는 영역을 판단하는 능력이 중요합니다.

 

4. Develop an AI strategy

AI 전략 수립이 첫 번째 단계가 아닌, 파일럿 프로젝트와 내부 교육 이후인 이유가 있습니다. 위 단계를 거치지 않고서는 믿고 따를 수 있는 실질적인 전략을 수립할 수 없기 때문입니다. 기술 내재화와 프로세스 정립, 플랫폼 구축을 통해 어떤 측면에서 우리 기업이 전략적 강점을 취할 수 있는지 살펴 보아야 합니다. 특히 각각의 사업 영역에서 빛을 발할 수 있을 때 AI가 레버리지 효과를 일으킬 수 있습니다. 범용적 AI 기술로 경쟁 우위를 취하기는 쉽지 않습니다.

AI에 데이터가 빠질 수 없습니다. ‘양질의’ 데이터가 늘면 Product가 개선되고, 더 많은 사용자들을 유인함으로써 데이터가 늘게 됩니다. Microsoft의 CEO인 Satya Nadella는 ‘데이터 확보’의 중요성을 강조했는데, 데이터가 확보되지 않으면 Algorithm의 개발도, 가치 창출도 어려운 시대가 되었다고 말합니다. 분석의 가치가 있는 대량 데이터를 확보하는 일부터가 쉬운 일이 아닙니다. Google은 Google Maps와 Calendar 등의 무료 서비스를 제공하는 대신 사용자 데이터를 확보합니다. 이런 방법도 강구해 볼 수 있습니다.

AI 전략의 시작은 데이터 전략이라고 해도 과언이 아닙니다. AI 전략의 방향성과 마찬가지로 데이터도 영역 별로 구체적일 때 빛을 발할 수 있습니다. 데이터가 많으면 많을 수록 좋지만, 가치를 담고 있는 데이터와 그렇지 않은 데이터를 구분할 수 있을 때 양이 의미를 지닐 수 있습니다. AI 조직과 데이터 조직이 초기부터 협업하는 것이 좋습니다.

 

조직의 중요성

Mobile과 Big Data, Cloud 같은 큰 물결이 다가왔을 때 기업들이 그 흐름을 이해하고 대응하기가 쉽지 않았습니다. 산업화 초기에 전기를 잘 사용할 수 있어야 했던 것처럼, 이제는 AI라는 흐름에 대응할 수 있어야 합니다.  McKinsey는 AI의 경제적 규모가 2030년에는 13조 달러에 이를 것으로 예측하고 있습니다.[1] 기업은 업종과 관계 없이 AI의 내재화를 피할 수 없다는 뜻입니다. Andrew Ng은 시종일관 조직의 중요성을 강조합니다. 전략에서부터 리소스, 지식 축적까지 조직이 일하도록 해야 한다는 것입니다.

Andrew Ng은 그 동안의 경험과 Lessons Learned를 열 페이지 남짓 되는 하나의 문서로 깔끔하게 정리했습니다. 끊임 없이 공유하는 모습이 멋집니다. 기업마다 상황에 차이가 있겠지만, Andrew Ng의 가이드를 십분 활용한다면 조금 더 유연하고 빠르게 AI Transformation을 달성할 수 있을 거라 생각합니다.

 

References

 

[1] “Notes from the AI Frontier: Modeling the Impact of AI on the World Economy”, McKinsey Global Institute, September 2018

Written by Chris Choi

December 26, 2018 at 12:53 am

Posted in Tech

Tagged with ,

NVIDIA AI Conference 2018

with 2 comments

11월 7일, NVIDIA가 ‘NVIDIA AI Conference 2018’을 개최했습니다. NVIDIA는 작년 이맘 때 NVIDIA Deep Learning Day 2017‘이라는 타이틀로 국내에서 처음으로 컨퍼런스를 시작했습니다. 올 해는 3천명이 훌쩍 넘는 개발자들이 참석했습니다.

 

(제가 덧붙은 내용은 Italic으로 표시했습니다.)

 

[Link 1. ‘NVIDIA Deep Learning Day 2017’]

 

오전에는 두 개의 Keynote session, 오후에는 6개 트랙 (Deep Learning & AI, Autonomous Driving, HPC / Supercomputing 등) 47개 Tech session이 진행되었습니다.

 

[Video 1. ‘GTC 2018 – I AM AI’ 출처: NVIDIA Korea YouTube Channel]

 

NVIDIA Korea의 유응준 대표는 오프닝을 선언하면서, AI의 성공 조건 세 가지를 꼽았습니다. 많은 데이터, 데이터를 처리할 수 있는 정교한 Algorithm, 그리고 Algorithm을 실행할 수 있는 GPU Process입니다. 이제 세 가지가 충족되고 있으나, 개발하고 운영할 수 있는 엔지니어어가 부족하고, 지속적인 육성이 필요함을 강조했습니다.

 

마침 비슷한 시기에 Microsoft CEO Satya Nadella 방한했습니다. 그는데이터 확보 중요성을 강조했는데, 데이터가 확보되지 않으면 Algorithm 개발도, 가치 창출도 어려운 시대가 되었다는 것입니다. 생각해 보면 분석의 가치가 있는 대량 데이터를 확보하는 일부터가 결코 쉬운 일이 아닙니다.

 

Accelerated Platforms: The Future of Computing, Marc Hamilton, VP of Solutions Architecture & Engineering

Deep Learning 리서치가 증가하고 있습니다. ‘Tesla V100 Tensor Core’는 Deep Learning과 HPC High Performance Computing 을 위한 가장 강력한 GPU입니다. 5,120개의 CUDA Cores로 구성되어 있으며, Transistor는 211억 개에 달합니다.

Tesla T4 Tensor Core GPU는 CPU에 비해 Inference 성능이 최대 40배 높습니다. TensorRT 5는 Inference optimizer, Compiler 등을 제공하며, NVIDIA Docker 위에서 여러 Inference model을 번거로운 Deploy 없이 수행할 수 있습니다.

 

NVIDIA AI Conference 2018_Image 1.jpg

[Image 1]

 

Porsche 911이 70주년을 맞았습니다. 자동차의 디자인을 위해서는 먼저 컴퓨터 모델을 만들고, 색상과 앵글 등 속성을 바꿔 가면서 디자인을 수정합니다. 문제는 수정된 속성을 실시간으로 확인하기가 어렵다는 점입니다. NVIDIA는 실시간 ‘Ray Tracing’을 가능케 해 Simulation이 마치 영화의 한 장면처럼 구현될 수 있도록 했습니다.

 

[Video 2. ‘NVIDIA Turing Brings Real-Time Ray Tracing to Epic Games Unreal Engine’ 출처: NVIDA YouTube Channel]

 

최근 미국의 ORNL Oak Ridge National Laboratory 은 수퍼 컴퓨터를 만들었습니다. 한 Node 당 6개의Volta GPU를 넣어 총 27,648 GPU를 구성했습니다.

Data Science를 위해 ‘RAPIDS’를 활용할 수 있습니다. In-memory data structure인 Apache Arrow 위에 cuDF, cuML 등을 올려 데이터 분석에도 GPU의 속도를 십분 활용할 수 있도록 했습니다.

 

NVIDIA AI Conference 2018_Image 2.png

[Image 2. ‘Day in the Life of a Data Scientist’ 출처: ‘RAPIDS Accelerates Data Science End-to-End’, NVIDIA Developer Blog]

 

Deep Learning Searches Gravitational Waves, 국가수리과학연구소 오정근 박사

천문학에도 AI와 HPC 활용도가 높아지고 있습니다. 2015년 9월, 최초로 중력파 Gravitational Waves 가 감지되었습니다. 미국이 거대 간섭계를 설치하고, 우주 신호를 10년 간 받은 결과입니다. 블랙홀이 공전하며 중력파를 방출하다가 충돌해 하나의 중력파를 방출하게 됩니다. 블랙홀이 실제로 존재하는 증거가 되었으며, 쌍성으로도 존재함을 알게 되었습니다. 스스로 빛을 내지 않는 블랙홀이 중력파를 방출하지 않았다면 발견하지 못했을 것입니다.

별이 수축하면 별 전체의 구성 물질이 중성자인 중상자별을 만듭니다. 중성자별이 쌍성이 되어 충돌하면 중력파와 함께 빛도 방출됩니다. 주기율표 상 57번 이상의 무거운 원소들이 어떻게 생성되었는지 그 기원을 최근까지 알지 못했습니다. Kilonova를 분석해 보니 중성자 구성이 높았습니다. Kilonova와 GRB Gamma Ray Burst 가 별개 현상이 아닌 하나의 천체 현상임을 알게 되었습니다.

LIGO 분석은 전파 간섭, 지진 같은 환경 잡음으로부터 신호를 추출해 내는 것이 관건이었습니다. Classification으로 상관성을 분석해 진짜 신호 여부를 확인했습니다. ANN, Random Forest 등의 기법을 활용했습니다.

 

Deep Learning in Healthcare: Myths and Realities, 경희사이버대학교 정지훈 교수

Google의 ‘Diabetic Retinopathy Diagnosis’는 AI를 의학에 활용한 대표적 사례입니다. 우리가 생각하는 것보다 AI가 적용되는 Healthcare 도메인의 범위가 넓습니다. 즉, 다루는 문제도, 데이터도, 기술도 다르므로 다양성이 필요합니다. 유전자 데이터는 그래프를, 이미지는 CNN을, Diagnosis prediction은 RNN을 주로 활용할 수 있습니다.

‘HealthData.gov’ 등 공개 데이터가 많습니다.

 

NVIDIA AI Conference 2018_Image 3.png

[Image 3. 출처: HealthData.gov]

 

“Why 98% of Digital Health Startups Are Zombies And What They Can Do About It”

 

Forbes의 기사 제목처럼한 두 가지 기술로 모든 문제를 해결할 수 없습니다. 엔지니어들만으로 문제를 해결하고 의사들의 생각을 바꿔 놓기도 어렵습니다.

David Sontag 교수는 Healthcare가 다른 영역에 비해 어려운 점들을 다음과 같이 설명하고 있습니다.

 

  • Life or death decisions
  • Many questions are about unsupervised learning
  • Very little labeled data
  • Lots of missing data, varying time intervals, censored labels

Machine Learning for Healthcare: Introduction, David Sontag, Clinical Machine Learning Group, MIT

 

좋은 데이터를 고객에게 먼저 제공하면 고객은 활용 가능한 양질의 데이터를 주기 마련입니다. 그런 데이터가 모이면 리서치를 수행할 수 있습니다. 즉, 고객이 누구인지, 이해 당사자가 누구인지를 잘 알고 사업을 진행해야 합니다.

 

Evolution of Artificial Intelligence Robots and Social Change, 한양대학교 한재권 교수

최근 로봇 영역 논문 중 상당 수는 Machine Learning 활용을 다루고 있습니다. 초기 단계라 아직은 많은 연구와 노력을 필요로 합니다.

 

2016년에 한재권 교수님의 강연을 재미있게 들었던 적이 있었습니다. 이번 강연에서도 ‘DARPA Robotics Challenge’ 다루셔서 정리했던 글로 대신합니다.

 

[Link 2. ‘로봇이 변화시킬 세상을 말하다’]

 

실업 문제에 관해서는 새로운 일을 어떻게 제공하는가가 중요합니다. 노동자의 시각에서 이 문제를 바라봐야 합니다. 직업은 변화하고 있습니다. AI, 로봇과 경쟁이 아닌 협업을 해야 합니다.

 

NVIDIA Autonomous Driving Platform Update, NVIDIA 차정훈 상무

NVIDIA 자율 주행 기술인 ‘NVIDIA DRIVE’ Hardware, Software, Simulation으로 구성되어 있습니다. 각각 NVIDIA DRIVE AGX, NVIDIA DRIVE Software (DRIVE AV, DRIVE IX, DRIVE AR), NVIDIA Drive Constellation입니다.

 

NVIDIA의 자율 주행 플랫폼은 DRIVE AGX입니다. 핵심 칩인 Xavier는 자율 주행용 프로세서로, 90억개의 트랜지스터가 있습니다.

 

DRIVE Constellation은 두 가지 서버에서 수행됩니다. 하나는 DRIVE Sim software를 실행하게 되는데, 카메라, Lidar, Radar 같은 센서를 Simulation 합니다. 또 다른 하나는 Simulation 한 센서 데이터를 Input으로 받아 Processing 하는 역할을 수행합니다.

 

GTC

올 해는 좀 더 다양한 영역의 이야기들을 들을 수 있어서 매우 흥미로웠습니다. 이제는 NVIDIA, GPU, Deep Learning이 영역을 불문하고 그 쓰임을 확대해 나가는 것을 분명히 볼 수 있습니다. NVIDIA의 성장세는 이변이 없는 한 멈추지 않을 것 같습니다. 언젠가 기회가 된다면 GTC에 참석해 보고, NVIDIA 견학도 해 보고 싶다는 생각이 들 정도로 매력 있는 Conference였습니다.

Written by Chris Choi

November 8, 2018 at 7:20 pm

Posted in Tech

Tagged with ,

Machine Learning with TensorFlow

with one comment

Development Environment

Mac에서 TensorFlow 1.0.1, Python 3.7.0과 Anaconda를 사용했다. Anaconda는 Spyder 등의 Tool을 제공한다.

 

 

TensorFlow의 Version은 다음과 같이 확인할 수 있다.

—————————————————————————————————————————-

import tensorflow as tf

 

print (“TensorFlow Version: “, tf.__version__)

—————————————————————————————————————————-

TensorFlow Version:  1.0.1

—————————————————————————————————————————-

 

Python Basics

Python Version 2.X에서 Version 3.X의 함수들을 사용하기 위해서는 다음과 같이 선언한다.

—————————————————————————————————————————-

from __future__ import

—————————————————————————————————————————-

 

TensorFlow Basics

TensorFlow의 기본 문법은 다음과 같다.

—————————————————————————————————————————-

import tensorflow as tf  #1)

 

hello = tf.constant (“Hello, TensorFlow!”)  #2)

 

sess = tf.Session ()  #3)

print (sess.run (hello))  #4)

sess.close ()  #5)

—————————————————————————————————————————-

 

1) TensorFlow Library를 Import 한다.

2) 수행할 Node를 정의한다.

3) Session을 생성한다.

4) Node를 수행한다.

5) Session을 닫는다.

 

‘Hello, TensorFlow!’라는 문자열을 화면에 출력하는 ‘hello’는 하나의 Node이다. Node는 TensorFlow가 수행하는 동작이라고 보면 된다. Node와 Node 사이를 움직이는 데이터는 ‘Edge’ 혹은 ‘Tensor’라고 부른다.

‘with’를 사용하면 ‘with’를 나갈 때 알아서 Session을 닫아주므로 명시적으로 ‘close ()’를 선언하지 않아도 된다.

—————————————————————————————————————————-

# sess = tf.Session ()

# print (sess.run (hello))

# sess.close ()

with tf.Session () as sess:

print (sess.run(hello))

—————————————————————————————————————————-

 

연산을 수행할 수 있다.

—————————————————————————————————————————-

import tensorflow as tf

 

node1 = tf.constant (3.0, tf.float32)  #’constant’로 상수를 선언한다

node2 = tf.constant (4.0)  # 위 라인처럼 명시적으로 ‘float32’를 선언하지 않아도 된다.

node3 = tf.add (node1, node2)  # node3 = node1 + node2

 

sess = tf.Session ()

print (“node3: “, sess.run(node3))

sess.close ()

—————————————————————————————————————————-

 

Node 실행 전에 상수를 할당하는 대신, Node 실행 시 값을 입력할 수 있다. ‘placeholder’로 입력할 값을 미정인 상태로 두고, Node 실행 시 ‘feed_dict’를 Input으로 설정한다.

—————————————————————————————————————————-

import tensorflow as tf

 

a = tf.placeholder (tf.float32)  #a = tf.placeholder (tf.float32, shape=(None)

b = tf.placeholder (tf.float32)

adder_node = a + b  # tf.add (a, b)

sess = tf.Session ()

print (sess.run (adder_node, feed_dict = {a: 3, b: 4.5}))

print (sess.run (adder_node, feed_dict = {a: [1, 3], b: [2, 4]}))

sess.close ()

—————————————————————————————————————————-

 

Linear Regression

‘Linear Regression’은 Input x와 Output y의 값이 주어지는 경우, 두 조합을 학습 Training 해 다른 x 값에 대한 y 값을 예측 Inference 하는 것이다. 결과 값인 y가 Training data set 내의 ‘Label’로 주어진다는 점에서 Supervised Learning의 일종이다.

학습을 통해 가설 Hypothesis 을 세운다. W와 b의 값에 따라 다양한 선이 가능하다.

—————————————————————————————————————————-

H(x) = Wx + b

—————————————————————————————————————————-

 

가설 상의 값과 실제 값의 차이가 가장 작은 가설을 선택하게 된다. 이를 위해 ‘Cost Function’ 혹은 ‘Loss Function’을 구현한다. Cost Function은 W와 b의 값을 약간씩 바꿔 가면서 가설 상의 값과 실제 값의 차이를 제곱 하고, 그 값을 합한 후 평균을 계산한다.

—————————————————————————————————————————-

Cost (W, b) =

—————————————————————————————————————————-

 

차이를 제곱 하는 이유는 양수와 음수가 서로 상쇄하지 않도록 하기 위함이다. 제곱하면 값이 커지는 효과가 있으나, 차이가 소수일 경우 제곱 값이 오히려 작아지기도 한다.

Cost를 최소화 하기 위해 ‘GradientDescentOptimizer’를 사용한다. 경사를 따라 내려가면서 Cost를 최소화 하는 W를 계산한다.

 

Binary Classification

‘Binary Classification’은 ‘Logistic Regression’이라 불리기도 한다. ‘스팸 메일이 맞나요, 아닌가요?’, ‘Fraud가 맞나요, 아닌가요?’ 처럼 Yes/No를 판단하는 것이다.

 

Multinominal Classification

 

CNN

CNN Convolutional Neural Network 은 Image processing에 주로 사용된다. CNN은 Feature를 추출하는 Convolutional Layer와 분류를 수행하는 Neural Network로 구성된다. Convolutional Layer는 ‘Filter’ (‘Neuron’ 혹은 ‘Kernel’이라 부르기도 한다) 와 Activation Function으로 구성되는데, Filter는 행렬로서 특징이 데이터에 존재하는지 여부를 확인하는 역할을 한다. 연산이 가능하도록 Filter의 Depth는 Input의 Depth와 동일해야 한다. Input과 Filter는 Multiply 연산을 한다. 특징이 존재하지 않으면 결과는 0에 수렴하며, 특징이 뚜렷할수록 결과 값이 커진다. 여러 가지 특징을 확인하기 위해 복수 개의 Filter가 사용된다. Filter의 개수만큼 Activation Map (중간 Image) 가 생성된다.

Filter는 ‘Stride’ 값을 갖는데, Filter가 움직이는 간격의 크기다. Stride의 값이 크면 데이터 유실 가능성이 높아진다.

Filter 처리 시 데이터의 유실이 없도록 입력값 주위에 ‘0’을 두를 수 있는데, 이것이 ‘Padding’이다. 이를 통해 Overfitting을 방지할 수 있다.

—————————————————————————————————————————-

conv2d = tf.nn.conv2d (… padding = “SAME”)  #Padding 적용

conv2d = tf.nn.conv2d (… padding = “VALID”)  #Padding 미적용

—————————————————————————————————————————-

 

Activation Function은 ‘sigmoid’ 대신 ‘ReLu’를 사용한다.

Convolutional Layer를 거치면 ‘Feature Map’ (혹은 ‘Activation Map’) 이 생성된다.

‘Pooling’ (‘Subsampling’) 을 통해 크기가 작아진다. 주로 Max Pooling을 사용하며, 성능이 좋고 큰 값이 특성을 잘 설명해 준다. 평균값을 사용할 수도 있다.

Neural Network의 Softmax를 통해 Classification이 수행된다.

 

CIFAR-10

‘CIFAR-10’은 10개의 Category로 분류된 32X32의 이미지 6만 개를 학습하고 예측하는 것이다. 5만 개의 이미지는 Training에, 나머지 만 개의 이미지는 Evaluation에 사용된다.

 

ImageNet

AlexNet, GoogLeNet

 

TensorBoard

TensorBoard는 TensorFlow가 제공하는 Visualization tool이다.

 

References

Written by Chris Choi

July 21, 2018 at 12:54 pm

Everybody Lies

with one comment

맞다! 우리는 쉴 새 없이 거짓말을 한다. 어디에? Facebook에, Instagram에, Twitter에! 하지만 솔직한 말을 내뱉는 곳도 있다. 바로 Google Search다. 아내에게 하지 않는 말을 Google Search에는 한다. 거짓말 많은 데이터에 속아서는 안 된다.

 

[Image 1, 2]

Written by Chris Choi

July 17, 2018 at 12:16 pm

Posted in Tech

Tagged with

청소년 스마트폰 중독

leave a comment »

(내가 꼰대인지도 모르겠다. 성인도 마찬가지지만, 청소년 스마트폰 사용은 중독 수준에 이르렀다고 생각한다.)

 

청소년 스마트폰 중독은 원인도, 예방책도 짐작하기 어려울 정도다. 다만 한 가지 꼭 실행했으면 하는 일은, 초등학생들 과제를 카톡이나 밴드 등으로 수행하거나 공유하는 것을 금지하는 것이다. 그것 때문에 어쩔 수 없이 부모가 자녀에게 스마트폰을 사 줘야 하기 때문이다.

 

(시력 떨어져 가면서, 써가면서 스마트폰을 쓴다. 무엇이 효용인지 알면서 쓰면 그나마 다행이겠지만…)

Written by Chris Choi

June 2, 2018 at 4:46 pm

Posted in Tech