SlideShare a Scribd company logo
Software Engineering Challenges and
Innovations with Machine Learning
Hyokun “Yun” (윤효근)
AWS Deep Learning
March 16th, 2017
Yun (AWS) SE Challenges March 16th, 2017 1 / 38
Outline
1 머신러닝 vs. 소프트웨어 엔지니어링
2 딥러닝은 무엇인가?
3 소프트웨어 엔지니어링의 딥러닝에의 기여
머신러닝은 무엇인가?
Yun (AWS) SE Challenges March 16th, 2017 3 / 38
머신러닝은 무엇인가?
머신러닝은 흑마법입니다.
Yun (AWS) SE Challenges March 16th, 2017 3 / 38
머신러닝은 무엇인가?
머신러닝은 흑마법입니다.
소프트웨어 엔지니어링/프로그래밍은 백마법입니다.
Yun (AWS) SE Challenges March 16th, 2017 3 / 38
머신러닝은 무엇인가?
머신러닝은 흑마법입니다.
소프트웨어 엔지니어링/프로그래밍은 백마법입니다.
오늘은 이 두 마법 방법론이 어떻게 충돌하고 어떻게 서로를 돕는지에 대해서
얘기해보고자 합니다.
Yun (AWS) SE Challenges March 16th, 2017 3 / 38
머신러닝은 무엇인가?
머신러닝은 흑마법입니다.
소프트웨어 엔지니어링/프로그래밍은 백마법입니다.
오늘은 이 두 마법 방법론이 어떻게 충돌하고 어떻게 서로를 돕는지에 대해서
얘기해보고자 합니다.
다분히 뭉뚱그려서 얘기하는 것을 양해해 주세요!
Yun (AWS) SE Challenges March 16th, 2017 3 / 38
목표
우리의 목표는 자동화된 시스템을 만드는 것입니다.
Yun (AWS) SE Challenges March 16th, 2017 4 / 38
목표
우리의 목표는 자동화된 시스템을 만드는 것입니다.
주어진 입력 x에 대해 우리가 원하는 결과 f(x)를 컴퓨터가 알아서
계산해주길 원합니다.
x → → f(x)
Yun (AWS) SE Challenges March 16th, 2017 4 / 38
두가지 방법론
프로그래밍
어떤 입력들이 들어올지
생각한다
모든 입력 x에 대해 f(x)를
계산하는 알고리즘을 생각한다
알고리즘을 구현한다
Since ENIAC (1946)
Yun (AWS) SE Challenges March 16th, 2017 5 / 38
두가지 방법론
프로그래밍
어떤 입력들이 들어올지
생각한다
모든 입력 x에 대해 f(x)를
계산하는 알고리즘을 생각한다
알고리즘을 구현한다
Since ENIAC (1946)
머신러닝
머신러닝 알고리즘을 고른다
알고리즘에게 예제들을
보여준다
(x1, f(x1)), (x2, f(x2)), . . .
알고리즘에게 일을 시킨다
Since Perceptron (1957)
Yun (AWS) SE Challenges March 16th, 2017 5 / 38
프로그래밍이 좋을 때
수학적으로 잘 정의된 문제를 풀 때는 프로그래밍이 좋습니다.
def bubblesort(input_list):
for i in range(len(input_list)):
for j in range(len(input_list) - 1, i, -1):
if input_list[j] < input_list[j - 1]:
swap(input_list, j, j - 1)
모든 입력에 대해
분석 가능한 시간 내에
정확한 답을 반환한다 (randomized algorithm들도 있긴 하지만...)
Yun (AWS) SE Challenges March 16th, 2017 6 / 38
프로그래밍이 좋을 때
수학적으로 잘 정의된 문제를 풀 때는 프로그래밍이 좋습니다.
def bubblesort(input_list):
for i in range(len(input_list)):
for j in range(len(input_list) - 1, i, -1):
if input_list[j] < input_list[j - 1]:
swap(input_list, j, j - 1)
모든 입력에 대해
분석 가능한 시간 내에
정확한 답을 반환한다 (randomized algorithm들도 있긴 하지만...)
Yun (AWS) SE Challenges March 16th, 2017 6 / 38
프로그래밍이 좋을 때
수학적으로 잘 정의된 문제를 풀 때는 프로그래밍이 좋습니다.
def bubblesort(input_list):
for i in range(len(input_list)):
for j in range(len(input_list) - 1, i, -1):
if input_list[j] < input_list[j - 1]:
swap(input_list, j, j - 1)
모든 입력에 대해
분석 가능한 시간 내에
정확한 답을 반환한다 (randomized algorithm들도 있긴 하지만...)
Yun (AWS) SE Challenges March 16th, 2017 6 / 38
프로그래밍이 좋을 때
수학적으로 잘 정의된 문제를 풀 때는 프로그래밍이 좋습니다.
def bubblesort(input_list):
for i in range(len(input_list)):
for j in range(len(input_list) - 1, i, -1):
if input_list[j] < input_list[j - 1]:
swap(input_list, j, j - 1)
모든 입력에 대해
분석 가능한 시간 내에
정확한 답을 반환한다 (randomized algorithm들도 있긴 하지만...)
Yun (AWS) SE Challenges March 16th, 2017 6 / 38
머신러닝이 좋을 때
그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다.
예를 들면:
다음 중 방울이 아닌 이미지를 찾아보시오
방울이 뭔데요?
배경은 무시해야 하나요?
배경이 뭔데요?
. . .
Yun (AWS) SE Challenges March 16th, 2017 7 / 38
머신러닝이 좋을 때
그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다.
예를 들면:
다음 중 방울이 아닌 이미지를 찾아보시오
방울이 뭔데요?
배경은 무시해야 하나요?
배경이 뭔데요?
. . .
Yun (AWS) SE Challenges March 16th, 2017 7 / 38
머신러닝이 좋을 때
그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다.
예를 들면:
다음 중 방울이 아닌 이미지를 찾아보시오
방울이 뭔데요?
배경은 무시해야 하나요?
배경이 뭔데요?
. . .
Yun (AWS) SE Challenges March 16th, 2017 7 / 38
머신러닝이 좋을 때
그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다.
예를 들면:
다음 중 방울이 아닌 이미지를 찾아보시오
방울이 뭔데요?
배경은 무시해야 하나요?
배경이 뭔데요?
. . .
Yun (AWS) SE Challenges March 16th, 2017 7 / 38
머신러닝이 좋을 때
그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다.
예를 들면:
다음 중 방울이 아닌 이미지를 찾아보시오
방울이 뭔데요?
배경은 무시해야 하나요?
배경이 뭔데요?
. . .
Yun (AWS) SE Challenges March 16th, 2017 7 / 38
머신러닝이 좋을 때
하지만 예제들을 모으는 것은 어렵지 않은 경우들이 있습니다. 이런 경우에
머신러닝이 유용합니다.
Yun (AWS) SE Challenges March 16th, 2017 8 / 38
머신러닝이 좋을 때
사람이 잘 하는 일들
• 이미지에서 물체를 인식하기
• 한 자연어를 다른 자연어로 번역하기
• 말을 알아듣고 글로 옮기기
• 바둑 두기...?
• . . .
특별히 사람이 잘 하는 것은 아닌 일들
• 웹사이트 광고를 클릭할지 예측하기
• 내일의 주식 가격을 예측하기
• 결제 시스템 이용자가 사기꾼인지 판단하기
• . . .
Yun (AWS) SE Challenges March 16th, 2017 9 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
머신러닝은 소프트웨어 엔지니어링의 적!
머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract)
만을 제공함
• 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음
• ’아주 다른’게 무엇인지도 명확하게 정의되지 않음
• 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증
CACE: Change Anything Changes Everything (Sculley et al, 2014)
• 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow
전체를 주시해야 함.
• 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면?
• 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를
이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어
카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면?
그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬
• 모든 시스템을 하나로 뭉치길 원함
예: dialog system: speech recognition → intent classification → understanding
→ response
• GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용
• 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨
• 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬
Yun (AWS) SE Challenges March 16th, 2017 10 / 38
서로를 이해하려는 노력이 필요
Two big challenges in machine learning (by Leon Bottou)
Machine Learning: The High-Interest Credit Card of Technical Debt (by
Sculley et al, 2014)
Yun (AWS) SE Challenges March 16th, 2017 11 / 38
Outline
1 머신러닝 vs. 소프트웨어 엔지니어링
2 딥러닝은 무엇인가?
3 소프트웨어 엔지니어링의 딥러닝에의 기여
왜 딥 러닝(deep learning)이 화두인가?
최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론
Yun (AWS) SE Challenges March 16th, 2017 13 / 38
왜 딥 러닝(deep learning)이 화두인가?
최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론
새로운 망치! 많은 못을 찾았고 앞으로도 더 찾을 것
Yun (AWS) SE Challenges March 16th, 2017 13 / 38
왜 딥 러닝(deep learning)이 화두인가?
최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론
새로운 망치! 많은 못을 찾았고 앞으로도 더 찾을 것
• 이미지 처리 (물체 인식, segmentation, generation, . . . )
https://srconstantin.wordpress.com/2017/01/28/performance-trends-in-ai/
Yun (AWS) SE Challenges March 16th, 2017 13 / 38
왜 딥 러닝(deep learning)이 화두인가?
최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론
새로운 망치! 많은 못을 찾았고 앞으로도 더 찾을 것
• 이미지 처리 (물체 인식, segmentation, generation, . . . )
https://srconstantin.wordpress.com/2017/01/28/performance-trends-in-ai/
• 음성 (speech recognition, natural language understanding, speech
synthesis, . . . )
Yun (AWS) SE Challenges March 16th, 2017 13 / 38
왜 딥 러닝(deep learning)이 화두인가?
최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론
새로운 망치! 많은 못을 찾았고 앞으로도 더 찾을 것
• 이미지 처리 (물체 인식, segmentation, generation, . . . )
https://srconstantin.wordpress.com/2017/01/28/performance-trends-in-ai/
• 음성 (speech recognition, natural language understanding, speech
synthesis, . . . )
• 번역, 게임 인공지능
Yun (AWS) SE Challenges March 16th, 2017 13 / 38
Why Deep Learning, from Systems Perspective
Refer to Alex’s Quora answer: (link)
Today’s computing environment:
Disks are getting bigger. We can record pretty much everything we want.
Memory is comparably scarce. (you can still buy computers with 2GB like
it’s the 90s)
CPUs aren’t scaling as much as they used to but there’s a mass market
of computer gamers pushing GPUs forward (for $500 you can now buy a
5TFLOPS card)
(Yun: Network bandwidth also relatively low, <= 20Gbps)
Therefore: Do computationally very expensive stuff which aligns well with
GPUs within in a machine.
Yun (AWS) SE Challenges March 16th, 2017 14 / 38
Running Example
How shall we build a system that tells apples from oranges?
Yun (AWS) SE Challenges March 16th, 2017 15 / 38
Supervised learning
Examples of apples and oranges will be provided for us to train an algorithm.
Training Data: ( , apple), ( , apple), ( , orange), ( ,
apple), ( , orange), . . .
Test: given , predict that it is an apple image.
Yun (AWS) SE Challenges March 16th, 2017 16 / 38
Image Data
Each image is naturally described by three matrices
representing intensity of RGB colors (0∼255).
For example, if we undersampled the above image as 8 × 8, each color
channel would look like:
Yun (AWS) SE Challenges March 16th, 2017 17 / 38
Feature Engineering
Maybe apples are more reddish and oranges are relatively greenish!
f1(x): average R intensity of image x
f2(x): average G intensity of image x
+
+
+
+
+
+
+
+
+
+
−
−
−
−
−
−
−
−
−
−
120 140 160 180 200 220
406080100120140160
mean red intensity
meangreenintensity
o
−
apples
oranges
Well that doesn’t seem very good. . .
Yun (AWS) SE Challenges March 16th, 2017 18 / 38
Feature Engineering
OK, how about this?
f1(x): average G intensity of image x
f2(x): average B intensity of image x
+
+
+
+
+ +
+
+
+
+
−
−
−
−
−
−
−
−
−
−
40 60 80 100 120 140 160
050100150
mean green intensity
meanblueintensity
+
−
apples
oranges
Yes!!!
Yun (AWS) SE Challenges March 16th, 2017 19 / 38
Logistic Regression
P(apple | x) = σ(w0 + w1 · f1(x) + w2 · f2(x)) where σ(t) =
1
1 + exp(−t)
.
0.0
0.2
0.4
0.6
0.8
1.0
prob
+
+
+
+
+ +
+
+
+
+
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−
−−
−
40 60 80 100 120 140 160
0
20
40
60
80
100
120
140
f1(x)
f2(x)
−4 −2 0 2 4
0.00.20.40.60.81.0
t
σ(t)
Find w0, w1 and w2 that best fits
data.
w0 = −7.7662
w1 = 0.1696
w2 = −0.1452
Yun (AWS) SE Challenges March 16th, 2017 20 / 38
Feature Engineering
Great job, Yun! Why don’t we add bananas?
Yun (AWS) SE Challenges March 16th, 2017 21 / 38
Feature Engineering
It does not seem to work anymore. . .
+
+
+
+
+ +
+
+
+
+
−
−
−
−
−
−
−
−
−
−
o
o
o
o
o
o
o
oo
o
50 100 150 200
050100150
mean green intensity
meanblueintensity
+
−
o
apples
oranges
bananas
Yun (AWS) SE Challenges March 16th, 2017 22 / 38
Rethinking Our Approach
x
f1(x)f2(x)
P(apple | x)
f1(x) = w
(1)
0 +
128×128×3
j=1
w
(1)
j xj and f2(x) = w
(2)
0 +
128×128×3
j=1
w
(2)
j xj,
P(apple | x) = σ(w0 + w1 · f1(x) + w2 · f2(x)).
Yun (AWS) SE Challenges March 16th, 2017 23 / 38
Representation Learning
Previously, we only trained how to relate f1(x) and f2(x) to P(apple | x).
x
P(apple | x)
f1(x)f2(x)
f1(x) = w
(1)
0 +
128×128×3
j=1
w
(1)
j xj and f2(x) = w
(2)
0 +
128×128×3
j=1
w
(2)
j xj,
P(apple | x) = σ(w0 + w1 · f1(x) + w2 · f2(x)).
Yun (AWS) SE Challenges March 16th, 2017 24 / 38
Representation Learning
Previously, we only trained how to relate f1(x) and f2(x) to P(apple | x).
Why don’t we learn f1(x) and f2(x) from data??
x
P(apple | x)
f1(x)f2(x)
f1(x) = w
(1)
0 +
128×128×3
j=1
w
(1)
j xj and f2(x) = w
(2)
0 +
128×128×3
j=1
w
(2)
j xj,
P(apple | x) = σ(w0 + w1 · f1(x) + w2 · f2(x)).
Yun (AWS) SE Challenges March 16th, 2017 24 / 38
Reducing the gap to between the toy example and the
state-of-the-art
More than two features
x
P(apple | x)
Yun (AWS) SE Challenges March 16th, 2017 25 / 38
Reducing the gap to between the toy example and the
state-of-the-art
More than two features
x
P(apple | x)
Yun (AWS) SE Challenges March 16th, 2017 25 / 38
Reducing the gap to between the toy example and the
state-of-the-art
More than two features
More layers, like hundreds of them (deep learning!)
x
P(apple | x)
Yun (AWS) SE Challenges March 16th, 2017 25 / 38
Reducing the gap to between the toy example and the
state-of-the-art
More than two features
More layers, like hundreds of them (deep learning!)
More than two categories (∼ 1, 000), large amount of data
(∼ 1, 000, 000).
x
P(apple | x), P(desk | x), P(baseball | x), . . .
Yun (AWS) SE Challenges March 16th, 2017 25 / 38
Reducing the gap to between the toy example and the
state-of-the-art
More than two features
More layers, like hundreds of them (deep learning!)
More than two categories (∼ 1, 000), large amount of data (∼ 1, 000, 000).
Nonlinear activations, repsect spatial structure of images, . . .
x
P(apple | x), P(desk | x), P(baseball | x), . . .
Yun (AWS) SE Challenges March 16th, 2017 25 / 38
ImageNet Large Scale Visual Recognition Challenge in 2012
1.2 million training images, 1000 categories
Krizhevsky et al (NIPS 2012) achieved 15.3% Top 5 error rate with deep
representation learning
In comparison, other teams achieved 26.2%, 26.9%, 27.1%, 29.6%
based on traditional feature engineering methods (SIFT, Fisher Vector,
. . .)
Yun (AWS) SE Challenges March 16th, 2017 26 / 38
Outline
1 머신러닝 vs. 소프트웨어 엔지니어링
2 딥러닝은 무엇인가?
3 소프트웨어 엔지니어링의 딥러닝에의 기여
Software Engineering Requirement
State-of-the-art networks have tens to hundreds of layers
Need an interface for economically expressing the computation graph
Need to exploit opportunities for parallelization
Yun (AWS) SE Challenges March 16th, 2017 28 / 38
Yun (AWS) SE Challenges March 16th, 2017 29 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
구세주
딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌
Backend는 CUDA kernel이나 MKL 이용해 C++로 작성
Frontend는 Python, R, Lua, Julia 등 다양
주요 소프트웨어들
• Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook)
• theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원)
• MXnet (now in Apache incubator, supported by AWS)
• TensorFlow (supported by Google)
• Caffe (supported by Facebook?)
• CNTK (by Microsoft)
• Keras (by Google?)
Yun (AWS) SE Challenges March 16th, 2017 30 / 38
Imperative Programs
import numpy as np
a = np.ones(10)
b = np.ones(10) * 2
c = b * a
d = c + 1
# d = [ 3. 3. 3. 3. 3. 3. 3. 3. 3. 3.]
Pros
Straightforward and flexible
Can use language native features (loop, condition, debugger, . . .)
Cons
Hard to optimize
Yun (AWS) SE Challenges March 16th, 2017 31 / 38
Imperative Programs
import numpy as np
a = np.ones(10)
b = np.ones(10) * 2
c = b * a
while True:
d = c + 1
print(d)
if d[0] > 10:
break
Pros
Straightforward and flexible
Can use language native features (loop, condition, debugger, . . .)
Cons
Hard to optimize
Yun (AWS) SE Challenges March 16th, 2017 32 / 38
Declarative Programs
A = mx.symbol.Variable('A')
B = mx.symbol.Variable('B')
C = B * A
D = C + 1
a = mx.nd.ones(10)
b = mx.nd.ones(10) * 2
executor = D.bind(ctx=mx.cpu(), args={'A':a, 'B': b})
executor.forward()
Pros
More chances for optimization
Can be made language-independent
Cons
Less flexible (ex: you cannot do while True: and if d[0] > 10: break)
Yun (AWS) SE Challenges March 16th, 2017 33 / 38
Yun (AWS) SE Challenges March 16th, 2017 34 / 38
MXNet supports mixed style
executor = neuralnetwork.bind()
args = executor.arg_dict
grads = executor.grad_dict
for i in range(3):
train_iter.reset()
for dbatch in train_iter:
args["data"][:] = dbatch.data[0]
args["softmax_label"][:] = dbatch.label[0]
executor.forward(is_train=True)
executor.backward()
for key in update_keys:
args[key] -= learning_rate * grads[key]
Yun (AWS) SE Challenges March 16th, 2017 35 / 38
MXNet Highlights
Flexibility in front-end: C++, Python, Scala, R, julia, MATLAB, JavaScript,
Go, . . .. With NNVM, can be even configured to use TensorFlow as
frontend, and Torch7 as backend.
Can be run on diverse environment: UNIX, iPhone, Android, JavaScript,
Drone, . . .
Scales very nicely
Yun (AWS) SE Challenges March 16th, 2017 36 / 38
Future Directions
딥러닝 라이브러리들이 점점 컴파일러화 되어가고 있음.
• computation graph를 분석해 해당 하드웨어에 최적화 (kernel fusion 등)
• 다양한 하드웨어를 지원해야 함 (PC, iPhone, embedded device, . . . )
• dynamic computation graph
최적화된 하드웨어들이 등장하기 시작함 (Google’s Tensor Processing Unit,
Nervana, . . . )
여전히 소프트웨어 엔지니어링이 기여할 부분이 많음
Yun (AWS) SE Challenges March 16th, 2017 37 / 38
Q & A
Thanks!
Yun (AWS) SE Challenges March 16th, 2017 38 / 38

