Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
2
송호연
(주) 카카오 R&D Data Engineer
Microsoft AI MVP
Google Tensorflow Contributor
Tensorflow-KR 운영진
KAIST 전산학, 경영과학 학사
KAIST 기술경영 석사
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
3
"만약 당신이 AI 전략을
갖고 있지 않다면
당신은 다가올 세상에서
죽을 것입니다"
Devin Wenig,
CEO, eBay
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
4
프로덕트 매니저와 개발자는 새로운 서비스를 기획할 때
구현 가능한 범위를 논의합니다.
아이디어 구현 가능
프로덕트 매니저 아이디어
고객 문제점
개선 아이디어
새로운 상품
엔지니어 - 구현 가능성
- 구현 기술
- 구현 난이도
- 프로젝트 일정
고객에게 제공이 가능한
상품과 서비스
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
5
인공지능은
상상할 수 없었던 새로운 역량을 Unlock했습니다
아이디어 구현 가능
프로덕트 매니저 아이디어
고객 문제점
개선 아이디어
새로운 상품
엔지니어 - 구현 가능성
- 구현 기술
- 구현 난이도
- 프로젝트 일정
기존에는 상상도 못하던
상품과 서비스
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
6
Outline
범용 인공지능
General Artificial Intelligence
강화학습 기본
Reinforcement Learning Basics
스타크래프트2 강화학습
StarCraft II Reinforcement Learning
Azure Batch로 에이전트 학습 시키기
Train Agents on Azure Batch
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
8
"사람이 그렇게 행동했다면
지능적이라고 말할 수 있는 행동을
하는 기계를 만드는 것"
- John McCarthy,
Father of AI and Lisp
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
9
"머신러닝과 인공지능은
불과 몇 년 전만해도
우리가 상상할 수 없었던
역량을 열어주었습니다"
Sundar Pichai, CEO, Google Inc.
"만약 컴퓨터가 인간을 속여 자신을
마치 인간인 것처럼 믿게 할 수 있다면
컴퓨터를 ‘인텔리전트’ 하다고
부를만한 가치가 충분히 있다."
Alan Turing(1912~1954)
세계 최초의 컴퓨터를 만든 천재 수학자
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
10
당신은 지능이 대단한 컴퓨터를
만들고 싶다고 했는데요,
구체적으로 당신이 만들고 싶어하는
컴퓨터는 도대체 어떤 건가요?
난 대단한 지능의 컴퓨터를 만드는 데
는 별 관심이 없습니다.
내가 정말 추구하는 컴퓨터는
평범한 지능을 갖춘 컴퓨터입니다.
마치 미국의 AT&T의 사장과
같은 그러한 지능의 컴퓨터를
만들고 싶습니다.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
11
마치 스티브 잡스와
같은 지능의 컴퓨터를
만들고 싶습니다.
당시 AT&T의 사업과 영향력을
고려했을 때, 앨런 튜닝의 말은
이런 느낌이었을 것이다.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
12
"사실 정말 이해하고 싶었던 것은 뇌다.
근데 그것을 이해하기 위해서
컴퓨터 구조를 만들고 설계했는데
가만히 생각해보니까 실수한 것 같다 "
- 사망 전 병원에서 집필한 [컴퓨터와 뇌] 원고 중,
폰 노이만(John von Neumann)
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
13
뇌를 모방해 현대 컴퓨터 구조를 설계한 '폰 노이만'은
컴퓨터와 인간의 뇌에 본질적인 차이가 있다는 것을 깨달았다.
느리고, 정확도가 낮지만
연결성이 깊음
빠르고, 정확도가 높지만
연결성이 낮음
출처 : 김대식의 인간 vs 기계, 김대식, 동아시아
이미지 출처 : Illustration of a network of nerve cells in the brain. Credit: Benedict Campbell, Wellcome Images.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
14
사람의 뇌와 컴퓨터가 1+1=2 이라는
문제를 푸는 방식은 전혀 다르다.
수 많은 뉴론들이 시각 신호를 통해 들
어온 문제를 해석하고 관련된 뉴런들
을 찾아 운동신경으로 해답을 말한다.
값 1과 값 2를 입력 값으로 넣고
산술논리장치가 계산을 한 후
출력값을 내놓는다.
출처 : 김대식의 인간 vs 기계, 김대식, 동아시아
이미지 출처 : Illustration of a network of nerve cells in the brain. Credit: Benedict Campbell, Wellcome Images.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
15
범용 인공 지능
Artificial General Intelligence
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
23
백날 자습해도 이해가 안되던 "강화학습"
머리 속에 인스톨 시켜드립니다 feat. 드래곤타이거
알파고의 알고리즘을 이해해보자!!!
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
24
강화학습의 두가지 흐름
• 가치 기반 강화학습 (Value-based Reinforcement Learning)
– DQN, Deep-Sarsa, Sarsa, Q-learning
• 정책 기반 강화학습 (Policy-based Reinforcement Learning)
– Actor-Critic(A3C), REINFORCE, MCTS(Monte-Carlo Tree Search, AlphaGo)
DQN, Deep-Sarsa,
Sarsa, Q-learning
Actor-Critic(A3C)
REINFORCE
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
25
강화학습 History
순차적
프로그래밍
마르코프
의사결정
프로세스
정책 이터레이션
(벨만 기대 방정식)
가치 이터레이션
(벨만 최적 방정식)
다이나믹 프로그래밍
SARSA
(벨만 기대 방정식)
큐러닝
(벨만 최적 방정식)
2. 몬테카를로 근사,
3. TD(시간차)-학습
on-policy
4. off-policy
1. Model free
Q
Q
5. Replay Memory
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
26
강화학습 History
딥살사
(가치 기반 강화학습)
REINFORCE
(정책 기반 강화학습)
6. 딥러닝
policy gradient
DQN
(가치 기반 강화학습)
Actor-Critic(A3C)
(정책 기반 강화학습)
policy gradient
TD(시간차) 학습
Q Q
π
Multi-Agent
Learning
ACKTR ...π
Hot 스타크래프트
π
A3C 스타일이 주류
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
27
AlphaGo는
두 가지 질문에
답하는 능력을 가지고 있습니다.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
28
Q1. 가치 함수 :
지금 내가 얼마나 이기고 있나?
Q2. 정책 함수 :
지금 내가 무슨 행동을 해야하나?
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
29
Q1. 가치 함수 : 지금 내가 얼마나 이기고 있나?
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
30
Q1. 가치 함수 : 지금 내가 얼마나 이기고 있나?
가치 함수
흑 : 0 백 : 0
무승부로 예측
가치 함수
흑 : 0.85 백 : -0.85
흑이 실수만 안하면 이김
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
31
Q1. 가치 함수 : 그래, 그럼 가치 함수는 어떻게 구하지?
A. Convolution Neural Network
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
32
Q1. 가치 함수 : 가치함수 어떻게 업데이트하지?
A. Convolution Neural Network
인공신경망
θ
v
목표 함수 J(θ)를 향해
학습 속도만큼
인공신경망 θ의
Weight을 업데이트
s
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
33
Q1. 가치 함수 : 그래, 그럼 가치 함수는 어떻게 구하지?
B. 몬테카를로 근사(Approximation)
가치 함수
0.85
흑이 실수만 안하면 이김
바둑을 여러판을 했을 때,
이 상태를 내가 100번 겪어봤다.
이 상태를 거쳐서 내가
이긴 적이 90번 (+1)
진 적이 5번 (-1)
비긴 적이 5번 (+0)
85 / 100 = 0.85
몬테카를로 예측, 어려운 공식일 줄 알았는데..
단순무식한 방법.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
34
Q1. 가치 함수 : 그래, 그럼 가치 함수는 어떻게 구하지?
B. 몬테카를로 근사(Approximation)
가치 함수 <= 예측값 + 학습속도(실제값 예측값)
몬테카를로 예측의 가치함수 업데이트 식
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
35
Q2. 정책 함수 : 나는 무슨 행동을 해야 하지?
오목에서 흑이 다음 바둑돌을
어디에 두면 좋을까?
오목 초보도,
a1 a3에 두면 안좋다는 건 안다
적어도 a1나 a3보단
a2가 좋은 선택이지 않을까?
a1
a2
a3
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
36
Q2. 정책 함수 : 나는 무슨 행동을 해야 하지?
정책 함수
a1에 둘 확률 예측 : 0.5
a2에 둘 확률 예측 : 0.2
a3에 둘 확률 예측 : 0.3
각 행동을 할 확률
(Softmax, 총 합 1.0)
s
π(a1| s) = 0.5
π(a2| s) = 0.2
π(a3| s) = 0.3
a1
a2
a3
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
37
Q2. 정책 함수 : 나는 무슨 행동을 해야 하지?
헐, 직접 해보니까 예측값이랑 다르잖아!! 이상해!!
정책 함수
s
a1에 둘 확률 예측 : 0.5
a2에 둘 확률 예측 : 0.2
a3에 둘 확률 예측 : 0.3
각 행동을 할 확률
(Softmax, 총 합 1.0)
a1
a2
a3
π(a1| s) = 0.5
π(a2| s) = 0.2
π(a3| s) = 0.3
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
38
Q2. 정책 함수 : 나는 무슨 행동을 해야 하지?
누적 보상이 높은 방향으로 정책 함수를 업데이트 하자
정책 함수
s
a1에 둘 확률 예측 : 0.5 0.1
a2에 둘 확률 예측 : 0.2 0.6
a2에 둘 확률 예측 : 0.3 0.3
각 행동을 할 확률
(Softmax, 총 합 1.0)
a1
a2
a3
π(a1| s) = 0.1
π(a2| s) = 0.6
π(a3| s) = 0.3
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
39
Q2. 나는 무슨 행동을 해야 하지?
누적 보상이 높은 방향으로 정책 함수를 업데이트 하자
인공신경망
θ
a1
a2
a3
목표 함수 J(θ)를 향해
학습 속도만큼
인공신경망 θ의
Weight을 업데이트
s
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
40
다시 두 가지 질문
현재 상태를 객관적으로 살펴보면..
가치 함수
Value Network
음.. 헛!! 좋아! 진실은 언제나 하나!!
정책 함수
Policy Network
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
41
딥마인드의 DQN은
한 가지 질문에
대답하는 능력을 갖고 있습니다
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
42
Q 함수 : RGB 픽셀을 줄테니 행동을 말해줘
Q 함수
오른쪽!!
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
43
Q 함수 : RGB 픽셀을 줄테니 행동을 말해줘
Q 함수
a1행동 누적 보상 예측 : 31
a2 행동 누적 보상 예측 : 102
행동을 하면 얻을
누적 보상 예측 값
s
Q(a1| s) = 31
Q(a2| s) = 102a2
a1
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
44
Q 함수 : RGB 픽셀을 줄테니 행동을 말해줘
음 오른쪽 갔더니 예측한 것보다 더 잘되네?
Q 함수
a1행동 누적 보상 예측 : 31
a2 행동 누적 보상 예측 : 102
150
행동을 하면 얻을
누적 보상 예측 값
s
Q(a1| s) = 31
Q(a2| s) = 102 150a2
a1
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
45
보상 많이 받는 쪽으로 Q 함수를 업데이트 하자
Q 함수
a2 행동 누적 보상 예측 : 102
150
행동을 하면 얻을
누적 보상 예측 값
s
Q(a2| s) = 102 150a2
큐함수 업데이트 식
Q <= 예측값 + 학습속도(실제값 예측값)
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
46
Q 함수 : RGB 픽셀을 줄테니 행동을 말해줘
Q 함수
오른쪽!!
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
48
최신 강화학습 트렌드 : 분산 학습 시스템 A3C
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
49
스타크래프트2 강화 학습
StarCraft II Reinforcement Learning
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
50
솔직히, 딥마인드의 천재 엔지니어들을 보면 무섭습니다.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
51
우리가 어떤 민족입니까?
전 세계에서 스타크래프트를 가장 잘하는 민족
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
52
전 세계에서 스타크래프트를 가장 잘하는 민족, Korea
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
53
문제1. 누구한테 먼저, 어떤 순서로 명령을 내려야 하지?
• 명령을 내려야할 대상이 여러 유닛이 되었다. 누구에게 명령을 내릴 것인가?
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
54
문제2. Action Space가 1억 가지 이상인데,
Policy Network를 어떻게 표현하지?
• Atari game, 바둑과는 차원이 다른 경우의 수가 나타났다.
• 실시간 전략 게임인데, 한 프레임에 내릴 수 있는 명령의 수가 1억 개 이상이다.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
55
문제3. Reward를 어떻게 설정하지? (Reward Shaping)
• 현재, Deepmind가 활용하고 있는 Reward는 Blizzard Score
• 하지만 위 블리자드 스코어를 높이도록 Agent를 훈련시키니, 자원만 열심히 캐더라
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
56
문제4. Deepmind 장비빨 ㅠㅠㅠㅠ
• Learning Rate = 10e-5 ~ 10e-3 Random
• Steps : 250M = 2억 5천만 Step (제 컴퓨터로 천만 스텝 한번 돌리려면 2-3일..)
• A3C Agents : 64개의 비동기 쓰레드 = 스타크래프트2를 64개 띄움 (제 컴퓨터에선 띄울 수도 없음)
• Algorithm : A3C
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
57
스타크래프트2 강화학습 전략 IDEA
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
58
IDEA1. 딥마인드 Baseline A. Observation Space
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
59
IDEA1. 딥마인드 Baseline B. Action Space
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
60
IDEA1. 딥마인드 Baseline C. 강화학습 baseline 아키텍쳐
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
61
경제
Economy
전략
Strategy 정찰
Recon
전술
Tactics
생산
Production
Agent
스타크래프트의 문제들
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
62
인공지능이 스스로 게임을 플레이하게 만들기 위해선
전략, 전술, 경제, 생산, 정찰 문제를 동시에 풀어야함
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
63
알리바바 AI 팀이 만든 스타크래프트 강화학습은 전술(Tactics) 문제
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
64
경제
전략
정찰
전술
생산
Agent
IDEA 1. 내가 생각하는 스타크래프트의 문제 접근 법
Specialized agents for common goal
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
65
경제 Agent
전략 Agent
정찰 Agent
전술 Agent
생산 Agent
Master Agent
유비
제갈량
방통
마량
조운
마량
장비
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
66
경제 Agent
전략 Agent
정찰 Agent
전술 Agent
생산 Agent
유비 Master Agent
목표 : 승리!!
제갈량
목표 : 빌드 최적화
방통
목표 : 자원 최적화
마량
조운
목표 : 적 전략 인지
마량
목표 : 생산 최적화
장비
목표 : 마이크로 콘트롤
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
67
스타크래프트의 문제들
경제
전략 정찰
전술
생산
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
68
IDEA 2. 스타크래프트 1 BWAPI(인공지능 인터페이스)의
우수한 구현체를 스타2에 똑같이 만들어낸다
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
69
스타2 강화학습 스터디원 김세옥님의 벌쳐 마인 콘트롤 영상
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
71
스타1 BWAPI 저그 초반 저글링 러시 전략 정의 JSON
{
"Zerg_ZerglingRush":{
"Race":"Zerg",
"OpeningBuildOrder":[
"Drone", "Spawning Pool", "Zergling", "Zergling", "Zergling", "Zergling"
]
}
}
reference : https://github.com/davechurchill/ualbertabot/
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
72
스타1 BWAPI 저그 9드론 저글링 히드라 러시 전략 정의 JSON
{
"Zerg_ZerglingRush":{
"Race":"Zerg",
"OpeningBuildOrder":[
"Drone", "Drone", "Drone", "Drone", "Drone", "Spawning Pool", "Drone",
"Extractor", "Overlord", "Drone", "Zergling", "Zergling", "Zergling", "Hydralisk Den",
"Drone", "Drone", "Drone", "Drone"
]
}
}
reference : https://github.com/davechurchill/ualbertabot/
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
73
IDEA 3. Optimal Scripted Agent를 프로그램으로 만들고
이 행동을 A3C 에이전트가 따라하도록 학습시킨다.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
75
노하우1. 유닛마다 고유 아이디는 없다. 부대 단위 컨트롤만 가능하다.
• 개발자 마인드로 유닛의 ID를 구하려고 노력
했다.
• 하지만 딥마인드의 강화학습 환경은
최대한 인간과 동일한 인터페이스만 제공한
다.
• 부대를 지정하고 트레이닝을 시작해야 했다.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
76
노하우2. 스타2 강화학습 기본 베이스라인 전략은
replay를 통한 사전 학습이 답이다.
• Deepmind의 스타2 논문 마지막에
인간의 경기를 똑같이 모방하는 예시
가 나온다.
• 사람의 경기 결과를 Supervised
Learning으로 그대로 따라하는 에이
전트는 그럴듯하게 게임을 재현한다.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
77
노하우3. 스타2에서는 OpenAI gym 안쓰는 게 답
• OpenAI의 Gym은 Observation Space와 Action Space가 제한적이다.
• 현재 사용가능한 available actions 에 대한 개념이 없다.
• Gym의 아키텍쳐는 아타리 게임 정도의 복잡도에서 사용하기에는 적합하지만,
스타2의 복잡도에서는 충분히 활용가능하지가 않다.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
78
노하우4. 강화학습 공부는 Sutton Book
그리고 모두의 연구소 강아지 책 추천 !!
• 파이썬과 케라스로 배우는 강화학습
이 책 정말 좋습니다. 사세요!
• 그리고 더 배우시려면,
Sutton 교수님의 강화학습 교재가 스탠다드.
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
79
노하우5. 머신러닝 구현체 코드가 이해 안되면,
영어 단어 암기하듯이 따라서 타이핑해라.
• 우리가 맨 처음 프로그래밍 언어 배울 때를 생각해보자.
• 대체 왜 System.out 을 앞에 붙이는거지?
• include는 대체 뭐지?
• 원래 이해 안된다. 그냥 따라 치는 거다.ㅋㅋㅋㅋ
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
80
경제 Agent
전략 Agent
암살 Agent
전술 Agent
생산 Agent
Master Agent
목표 : 지구 정복
목표 : 빌드 최적화
목표 : 자원 최적화
마량
T-1000
목표 : 사라 코너를 없앤다
목표 : 생산 최적화
목표 : 마이크로 콘트롤
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
81
Azure Batch로 에이전트 학습 시키기
Train Agents on Azure Batch
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
82
GPU 장비 받으면 막상 기분이 엄청 좋다.
근데 사실 본인도 평소에는 접속 안한다. (유지비 엄청 비싸다)
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
83
ML 학습 작업을 돌릴 때는 Spot Instance로 하면 그뤠잇
• 대부분 GPU 장비는 평소에 사실 필요없다.
모델을 완성한 후 빡세게 돌릴 때는 장비가
많을 수록 좋다.
• 이런 경우에는 Azure Batch를 추천한다
Python script로 스타2 바이너리를 올리고
학습 명령을 수행한 후, 완료되면 인스턴스
를 죽인다.
• 개인적으로 공부하신다면, 돈을 최대한 아
낄 수 있도록 필요할 때만 인스턴스를 생성
해 학습시키는 방식을 추천
• 콜라 한 캔 가격
– 6코어 GPU RAM 56 G = ₩1,080/시간!
– 12코어 GPU RAM 112G = ₩2,160/시간
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
84
무료 크레딧만 받아서 Spot Instance로 쓰자
돈은 안쓰는 것이다
Chris Hoyean Song, Microsoft AI MVP
sjhshy@gmail.com
85
Thanks
sjhshy@gmail.com
https://github.com/chris-chris
https://www.facebook.com/ai.chris.chris
http://chris-chris.ai
https://brunch.co.kr/@chris-song/
https://www.linkedin.com/in/chris-song-0bb03439/