More Related Content

What's hot

NDC 2015 비정형데이터분석 & 온라인게임운영
NDC 2015 비정형데이터분석 & 온라인게임운영NDC 2015 비정형데이터분석 & 온라인게임운영
NDC 2015 비정형데이터분석 & 온라인게임운영
Paul Jung
 
실패한 오픈소스 공헌으로 배워가기
실패한 오픈소스 공헌으로 배워가기실패한 오픈소스 공헌으로 배워가기
실패한 오픈소스 공헌으로 배워가기
Sung-Hee Kang
 
1.introduction
1.introduction1.introduction
1.introduction
Haesun Park
 
Anomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learningAnomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learning
도형 임
 
Ai 그까이거
Ai 그까이거Ai 그까이거
Ai 그까이거
도형 임
 
7.woring with text data(epoch#2)
7.woring with text data(epoch#2)7.woring with text data(epoch#2)
7.woring with text data(epoch#2)
Haesun Park
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출
정주 김
 
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
데이터분석의 길 3   “r 워크플로우 (스토리텔링)”데이터분석의 길 3   “r 워크플로우 (스토리텔링)”
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
Jaimie Kwon (권재명)
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
NAVER D2
 
Paper Reading : Learning from simulated and unsupervised images through adver...
Paper Reading : Learning from simulated and unsupervised images through adver...Paper Reading : Learning from simulated and unsupervised images through adver...
Paper Reading : Learning from simulated and unsupervised images through adver...
정훈 서
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
Evion Kim
 
Meta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural NetworksMeta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural Networks
홍배 김
 
데이터분석의 길 4: “고수는 통계학습의 달인이다”
데이터분석의 길 4:  “고수는 통계학습의 달인이다”데이터분석의 길 4:  “고수는 통계학습의 달인이다”
데이터분석의 길 4: “고수는 통계학습의 달인이다”
Jaimie Kwon (권재명)
 
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
Wonha Ryu
 

What's hot (14)

NDC 2015 비정형데이터분석 & 온라인게임운영
NDC 2015 비정형데이터분석 & 온라인게임운영NDC 2015 비정형데이터분석 & 온라인게임운영
NDC 2015 비정형데이터분석 & 온라인게임운영
 
실패한 오픈소스 공헌으로 배워가기
실패한 오픈소스 공헌으로 배워가기실패한 오픈소스 공헌으로 배워가기
실패한 오픈소스 공헌으로 배워가기
 
1.introduction
1.introduction1.introduction
1.introduction
 
Anomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learningAnomaly detection practive_using_deep_learning
Anomaly detection practive_using_deep_learning
 
Ai 그까이거
Ai 그까이거Ai 그까이거
Ai 그까이거
 
7.woring with text data(epoch#2)
7.woring with text data(epoch#2)7.woring with text data(epoch#2)
7.woring with text data(epoch#2)
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출
 
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
데이터분석의 길 3   “r 워크플로우 (스토리텔링)”데이터분석의 길 3   “r 워크플로우 (스토리텔링)”
데이터분석의 길 3 “r 워크플로우 (스토리텔링)”
 
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
 
Paper Reading : Learning from simulated and unsupervised images through adver...
Paper Reading : Learning from simulated and unsupervised images through adver...Paper Reading : Learning from simulated and unsupervised images through adver...
Paper Reading : Learning from simulated and unsupervised images through adver...
 
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
링크드인의 Big Data Recommendation Products - 어제의 데이터를 통해 내일을 예측한다
 
Meta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural NetworksMeta-Learning with Memory Augmented Neural Networks
Meta-Learning with Memory Augmented Neural Networks
 
데이터분석의 길 4: “고수는 통계학습의 달인이다”
데이터분석의 길 4:  “고수는 통계학습의 달인이다”데이터분석의 길 4:  “고수는 통계학습의 달인이다”
데이터분석의 길 4: “고수는 통계학습의 달인이다”
 
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
리소스 중심의 서든어택2 실시간 메모리 프로파일링 시스템 개발기
 

Similar to 창발 세미나 - 머신러닝과 소프트웨어 개발

PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
Haezoom Inc.
 
A Financial Company Story of Bringing Open Source and ML in
A Financial Company Story of Bringing Open Source and ML inA Financial Company Story of Bringing Open Source and ML in
A Financial Company Story of Bringing Open Source and ML in
Dataya Nolja
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
Jae Sung Park
 
AI_introduction and requirements(2024.05.12).pdf
AI_introduction and requirements(2024.05.12).pdfAI_introduction and requirements(2024.05.12).pdf
AI_introduction and requirements(2024.05.12).pdf
Lee Chanwoo
 
『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기
복연 이
 
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
Hoyeon Kim
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
Darion Kim
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
Sehyeon Nam
 
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
Amazon Web Services Korea
 
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
NAVER D2
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
Wonha Ryu
 
Things Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in MindThings Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in Mind
Dataya Nolja
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
창완 장
 
2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence 2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence
Jong MIn Yu
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기
수보 김
 
머신러닝 및 딥러닝 기초 (2020.01.07)
머신러닝 및 딥러닝 기초 (2020.01.07)머신러닝 및 딥러닝 기초 (2020.01.07)
머신러닝 및 딥러닝 기초 (2020.01.07)
KYOYOON JUNG
 
The bleeding edge of machine learning stream in 2017 - APAC ML/DS Community ...
The bleeding edge of  machine learning stream in 2017 - APAC ML/DS Community ...The bleeding edge of  machine learning stream in 2017 - APAC ML/DS Community ...
The bleeding edge of machine learning stream in 2017 - APAC ML/DS Community ...
Jeongkyu Shin
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
Sunghyouk Bae
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
Sang Don Kim
 
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
khuhacker
 

Similar to 창발 세미나 - 머신러닝과 소프트웨어 개발 (20)

PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
 
A Financial Company Story of Bringing Open Source and ML in
A Financial Company Story of Bringing Open Source and ML inA Financial Company Story of Bringing Open Source and ML in
A Financial Company Story of Bringing Open Source and ML in
 
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
[DEVIEW 2017] 14일만에 GitHub 스타 1K 받은 차트 오픈소스 개발기
 
AI_introduction and requirements(2024.05.12).pdf
AI_introduction and requirements(2024.05.12).pdfAI_introduction and requirements(2024.05.12).pdf
AI_introduction and requirements(2024.05.12).pdf
 
『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기『클라우드 시스템을 관리하는 기술』 - 맛보기
『클라우드 시스템을 관리하는 기술』 - 맛보기
 
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
 
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
재업로드주소: https://www.slideshare.net/hnki0104/gsshop-103837144
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
 
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
Apache MXNet으로 배워보는 딥러닝(Deep Learning) - 김무현 (AWS 솔루션즈아키텍트)
 
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기제 5회 D2 CAMPUS FEST O.T -  billboard.js 차트오픈소스개발기
제 5회 D2 CAMPUS FEST O.T - billboard.js 차트오픈소스개발기
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
Things Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in MindThings Data Scientists Should Keep in Mind
Things Data Scientists Should Keep in Mind
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
 
2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence 2012 3 qp_hybrid algorithm optimization with artificial intelligence
2012 3 qp_hybrid algorithm optimization with artificial intelligence
 
예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기예비 개발자를 위한 소프트웨어 세상 이야기
예비 개발자를 위한 소프트웨어 세상 이야기
 
머신러닝 및 딥러닝 기초 (2020.01.07)
머신러닝 및 딥러닝 기초 (2020.01.07)머신러닝 및 딥러닝 기초 (2020.01.07)
머신러닝 및 딥러닝 기초 (2020.01.07)
 
The bleeding edge of machine learning stream in 2017 - APAC ML/DS Community ...
The bleeding edge of  machine learning stream in 2017 - APAC ML/DS Community ...The bleeding edge of  machine learning stream in 2017 - APAC ML/DS Community ...
The bleeding edge of machine learning stream in 2017 - APAC ML/DS Community ...
 
좋은 개발자 되기
좋은 개발자 되기좋은 개발자 되기
좋은 개발자 되기
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
 
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
2015년 제2회 동아리 해커 세미나 - 게임개발과 게임에서의 빅데이터 (9기 박경재)
 

창발 세미나 - 머신러닝과 소프트웨어 개발

  • 1. Software Engineering Challenges and Innovations with Machine Learning Hyokun “Yun” (윤효근) AWS Deep Learning March 16th, 2017 Yun (AWS) SE Challenges March 16th, 2017 1 / 38
  • 2. Outline 1 머신러닝 vs. 소프트웨어 엔지니어링 2 딥러닝은 무엇인가? 3 소프트웨어 엔지니어링의 딥러닝에의 기여
  • 3. 머신러닝은 무엇인가? Yun (AWS) SE Challenges March 16th, 2017 3 / 38
  • 4. 머신러닝은 무엇인가? 머신러닝은 흑마법입니다. Yun (AWS) SE Challenges March 16th, 2017 3 / 38
  • 5. 머신러닝은 무엇인가? 머신러닝은 흑마법입니다. 소프트웨어 엔지니어링/프로그래밍은 백마법입니다. Yun (AWS) SE Challenges March 16th, 2017 3 / 38
  • 6. 머신러닝은 무엇인가? 머신러닝은 흑마법입니다. 소프트웨어 엔지니어링/프로그래밍은 백마법입니다. 오늘은 이 두 마법 방법론이 어떻게 충돌하고 어떻게 서로를 돕는지에 대해서 얘기해보고자 합니다. Yun (AWS) SE Challenges March 16th, 2017 3 / 38
  • 7. 머신러닝은 무엇인가? 머신러닝은 흑마법입니다. 소프트웨어 엔지니어링/프로그래밍은 백마법입니다. 오늘은 이 두 마법 방법론이 어떻게 충돌하고 어떻게 서로를 돕는지에 대해서 얘기해보고자 합니다. 다분히 뭉뚱그려서 얘기하는 것을 양해해 주세요! Yun (AWS) SE Challenges March 16th, 2017 3 / 38
  • 8. 목표 우리의 목표는 자동화된 시스템을 만드는 것입니다. Yun (AWS) SE Challenges March 16th, 2017 4 / 38
  • 9. 목표 우리의 목표는 자동화된 시스템을 만드는 것입니다. 주어진 입력 x에 대해 우리가 원하는 결과 f(x)를 컴퓨터가 알아서 계산해주길 원합니다. x → → f(x) Yun (AWS) SE Challenges March 16th, 2017 4 / 38
  • 10. 두가지 방법론 프로그래밍 어떤 입력들이 들어올지 생각한다 모든 입력 x에 대해 f(x)를 계산하는 알고리즘을 생각한다 알고리즘을 구현한다 Since ENIAC (1946) Yun (AWS) SE Challenges March 16th, 2017 5 / 38
  • 11. 두가지 방법론 프로그래밍 어떤 입력들이 들어올지 생각한다 모든 입력 x에 대해 f(x)를 계산하는 알고리즘을 생각한다 알고리즘을 구현한다 Since ENIAC (1946) 머신러닝 머신러닝 알고리즘을 고른다 알고리즘에게 예제들을 보여준다 (x1, f(x1)), (x2, f(x2)), . . . 알고리즘에게 일을 시킨다 Since Perceptron (1957) Yun (AWS) SE Challenges March 16th, 2017 5 / 38
  • 12. 프로그래밍이 좋을 때 수학적으로 잘 정의된 문제를 풀 때는 프로그래밍이 좋습니다. def bubblesort(input_list): for i in range(len(input_list)): for j in range(len(input_list) - 1, i, -1): if input_list[j] < input_list[j - 1]: swap(input_list, j, j - 1) 모든 입력에 대해 분석 가능한 시간 내에 정확한 답을 반환한다 (randomized algorithm들도 있긴 하지만...) Yun (AWS) SE Challenges March 16th, 2017 6 / 38
  • 13. 프로그래밍이 좋을 때 수학적으로 잘 정의된 문제를 풀 때는 프로그래밍이 좋습니다. def bubblesort(input_list): for i in range(len(input_list)): for j in range(len(input_list) - 1, i, -1): if input_list[j] < input_list[j - 1]: swap(input_list, j, j - 1) 모든 입력에 대해 분석 가능한 시간 내에 정확한 답을 반환한다 (randomized algorithm들도 있긴 하지만...) Yun (AWS) SE Challenges March 16th, 2017 6 / 38
  • 14. 프로그래밍이 좋을 때 수학적으로 잘 정의된 문제를 풀 때는 프로그래밍이 좋습니다. def bubblesort(input_list): for i in range(len(input_list)): for j in range(len(input_list) - 1, i, -1): if input_list[j] < input_list[j - 1]: swap(input_list, j, j - 1) 모든 입력에 대해 분석 가능한 시간 내에 정확한 답을 반환한다 (randomized algorithm들도 있긴 하지만...) Yun (AWS) SE Challenges March 16th, 2017 6 / 38
  • 15. 프로그래밍이 좋을 때 수학적으로 잘 정의된 문제를 풀 때는 프로그래밍이 좋습니다. def bubblesort(input_list): for i in range(len(input_list)): for j in range(len(input_list) - 1, i, -1): if input_list[j] < input_list[j - 1]: swap(input_list, j, j - 1) 모든 입력에 대해 분석 가능한 시간 내에 정확한 답을 반환한다 (randomized algorithm들도 있긴 하지만...) Yun (AWS) SE Challenges March 16th, 2017 6 / 38
  • 16. 머신러닝이 좋을 때 그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다. 예를 들면: 다음 중 방울이 아닌 이미지를 찾아보시오 방울이 뭔데요? 배경은 무시해야 하나요? 배경이 뭔데요? . . . Yun (AWS) SE Challenges March 16th, 2017 7 / 38
  • 17. 머신러닝이 좋을 때 그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다. 예를 들면: 다음 중 방울이 아닌 이미지를 찾아보시오 방울이 뭔데요? 배경은 무시해야 하나요? 배경이 뭔데요? . . . Yun (AWS) SE Challenges March 16th, 2017 7 / 38
  • 18. 머신러닝이 좋을 때 그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다. 예를 들면: 다음 중 방울이 아닌 이미지를 찾아보시오 방울이 뭔데요? 배경은 무시해야 하나요? 배경이 뭔데요? . . . Yun (AWS) SE Challenges March 16th, 2017 7 / 38
  • 19. 머신러닝이 좋을 때 그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다. 예를 들면: 다음 중 방울이 아닌 이미지를 찾아보시오 방울이 뭔데요? 배경은 무시해야 하나요? 배경이 뭔데요? . . . Yun (AWS) SE Challenges March 16th, 2017 7 / 38
  • 20. 머신러닝이 좋을 때 그렇지만 수학적으로 잘 정의되지 않는 문제들도 풀어야 할 때가 있습니다. 예를 들면: 다음 중 방울이 아닌 이미지를 찾아보시오 방울이 뭔데요? 배경은 무시해야 하나요? 배경이 뭔데요? . . . Yun (AWS) SE Challenges March 16th, 2017 7 / 38
  • 21. 머신러닝이 좋을 때 하지만 예제들을 모으는 것은 어렵지 않은 경우들이 있습니다. 이런 경우에 머신러닝이 유용합니다. Yun (AWS) SE Challenges March 16th, 2017 8 / 38
  • 22. 머신러닝이 좋을 때 사람이 잘 하는 일들 • 이미지에서 물체를 인식하기 • 한 자연어를 다른 자연어로 번역하기 • 말을 알아듣고 글로 옮기기 • 바둑 두기...? • . . . 특별히 사람이 잘 하는 것은 아닌 일들 • 웹사이트 광고를 클릭할지 예측하기 • 내일의 주식 가격을 예측하기 • 결제 시스템 이용자가 사기꾼인지 판단하기 • . . . Yun (AWS) SE Challenges March 16th, 2017 9 / 38
  • 23. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 24. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 25. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 26. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 27. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 28. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 29. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 30. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 31. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 32. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 33. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 34. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 35. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 36. 머신러닝은 소프트웨어 엔지니어링의 적! 머신러닝 알고리즘은 다른 소프트웨어 모듈들에게 약한 계약(weak contract) 만을 제공함 • 학습 데이터와 아주 다른 데이터를 가져오면 성능이 형편없을 수 있음 • ’아주 다른’게 무엇인지도 명확하게 정의되지 않음 • 시스템이 커지고 머신러닝 component가 늘어날수록 복잡도가 급증 CACE: Change Anything Changes Everything (Sculley et al, 2014) • 입력이 조금이라도 달라지면 성능을 보장할 수 없으니 upstream data flow 전체를 주시해야 함. • 예1: 이미지를 32x32로 rescale하는 알고리즘을 A에서 B로 바꾸면? • 예2: 뉴스 사이트에서 사용자가 최근 일주일동안 읽은 뉴스들의 단어 카운트를 이용해 광고를 보여주는데, 단어 카운트를 계산하는 방법이 바뀌었다면? 단어 카운트 계산을 publish하는 팀이 우리가 그 데이터를 쓰고 있는지 몰랐다면? 그 외에도 여러가지로 소프트웨어 엔지니어링을 골치아프게 만듬 • 모든 시스템을 하나로 뭉치길 원함 예: dialog system: speech recognition → intent classification → understanding → response • GPU 같은 특수한 리소스를 사용함, CPU 쓸 때도 꼭 native library 사용 • 비슷한 기능들이 다양한 라이브러리에 흩어져 구현되어 있음, 통합이 안 됨 • 스크립트 언어를 선호하고 자꾸 쓰다 버릴 코드를 짬 Yun (AWS) SE Challenges March 16th, 2017 10 / 38
  • 37. 서로를 이해하려는 노력이 필요 Two big challenges in machine learning (by Leon Bottou) Machine Learning: The High-Interest Credit Card of Technical Debt (by Sculley et al, 2014) Yun (AWS) SE Challenges March 16th, 2017 11 / 38
  • 38. Outline 1 머신러닝 vs. 소프트웨어 엔지니어링 2 딥러닝은 무엇인가? 3 소프트웨어 엔지니어링의 딥러닝에의 기여
  • 39. 왜 딥 러닝(deep learning)이 화두인가? 최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론 Yun (AWS) SE Challenges March 16th, 2017 13 / 38
  • 40. 왜 딥 러닝(deep learning)이 화두인가? 최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론 새로운 망치! 많은 못을 찾았고 앞으로도 더 찾을 것 Yun (AWS) SE Challenges March 16th, 2017 13 / 38
  • 41. 왜 딥 러닝(deep learning)이 화두인가? 최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론 새로운 망치! 많은 못을 찾았고 앞으로도 더 찾을 것 • 이미지 처리 (물체 인식, segmentation, generation, . . . ) https://srconstantin.wordpress.com/2017/01/28/performance-trends-in-ai/ Yun (AWS) SE Challenges March 16th, 2017 13 / 38
  • 42. 왜 딥 러닝(deep learning)이 화두인가? 최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론 새로운 망치! 많은 못을 찾았고 앞으로도 더 찾을 것 • 이미지 처리 (물체 인식, segmentation, generation, . . . ) https://srconstantin.wordpress.com/2017/01/28/performance-trends-in-ai/ • 음성 (speech recognition, natural language understanding, speech synthesis, . . . ) Yun (AWS) SE Challenges March 16th, 2017 13 / 38
  • 43. 왜 딥 러닝(deep learning)이 화두인가? 최근 5∼6년 사이에 빠른 속도로 발전하고 확산되고 있는 머신러닝 방법론 새로운 망치! 많은 못을 찾았고 앞으로도 더 찾을 것 • 이미지 처리 (물체 인식, segmentation, generation, . . . ) https://srconstantin.wordpress.com/2017/01/28/performance-trends-in-ai/ • 음성 (speech recognition, natural language understanding, speech synthesis, . . . ) • 번역, 게임 인공지능 Yun (AWS) SE Challenges March 16th, 2017 13 / 38
  • 44. Why Deep Learning, from Systems Perspective Refer to Alex’s Quora answer: (link) Today’s computing environment: Disks are getting bigger. We can record pretty much everything we want. Memory is comparably scarce. (you can still buy computers with 2GB like it’s the 90s) CPUs aren’t scaling as much as they used to but there’s a mass market of computer gamers pushing GPUs forward (for $500 you can now buy a 5TFLOPS card) (Yun: Network bandwidth also relatively low, <= 20Gbps) Therefore: Do computationally very expensive stuff which aligns well with GPUs within in a machine. Yun (AWS) SE Challenges March 16th, 2017 14 / 38
  • 45. Running Example How shall we build a system that tells apples from oranges? Yun (AWS) SE Challenges March 16th, 2017 15 / 38
  • 46. Supervised learning Examples of apples and oranges will be provided for us to train an algorithm. Training Data: ( , apple), ( , apple), ( , orange), ( , apple), ( , orange), . . . Test: given , predict that it is an apple image. Yun (AWS) SE Challenges March 16th, 2017 16 / 38
  • 47. Image Data Each image is naturally described by three matrices representing intensity of RGB colors (0∼255). For example, if we undersampled the above image as 8 × 8, each color channel would look like: Yun (AWS) SE Challenges March 16th, 2017 17 / 38
  • 48. Feature Engineering Maybe apples are more reddish and oranges are relatively greenish! f1(x): average R intensity of image x f2(x): average G intensity of image x + + + + + + + + + + − − − − − − − − − − 120 140 160 180 200 220 406080100120140160 mean red intensity meangreenintensity o − apples oranges Well that doesn’t seem very good. . . Yun (AWS) SE Challenges March 16th, 2017 18 / 38
  • 49. Feature Engineering OK, how about this? f1(x): average G intensity of image x f2(x): average B intensity of image x + + + + + + + + + + − − − − − − − − − − 40 60 80 100 120 140 160 050100150 mean green intensity meanblueintensity + − apples oranges Yes!!! Yun (AWS) SE Challenges March 16th, 2017 19 / 38
  • 50. Logistic Regression P(apple | x) = σ(w0 + w1 · f1(x) + w2 · f2(x)) where σ(t) = 1 1 + exp(−t) . 0.0 0.2 0.4 0.6 0.8 1.0 prob + + + + + + + + + + − − − − − − − − − − − − − − − − −− − 40 60 80 100 120 140 160 0 20 40 60 80 100 120 140 f1(x) f2(x) −4 −2 0 2 4 0.00.20.40.60.81.0 t σ(t) Find w0, w1 and w2 that best fits data. w0 = −7.7662 w1 = 0.1696 w2 = −0.1452 Yun (AWS) SE Challenges March 16th, 2017 20 / 38
  • 51. Feature Engineering Great job, Yun! Why don’t we add bananas? Yun (AWS) SE Challenges March 16th, 2017 21 / 38
  • 52. Feature Engineering It does not seem to work anymore. . . + + + + + + + + + + − − − − − − − − − − o o o o o o o oo o 50 100 150 200 050100150 mean green intensity meanblueintensity + − o apples oranges bananas Yun (AWS) SE Challenges March 16th, 2017 22 / 38
  • 53. Rethinking Our Approach x f1(x)f2(x) P(apple | x) f1(x) = w (1) 0 + 128×128×3 j=1 w (1) j xj and f2(x) = w (2) 0 + 128×128×3 j=1 w (2) j xj, P(apple | x) = σ(w0 + w1 · f1(x) + w2 · f2(x)). Yun (AWS) SE Challenges March 16th, 2017 23 / 38
  • 54. Representation Learning Previously, we only trained how to relate f1(x) and f2(x) to P(apple | x). x P(apple | x) f1(x)f2(x) f1(x) = w (1) 0 + 128×128×3 j=1 w (1) j xj and f2(x) = w (2) 0 + 128×128×3 j=1 w (2) j xj, P(apple | x) = σ(w0 + w1 · f1(x) + w2 · f2(x)). Yun (AWS) SE Challenges March 16th, 2017 24 / 38
  • 55. Representation Learning Previously, we only trained how to relate f1(x) and f2(x) to P(apple | x). Why don’t we learn f1(x) and f2(x) from data?? x P(apple | x) f1(x)f2(x) f1(x) = w (1) 0 + 128×128×3 j=1 w (1) j xj and f2(x) = w (2) 0 + 128×128×3 j=1 w (2) j xj, P(apple | x) = σ(w0 + w1 · f1(x) + w2 · f2(x)). Yun (AWS) SE Challenges March 16th, 2017 24 / 38
  • 56. Reducing the gap to between the toy example and the state-of-the-art More than two features x P(apple | x) Yun (AWS) SE Challenges March 16th, 2017 25 / 38
  • 57. Reducing the gap to between the toy example and the state-of-the-art More than two features x P(apple | x) Yun (AWS) SE Challenges March 16th, 2017 25 / 38
  • 58. Reducing the gap to between the toy example and the state-of-the-art More than two features More layers, like hundreds of them (deep learning!) x P(apple | x) Yun (AWS) SE Challenges March 16th, 2017 25 / 38
  • 59. Reducing the gap to between the toy example and the state-of-the-art More than two features More layers, like hundreds of them (deep learning!) More than two categories (∼ 1, 000), large amount of data (∼ 1, 000, 000). x P(apple | x), P(desk | x), P(baseball | x), . . . Yun (AWS) SE Challenges March 16th, 2017 25 / 38
  • 60. Reducing the gap to between the toy example and the state-of-the-art More than two features More layers, like hundreds of them (deep learning!) More than two categories (∼ 1, 000), large amount of data (∼ 1, 000, 000). Nonlinear activations, repsect spatial structure of images, . . . x P(apple | x), P(desk | x), P(baseball | x), . . . Yun (AWS) SE Challenges March 16th, 2017 25 / 38
  • 61. ImageNet Large Scale Visual Recognition Challenge in 2012 1.2 million training images, 1000 categories Krizhevsky et al (NIPS 2012) achieved 15.3% Top 5 error rate with deep representation learning In comparison, other teams achieved 26.2%, 26.9%, 27.1%, 29.6% based on traditional feature engineering methods (SIFT, Fisher Vector, . . .) Yun (AWS) SE Challenges March 16th, 2017 26 / 38
  • 62. Outline 1 머신러닝 vs. 소프트웨어 엔지니어링 2 딥러닝은 무엇인가? 3 소프트웨어 엔지니어링의 딥러닝에의 기여
  • 63. Software Engineering Requirement State-of-the-art networks have tens to hundreds of layers Need an interface for economically expressing the computation graph Need to exploit opportunities for parallelization Yun (AWS) SE Challenges March 16th, 2017 28 / 38
  • 64. Yun (AWS) SE Challenges March 16th, 2017 29 / 38
  • 65. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 66. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 67. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 68. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 69. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 70. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 71. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 72. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 73. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 74. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 75. 구세주 딥러닝을 쉽게 만들어주는 소프트웨어들이 딥러닝의 대중화에 엄청난 공헌 Backend는 CUDA kernel이나 MKL 이용해 C++로 작성 Frontend는 Python, R, Lua, Julia 등 다양 주요 소프트웨어들 • Torch/PyTorch (유서 깊은 머신러닝 라이브러리, now supported by Facebook) • theano (from U of Montreal, 2010년부터 이미 강력한 GPU 지원) • MXnet (now in Apache incubator, supported by AWS) • TensorFlow (supported by Google) • Caffe (supported by Facebook?) • CNTK (by Microsoft) • Keras (by Google?) Yun (AWS) SE Challenges March 16th, 2017 30 / 38
  • 76. Imperative Programs import numpy as np a = np.ones(10) b = np.ones(10) * 2 c = b * a d = c + 1 # d = [ 3. 3. 3. 3. 3. 3. 3. 3. 3. 3.] Pros Straightforward and flexible Can use language native features (loop, condition, debugger, . . .) Cons Hard to optimize Yun (AWS) SE Challenges March 16th, 2017 31 / 38
  • 77. Imperative Programs import numpy as np a = np.ones(10) b = np.ones(10) * 2 c = b * a while True: d = c + 1 print(d) if d[0] > 10: break Pros Straightforward and flexible Can use language native features (loop, condition, debugger, . . .) Cons Hard to optimize Yun (AWS) SE Challenges March 16th, 2017 32 / 38
  • 78. Declarative Programs A = mx.symbol.Variable('A') B = mx.symbol.Variable('B') C = B * A D = C + 1 a = mx.nd.ones(10) b = mx.nd.ones(10) * 2 executor = D.bind(ctx=mx.cpu(), args={'A':a, 'B': b}) executor.forward() Pros More chances for optimization Can be made language-independent Cons Less flexible (ex: you cannot do while True: and if d[0] > 10: break) Yun (AWS) SE Challenges March 16th, 2017 33 / 38
  • 79. Yun (AWS) SE Challenges March 16th, 2017 34 / 38
  • 80. MXNet supports mixed style executor = neuralnetwork.bind() args = executor.arg_dict grads = executor.grad_dict for i in range(3): train_iter.reset() for dbatch in train_iter: args["data"][:] = dbatch.data[0] args["softmax_label"][:] = dbatch.label[0] executor.forward(is_train=True) executor.backward() for key in update_keys: args[key] -= learning_rate * grads[key] Yun (AWS) SE Challenges March 16th, 2017 35 / 38
  • 81. MXNet Highlights Flexibility in front-end: C++, Python, Scala, R, julia, MATLAB, JavaScript, Go, . . .. With NNVM, can be even configured to use TensorFlow as frontend, and Torch7 as backend. Can be run on diverse environment: UNIX, iPhone, Android, JavaScript, Drone, . . . Scales very nicely Yun (AWS) SE Challenges March 16th, 2017 36 / 38
  • 82. Future Directions 딥러닝 라이브러리들이 점점 컴파일러화 되어가고 있음. • computation graph를 분석해 해당 하드웨어에 최적화 (kernel fusion 등) • 다양한 하드웨어를 지원해야 함 (PC, iPhone, embedded device, . . . ) • dynamic computation graph 최적화된 하드웨어들이 등장하기 시작함 (Google’s Tensor Processing Unit, Nervana, . . . ) 여전히 소프트웨어 엔지니어링이 기여할 부분이 많음 Yun (AWS) SE Challenges March 16th, 2017 37 / 38
  • 83. Q & A Thanks! Yun (AWS) SE Challenges March 16th, 2017 38 / 38