SlideShare a Scribd company logo
1 of 111
누구나 TensorFlow!
J. Kang Ph.D.
누구나 TensorFlow
- Module1 : 준비하기
Jaewook Kang, Ph.D.
jwkang@soundl.ly
Sep. 2017
1
© 2017
Jaewook Kang
All Rights Reserved
누구나 TensorFlow!
J. Kang Ph.D.
 GIST EEC Ph.D. (2015)
 신호처리 과학자, 삽질러
 좋아하는 것:
 통계적 신호처리 / 무선통신 신호처리
 임베디드 오디오 DSP C/C++라이브러리 구현
 머신러닝 기반 오디오 신호처리 알고리즘
 공부해서 남주기
2
 대표논문:
Jaewook Kang, et al., "Bayesian Hypothesis Test using Nonparametric Belief Propagation for
Noisy Sparse Recovery," IEEE Trans. on Signal process., Feb. 2015
Jaewook Kang et al., "Fast Signal Separation of 2D Sparse Mixture via Approximate Message-
Passing," IEEE Signal Processing Letters, Nov. 2015
Jaewook Kang (강재욱)
소 개
누구나 TensorFlow!
J. Kang Ph.D.
학계와 산업계의 거리
• 학계는 19세기 시스템
• 학회와 논문
• 리뷰프로세스와 퍼브리쉬
• CS 박사학위기간 5년 이상
• 산업계는 21세기 시스템
• 온라인 커뮤니티 & 컨트리뷰터
• 오픈소스 + 개방형 플랫폼
• 블로그
3
누구나 TensorFlow!
J. Kang Ph.D.
학계와 산업계의 거리
• 무엇이 두사이의 연결고리가 될수 있는가?
• 학계
• 새로운 발견은 대부분 서양학계에서 나온다
• 무선통신, 딥러닝
• 한우물 정신
• 실패와 도전
• 산업계
• 빠른 사이클
• 머니 머니 머니: 현실세계에서 효용 == 머니
• 최대한 많은 상호작용
4
누구나 TensorFlow!
J. Kang Ph.D.
현대과학의 연구
• 나는 연결고리를 찾아서 스타트업이라는 정글로
뛰어들었다.
• 논문 peer 리뷰 보다 빠른 고객 피드백
• 논문 인용 수 보다 매출
• 논문 보다 블로그 (블로그 보다 동영상)
• 특허 보다 one more like!
5
누구나 TensorFlow!
J. Kang Ph.D.
현대과학의 연구
• 여러분은? 어떤 연결고리를 찾으실 건가요?
6
누구나 TensorFlow!
J. Kang Ph.D.
누구나 TensorFlow!
J. Kang Ph.D.
• 2년전 무엇을 느꼈는가?
• 2년이 지난 이후 무엇이 벌어지고 있는가?
• 무엇을 준비해야하는가?
• 수학
• 코딩
• 머신러닝
8
누구나 TensorFlow!
J. Kang Ph.D.
• 2년전 무엇을 느꼈는가?
• 2년이 지난 이후 무엇이 벌어지고 있는가?
• 무엇을 준비해야하는가?
• 수학: 세상을 설명하는 가장 보편적인 진리
• 코딩: 디지털 문맹이 되지 말자
• 머신러닝: 나 대신 일해주는 시스템
9
누구나 TensorFlow!
J. Kang Ph.D.
누구나 TensorFlow의 목표
 강의 철학1: 누구나 “머신러닝” 할 수 있다!!
 1) 머신러닝의 기본개념을 수식 머리로 이해한다.
 2) 머신러닝 기본기법을 TensorFlow로 구현할 수 있다.
 3) 수집한 데이터를 파이썬을 통해서 다룰 수 있다.
 4) 내문제에 머신러닝 적용할 수 있다.
 5) 스스로 머신러닝을 더 연구해 보고싶다.
10
누구나 TensorFlow!
J. Kang Ph.D.
누구나 TensorFlow의 목표
 강의 철학2: 당신은 이 강의에서 모든 것을 얻어갈 수 없다!
 1) 머신러닝의 기본개념을 수식 머리로 이해한다.
 2) 머신러닝 기본기법을 TensorFlow로 구현할 수 있다.
 3) 수집한 데이터를 파이썬을 통해서 다룰 수 있다.
 4) 내문제에 머신러닝 적용할 수 있다.
 5) 스스로 머신러닝을 더 연구해 보고싶다.
11
누구나 TensorFlow!
J. Kang Ph.D.
누구나 TensorFlow의 목표
 강의 대상: 머신러닝을 시작하는 모든 사람!!
 1) 머신러닝에 관심을 가지려고 하는 대학교 3학년
 2) 머신러닝을 배워서 취업면접에서 한마디라도 더하고 싶은 취준생
 3) 교수님이 머신러닝을 이용해보라고 하는데 막막한 대학원생
 4) 최소한으로 공부해서 머신러닝을 적용해 보고 싶은 주니어 개발자!
12
누구나 TensorFlow!
J. Kang Ph.D.
강의 일정
13
일 정 목표
시
간
세부 내 용
Module
1
Python 준비하기 4
- python / anaconda /pyCharm 설치확인
- LAB0: python 개발환경 설치
- python, numpy / pandas 기본
- LAB1: python 예제 실습
머신러닝 가족에게 설명하기 4
- 머신러닝이란?
- 왜 머신러닝인가?
- 최근에 머신러닝이 각광받는 이유
- 머신러닝의 종류
- 머신러닝의 trade-off
Module
2
꼭 알아야할 수리 개념 2
- 확률이론 기본
- 조건부 확률 / 베이지안 룰
- 선형대수 기본
TensorFlow 준비하기 3
- 왜 TensorFlow인가? + TensorFlow 설치
- LAB2: Helloworld in TensorFlow
- TensorFlow 기본 요소
- LAB3: TensorFlow 기본예제 line-fitting
- ML training in Tensorflow
선형 예측 모델 만들기
Linear Regression
3
- Linear Basis function model
- Maximum likelihood and least square
- LAB4: TensorFlow curve-fitting
누구나 TensorFlow!
J. Kang Ph.D.
강의 일정
14
일 정 목표
시
간
세부 내 용
Module
3
직선으로 데이터 구분하기
Logistic classification
- Introduction to Linear Classification
- Naïve Bayes (NB)
- Linear Discriminent Analysis (LDA)
- Logistic Regression (LR)
- NB vs LDA vs LR
- LAB5: Linear Classication in TensorFlow
Module
4
딥러닝의 선조
뉴럴 네트워크
4
- 뉴런을 수학으로 표현하기
- Feed-Forward Neural Networks
- Linear 뉴런의 한계와 Activation 함수
- Gradient descent Revisit
- Backpropagation algorithm
- LAB6: Two-layer neural net with Backpropagation in
TensorFlow
누구나 TensorFlow!
J. Kang Ph.D.
강의 일정
15
일 정 목표
시
간
세부 내 용
Module
5
딥러닝으로
- Neural Network 의 역사 (~1990s)
- 딥러닝 이전 인공신경망의 한계
- 딥러닝의 열쇠 (2000s)
- Modern deep Neural Networks (2010s~)
- Convolutional Neural Net
- LAB7: CNN in Tensorflow
- Recurrent Neural Net
- LAB8: RNN in Tensorflow
- Generative Adversary Net
- LAB9: GAN in Tensorflow
누구나 TensorFlow!
J. Kang Ph.D.
GitHub link
GitHub link (all public)
– https://github.com/jwkanggist/EveryBodyTensorFlow
16
누구나 TensorFlow!
J. Kang Ph.D.
1. Python 준비하기
1. python/ anaconda /pyCharm 설치
2. LAB0: python 개발 환경 구축
3. python, numpy / pandas.DataFrame기본 실습
4.LAB1: python 실습 : 계단 오르기 문제
연구자들이여 MATLAB에서 벗어나라!!
17
누구나 TensorFlow!
J. Kang Ph.D.
Reference : Scientific computing in python
18
Python for
Data Analysis
1st Edition, 2013 O’Reilly
Wes McKinney
누구나 TensorFlow!
J. Kang Ph.D.
Why Python for Scientific Computing ?
 높은 생산성 & 개방성!
 Script language + Concise Grammar  Easy to learn and produce
 License-free +extensive open libraries: numpy, scipy, pandas, tensorflow…
19
helloWorld.java helloWorld.py
public class Main
{
public static void main(String[] args){
System.out.println("hello world");
}
}
print ‘hello world’
누구나 TensorFlow!
J. Kang Ph.D.
Why Python for Scientific Computing ?
 높은 생산성 & 개방성!
 Script language + Concise Grammar  Easy to learn and produce
 License-free +extensive open libraries: numpy, scipy, pandas, tensorflow…
 호환성 & 통합성
 Very good compatibility to other languages: cython, jython,…
 For further your interest, visit this link.
20
MATLAB Python
- MathWork (1984)
- 공학시뮬레이션
- 기본엔진 + 툴박스
- 행렬 계산효율성 매우좋음
- 폐쇄적
- 제한적호환성
- 유료!!
- 파이썬 소프트웨어 재단 (1991)
- 범용성 / 간결한 문법/ 가독성
- 방대한 3rd party 라이브러리
- 개방적 + 호환성 + 이식성
good
- 모든게 무료!!
누구나 TensorFlow!
J. Kang Ph.D.
Python설치
 우분투/ OSX: 기본적으로 설치되어 있음
– 이것을 “system 파이썬”이라고 가급적 다루지 않는 것이 좋음
– 파이썬 가상 환경을 구성하여 개발해야함
– pyenv + virtualenv : 파이썬 버전별 설치 / 패키지 관리
21
[이미지출처] https://www.extramile.io/blog/how-to-setup-multiple-python-versions-with-pyenv/
누구나 TensorFlow!
J. Kang Ph.D.
Python설치
 우분투/ OSX: 기본적으로 설치되어 있음
– 이것을 “system 파이썬”이라고 가급적 다루지 않는 것이 좋음
– 파이썬 가상 환경을 구성하여 개발해야함
– pyenv + virtualenv : 파이썬 버전별 설치 / 패키지 관리
22
[이미지 출처] http://qiita.com/hedgehoCrow/items/0733c63c690450b14dcf
누구나 TensorFlow!
J. Kang Ph.D.
Python설치
 우분투/ OSX: 기본적으로 설치되어 있음
– 이것을 “system 파이썬”이라고 가급적 다루지 않는 것이 좋음
– 파이썬 가상 환경을 구성하여 개발해야함
– pyenv + virtualenv : 파이썬 버전별 설치 / 패키지 관리
– autoenv : 폴터별 가상환경 구축
 Win10: 운영체제에 맞춰서 인스톨러를 다운받아서 설치
• https://www.python.org/downloads/windows/
• Win10에서는 python 3.5 이상만 Tensorflow와 호환됨
• 관리자 권한으로 실행!
23
누구나 TensorFlow!
J. Kang Ph.D.
pyenv 환경 설치 (OSX)
 To Enable to install various versions of the pythons
 To Resolve “version dependency” of python
24
OSX: shell commands
# step Xcode 최신버전 설치
# step II brew로 pyenv설치
$ brew update
$ brew install pyenv
$ brew install pyenv-virtualenv
# pyenv 환경변수 설정
$ echo ‘“export PATH=”$~/.pyenv/shims:$PATH”’ >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ echo 'eval "$(pyenv virtualenv-init -)">> ~/.bash_profile
누구나 TensorFlow!
J. Kang Ph.D.
pyenv 환경 설치 (Ubuntu)
 다양한 파이썬 버전을 설치하고 사용할 수 있다.
 파이썬 버전에 대한 의존성을 해결
25
Ubuntu 16.04: shell commands
# 필요 패키지 사전 설치
$sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev
libsqlite3-dev wget curl llvm
#pyenv 소스 다운받기 위해서 git 인스톨
$sudo apt-get install git
#pyenv다운 받아서 인스톨
$curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer |
bash
#환경 변수에 pyenv 추가
$ vim ~/.bashrc
#--------------------------------------------------------
#아래내용추가
#-------------------------------------------------------
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)
누구나 TensorFlow!
J. Kang Ph.D.
pyenv 환경 설치 (win10)
 Pyenv officially do not support windows OS.
26
누구나 TensorFlow!
J. Kang Ph.D.
Pyenv-virtualenv 사용 (ubuntu/OSX only)
 Python-Env is implemented by pip-packages
– 패키지는 pip에 의해서 관리된다. / 패키지는 버전을 가진다.
– 패키지 호환성이 버전에 의해서 결정된다.
– 안정적 개발을 위해서 프로젝트 / end-타켓 별로 다른 개발환경이
필요하다
 Use of Pyenv-vertualenv
– 하나의 local-PC에 다양한 파이썬 환경을 구축하고 사용가능
– pip패키지들에 대한 의존성을 해결
– 같은 버전의 파이썬을 다른 종류의 패키지 구성으로 사용가능
27
누구나 TensorFlow!
J. Kang Ph.D.
Pyenv-virtualenv 사용 (ubuntu/OSX only)
 Pyenv : 사용 파이썬 버전을 구분
 Pyenv-virtualenv: 파이썬 버전 + 설치된 pip패키지를 구분
28
Purpose Shell commands
Check installable version list $ pyenv install –list
Install a specific python version $ pyenv install [ python version name]
Check installed python version in your local $ pyenv versions
Switch to a python version you want to use $ pyenv shell [installed version name]
Purpose Shell commands
Install a specific python version $ pyenv eirtualenv [python version] [user-specified
virtualenv name]
Ex)$ pyenv virtualenv 2.7.12 tensorflowenv
Check your virtualenv in your local $ pyenv versions
Activate virtualenv $ source activate [user-specified virtualenv name]
Deactivate virtualenv $source deactivate [user-specified virtualenv name]
누구나 TensorFlow!
J. Kang Ph.D.
- Interpreter
- Programming language
- Standard library
- Efficient N-dimensional array data structure
- Fast / flexible matrix&vector computing
- Very good compatibility to C/C++ /Fortran
- Basic pip packages for python scientific computing
- Packages for machine learning extension
Python Scientific Computing Ecosystem
29
누구나 TensorFlow!
J. Kang Ph.D.
Python Scientific Computing Ecosystem
30
Package
name
Description
numpy Based N-dimensional array package
scipy Fundamental library for scientific computing
Ipython Enhanced python interactive console (like MATLAB command
window)
matplotlib Comprehensive 2D plotting
scikit-learn Providing library of off-the-shelf machine learning algorithms
(higher-level)
tensorflow Providing library of low-level machine learning algorithm
Pandas Data analysis framework: Easy data manipulation / importing
/exporting
누구나 TensorFlow!
J. Kang Ph.D.
Python Scientific Computing Ecosystem
31
모든게 다 귀찮다면?
누구나 TensorFlow!
J. Kang Ph.D.
Python Scientific Computing Ecosystem
32
모든게 다 귀찮다면?  Anaconda!
– 뱀이야기 인가요 ?
VS ?
누구나 TensorFlow!
J. Kang Ph.D.
Python Scientific Computing Ecosystem
33
Platform name Description
Python Interpreter + standard library
Anaconda Interpreter + standard libraries +Most of the scientific
computing libraries
모든게 다 귀찮다면?  Anaconda!
– 아니요 -_-;;
– Python + 관련 패키지 통합 distribution !!
– For window users:Anaconda3 4.4 with python 3.6설치
• https://www.anaconda.com/download/#windows
<
누구나 TensorFlow!
J. Kang Ph.D.
PyCharm IDE 설치
JetBrain에서 제공하는 파이썬 개발툴 (IDE)
– Git 지원
– Pip 패키지 관리 지원
– IPython console지원
– Debugger 지원
– Terminal 지원 (ubunto/OSX only)
 Ubunto /OSX/win 설치
– https://www.jetbrains.com/pycharm/download/#section=mac
– 반드시 community version으로 설치할것
– 설치 경로에 한글이 없어야함!
34
누구나 TensorFlow!
J. Kang Ph.D.
LAB0: python 개발환경 구축 설치
 목표: 파이썬을 다루기 위한 기본 개발 환경 설치
 Ubunto / OSX 사용자
– Pyenv / pyenv-virtualenv 설치
– 파이썬 개발을 위한 가상환경 만들어 보기
– Anaconda3 설치
– PyCharm 커뮤니티 버전 설치
– 가상환경 생성 후 Pip 명령어를 이용한 파이썬 패키지 설치확인
• $ pip install numpy scipy matplotlib pandas scikit-learn
• $ pip list
 Window 사용자
– anaconda3 설치
– pyCharm 커뮤니티 버전 설치
– Pycharm IDE에서 File  Settings  Project Interpreter 에서 anaconda3로
설정
35
누구나 TensorFlow!
J. Kang Ph.D.
LAB0: python 개발환경 구축 설치
 더 자세하게는 아래 파일 참조
– 우분투:
https://docs.google.com/document/d/1DXncq3t9_UezhtiD_1-
yWAYqGsnvem8L2TdU2CpeQZc/edit#heading=h.z0rg9qs9rz4s
– OSX:
https://docs.google.com/document/d/1unqQ8HziRJcZyPiRVX_gMg6eQh
65tERM-jhNOIHe44M/edit#heading=h.11whz3pkb7w4
36
누구나 TensorFlow!
J. Kang Ph.D.
Jupyter Notebook
Q) 설치과정이 너무 복잡하고 어렵습니다. 더 쉬운
방법은 없나요 ?
– Jupyter Notebook을 사용해 보세요
– 본 강의에서는 생략합니다
37
누구나 TensorFlow!
J. Kang Ph.D.
1. Python 준비하기
1. python 2.7/ anaconda2 /pyCharm 설치
2. LAB0: python 개발 환경 구축
3. python, numpy / pandas.DataFrame기본 실습
4. LAB1: python 실습 : Random Walk 문제
38
누구나 TensorFlow!
J. Kang Ph.D.
GitHub Repository
모든 소스코드는 GitHub를 통해서
공유됩니다.
– https://github.com/jwkanggist/EveryBodyTensorFlow
39
누구나 TensorFlow!
J. Kang Ph.D.
Python - Hello world
파이썬 기본 문법
– 일단 helloworld부터 찍고 보기
40
Ex1) helloworld.py
$ vim helloworld.py
print ‘Hello world’
print (‘Hello world!!’)
$ python helloworld.py
Hello world
Hello world!!
누구나 TensorFlow!
J. Kang Ph.D.
Python- package Import
파이썬 기본 문법
– 파이썬 위대함 1: 생각할 수 있는 대부분의 API가 오픈소스로
존재한다.
– 파이썬 위대함 2: pip + import의 조합이 그런 오픈소스API 사용이
매우 쉽다.
41
Ex2) Tensorflow pip 설치 후 import 하기
$ pip install tensorflow
[Installing Tensorflow …]
$ python
>>> import tensorflow as tf
누구나 TensorFlow!
J. Kang Ph.D.
Python - package Import
파이썬 기본 문법
– 파이썬 위대함 1: 생각할 수 있는 대부분의 API가 오픈소스
패키지로 존재한다.
– 파이썬 위대함 2: pip + import의 조합이 그런 오픈소스 패키지
사용이 매우 쉽게 한다.
– 파이썬 위대함 3: 오픈 소스 패키지의 완성도가 매우 높다.
42
Ex3) pandas install 후 import 해서 사용
$ pip install numpy scipy pandas matplotlib
[Installing…]
>>> import numpy as np
>>> import scipy as sp
>>> import pandas as pd
>>> import matplotlib.pyplot as plt
누구나 TensorFlow!
J. Kang Ph.D.
Python- List
파이썬 기본 문법
– 순서가 있는 값들의 나열
– 한가지 / 여러가지 타입으로 이루어진 리스트 구성가능
– 0부터 시작하는 인덱스로 브라우징 가능
43
Ex4) 리스트 관련 example
>>> lst = ['a', 3.14, 55555, 'abcdef', ['a', 'b', 'c']]
>>> lst
['a', 3.14, 55555, 'abcdef', ['a', 'b', 'c']]
>>> lst = [3.14132323, 3535242, 'abc', "def", 'color']
>>> lst
[3.14132323, 3535242, 'abc', 'def', 'color']
누구나 TensorFlow!
J. Kang Ph.D.
Python - List
파이썬 기본 문법
– 대입하는 경우 리스트의 복사가 아니고 참조함
– 다양한 멤버함수를 가지고 있음: append(), insert(),remove(), sort(),
split()
44
Ex4) 리스트 관련 example
>>> a= ['adfa','123','tda','114']
>>> a
['adfa', '123', 'tda', '114']
>>> b=a
>>> b
['adfa', '123', 'tda', '114']
>>> b[0]='0'
>>> a
['0', '123', 'tda', '114']
누구나 TensorFlow!
J. Kang Ph.D.
Python- For statement
파이썬 기본 문법
– 1) range()과 함께 사용
45
Ex5) examplefor.py
$ vim examplefor.py
#-*- coding: utf-8 -*-
for i in range (0,5):
print ‘ printing number: %s ‘ % i
$ python examplefor.py
printing number: 0
printing number: 1
printing number: 2
printing number: 3
printing number: 4
누구나 TensorFlow!
J. Kang Ph.D.
Python- For statement
파이썬 기본 문법
– 1) range()과 함께 사용
– 2) list와 함께 사용
46
Ex6) examplefor2.py
$ vim examplefor2.py
#-*- coding: utf-8 -*-
namelist = [ ‘kim’,’park’,’lee’,’kang’]
for name in namelist:
print ‘ printing name: %s ‘ % name
$ python examplefor2.py
printing name: kim
printing name: park
printing name: lee
printing name: kang
누구나 TensorFlow!
J. Kang Ph.D.
Python- If-elif-else statement
파이썬 기본 문법
– 다양한 부등호와 함께 사용: ==, !=, <, >…
– is, not, and, or의 논리 연산 사용
47
Ex7-1) exampleif.py
$ vim exampleif.py
#-*- coding: utf-8 -*-
number = 0
if number == 0:
print ‘zero’
elif number == 1:
print ‘one’
else:
print ‘any’
누구나 TensorFlow!
J. Kang Ph.D.
Python - If-elif-else statement
파이썬 기본 문법
– 다양한 부등호와 함께 사용: ==, !=, <, >…
– is, not, and, or의 논리 연산 사용
48
Ex7-2) exampleif2.py
$ vim exampleif2.py
#-*- coding: utf-8 -*-
number = 0
number2 = 1
if (number == 0) and (number2 == 1):
print ‘Both True!!’
elif (number == 0) or (number2 == 1):
print ‘one of both is True’
else:
print ‘All False’
누구나 TensorFlow!
J. Kang Ph.D.
Python - user-defined func
파이썬 기본 문법
– “def” 키워드를 가지고 정의할 수 있다.
49
Ex8) examplefunc.py
$ vim examplefunc.py
#-*- coding: utf-8 -*-
def myFuncPrint (keyword, numOfPrint):
for i in range(0,numOfPrint):
print “ The %s-th printing of %s” % (i+1,keyword)
myFuncPrint (‘JaewookKang’, 5)
% python examplefunc.py
The 1-th printing of JaewookKang
The 2-th printing of JaewookKang
The 3-th printing of JaewookKang
The 4-th printing of JaewookKang
The 5-th printing of JaewookKang
누구나 TensorFlow!
J. Kang Ph.D.
Numpy: Numerical Python
 벡터&행렬 연산에 필요한 N차원 배열을 다루기 위한 도구
– 효율적인 N차원 배열 자료 구조: ndarray
– 다양한 ndarray 기반 수학 함수 API
– 간편한 메모리 to ndarray 인터페이스
 Ndarray vs. List
– 벡터&행렬 연산에는 ”ndarray”가 단언컨데 유리함!
50
ndarray List
메모리 사
용 특징
- 한 주소값으로 부터 연속적
으로 메모리에 elem값저장
Elem값이 이산적인 주소값에
저장
연산 특징 sequential한 elem값 연산에
유리
Elem 단위 연산에 유리
구현 Array list (C/C++ array) Linked list
누구나 TensorFlow!
J. Kang Ph.D.
Numpy: Numerical Python
 Numpy에서 꼭 알아야 할것
– ndarray 생성
– ndarray 인덱싱
– ndarray 유니버설 함수
51
누구나 TensorFlow!
J. Kang Ph.D.
ndarray 생성
 Practice1: List로 부터 생성
52
Ex9) ex_ndarray1.py
$ python
>>> import numpy as np
>>> templist = [1,2,3,4,5,6]
>>> templist
[1,2,3,4,5,6]
>>> nptemplist = np.array(templist)
>>> nptemplist
array ([1 ,2 ,3 ,4 ,5 ,6 ])
>>> whos
Variable Type Data/Info
---------------------------------
np module <module 'numpy' from …..
nptemplist ndarray 5: 5 elems, type `int64`, 40 bytessys…..
templist list n=5…
누구나 TensorFlow!
J. Kang Ph.D.
ndarray 생성
 Practice2: List로 부터 생성 + dtype설정
53
Ex10) ex_ndarray2.py
$ python
>>> import numpy as np
>>> templist = [1,2,3,4,5,6]
>>> templist
[1,2,3,4,5,6]
>>> nptemplist = np.array( templist, dtype = np.int8 )
>>> nptemplist
array ([1 ,2 ,3 ,4 ,5 ,6 ])
>>> whos
Variable Type Data/Info
---------------------------------
np module <module 'numpy' from …..
nptemplist ndarray 5: 5 elems, type `int8`, 40 bytessys…..
templist list n=5…
누구나 TensorFlow!
J. Kang Ph.D.
ndarray 생성
 Practice3: all zeros/ones 벡터&행렬 생성
54
Ex11) ex_zeros.py
$ python
>>> import numpy as np
>>>np.zeros(1)
array([ 0.])
>>> np.zeros(2)
array([ 0., 0.])
>>> np.zeros([2,1])
array([[ 0.], [ 0.]])
>>> np.zeros([2,2])
array([[ 0., 0.], [ 0., 0.]])
누구나 TensorFlow!
J. Kang Ph.D.
ndarray 생성
 Practice3: all zeros/ones 벡터&행렬 생성
55
Ex12) ex_ones.py
$ python
>>> import numpy as np
>>>np.ones(1)
array([ 1.])
>>> np.ones(2)
array([ 1., 1.])
>>> np.ones([2,1])
array([[ 1.], [ 1.]])
>>> np.ones([2,2])
array([[ 1., 1.], [ 1., 1.]])
누구나 TensorFlow!
J. Kang Ph.D.
ndarray 인덱싱
 Practice4: ndarray 의 인덱싱은 참조를 사용한다.
– 슬라이싱 기능: “:”를 가지고 인덱싱하는 것
– 리스트와의 중요한 차이점은 slice은 원본배열의 view라는 점
56
Ex13) ex_indexing.py
>>> arr = np.arange(10)
>>> arr
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>arr[5]
5
>>> arr[5:8]
array([5, 6, 7])
>>> arr[5:8] = 12
>>> arr
array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])
누구나 TensorFlow!
J. Kang Ph.D.
ndarray 인덱싱
 Practice5: ndarray 의 인덱싱은 참조를 사용한다.
– 슬라이싱 기능: “:”를 가지고 인덱싱하는 것
– 리스트와의 중요한 차이점은 slice은 원본배열의 view라는점
– ndarray의 복사복을 얻고싶다면 arr[5:8].copy()를 사용
57
Ex14) ex_slicing.py
>>> arr_slice = arr[5:8]
>>> arr_slice[1] = 12345
>>> arr
array([ 0, 1, 2, 3, 4, 12, 12345, 12, 8, 9])
>>> arr_slice[:] = 128
>>> arr
array([ 0, 1, 2, 3, 4, 128, 128, 128, 8, 9])
누구나 TensorFlow!
J. Kang Ph.D.
ndarray 유니버설 함수
 Practice6: ndarray안에 있는 데이터 원소별로 연산을
수행하는 함수
58
함수 설명
abs, fabs 각 원소의 절대값을 구한다. 복소수가 아닌 경우
에는 빠른 연산을 위해 fabs를 사용한다.
sqrt 각 원소의 제곱근을 계산한다.
square 각 원소의 제곱을 계산한다.
Log, log10, log2 각 원소의 지수 exp^x를 계산한다.
ceil 각 원소의 소수자리를 올린다.
floor 각 원소의 소수자리를 버린다.
modf 각 원소의 몫과 나머지를 각각의 배열로 반환한
다.
Isnan, isinf 각 원소의 nan/inf 상태를 불리안값을 가지고 확
인한다.
Cos, cosh, sin, sinh, tan, tanh 각 원소의삼각/쌍곡 함수
누구나 TensorFlow!
J. Kang Ph.D.
ndarray 유니버설 함수
 Practice6: ndarray안에 있는 데이터 원소별로 연산을
수행하는 함수
59
함수 설명
Add 두 ndarray를 원소단위로 덧셈한다.
Substract 두 ndarray를 원소단위로 뺄셈한다.
Multiply 두 ndarray를 원소단위로 나눗셈한다.
Divide, floor_divide 첫 번째 배열의 원소에서 두번째 배열의 원소를
나눈다. Floor_divide는 몫만 취한다.
Power 첫번째 배열의 원소에서 두번쨰 배열의 원소만
큼 제곱한다.
Maximum, fmax 두중 큰값을 반환 fmax는 NaN은 무시한다.
Minimum, fmin 두중 작은값을 반환 fmin은 NaN은 무시한다.
Logical_and, logical_or, logical_xor 각각 두 원소 간의 논리연산 결과를 반환한다.
Mod 첫번째 배열원소에 두번째 배열원소로 나눈 나
머지값을 반환한다.
누구나 TensorFlow!
J. Kang Ph.D.
LAB1: Random walk 문제
 계단을 0층 부터 시작하여 같은 확률로 계단을 한칸 올라가거 나
내려갈수 있다.
 시행횟수에 따른 계단 층수를 시뮬레이션 해보자
– 초기위치: position = 0
– 시행횟수: step = 10
 random walk 값이 음수가 되는 값만 출력해보자
 Numpy를 사용해서 구현해보자
– np.where()
– np.random.randint(2,size=1)
– np.cumsum()
– For문 IF문 사용
 참고 github link:
https://github.com/jwkanggist/EveryBodyTensorFlow/blob/master/lab1_randomw
alk.py
60
누구나 TensorFlow!
J. Kang Ph.D.
1. 머신러닝 가족에게 설명하기
- 머신러닝 이란?
- 최근에 머신러닝이 각광받는 이유
- 머신러닝의 3대 요소
- 머신러닝의 종류
- 머신러닝에서의 Trade-off
61
누구나 TensorFlow!
J. Kang Ph.D.
Reference : Machine learning fundamental
62
Hands-On Machine Learning
With Scikit-Learn &
TensorFlow
2017 Aurelien Geron, Google
O’Reilly
본 강의는 해당 교재를 참고했음을
사전에 알립니다.
누구나 TensorFlow!
J. Kang Ph.D.
What Machine Learning?
63
머신러닝은 무엇인가?
누구나 TensorFlow!
J. Kang Ph.D.
What Machine Learning?
64
머신러닝은 무엇인가?
– 컴퓨터가 지능을 갖는 것? 인공지능? AlphaGo?
– 데이터를 통해서 예측하는 것?
– 컴퓨터에게 알려주는거?
누구나 TensorFlow!
J. Kang Ph.D.
What Machine Learning?
65
Definition (Machine Learning):
Field of study that gives computers the ability to learn without being explicitly
programmed.
- Arthur Samuel, 1959
머신러닝은 무엇인가?
– 컴퓨터가 지능을 갖는 것? 인공지능? AlphaGo?
– 데이터를 통해서 예측하는 것?
– 컴퓨터에게 알려주는거?
누구나 TensorFlow!
J. Kang Ph.D.
What Machine Learning?
66
머신러닝은 무엇인가?
– 컴퓨터가 지능을 갖는 것? 인공지능? AlphaGo?
– 데이터를 통해서 예측하는 것?
– 컴퓨터에게 알려주는거?
Definition (Machine Learning):
A computer program is said to learn rom experience E with respect to some
task T and some performance measure P, if its performance on T, measured
by P, is improved with experience E.
- Tom Mitchell, 1997
누구나 TensorFlow!
J. Kang Ph.D.
What Machine Learning?
67
머신러닝은 무엇인가?
– 임의의 업무 생산성/정확성/능률 (P) 의 척도 대해서
데이터라는 경험 (E) 을 통해서 컴퓨터가 업무 (T) 를
볼수 있도록 훈련시키는 일
Definition (Machine Learning):
A computer program is said to learn rom experience E with respect to some
task T and some performance measure P, if its performance on T, measured
by P, is improved with experience E.
- Tom Mitchell, 1997
누구나 TensorFlow!
J. Kang Ph.D.
머신러닝의 구성요소
머신러닝을 하기위해서 무엇이 필요한가?
– 경험 (E): Training data Set
– 업무 (T): System or model to be learned
– 척도 (P): performance measure, accuracy
누구나 TensorFlow!
J. Kang Ph.D.
머신러닝의 구성요소
머신러닝을 하기위해서 무엇이 필요한가?
– 경험 (E): Training data Set
– 업무 (T): System or model to be learned
– 척도 (P): performance measure, accuracy
69
Training Step:
T: Spam mail
Filtering
system
(E):User flagged
Spam list
(T): Smap Filtering
system
(P): Filtering
Accuracy
Training
Collecting
Training DataSpam ✔
Spam ✔
Spam ✔
누구나 TensorFlow!
J. Kang Ph.D.
머신러닝의 구성요소
머신러닝을 하기위해서 무엇이 필요한가?
– 경험 (E): Training data Set
– 업무 (T): System or model to be learned
– 척도 (P): performance measure, accuracy
70
Tasking Step:
T: Spam mail
Filtering
system
Arbitrary
Input
SPAM
Filtering
(spam classification)
누구나 TensorFlow!
J. Kang Ph.D.
Why Machine Learning?
Conventional approach
– 단편적인 현상을 통해 프로그래머가 인지한 몇가지 rule를 가지고
문제를 해결
• 보편적인 rule 을 만들기 어려움
• 실제 문제를 해결을 보장하지 않음
• 결과물은 엔지니어의 경험에 매우 의존적임
71
Study the
Problem
Establish
rules
Evaluate
Analyze
errors
Release!
누구나 TensorFlow!
J. Kang Ph.D.
Why Machine Learning?
ML approach
– 데이터로 부터 문제 해결을 위한 보편적인 rule을 찾는다.
• Training data set에 대한 일반화
• 데이터에 의한 대한 문제해결
72
Study the
Problem
Train ML
algorithm
Evaluate
Analyze
errors
Release!
Lots of Data
누구나 TensorFlow!
J. Kang Ph.D.
Why Machine Learning?
ML approach
– 데이터로 부터 문제 해결을 위한 rule을 자동으로 찾는다.
• 머신러닝이 진정한 의미가 있기 위해서는…
• 빅데이터가 있고
• 자동으로 시스템이 러닝될 수 있다.
73
Train ML
algorithm
Evaluate
Solution
Update
Data
Release!
Lots of Data
Can be
automated
누구나 TensorFlow!
J. Kang Ph.D.
ML approach 특징 요약
– All from data!!
• Larger data  Better systems
• Simple but universal rule
• Easy update rule given new data
• Getting unrecognized insights about complex problems
Why Machine Learning?
74
Inspect the
solution
Lots of Data
Study the
Problem
Train ML
algorithm
Iterate
If needed
Understand the
problem
better
Solution
New Insight
누구나 TensorFlow!
J. Kang Ph.D.
Why Machine learning Now?
머신러닝 3요소
– 빅데이터: SmartDevices, IoT, sensor networks
– 알고리즘: deep learning / reinforcement-learning
– 컴퓨팅 파워: GPU, parallel / distributed
computing
75
누구나 TensorFlow!
J. Kang Ph.D.
Why Machine learning Now?
머신러닝 3요소
– 빅데이터 >> 컴퓨팅 파워 > 알고리즘
• 품질 좋은/많은 량의 데이터만 있으면 머신러닝
시스템의 성능을 무족건 좋다.
76
누구나 TensorFlow!
J. Kang Ph.D.
Why Machine learning Now?
머신러닝 3요소
– 빅데이터 >> 컴퓨팅 파워 > 알고리즘
• 품질 좋은/많은 량의 데이터만 있으면 머신러닝
시스템의 성능을 무족건 좋다.
 그럼 데이터만 있으면 엔지니어는 이제 필요없나요 ?
– 아니요!: 위 세가지는 항상 모두 주어지지 않음
 We need ”Domain Adaptation !!”
 목표: 성능개선 + 러닝 시간 단축 + 데이터 용량 최소화
77
누구나 TensorFlow!
J. Kang Ph.D.
We Still Need ML Engineers!
Domain Adaptation 1 – Feature Extraction
– 데이터를 특징을 잘 뽑아서 데이터량을 줄인다
– Simplify data without losing too much information !
– Feature extraction을 잘하기 위해서는 도메인 지식이 중요
Domain Adaptation 2 – Learning Environment
– 모바일에서는 컴퓨팅 파워와 데이터 저장소가 부족
– 긴 러닝 타임도 부담
– Google’s Approach in Mobile ML env. (utblink)
• Pre-training model in cloud
• Local fine-Tuning with private data in mobile APP
• Run prediction engine in mobile APP
78
+
Cloud ML
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
 학습방식에 따라서
– Supervised
– Unsupervised
– Reinforcement
 데이터 업데이트 방식에 따라서
– Batch-based learning
– Online-based learning
79
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Supervised learning
– Training data set이 시스템의 입력과 출력의 pair 로
구성된 경우
• 여기서 출력을 label이라고 함
• 여기서 입력을 instance (또는 feature)라고 함
80
2
1 1
2
1
2
?
New instance
Training Set
Instance
Label
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Supervised learning
– Training data set이 시스템의 입력과 출력의 pair 로 구성된 경우
– 컴퓨터가 러닝하는데 선생이 있어서 답(label)을 알려주는 경우
– 머신 러닝의 가장 보편적인 형태
81
An example: Smap filter revisited
T: Spam mail
Filtering
system
(E):User flagged
Spam list
(T): Smap Filtering
system
(P): Filtering
Accuracy
Training
Collecting
Training DataSpam ✔
Spam ✔
Spam ✔
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Supervised learning
– Regression
– Classification
Models in Supervised learning
– Linear Models
– Neural networks
– SVM, RVM
82
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Unsupervised learning
– Training data set이 입력만 있는 경우
– 컴퓨터가 러닝하는데 선생님이 없는 경우
– 세상에 존재하는 대부분의 데이터는 label이 없다
83
Training Set
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Unsupervised learning
– Training data set이 입력만 있는 경우
– 컴퓨터가 러닝하는데 선생님이 없는 경우
– 세상에 존재하는 대부분의 데이터는 label이 없다
84
Training Set
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Unsupervised learning
– Clustering
– Dimensionality reduction
• The goal is to simplify the data without losing too much
information
– Feature extraction:
• which is a kind of dimensionality reduction
• Reducing computational& memory cost for ML
• Making ML system efficient!
• Domain knowledge is required
85
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Semisupervised learning
– Combination of supervised and unsupervised learning
• 1) Supervised learning with labeled data
• 2) Unsupervised learning with unlabeled data
• 3) Self-labelling of unlabeled data using step1 and step2
• 4) re-training of the system
86
이미지 출처:
https://www.researchgate.net/publication/277605013_Signal_
Processing_Approaches_to_Minimize_or_Suppress_Calibration
_Time_in_Oscillatory_Activity-Based_Brain-
Computer_Interfaces
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Semisupervised learning
– Training data set = labeled data + unlabeled data
– Combination of supervised and unsupervised learning
87 feature1
Feature 1
Feature 2
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Semisupervised learning
– Training data set = labeled data + unlabeled data
– Combination of supervised and unsupervised learning
88
Supervised learning with
Labeled data
feature1
Feature 1
Feature 2
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Semisupervised learning
– Training data set = labeled data + unlabeled data
– Combination of supervised and unsupervised learning
89
Labeling unlabed data
With trained classifier
Feature 1
Feature 2
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Semisupervised learning
– Training data set = labeled data + unlabeled data
– Combination of supervised and unsupervised learning
90
Re-training and
classifier update
Feature 1
Feature 2
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Reinforcement learning
– 컴퓨터가 시간에 따라서 보상을 통해서 최고의 행동전략을
환경으로 부터 스스로 배워가는 것
– 결과로 부터 스스로 학습법
91
[이미지 출처]
https://www.analyticsvidhya.com/bl
og/2016/12/getting-ready-for-ai-
based-gaming-agents-overview-of-
open-source-reinforcement-
learning-platforms/
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
MarI/O (2015)
– 목적: 게임에 대한 연속적인 버튼선택 러닝
– https://www.youtube.com/watch?v=qv6UVOQ0F44
– 게임의 각 프레임 상황을 supervised DNN으로 모델링
• 입력: 프레임 화면 이미지
• 출력: 각 화면 이미지에 대한 버튼선택 (A,B,X,Y,R,L,up,down,right,left)
– 강화학습
• 각 프레임의 환경을 “State”로 정의 (블록배치, enemy위치)
• 현재 state의 Action (버튼 선택)에 따라 다음 state가 정해진다.
• 각 State 에 대해서 Action (버튼 선택)에 따른 ”Reward” (Fitness) 를 피드백
– 살아있으면 + 1
– 버섯, 코인, 먹으면 + X
– Enemy 에 접촉해서 데미지를 입으면 - Y
• Reward가 높은 state의 action에 대한 확률이 높인다
• Reward는 과거 N-state에 대해서 피드백 된다. (동적)
92
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Google DeepMind 벽돌깨기 (2016)
– https://www.youtube.com/watch?v=V1eYniJ0Rnk
– AI가 살아남는 것을 넘어서 편하게 점수를 따는 전략을 스스로
찾아냄
– AI가 스스로 행동전략을 진화시킨 첫번째 케이스로 알려짐
93
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Batch learning
– Training data set를 통째로 넣어서 한번에 시스템을
러닝하는 것
• 장점: simple / 주어진 데이터 안에서 안정적인 동작
• 단점:
– 급격하게 변화하는 데이터 대처에 비효율
– Learning cost가 크다
» 계산량: 데이터가 크니깐 크다
» 메모리: training data를 항상 보관하고 있어야 한다.
» 시간 : 데이터가 크니깐 러닝타임이 길다.
94
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Online Learning
– 시스템을 러닝한 후에도 instance data가 들어오면 online으로
시스템을 incrementally 업데이트 할수 있는 학습법
95
Evaluate
Solution
Lots of Data
Train ML
algorithm
Run and
Update
Model
Release!
New Data New Data New Data
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Online Learning
– 시스템을 러닝한 후에도 instance data가 들어오면 online으로
시스템을 incrementally 업데이트 할수 있는 학습법
– 하드웨어의 계산부담을 줄이기위해서 batch learning을 online
learning으로 쪼개서 할수도 있음 (실제로 다 그렇케 함)
96
Study the
Problem
Train online
ML algorithm
Analyze
errors
Evaluate
Release!
Lots of Data
Chop into
pieces
누구나 TensorFlow!
J. Kang Ph.D.
Types of ML Systems
Online Learning
– 장점:
• 변화하는 데이터에 바로바로 대처
• 러닝 비용을 낮출 수 있다
• Training data를 들고 있지 않아도 된다.
– 단점: 데이터의 변화에 너무 시스템이 민감해질 수 있다.
97
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
Model selection
– Underfitting
– Overfitting
Curse of dimensionality
98
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
Model selection
– 대상으로하는 데이터의 범주에 맞는 머신러닝 모델 선택이
중요하다!
– 목적으로하는 데이터 범주에 대해서
99
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
Model selection
– 대상으로하는 데이터의 범주에 맞는 머신러닝 모델 선택이
중요하다!
– 목적으로하는 데이터 범주에 대해서
• 설명을 잘못하는 모델  예측 오류값이 매우 크다 (Underfitting)
100
Training data
Validation data
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
Model selection
– 대상으로하는 데이터의 범주에 맞는 머신러닝 모델 선택이
중요하다!
– 목적으로하는 데이터 범주에 대해서
• 설명을 잘못하는 모델  예측 오류값이 매우 크다 (Underfitting)
• 훈련데이터에 대해서만 작은 오류값을 출력하는 모델 (Overfitting)
–  일반화된 예측결과를 제공 못함
101
Training data
Validation data
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
Model selection
– 대상으로하는 데이터의 범주에 맞는 머신러닝 모델 선택이
중요하다!
– 목적으로하는 데이터 범주에 대해서
• 설명을 잘못하는 모델  예측 오류값이 매우 크다 (Underfitting)
• 훈련데이터에 대해서만 작은 오류값을 출력하는 모델 (Overfitting)
–  일반화된 예측결과를 제공 못함
• 필요이상으로 복잡하지 않은 모델
102
Training data
Validation data
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
Model selection
– 간단한 모델
• Good:
– 1) 주어진 데이터 셋에 대해서 일반화 된 결과를 내놓는다.
– 2) 작은 데이터 셋을 가지고 훈련이 가능하다.
– 3) 작은 범위의 데이터 셋에 대해서 성능이 복잡한 모델 보다 좋다.
• Bad :
– 1) Underfitting: 다양한/넓은 범위의 데이터 셋에 대해서 설명 (모델링) 하지
못한다.
– 복잡한 모델
• Good:
– 1) 다양한/넓은 범위의 데이터 셋에 대해서 설명(모델링)이 가능하다.
• Bad :
– 1) 작은 범위의 데이터 셋에 대해서 성능이 간단한 모델에 비해서 열화된다.
– 2) 훈련을 위해서 다양하고 큰 데이터 셋이 필요하다.
– 3) Overfitting: 대상으로 하는 데이터 셋에 대해서 일반화 된 결과를 내 놓기
어렵다.
103
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
Model selection
104
Given a certain size of data…
Validation
error
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
The Curse of Dimensionality
– 데이터의 차원이 증가할 수록 학습에 필요한 데이터의 개수를
기하급수적으로 늘어나는 문제
– 같은 비율의 공간을 모델링하기 위해서 필요한 데이터 량이
급속도록 증가
– Example: 공간의 20%를 채우기 위해서 필요한 데이터 수
• 0.2(1차원)  0.9(2차원)  1.74 (3차원)
105
[이미지 출처] http://www.visiondummy.com/2014/04/curse-
dimensionality-affect-classification/
1차원 데이터
0.2 = 0.2
2차원 데이터
0.2 = 0.45 * 0.45
3차원 데이터
0.2 = 0.58 * 0.58 * 0.58
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
The Curse of Dimensionality
– 저차원에서는 충분했던 데이터 양도 고차원이 되면
공간(학습 모델)을 설명하기에 부족해 질수 있음
• 데이터 부족  Overfitting문제 발생
106
[이미지 출처] http://www.visiondummy.com/2014/04/curse-
dimensionality-affect-classification/
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
The Curse of Dimensionality
– 저차원에서는 충분했던 데이터 양도 고차원이 되면
공간(학습 모델)을 설명하기에 부족해 질수 있음
• 데이터 부족  Overfitting문제 발생
107
[이미지 출처] http://www.visiondummy.com/2014/04/curse-
dimensionality-affect-classification/
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
The Curse of Dimensionality
– 저차원에서는 충분했던 데이터 양도 고차원이 되면
공간(학습모델)을 설명하기에 부족해 질수 있음
– 모델을 설명하기에 데이터가 부족해?
108
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
The Curse of Dimensionality
– 저차원에서는 충분했던 데이터 양도 고차원이 되면
공간(학습모델)을 설명하기에 부족해 질수 있음
– 모델을 설명하기에 데이터가 부족해? Overfitting문제
– 해결책
• 데이터 양 + 다양성 늘리기
• 중요한 특징만 뽑자  데이터차원 축소 (Dimensionality
Reduction)
– Feature Extraction
– Feature Selection
• 사전지식 이용  Regularziation
109
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
Raw data vs Featured data
110
Raw data Featured Data
No information loss
 Discover Unrecognized
patterns
Some information loss
 Degrade performance
sometime
Curse of dimensionality Dimensionality Reduction
Higher computational cost
 Slower learning time
Lower computation cost
 Faster learning time
Large-scale storage
is required
Small-scale storage
is fine
누구나 TensorFlow!
J. Kang Ph.D.
Trade-off in ML
Big data vs. Small data
111
Big data Small Data
No overfitting to
training data
Overfitting to training
data is possible
Working with complex models
for difficult problems
Working with simple models for
easy problems
Higher computational cost
 Slower learning time
Lower computation cost
 Faster learning time
Large-scale storage
is required
Small-scale storage
is fine

More Related Content

What's hot

텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016Taehoon Kim
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)SK(주) C&C - 강병호
 
기계 학습의 현재와 미래
기계 학습의 현재와 미래기계 학습의 현재와 미래
기계 학습의 현재와 미래Joon Kim
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향홍배 김
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016Taehoon Kim
 
딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초Hyungsoo Ryoo
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tae Young Lee
 
180624 mobile visionnet_baeksucon_jwkang_pub
180624 mobile visionnet_baeksucon_jwkang_pub180624 mobile visionnet_baeksucon_jwkang_pub
180624 mobile visionnet_baeksucon_jwkang_pubJaewook. Kang
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지deepseaswjh
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호NAVER D2
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝Jinwon Lee
 
딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향LGCNSairesearch
 
Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Taekyung Han
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작Tae Young Lee
 
임태현, Text-CNN을 이용한 Sentiment 분설모델 구현
임태현, Text-CNN을 이용한 Sentiment 분설모델 구현임태현, Text-CNN을 이용한 Sentiment 분설모델 구현
임태현, Text-CNN을 이용한 Sentiment 분설모델 구현태현 임
 
[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우NAVER D2
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경NAVER D2
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summitTae Young Lee
 

What's hot (20)

텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
텐서플로우 설치도 했고 튜토리얼도 봤고 기초 예제도 짜봤다면 TensorFlow KR Meetup 2016
 
파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝파이썬으로 익히는 딥러닝
파이썬으로 익히는 딥러닝
 
파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)파이썬으로 익히는 딥러닝 기본 (18년)
파이썬으로 익히는 딥러닝 기본 (18년)
 
기계 학습의 현재와 미래
기계 학습의 현재와 미래기계 학습의 현재와 미래
기계 학습의 현재와 미래
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
 
딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초딥러닝 - 역사와 이론적 기초
딥러닝 - 역사와 이론적 기초
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)
 
180624 mobile visionnet_baeksucon_jwkang_pub
180624 mobile visionnet_baeksucon_jwkang_pub180624 mobile visionnet_baeksucon_jwkang_pub
180624 mobile visionnet_baeksucon_jwkang_pub
 
딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지딥러닝 자연어처리 - RNN에서 BERT까지
딥러닝 자연어처리 - RNN에서 BERT까지
 
파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
 
인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝인공지능, 기계학습 그리고 딥러닝
인공지능, 기계학습 그리고 딥러닝
 
딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향딥러닝 기반의 자연어처리 최근 연구 동향
딥러닝 기반의 자연어처리 최근 연구 동향
 
Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차Python을 활용한 챗봇 서비스 개발 2일차
Python을 활용한 챗봇 서비스 개발 2일차
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작
 
임태현, Text-CNN을 이용한 Sentiment 분설모델 구현
임태현, Text-CNN을 이용한 Sentiment 분설모델 구현임태현, Text-CNN을 이용한 Sentiment 분설모델 구현
임태현, Text-CNN을 이용한 Sentiment 분설모델 구현
 
[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우
 
[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경[224] backend 개발자의 neural machine translation 개발기 김상경
[224] backend 개발자의 neural machine translation 개발기 김상경
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summit
 

Similar to [Tf2017] day1 jwkang_pub

파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XpressEngine
 
Lecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowLecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowSang Jun Lee
 
Animal science with data science
Animal science with data scienceAnimal science with data science
Animal science with data scienceYoungjun Na
 
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)Taeung Song
 
파이썬 쪼렙 탈출 2주차 (20171031) jjolab
파이썬 쪼렙 탈출 2주차   (20171031) jjolab파이썬 쪼렙 탈출 2주차   (20171031) jjolab
파이썬 쪼렙 탈출 2주차 (20171031) jjolab건환 손
 
2015-2 MODA 두 번째 스터디
2015-2 MODA 두 번째 스터디 2015-2 MODA 두 번째 스터디
2015-2 MODA 두 번째 스터디 SKKU
 
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보Young Hoo Kim
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)정명훈 Jerry Jeong
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트NAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼mangonamu
 
Open stack 세미나자료_장현정
Open stack 세미나자료_장현정Open stack 세미나자료_장현정
Open stack 세미나자료_장현정Nalee Jang
 
Python 생태계의 이해
Python 생태계의 이해Python 생태계의 이해
Python 생태계의 이해용 최
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
Python(basic)
Python(basic)Python(basic)
Python(basic)POSTECH
 

Similar to [Tf2017] day1 jwkang_pub (20)

파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 
20160126_python
20160126_python20160126_python
20160126_python
 
JetsonTX2 Python
 JetsonTX2 Python  JetsonTX2 Python
JetsonTX2 Python
 
Nlp study1
Nlp study1Nlp study1
Nlp study1
 
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
XECon2015 :: [1-1] 안정수 - XE3 구조 및 기본기
 
Lecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlowLecture 1: Introduction to Python and TensorFlow
Lecture 1: Introduction to Python and TensorFlow
 
Animal science with data science
Animal science with data scienceAnimal science with data science
Animal science with data science
 
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
오픈소스 개발참여한 이야기 (NIPA 오픈프론티어 3기 송태웅)
 
파이썬 쪼렙 탈출 2주차 (20171031) jjolab
파이썬 쪼렙 탈출 2주차   (20171031) jjolab파이썬 쪼렙 탈출 2주차   (20171031) jjolab
파이썬 쪼렙 탈출 2주차 (20171031) jjolab
 
파이썬 소개
파이썬 소개 파이썬 소개
파이썬 소개
 
2015-2 MODA 두 번째 스터디
2015-2 MODA 두 번째 스터디 2015-2 MODA 두 번째 스터디
2015-2 MODA 두 번째 스터디
 
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
PyCon 12월 세미나 - 실전 파이썬 프로그래밍 책 홍보
 
Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)Python study 1강 (오픈소스컨설팅 내부 강의)
Python study 1강 (오픈소스컨설팅 내부 강의)
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
[온라인교육시리즈] Jupyter를 이용한 분석 환경 구축하기 - 허창현 클라우드 솔루션 아키텍트
 
Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼Flask! - python web framework flask 튜토리얼
Flask! - python web framework flask 튜토리얼
 
Open stack 세미나자료_장현정
Open stack 세미나자료_장현정Open stack 세미나자료_장현정
Open stack 세미나자료_장현정
 
Python 생태계의 이해
Python 생태계의 이해Python 생태계의 이해
Python 생태계의 이해
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
Python(basic)
Python(basic)Python(basic)
Python(basic)
 

More from Jaewook. Kang

190111 tf2 preview_jwkang_pub
190111 tf2 preview_jwkang_pub190111 tf2 preview_jwkang_pub
190111 tf2 preview_jwkang_pubJaewook. Kang
 
181123 poseest101 devfest_pangyo_jwkang
181123 poseest101 devfest_pangyo_jwkang181123 poseest101 devfest_pangyo_jwkang
181123 poseest101 devfest_pangyo_jwkangJaewook. Kang
 
Cloud tpu jae_180814
Cloud tpu jae_180814Cloud tpu jae_180814
Cloud tpu jae_180814Jaewook. Kang
 
A Simple Communication System Design Lab #4 with MATLAB Simulink
A Simple Communication System Design Lab #4 with MATLAB SimulinkA Simple Communication System Design Lab #4 with MATLAB Simulink
A Simple Communication System Design Lab #4 with MATLAB SimulinkJaewook. Kang
 
A Simple Communication System Design Lab #3 with MATLAB Simulink
A Simple Communication System Design Lab #3 with MATLAB SimulinkA Simple Communication System Design Lab #3 with MATLAB Simulink
A Simple Communication System Design Lab #3 with MATLAB SimulinkJaewook. Kang
 
A Simple Communication System Design Lab #2 with MATLAB Simulink
A Simple Communication System Design Lab #2 with MATLAB SimulinkA Simple Communication System Design Lab #2 with MATLAB Simulink
A Simple Communication System Design Lab #2 with MATLAB SimulinkJaewook. Kang
 
A Simple Communication System Design Lab #1 with MATLAB Simulink
A Simple Communication System Design Lab #1 with MATLAB Simulink A Simple Communication System Design Lab #1 with MATLAB Simulink
A Simple Communication System Design Lab #1 with MATLAB Simulink Jaewook. Kang
 
MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015 MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015 Jaewook. Kang
 
Jaewook Kang's Phd final defense @ 20151117
Jaewook Kang's  Phd final defense @ 20151117Jaewook Kang's  Phd final defense @ 20151117
Jaewook Kang's Phd final defense @ 20151117Jaewook. Kang
 
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...Jaewook. Kang
 

More from Jaewook. Kang (11)

190111 tf2 preview_jwkang_pub
190111 tf2 preview_jwkang_pub190111 tf2 preview_jwkang_pub
190111 tf2 preview_jwkang_pub
 
181123 poseest101 devfest_pangyo_jwkang
181123 poseest101 devfest_pangyo_jwkang181123 poseest101 devfest_pangyo_jwkang
181123 poseest101 devfest_pangyo_jwkang
 
Cloud tpu jae_180814
Cloud tpu jae_180814Cloud tpu jae_180814
Cloud tpu jae_180814
 
Life is stair-like
Life is stair-likeLife is stair-like
Life is stair-like
 
A Simple Communication System Design Lab #4 with MATLAB Simulink
A Simple Communication System Design Lab #4 with MATLAB SimulinkA Simple Communication System Design Lab #4 with MATLAB Simulink
A Simple Communication System Design Lab #4 with MATLAB Simulink
 
A Simple Communication System Design Lab #3 with MATLAB Simulink
A Simple Communication System Design Lab #3 with MATLAB SimulinkA Simple Communication System Design Lab #3 with MATLAB Simulink
A Simple Communication System Design Lab #3 with MATLAB Simulink
 
A Simple Communication System Design Lab #2 with MATLAB Simulink
A Simple Communication System Design Lab #2 with MATLAB SimulinkA Simple Communication System Design Lab #2 with MATLAB Simulink
A Simple Communication System Design Lab #2 with MATLAB Simulink
 
A Simple Communication System Design Lab #1 with MATLAB Simulink
A Simple Communication System Design Lab #1 with MATLAB Simulink A Simple Communication System Design Lab #1 with MATLAB Simulink
A Simple Communication System Design Lab #1 with MATLAB Simulink
 
MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015 MATLAB Programming BASIC @ GIST winter school 2015
MATLAB Programming BASIC @ GIST winter school 2015
 
Jaewook Kang's Phd final defense @ 20151117
Jaewook Kang's  Phd final defense @ 20151117Jaewook Kang's  Phd final defense @ 20151117
Jaewook Kang's Phd final defense @ 20151117
 
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
Introduction to Soundlly 2nd screen services and technology: Seminar in 금오공대 ...
 

[Tf2017] day1 jwkang_pub

  • 1. 누구나 TensorFlow! J. Kang Ph.D. 누구나 TensorFlow - Module1 : 준비하기 Jaewook Kang, Ph.D. jwkang@soundl.ly Sep. 2017 1 © 2017 Jaewook Kang All Rights Reserved
  • 2. 누구나 TensorFlow! J. Kang Ph.D.  GIST EEC Ph.D. (2015)  신호처리 과학자, 삽질러  좋아하는 것:  통계적 신호처리 / 무선통신 신호처리  임베디드 오디오 DSP C/C++라이브러리 구현  머신러닝 기반 오디오 신호처리 알고리즘  공부해서 남주기 2  대표논문: Jaewook Kang, et al., "Bayesian Hypothesis Test using Nonparametric Belief Propagation for Noisy Sparse Recovery," IEEE Trans. on Signal process., Feb. 2015 Jaewook Kang et al., "Fast Signal Separation of 2D Sparse Mixture via Approximate Message- Passing," IEEE Signal Processing Letters, Nov. 2015 Jaewook Kang (강재욱) 소 개
  • 3. 누구나 TensorFlow! J. Kang Ph.D. 학계와 산업계의 거리 • 학계는 19세기 시스템 • 학회와 논문 • 리뷰프로세스와 퍼브리쉬 • CS 박사학위기간 5년 이상 • 산업계는 21세기 시스템 • 온라인 커뮤니티 & 컨트리뷰터 • 오픈소스 + 개방형 플랫폼 • 블로그 3
  • 4. 누구나 TensorFlow! J. Kang Ph.D. 학계와 산업계의 거리 • 무엇이 두사이의 연결고리가 될수 있는가? • 학계 • 새로운 발견은 대부분 서양학계에서 나온다 • 무선통신, 딥러닝 • 한우물 정신 • 실패와 도전 • 산업계 • 빠른 사이클 • 머니 머니 머니: 현실세계에서 효용 == 머니 • 최대한 많은 상호작용 4
  • 5. 누구나 TensorFlow! J. Kang Ph.D. 현대과학의 연구 • 나는 연결고리를 찾아서 스타트업이라는 정글로 뛰어들었다. • 논문 peer 리뷰 보다 빠른 고객 피드백 • 논문 인용 수 보다 매출 • 논문 보다 블로그 (블로그 보다 동영상) • 특허 보다 one more like! 5
  • 6. 누구나 TensorFlow! J. Kang Ph.D. 현대과학의 연구 • 여러분은? 어떤 연결고리를 찾으실 건가요? 6
  • 8. 누구나 TensorFlow! J. Kang Ph.D. • 2년전 무엇을 느꼈는가? • 2년이 지난 이후 무엇이 벌어지고 있는가? • 무엇을 준비해야하는가? • 수학 • 코딩 • 머신러닝 8
  • 9. 누구나 TensorFlow! J. Kang Ph.D. • 2년전 무엇을 느꼈는가? • 2년이 지난 이후 무엇이 벌어지고 있는가? • 무엇을 준비해야하는가? • 수학: 세상을 설명하는 가장 보편적인 진리 • 코딩: 디지털 문맹이 되지 말자 • 머신러닝: 나 대신 일해주는 시스템 9
  • 10. 누구나 TensorFlow! J. Kang Ph.D. 누구나 TensorFlow의 목표  강의 철학1: 누구나 “머신러닝” 할 수 있다!!  1) 머신러닝의 기본개념을 수식 머리로 이해한다.  2) 머신러닝 기본기법을 TensorFlow로 구현할 수 있다.  3) 수집한 데이터를 파이썬을 통해서 다룰 수 있다.  4) 내문제에 머신러닝 적용할 수 있다.  5) 스스로 머신러닝을 더 연구해 보고싶다. 10
  • 11. 누구나 TensorFlow! J. Kang Ph.D. 누구나 TensorFlow의 목표  강의 철학2: 당신은 이 강의에서 모든 것을 얻어갈 수 없다!  1) 머신러닝의 기본개념을 수식 머리로 이해한다.  2) 머신러닝 기본기법을 TensorFlow로 구현할 수 있다.  3) 수집한 데이터를 파이썬을 통해서 다룰 수 있다.  4) 내문제에 머신러닝 적용할 수 있다.  5) 스스로 머신러닝을 더 연구해 보고싶다. 11
  • 12. 누구나 TensorFlow! J. Kang Ph.D. 누구나 TensorFlow의 목표  강의 대상: 머신러닝을 시작하는 모든 사람!!  1) 머신러닝에 관심을 가지려고 하는 대학교 3학년  2) 머신러닝을 배워서 취업면접에서 한마디라도 더하고 싶은 취준생  3) 교수님이 머신러닝을 이용해보라고 하는데 막막한 대학원생  4) 최소한으로 공부해서 머신러닝을 적용해 보고 싶은 주니어 개발자! 12
  • 13. 누구나 TensorFlow! J. Kang Ph.D. 강의 일정 13 일 정 목표 시 간 세부 내 용 Module 1 Python 준비하기 4 - python / anaconda /pyCharm 설치확인 - LAB0: python 개발환경 설치 - python, numpy / pandas 기본 - LAB1: python 예제 실습 머신러닝 가족에게 설명하기 4 - 머신러닝이란? - 왜 머신러닝인가? - 최근에 머신러닝이 각광받는 이유 - 머신러닝의 종류 - 머신러닝의 trade-off Module 2 꼭 알아야할 수리 개념 2 - 확률이론 기본 - 조건부 확률 / 베이지안 룰 - 선형대수 기본 TensorFlow 준비하기 3 - 왜 TensorFlow인가? + TensorFlow 설치 - LAB2: Helloworld in TensorFlow - TensorFlow 기본 요소 - LAB3: TensorFlow 기본예제 line-fitting - ML training in Tensorflow 선형 예측 모델 만들기 Linear Regression 3 - Linear Basis function model - Maximum likelihood and least square - LAB4: TensorFlow curve-fitting
  • 14. 누구나 TensorFlow! J. Kang Ph.D. 강의 일정 14 일 정 목표 시 간 세부 내 용 Module 3 직선으로 데이터 구분하기 Logistic classification - Introduction to Linear Classification - Naïve Bayes (NB) - Linear Discriminent Analysis (LDA) - Logistic Regression (LR) - NB vs LDA vs LR - LAB5: Linear Classication in TensorFlow Module 4 딥러닝의 선조 뉴럴 네트워크 4 - 뉴런을 수학으로 표현하기 - Feed-Forward Neural Networks - Linear 뉴런의 한계와 Activation 함수 - Gradient descent Revisit - Backpropagation algorithm - LAB6: Two-layer neural net with Backpropagation in TensorFlow
  • 15. 누구나 TensorFlow! J. Kang Ph.D. 강의 일정 15 일 정 목표 시 간 세부 내 용 Module 5 딥러닝으로 - Neural Network 의 역사 (~1990s) - 딥러닝 이전 인공신경망의 한계 - 딥러닝의 열쇠 (2000s) - Modern deep Neural Networks (2010s~) - Convolutional Neural Net - LAB7: CNN in Tensorflow - Recurrent Neural Net - LAB8: RNN in Tensorflow - Generative Adversary Net - LAB9: GAN in Tensorflow
  • 16. 누구나 TensorFlow! J. Kang Ph.D. GitHub link GitHub link (all public) – https://github.com/jwkanggist/EveryBodyTensorFlow 16
  • 17. 누구나 TensorFlow! J. Kang Ph.D. 1. Python 준비하기 1. python/ anaconda /pyCharm 설치 2. LAB0: python 개발 환경 구축 3. python, numpy / pandas.DataFrame기본 실습 4.LAB1: python 실습 : 계단 오르기 문제 연구자들이여 MATLAB에서 벗어나라!! 17
  • 18. 누구나 TensorFlow! J. Kang Ph.D. Reference : Scientific computing in python 18 Python for Data Analysis 1st Edition, 2013 O’Reilly Wes McKinney
  • 19. 누구나 TensorFlow! J. Kang Ph.D. Why Python for Scientific Computing ?  높은 생산성 & 개방성!  Script language + Concise Grammar  Easy to learn and produce  License-free +extensive open libraries: numpy, scipy, pandas, tensorflow… 19 helloWorld.java helloWorld.py public class Main { public static void main(String[] args){ System.out.println("hello world"); } } print ‘hello world’
  • 20. 누구나 TensorFlow! J. Kang Ph.D. Why Python for Scientific Computing ?  높은 생산성 & 개방성!  Script language + Concise Grammar  Easy to learn and produce  License-free +extensive open libraries: numpy, scipy, pandas, tensorflow…  호환성 & 통합성  Very good compatibility to other languages: cython, jython,…  For further your interest, visit this link. 20 MATLAB Python - MathWork (1984) - 공학시뮬레이션 - 기본엔진 + 툴박스 - 행렬 계산효율성 매우좋음 - 폐쇄적 - 제한적호환성 - 유료!! - 파이썬 소프트웨어 재단 (1991) - 범용성 / 간결한 문법/ 가독성 - 방대한 3rd party 라이브러리 - 개방적 + 호환성 + 이식성 good - 모든게 무료!!
  • 21. 누구나 TensorFlow! J. Kang Ph.D. Python설치  우분투/ OSX: 기본적으로 설치되어 있음 – 이것을 “system 파이썬”이라고 가급적 다루지 않는 것이 좋음 – 파이썬 가상 환경을 구성하여 개발해야함 – pyenv + virtualenv : 파이썬 버전별 설치 / 패키지 관리 21 [이미지출처] https://www.extramile.io/blog/how-to-setup-multiple-python-versions-with-pyenv/
  • 22. 누구나 TensorFlow! J. Kang Ph.D. Python설치  우분투/ OSX: 기본적으로 설치되어 있음 – 이것을 “system 파이썬”이라고 가급적 다루지 않는 것이 좋음 – 파이썬 가상 환경을 구성하여 개발해야함 – pyenv + virtualenv : 파이썬 버전별 설치 / 패키지 관리 22 [이미지 출처] http://qiita.com/hedgehoCrow/items/0733c63c690450b14dcf
  • 23. 누구나 TensorFlow! J. Kang Ph.D. Python설치  우분투/ OSX: 기본적으로 설치되어 있음 – 이것을 “system 파이썬”이라고 가급적 다루지 않는 것이 좋음 – 파이썬 가상 환경을 구성하여 개발해야함 – pyenv + virtualenv : 파이썬 버전별 설치 / 패키지 관리 – autoenv : 폴터별 가상환경 구축  Win10: 운영체제에 맞춰서 인스톨러를 다운받아서 설치 • https://www.python.org/downloads/windows/ • Win10에서는 python 3.5 이상만 Tensorflow와 호환됨 • 관리자 권한으로 실행! 23
  • 24. 누구나 TensorFlow! J. Kang Ph.D. pyenv 환경 설치 (OSX)  To Enable to install various versions of the pythons  To Resolve “version dependency” of python 24 OSX: shell commands # step Xcode 최신버전 설치 # step II brew로 pyenv설치 $ brew update $ brew install pyenv $ brew install pyenv-virtualenv # pyenv 환경변수 설정 $ echo ‘“export PATH=”$~/.pyenv/shims:$PATH”’ >> ~/.bash_profile $ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile $ echo 'eval "$(pyenv virtualenv-init -)">> ~/.bash_profile
  • 25. 누구나 TensorFlow! J. Kang Ph.D. pyenv 환경 설치 (Ubuntu)  다양한 파이썬 버전을 설치하고 사용할 수 있다.  파이썬 버전에 대한 의존성을 해결 25 Ubuntu 16.04: shell commands # 필요 패키지 사전 설치 $sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm #pyenv 소스 다운받기 위해서 git 인스톨 $sudo apt-get install git #pyenv다운 받아서 인스톨 $curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash #환경 변수에 pyenv 추가 $ vim ~/.bashrc #-------------------------------------------------------- #아래내용추가 #------------------------------------------------------- export PATH="$HOME/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)
  • 26. 누구나 TensorFlow! J. Kang Ph.D. pyenv 환경 설치 (win10)  Pyenv officially do not support windows OS. 26
  • 27. 누구나 TensorFlow! J. Kang Ph.D. Pyenv-virtualenv 사용 (ubuntu/OSX only)  Python-Env is implemented by pip-packages – 패키지는 pip에 의해서 관리된다. / 패키지는 버전을 가진다. – 패키지 호환성이 버전에 의해서 결정된다. – 안정적 개발을 위해서 프로젝트 / end-타켓 별로 다른 개발환경이 필요하다  Use of Pyenv-vertualenv – 하나의 local-PC에 다양한 파이썬 환경을 구축하고 사용가능 – pip패키지들에 대한 의존성을 해결 – 같은 버전의 파이썬을 다른 종류의 패키지 구성으로 사용가능 27
  • 28. 누구나 TensorFlow! J. Kang Ph.D. Pyenv-virtualenv 사용 (ubuntu/OSX only)  Pyenv : 사용 파이썬 버전을 구분  Pyenv-virtualenv: 파이썬 버전 + 설치된 pip패키지를 구분 28 Purpose Shell commands Check installable version list $ pyenv install –list Install a specific python version $ pyenv install [ python version name] Check installed python version in your local $ pyenv versions Switch to a python version you want to use $ pyenv shell [installed version name] Purpose Shell commands Install a specific python version $ pyenv eirtualenv [python version] [user-specified virtualenv name] Ex)$ pyenv virtualenv 2.7.12 tensorflowenv Check your virtualenv in your local $ pyenv versions Activate virtualenv $ source activate [user-specified virtualenv name] Deactivate virtualenv $source deactivate [user-specified virtualenv name]
  • 29. 누구나 TensorFlow! J. Kang Ph.D. - Interpreter - Programming language - Standard library - Efficient N-dimensional array data structure - Fast / flexible matrix&vector computing - Very good compatibility to C/C++ /Fortran - Basic pip packages for python scientific computing - Packages for machine learning extension Python Scientific Computing Ecosystem 29
  • 30. 누구나 TensorFlow! J. Kang Ph.D. Python Scientific Computing Ecosystem 30 Package name Description numpy Based N-dimensional array package scipy Fundamental library for scientific computing Ipython Enhanced python interactive console (like MATLAB command window) matplotlib Comprehensive 2D plotting scikit-learn Providing library of off-the-shelf machine learning algorithms (higher-level) tensorflow Providing library of low-level machine learning algorithm Pandas Data analysis framework: Easy data manipulation / importing /exporting
  • 31. 누구나 TensorFlow! J. Kang Ph.D. Python Scientific Computing Ecosystem 31 모든게 다 귀찮다면?
  • 32. 누구나 TensorFlow! J. Kang Ph.D. Python Scientific Computing Ecosystem 32 모든게 다 귀찮다면?  Anaconda! – 뱀이야기 인가요 ? VS ?
  • 33. 누구나 TensorFlow! J. Kang Ph.D. Python Scientific Computing Ecosystem 33 Platform name Description Python Interpreter + standard library Anaconda Interpreter + standard libraries +Most of the scientific computing libraries 모든게 다 귀찮다면?  Anaconda! – 아니요 -_-;; – Python + 관련 패키지 통합 distribution !! – For window users:Anaconda3 4.4 with python 3.6설치 • https://www.anaconda.com/download/#windows <
  • 34. 누구나 TensorFlow! J. Kang Ph.D. PyCharm IDE 설치 JetBrain에서 제공하는 파이썬 개발툴 (IDE) – Git 지원 – Pip 패키지 관리 지원 – IPython console지원 – Debugger 지원 – Terminal 지원 (ubunto/OSX only)  Ubunto /OSX/win 설치 – https://www.jetbrains.com/pycharm/download/#section=mac – 반드시 community version으로 설치할것 – 설치 경로에 한글이 없어야함! 34
  • 35. 누구나 TensorFlow! J. Kang Ph.D. LAB0: python 개발환경 구축 설치  목표: 파이썬을 다루기 위한 기본 개발 환경 설치  Ubunto / OSX 사용자 – Pyenv / pyenv-virtualenv 설치 – 파이썬 개발을 위한 가상환경 만들어 보기 – Anaconda3 설치 – PyCharm 커뮤니티 버전 설치 – 가상환경 생성 후 Pip 명령어를 이용한 파이썬 패키지 설치확인 • $ pip install numpy scipy matplotlib pandas scikit-learn • $ pip list  Window 사용자 – anaconda3 설치 – pyCharm 커뮤니티 버전 설치 – Pycharm IDE에서 File  Settings  Project Interpreter 에서 anaconda3로 설정 35
  • 36. 누구나 TensorFlow! J. Kang Ph.D. LAB0: python 개발환경 구축 설치  더 자세하게는 아래 파일 참조 – 우분투: https://docs.google.com/document/d/1DXncq3t9_UezhtiD_1- yWAYqGsnvem8L2TdU2CpeQZc/edit#heading=h.z0rg9qs9rz4s – OSX: https://docs.google.com/document/d/1unqQ8HziRJcZyPiRVX_gMg6eQh 65tERM-jhNOIHe44M/edit#heading=h.11whz3pkb7w4 36
  • 37. 누구나 TensorFlow! J. Kang Ph.D. Jupyter Notebook Q) 설치과정이 너무 복잡하고 어렵습니다. 더 쉬운 방법은 없나요 ? – Jupyter Notebook을 사용해 보세요 – 본 강의에서는 생략합니다 37
  • 38. 누구나 TensorFlow! J. Kang Ph.D. 1. Python 준비하기 1. python 2.7/ anaconda2 /pyCharm 설치 2. LAB0: python 개발 환경 구축 3. python, numpy / pandas.DataFrame기본 실습 4. LAB1: python 실습 : Random Walk 문제 38
  • 39. 누구나 TensorFlow! J. Kang Ph.D. GitHub Repository 모든 소스코드는 GitHub를 통해서 공유됩니다. – https://github.com/jwkanggist/EveryBodyTensorFlow 39
  • 40. 누구나 TensorFlow! J. Kang Ph.D. Python - Hello world 파이썬 기본 문법 – 일단 helloworld부터 찍고 보기 40 Ex1) helloworld.py $ vim helloworld.py print ‘Hello world’ print (‘Hello world!!’) $ python helloworld.py Hello world Hello world!!
  • 41. 누구나 TensorFlow! J. Kang Ph.D. Python- package Import 파이썬 기본 문법 – 파이썬 위대함 1: 생각할 수 있는 대부분의 API가 오픈소스로 존재한다. – 파이썬 위대함 2: pip + import의 조합이 그런 오픈소스API 사용이 매우 쉽다. 41 Ex2) Tensorflow pip 설치 후 import 하기 $ pip install tensorflow [Installing Tensorflow …] $ python >>> import tensorflow as tf
  • 42. 누구나 TensorFlow! J. Kang Ph.D. Python - package Import 파이썬 기본 문법 – 파이썬 위대함 1: 생각할 수 있는 대부분의 API가 오픈소스 패키지로 존재한다. – 파이썬 위대함 2: pip + import의 조합이 그런 오픈소스 패키지 사용이 매우 쉽게 한다. – 파이썬 위대함 3: 오픈 소스 패키지의 완성도가 매우 높다. 42 Ex3) pandas install 후 import 해서 사용 $ pip install numpy scipy pandas matplotlib [Installing…] >>> import numpy as np >>> import scipy as sp >>> import pandas as pd >>> import matplotlib.pyplot as plt
  • 43. 누구나 TensorFlow! J. Kang Ph.D. Python- List 파이썬 기본 문법 – 순서가 있는 값들의 나열 – 한가지 / 여러가지 타입으로 이루어진 리스트 구성가능 – 0부터 시작하는 인덱스로 브라우징 가능 43 Ex4) 리스트 관련 example >>> lst = ['a', 3.14, 55555, 'abcdef', ['a', 'b', 'c']] >>> lst ['a', 3.14, 55555, 'abcdef', ['a', 'b', 'c']] >>> lst = [3.14132323, 3535242, 'abc', "def", 'color'] >>> lst [3.14132323, 3535242, 'abc', 'def', 'color']
  • 44. 누구나 TensorFlow! J. Kang Ph.D. Python - List 파이썬 기본 문법 – 대입하는 경우 리스트의 복사가 아니고 참조함 – 다양한 멤버함수를 가지고 있음: append(), insert(),remove(), sort(), split() 44 Ex4) 리스트 관련 example >>> a= ['adfa','123','tda','114'] >>> a ['adfa', '123', 'tda', '114'] >>> b=a >>> b ['adfa', '123', 'tda', '114'] >>> b[0]='0' >>> a ['0', '123', 'tda', '114']
  • 45. 누구나 TensorFlow! J. Kang Ph.D. Python- For statement 파이썬 기본 문법 – 1) range()과 함께 사용 45 Ex5) examplefor.py $ vim examplefor.py #-*- coding: utf-8 -*- for i in range (0,5): print ‘ printing number: %s ‘ % i $ python examplefor.py printing number: 0 printing number: 1 printing number: 2 printing number: 3 printing number: 4
  • 46. 누구나 TensorFlow! J. Kang Ph.D. Python- For statement 파이썬 기본 문법 – 1) range()과 함께 사용 – 2) list와 함께 사용 46 Ex6) examplefor2.py $ vim examplefor2.py #-*- coding: utf-8 -*- namelist = [ ‘kim’,’park’,’lee’,’kang’] for name in namelist: print ‘ printing name: %s ‘ % name $ python examplefor2.py printing name: kim printing name: park printing name: lee printing name: kang
  • 47. 누구나 TensorFlow! J. Kang Ph.D. Python- If-elif-else statement 파이썬 기본 문법 – 다양한 부등호와 함께 사용: ==, !=, <, >… – is, not, and, or의 논리 연산 사용 47 Ex7-1) exampleif.py $ vim exampleif.py #-*- coding: utf-8 -*- number = 0 if number == 0: print ‘zero’ elif number == 1: print ‘one’ else: print ‘any’
  • 48. 누구나 TensorFlow! J. Kang Ph.D. Python - If-elif-else statement 파이썬 기본 문법 – 다양한 부등호와 함께 사용: ==, !=, <, >… – is, not, and, or의 논리 연산 사용 48 Ex7-2) exampleif2.py $ vim exampleif2.py #-*- coding: utf-8 -*- number = 0 number2 = 1 if (number == 0) and (number2 == 1): print ‘Both True!!’ elif (number == 0) or (number2 == 1): print ‘one of both is True’ else: print ‘All False’
  • 49. 누구나 TensorFlow! J. Kang Ph.D. Python - user-defined func 파이썬 기본 문법 – “def” 키워드를 가지고 정의할 수 있다. 49 Ex8) examplefunc.py $ vim examplefunc.py #-*- coding: utf-8 -*- def myFuncPrint (keyword, numOfPrint): for i in range(0,numOfPrint): print “ The %s-th printing of %s” % (i+1,keyword) myFuncPrint (‘JaewookKang’, 5) % python examplefunc.py The 1-th printing of JaewookKang The 2-th printing of JaewookKang The 3-th printing of JaewookKang The 4-th printing of JaewookKang The 5-th printing of JaewookKang
  • 50. 누구나 TensorFlow! J. Kang Ph.D. Numpy: Numerical Python  벡터&행렬 연산에 필요한 N차원 배열을 다루기 위한 도구 – 효율적인 N차원 배열 자료 구조: ndarray – 다양한 ndarray 기반 수학 함수 API – 간편한 메모리 to ndarray 인터페이스  Ndarray vs. List – 벡터&행렬 연산에는 ”ndarray”가 단언컨데 유리함! 50 ndarray List 메모리 사 용 특징 - 한 주소값으로 부터 연속적 으로 메모리에 elem값저장 Elem값이 이산적인 주소값에 저장 연산 특징 sequential한 elem값 연산에 유리 Elem 단위 연산에 유리 구현 Array list (C/C++ array) Linked list
  • 51. 누구나 TensorFlow! J. Kang Ph.D. Numpy: Numerical Python  Numpy에서 꼭 알아야 할것 – ndarray 생성 – ndarray 인덱싱 – ndarray 유니버설 함수 51
  • 52. 누구나 TensorFlow! J. Kang Ph.D. ndarray 생성  Practice1: List로 부터 생성 52 Ex9) ex_ndarray1.py $ python >>> import numpy as np >>> templist = [1,2,3,4,5,6] >>> templist [1,2,3,4,5,6] >>> nptemplist = np.array(templist) >>> nptemplist array ([1 ,2 ,3 ,4 ,5 ,6 ]) >>> whos Variable Type Data/Info --------------------------------- np module <module 'numpy' from ….. nptemplist ndarray 5: 5 elems, type `int64`, 40 bytessys….. templist list n=5…
  • 53. 누구나 TensorFlow! J. Kang Ph.D. ndarray 생성  Practice2: List로 부터 생성 + dtype설정 53 Ex10) ex_ndarray2.py $ python >>> import numpy as np >>> templist = [1,2,3,4,5,6] >>> templist [1,2,3,4,5,6] >>> nptemplist = np.array( templist, dtype = np.int8 ) >>> nptemplist array ([1 ,2 ,3 ,4 ,5 ,6 ]) >>> whos Variable Type Data/Info --------------------------------- np module <module 'numpy' from ….. nptemplist ndarray 5: 5 elems, type `int8`, 40 bytessys….. templist list n=5…
  • 54. 누구나 TensorFlow! J. Kang Ph.D. ndarray 생성  Practice3: all zeros/ones 벡터&행렬 생성 54 Ex11) ex_zeros.py $ python >>> import numpy as np >>>np.zeros(1) array([ 0.]) >>> np.zeros(2) array([ 0., 0.]) >>> np.zeros([2,1]) array([[ 0.], [ 0.]]) >>> np.zeros([2,2]) array([[ 0., 0.], [ 0., 0.]])
  • 55. 누구나 TensorFlow! J. Kang Ph.D. ndarray 생성  Practice3: all zeros/ones 벡터&행렬 생성 55 Ex12) ex_ones.py $ python >>> import numpy as np >>>np.ones(1) array([ 1.]) >>> np.ones(2) array([ 1., 1.]) >>> np.ones([2,1]) array([[ 1.], [ 1.]]) >>> np.ones([2,2]) array([[ 1., 1.], [ 1., 1.]])
  • 56. 누구나 TensorFlow! J. Kang Ph.D. ndarray 인덱싱  Practice4: ndarray 의 인덱싱은 참조를 사용한다. – 슬라이싱 기능: “:”를 가지고 인덱싱하는 것 – 리스트와의 중요한 차이점은 slice은 원본배열의 view라는 점 56 Ex13) ex_indexing.py >>> arr = np.arange(10) >>> arr array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>>arr[5] 5 >>> arr[5:8] array([5, 6, 7]) >>> arr[5:8] = 12 >>> arr array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])
  • 57. 누구나 TensorFlow! J. Kang Ph.D. ndarray 인덱싱  Practice5: ndarray 의 인덱싱은 참조를 사용한다. – 슬라이싱 기능: “:”를 가지고 인덱싱하는 것 – 리스트와의 중요한 차이점은 slice은 원본배열의 view라는점 – ndarray의 복사복을 얻고싶다면 arr[5:8].copy()를 사용 57 Ex14) ex_slicing.py >>> arr_slice = arr[5:8] >>> arr_slice[1] = 12345 >>> arr array([ 0, 1, 2, 3, 4, 12, 12345, 12, 8, 9]) >>> arr_slice[:] = 128 >>> arr array([ 0, 1, 2, 3, 4, 128, 128, 128, 8, 9])
  • 58. 누구나 TensorFlow! J. Kang Ph.D. ndarray 유니버설 함수  Practice6: ndarray안에 있는 데이터 원소별로 연산을 수행하는 함수 58 함수 설명 abs, fabs 각 원소의 절대값을 구한다. 복소수가 아닌 경우 에는 빠른 연산을 위해 fabs를 사용한다. sqrt 각 원소의 제곱근을 계산한다. square 각 원소의 제곱을 계산한다. Log, log10, log2 각 원소의 지수 exp^x를 계산한다. ceil 각 원소의 소수자리를 올린다. floor 각 원소의 소수자리를 버린다. modf 각 원소의 몫과 나머지를 각각의 배열로 반환한 다. Isnan, isinf 각 원소의 nan/inf 상태를 불리안값을 가지고 확 인한다. Cos, cosh, sin, sinh, tan, tanh 각 원소의삼각/쌍곡 함수
  • 59. 누구나 TensorFlow! J. Kang Ph.D. ndarray 유니버설 함수  Practice6: ndarray안에 있는 데이터 원소별로 연산을 수행하는 함수 59 함수 설명 Add 두 ndarray를 원소단위로 덧셈한다. Substract 두 ndarray를 원소단위로 뺄셈한다. Multiply 두 ndarray를 원소단위로 나눗셈한다. Divide, floor_divide 첫 번째 배열의 원소에서 두번째 배열의 원소를 나눈다. Floor_divide는 몫만 취한다. Power 첫번째 배열의 원소에서 두번쨰 배열의 원소만 큼 제곱한다. Maximum, fmax 두중 큰값을 반환 fmax는 NaN은 무시한다. Minimum, fmin 두중 작은값을 반환 fmin은 NaN은 무시한다. Logical_and, logical_or, logical_xor 각각 두 원소 간의 논리연산 결과를 반환한다. Mod 첫번째 배열원소에 두번째 배열원소로 나눈 나 머지값을 반환한다.
  • 60. 누구나 TensorFlow! J. Kang Ph.D. LAB1: Random walk 문제  계단을 0층 부터 시작하여 같은 확률로 계단을 한칸 올라가거 나 내려갈수 있다.  시행횟수에 따른 계단 층수를 시뮬레이션 해보자 – 초기위치: position = 0 – 시행횟수: step = 10  random walk 값이 음수가 되는 값만 출력해보자  Numpy를 사용해서 구현해보자 – np.where() – np.random.randint(2,size=1) – np.cumsum() – For문 IF문 사용  참고 github link: https://github.com/jwkanggist/EveryBodyTensorFlow/blob/master/lab1_randomw alk.py 60
  • 61. 누구나 TensorFlow! J. Kang Ph.D. 1. 머신러닝 가족에게 설명하기 - 머신러닝 이란? - 최근에 머신러닝이 각광받는 이유 - 머신러닝의 3대 요소 - 머신러닝의 종류 - 머신러닝에서의 Trade-off 61
  • 62. 누구나 TensorFlow! J. Kang Ph.D. Reference : Machine learning fundamental 62 Hands-On Machine Learning With Scikit-Learn & TensorFlow 2017 Aurelien Geron, Google O’Reilly 본 강의는 해당 교재를 참고했음을 사전에 알립니다.
  • 63. 누구나 TensorFlow! J. Kang Ph.D. What Machine Learning? 63 머신러닝은 무엇인가?
  • 64. 누구나 TensorFlow! J. Kang Ph.D. What Machine Learning? 64 머신러닝은 무엇인가? – 컴퓨터가 지능을 갖는 것? 인공지능? AlphaGo? – 데이터를 통해서 예측하는 것? – 컴퓨터에게 알려주는거?
  • 65. 누구나 TensorFlow! J. Kang Ph.D. What Machine Learning? 65 Definition (Machine Learning): Field of study that gives computers the ability to learn without being explicitly programmed. - Arthur Samuel, 1959 머신러닝은 무엇인가? – 컴퓨터가 지능을 갖는 것? 인공지능? AlphaGo? – 데이터를 통해서 예측하는 것? – 컴퓨터에게 알려주는거?
  • 66. 누구나 TensorFlow! J. Kang Ph.D. What Machine Learning? 66 머신러닝은 무엇인가? – 컴퓨터가 지능을 갖는 것? 인공지능? AlphaGo? – 데이터를 통해서 예측하는 것? – 컴퓨터에게 알려주는거? Definition (Machine Learning): A computer program is said to learn rom experience E with respect to some task T and some performance measure P, if its performance on T, measured by P, is improved with experience E. - Tom Mitchell, 1997
  • 67. 누구나 TensorFlow! J. Kang Ph.D. What Machine Learning? 67 머신러닝은 무엇인가? – 임의의 업무 생산성/정확성/능률 (P) 의 척도 대해서 데이터라는 경험 (E) 을 통해서 컴퓨터가 업무 (T) 를 볼수 있도록 훈련시키는 일 Definition (Machine Learning): A computer program is said to learn rom experience E with respect to some task T and some performance measure P, if its performance on T, measured by P, is improved with experience E. - Tom Mitchell, 1997
  • 68. 누구나 TensorFlow! J. Kang Ph.D. 머신러닝의 구성요소 머신러닝을 하기위해서 무엇이 필요한가? – 경험 (E): Training data Set – 업무 (T): System or model to be learned – 척도 (P): performance measure, accuracy
  • 69. 누구나 TensorFlow! J. Kang Ph.D. 머신러닝의 구성요소 머신러닝을 하기위해서 무엇이 필요한가? – 경험 (E): Training data Set – 업무 (T): System or model to be learned – 척도 (P): performance measure, accuracy 69 Training Step: T: Spam mail Filtering system (E):User flagged Spam list (T): Smap Filtering system (P): Filtering Accuracy Training Collecting Training DataSpam ✔ Spam ✔ Spam ✔
  • 70. 누구나 TensorFlow! J. Kang Ph.D. 머신러닝의 구성요소 머신러닝을 하기위해서 무엇이 필요한가? – 경험 (E): Training data Set – 업무 (T): System or model to be learned – 척도 (P): performance measure, accuracy 70 Tasking Step: T: Spam mail Filtering system Arbitrary Input SPAM Filtering (spam classification)
  • 71. 누구나 TensorFlow! J. Kang Ph.D. Why Machine Learning? Conventional approach – 단편적인 현상을 통해 프로그래머가 인지한 몇가지 rule를 가지고 문제를 해결 • 보편적인 rule 을 만들기 어려움 • 실제 문제를 해결을 보장하지 않음 • 결과물은 엔지니어의 경험에 매우 의존적임 71 Study the Problem Establish rules Evaluate Analyze errors Release!
  • 72. 누구나 TensorFlow! J. Kang Ph.D. Why Machine Learning? ML approach – 데이터로 부터 문제 해결을 위한 보편적인 rule을 찾는다. • Training data set에 대한 일반화 • 데이터에 의한 대한 문제해결 72 Study the Problem Train ML algorithm Evaluate Analyze errors Release! Lots of Data
  • 73. 누구나 TensorFlow! J. Kang Ph.D. Why Machine Learning? ML approach – 데이터로 부터 문제 해결을 위한 rule을 자동으로 찾는다. • 머신러닝이 진정한 의미가 있기 위해서는… • 빅데이터가 있고 • 자동으로 시스템이 러닝될 수 있다. 73 Train ML algorithm Evaluate Solution Update Data Release! Lots of Data Can be automated
  • 74. 누구나 TensorFlow! J. Kang Ph.D. ML approach 특징 요약 – All from data!! • Larger data  Better systems • Simple but universal rule • Easy update rule given new data • Getting unrecognized insights about complex problems Why Machine Learning? 74 Inspect the solution Lots of Data Study the Problem Train ML algorithm Iterate If needed Understand the problem better Solution New Insight
  • 75. 누구나 TensorFlow! J. Kang Ph.D. Why Machine learning Now? 머신러닝 3요소 – 빅데이터: SmartDevices, IoT, sensor networks – 알고리즘: deep learning / reinforcement-learning – 컴퓨팅 파워: GPU, parallel / distributed computing 75
  • 76. 누구나 TensorFlow! J. Kang Ph.D. Why Machine learning Now? 머신러닝 3요소 – 빅데이터 >> 컴퓨팅 파워 > 알고리즘 • 품질 좋은/많은 량의 데이터만 있으면 머신러닝 시스템의 성능을 무족건 좋다. 76
  • 77. 누구나 TensorFlow! J. Kang Ph.D. Why Machine learning Now? 머신러닝 3요소 – 빅데이터 >> 컴퓨팅 파워 > 알고리즘 • 품질 좋은/많은 량의 데이터만 있으면 머신러닝 시스템의 성능을 무족건 좋다.  그럼 데이터만 있으면 엔지니어는 이제 필요없나요 ? – 아니요!: 위 세가지는 항상 모두 주어지지 않음  We need ”Domain Adaptation !!”  목표: 성능개선 + 러닝 시간 단축 + 데이터 용량 최소화 77
  • 78. 누구나 TensorFlow! J. Kang Ph.D. We Still Need ML Engineers! Domain Adaptation 1 – Feature Extraction – 데이터를 특징을 잘 뽑아서 데이터량을 줄인다 – Simplify data without losing too much information ! – Feature extraction을 잘하기 위해서는 도메인 지식이 중요 Domain Adaptation 2 – Learning Environment – 모바일에서는 컴퓨팅 파워와 데이터 저장소가 부족 – 긴 러닝 타임도 부담 – Google’s Approach in Mobile ML env. (utblink) • Pre-training model in cloud • Local fine-Tuning with private data in mobile APP • Run prediction engine in mobile APP 78 + Cloud ML
  • 79. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems  학습방식에 따라서 – Supervised – Unsupervised – Reinforcement  데이터 업데이트 방식에 따라서 – Batch-based learning – Online-based learning 79
  • 80. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Supervised learning – Training data set이 시스템의 입력과 출력의 pair 로 구성된 경우 • 여기서 출력을 label이라고 함 • 여기서 입력을 instance (또는 feature)라고 함 80 2 1 1 2 1 2 ? New instance Training Set Instance Label
  • 81. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Supervised learning – Training data set이 시스템의 입력과 출력의 pair 로 구성된 경우 – 컴퓨터가 러닝하는데 선생이 있어서 답(label)을 알려주는 경우 – 머신 러닝의 가장 보편적인 형태 81 An example: Smap filter revisited T: Spam mail Filtering system (E):User flagged Spam list (T): Smap Filtering system (P): Filtering Accuracy Training Collecting Training DataSpam ✔ Spam ✔ Spam ✔
  • 82. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Supervised learning – Regression – Classification Models in Supervised learning – Linear Models – Neural networks – SVM, RVM 82
  • 83. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Unsupervised learning – Training data set이 입력만 있는 경우 – 컴퓨터가 러닝하는데 선생님이 없는 경우 – 세상에 존재하는 대부분의 데이터는 label이 없다 83 Training Set
  • 84. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Unsupervised learning – Training data set이 입력만 있는 경우 – 컴퓨터가 러닝하는데 선생님이 없는 경우 – 세상에 존재하는 대부분의 데이터는 label이 없다 84 Training Set
  • 85. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Unsupervised learning – Clustering – Dimensionality reduction • The goal is to simplify the data without losing too much information – Feature extraction: • which is a kind of dimensionality reduction • Reducing computational& memory cost for ML • Making ML system efficient! • Domain knowledge is required 85
  • 86. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Semisupervised learning – Combination of supervised and unsupervised learning • 1) Supervised learning with labeled data • 2) Unsupervised learning with unlabeled data • 3) Self-labelling of unlabeled data using step1 and step2 • 4) re-training of the system 86 이미지 출처: https://www.researchgate.net/publication/277605013_Signal_ Processing_Approaches_to_Minimize_or_Suppress_Calibration _Time_in_Oscillatory_Activity-Based_Brain- Computer_Interfaces
  • 87. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Semisupervised learning – Training data set = labeled data + unlabeled data – Combination of supervised and unsupervised learning 87 feature1 Feature 1 Feature 2
  • 88. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Semisupervised learning – Training data set = labeled data + unlabeled data – Combination of supervised and unsupervised learning 88 Supervised learning with Labeled data feature1 Feature 1 Feature 2
  • 89. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Semisupervised learning – Training data set = labeled data + unlabeled data – Combination of supervised and unsupervised learning 89 Labeling unlabed data With trained classifier Feature 1 Feature 2
  • 90. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Semisupervised learning – Training data set = labeled data + unlabeled data – Combination of supervised and unsupervised learning 90 Re-training and classifier update Feature 1 Feature 2
  • 91. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Reinforcement learning – 컴퓨터가 시간에 따라서 보상을 통해서 최고의 행동전략을 환경으로 부터 스스로 배워가는 것 – 결과로 부터 스스로 학습법 91 [이미지 출처] https://www.analyticsvidhya.com/bl og/2016/12/getting-ready-for-ai- based-gaming-agents-overview-of- open-source-reinforcement- learning-platforms/
  • 92. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems MarI/O (2015) – 목적: 게임에 대한 연속적인 버튼선택 러닝 – https://www.youtube.com/watch?v=qv6UVOQ0F44 – 게임의 각 프레임 상황을 supervised DNN으로 모델링 • 입력: 프레임 화면 이미지 • 출력: 각 화면 이미지에 대한 버튼선택 (A,B,X,Y,R,L,up,down,right,left) – 강화학습 • 각 프레임의 환경을 “State”로 정의 (블록배치, enemy위치) • 현재 state의 Action (버튼 선택)에 따라 다음 state가 정해진다. • 각 State 에 대해서 Action (버튼 선택)에 따른 ”Reward” (Fitness) 를 피드백 – 살아있으면 + 1 – 버섯, 코인, 먹으면 + X – Enemy 에 접촉해서 데미지를 입으면 - Y • Reward가 높은 state의 action에 대한 확률이 높인다 • Reward는 과거 N-state에 대해서 피드백 된다. (동적) 92
  • 93. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Google DeepMind 벽돌깨기 (2016) – https://www.youtube.com/watch?v=V1eYniJ0Rnk – AI가 살아남는 것을 넘어서 편하게 점수를 따는 전략을 스스로 찾아냄 – AI가 스스로 행동전략을 진화시킨 첫번째 케이스로 알려짐 93
  • 94. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Batch learning – Training data set를 통째로 넣어서 한번에 시스템을 러닝하는 것 • 장점: simple / 주어진 데이터 안에서 안정적인 동작 • 단점: – 급격하게 변화하는 데이터 대처에 비효율 – Learning cost가 크다 » 계산량: 데이터가 크니깐 크다 » 메모리: training data를 항상 보관하고 있어야 한다. » 시간 : 데이터가 크니깐 러닝타임이 길다. 94
  • 95. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Online Learning – 시스템을 러닝한 후에도 instance data가 들어오면 online으로 시스템을 incrementally 업데이트 할수 있는 학습법 95 Evaluate Solution Lots of Data Train ML algorithm Run and Update Model Release! New Data New Data New Data
  • 96. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Online Learning – 시스템을 러닝한 후에도 instance data가 들어오면 online으로 시스템을 incrementally 업데이트 할수 있는 학습법 – 하드웨어의 계산부담을 줄이기위해서 batch learning을 online learning으로 쪼개서 할수도 있음 (실제로 다 그렇케 함) 96 Study the Problem Train online ML algorithm Analyze errors Evaluate Release! Lots of Data Chop into pieces
  • 97. 누구나 TensorFlow! J. Kang Ph.D. Types of ML Systems Online Learning – 장점: • 변화하는 데이터에 바로바로 대처 • 러닝 비용을 낮출 수 있다 • Training data를 들고 있지 않아도 된다. – 단점: 데이터의 변화에 너무 시스템이 민감해질 수 있다. 97
  • 98. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML Model selection – Underfitting – Overfitting Curse of dimensionality 98
  • 99. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML Model selection – 대상으로하는 데이터의 범주에 맞는 머신러닝 모델 선택이 중요하다! – 목적으로하는 데이터 범주에 대해서 99
  • 100. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML Model selection – 대상으로하는 데이터의 범주에 맞는 머신러닝 모델 선택이 중요하다! – 목적으로하는 데이터 범주에 대해서 • 설명을 잘못하는 모델  예측 오류값이 매우 크다 (Underfitting) 100 Training data Validation data
  • 101. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML Model selection – 대상으로하는 데이터의 범주에 맞는 머신러닝 모델 선택이 중요하다! – 목적으로하는 데이터 범주에 대해서 • 설명을 잘못하는 모델  예측 오류값이 매우 크다 (Underfitting) • 훈련데이터에 대해서만 작은 오류값을 출력하는 모델 (Overfitting) –  일반화된 예측결과를 제공 못함 101 Training data Validation data
  • 102. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML Model selection – 대상으로하는 데이터의 범주에 맞는 머신러닝 모델 선택이 중요하다! – 목적으로하는 데이터 범주에 대해서 • 설명을 잘못하는 모델  예측 오류값이 매우 크다 (Underfitting) • 훈련데이터에 대해서만 작은 오류값을 출력하는 모델 (Overfitting) –  일반화된 예측결과를 제공 못함 • 필요이상으로 복잡하지 않은 모델 102 Training data Validation data
  • 103. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML Model selection – 간단한 모델 • Good: – 1) 주어진 데이터 셋에 대해서 일반화 된 결과를 내놓는다. – 2) 작은 데이터 셋을 가지고 훈련이 가능하다. – 3) 작은 범위의 데이터 셋에 대해서 성능이 복잡한 모델 보다 좋다. • Bad : – 1) Underfitting: 다양한/넓은 범위의 데이터 셋에 대해서 설명 (모델링) 하지 못한다. – 복잡한 모델 • Good: – 1) 다양한/넓은 범위의 데이터 셋에 대해서 설명(모델링)이 가능하다. • Bad : – 1) 작은 범위의 데이터 셋에 대해서 성능이 간단한 모델에 비해서 열화된다. – 2) 훈련을 위해서 다양하고 큰 데이터 셋이 필요하다. – 3) Overfitting: 대상으로 하는 데이터 셋에 대해서 일반화 된 결과를 내 놓기 어렵다. 103
  • 104. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML Model selection 104 Given a certain size of data… Validation error
  • 105. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML The Curse of Dimensionality – 데이터의 차원이 증가할 수록 학습에 필요한 데이터의 개수를 기하급수적으로 늘어나는 문제 – 같은 비율의 공간을 모델링하기 위해서 필요한 데이터 량이 급속도록 증가 – Example: 공간의 20%를 채우기 위해서 필요한 데이터 수 • 0.2(1차원)  0.9(2차원)  1.74 (3차원) 105 [이미지 출처] http://www.visiondummy.com/2014/04/curse- dimensionality-affect-classification/ 1차원 데이터 0.2 = 0.2 2차원 데이터 0.2 = 0.45 * 0.45 3차원 데이터 0.2 = 0.58 * 0.58 * 0.58
  • 106. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML The Curse of Dimensionality – 저차원에서는 충분했던 데이터 양도 고차원이 되면 공간(학습 모델)을 설명하기에 부족해 질수 있음 • 데이터 부족  Overfitting문제 발생 106 [이미지 출처] http://www.visiondummy.com/2014/04/curse- dimensionality-affect-classification/
  • 107. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML The Curse of Dimensionality – 저차원에서는 충분했던 데이터 양도 고차원이 되면 공간(학습 모델)을 설명하기에 부족해 질수 있음 • 데이터 부족  Overfitting문제 발생 107 [이미지 출처] http://www.visiondummy.com/2014/04/curse- dimensionality-affect-classification/
  • 108. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML The Curse of Dimensionality – 저차원에서는 충분했던 데이터 양도 고차원이 되면 공간(학습모델)을 설명하기에 부족해 질수 있음 – 모델을 설명하기에 데이터가 부족해? 108
  • 109. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML The Curse of Dimensionality – 저차원에서는 충분했던 데이터 양도 고차원이 되면 공간(학습모델)을 설명하기에 부족해 질수 있음 – 모델을 설명하기에 데이터가 부족해? Overfitting문제 – 해결책 • 데이터 양 + 다양성 늘리기 • 중요한 특징만 뽑자  데이터차원 축소 (Dimensionality Reduction) – Feature Extraction – Feature Selection • 사전지식 이용  Regularziation 109
  • 110. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML Raw data vs Featured data 110 Raw data Featured Data No information loss  Discover Unrecognized patterns Some information loss  Degrade performance sometime Curse of dimensionality Dimensionality Reduction Higher computational cost  Slower learning time Lower computation cost  Faster learning time Large-scale storage is required Small-scale storage is fine
  • 111. 누구나 TensorFlow! J. Kang Ph.D. Trade-off in ML Big data vs. Small data 111 Big data Small Data No overfitting to training data Overfitting to training data is possible Working with complex models for difficult problems Working with simple models for easy problems Higher computational cost  Slower learning time Lower computation cost  Faster learning time Large-scale storage is required Small-scale storage is fine

Editor's Notes

  1. 안녕하세요 MATLAB 1일차 첫 시간을 시작하겠습니다
  2. 강의를 시작하기 전에 제 소개를 잠깐 드리면 저는 현재 정보통신과 박사과정에 재학중인 학생이고요 강재욱이라고 합니다 즉 여러분의 학교 선배가 입니다 저는 현재 김기선 교수님과 연구를 같이하고 있습니다 연구분야는 간단하게 얘기하면 선형 시스템의 저복잡도 역변환 알고리즘을 연구하고 있습니다 자세한 내용은 저의 홈페이지나 저희 연구실 홈페이지에서 보실수 있습니다. 강의내용에 대한 질문이나 기타 저희 연구에 관심이 있으신 분은 이메일로 연락주시면 자세히 설명해 드리도록 하겠습니다 또한 기타 도움이 필요하신 경우에 연락 주시기바랍니다
  3. 본 matlab 강의는 총 3일에 걸쳐서 3명의 강사가 진행합니다. 그 차례는 다음과 같습니다 따라서 저는 여러분 오늘 아침시간과 내일 아침시간을 함께 즐겁게 보내게 되겠습니다
  4. 본 matlab 강의는 총 3일에 걸쳐서 3명의 강사가 진행합니다. 그 차례는 다음과 같습니다 따라서 저는 여러분 오늘 아침시간과 내일 아침시간을 함께 즐겁게 보내게 되겠습니다
  5. 본 matlab 강의는 총 3일에 걸쳐서 3명의 강사가 진행합니다. 그 차례는 다음과 같습니다 따라서 저는 여러분 오늘 아침시간과 내일 아침시간을 함께 즐겁게 보내게 되겠습니다
  6. 먼저 메트랩 프로그래밍의 가장 일반적인 부분에 대해서 애기를 해보겠습니다 강의 중간에 질문이 있으시면 언제든지 손을 들고 말씀해 주세요 사실 맵틀랩도 하나의 프로그래밍 언어이기 때문에 그 기초는 다른 언어와 매우 흡사합니다 혹시 매트랩 프로그래밍에 경험이 있으신 분 얼마나 되나요? 아니면 씨언어? 잘하시는 분들은 좀 지루할 수도 있겠지만 간단하게 짚어보도록 하겠습니다.
  7. 저의 발표 자료와 강의 구성은 아타웨이 교수의 책을 참고로 하였습니다 책의 PDF파일을 제가 가지고 있습니다 관심있으신 분은 연락 주세요
  8. 여러분이 지난 2틀 동안 메스메티카를 공부한 걸로 압니다 Matlab는 메스메티카와는 다르게 신호처리 통게적 시뮬레이션 에 특화된 프로그래밍입니다 그 이유는 ….. 따라서 메스메티카와 비교했는때 계산에 장점을 가집니다. 반면에 심볼릭 연산 즉 수식을 유도하는 것 적분 미분 푸는일은 메스메티카가 더 잘합니다 용도에 따라서 두 프로그램을 자유자재로 사용하시면 여러분의 미래의 연구에 매우 강력한 도구가 될 것입니다.
  9. 여러분이 지난 2틀 동안 메스메티카를 공부한 걸로 압니다 Matlab는 메스메티카와는 다르게 신호처리 통게적 시뮬레이션 에 특화된 프로그래밍입니다 그 이유는 ….. 따라서 메스메티카와 비교했는때 계산에 장점을 가집니다. 반면에 심볼릭 연산 즉 수식을 유도하는 것 적분 미분 푸는일은 메스메티카가 더 잘합니다 용도에 따라서 두 프로그램을 자유자재로 사용하시면 여러분의 미래의 연구에 매우 강력한 도구가 될 것입니다.
  10. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  11. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  12. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  13. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  14. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  15. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  16. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  17. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  18. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  19. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  20. 먼저 메트랩 프로그래밍의 가장 일반적인 부분에 대해서 애기를 해보겠습니다 강의 중간에 질문이 있으시면 언제든지 손을 들고 말씀해 주세요 사실 맵틀랩도 하나의 프로그래밍 언어이기 때문에 그 기초는 다른 언어와 매우 흡사합니다 혹시 매트랩 프로그래밍에 경험이 있으신 분 얼마나 되나요? 아니면 씨언어? 잘하시는 분들은 좀 지루할 수도 있겠지만 간단하게 짚어보도록 하겠습니다.
  21. 크렇기 때문에 매틀랩 프로그램은 다양한 함수 파일과 스크립트 파일로 구성되겠죠 자 그럼 본격적으로 프로그래밍에 들어가보죠 프로그래밍 방식에는 여러가지가 있지만 매트랩 프로그래밍은 모듈러 프로그래밍 입니다 즉 전체의 작업을 여러 개의 작은 ……..모듈로 나누고 각 모듈을 함수로 구성하면서 그 함수를 스크립트에 모아서 실행시키는 거죠 알고리즘적으로 말하면 divide and conquer라고 도 하고요 Top-down프로그래밍 방식이라고도 부릅니다 여러분이 익숙한 씨언어로 견주어서 말하면 함수는 함수고 스크립트 파일은 메인함수에 해당됩니다
  22. 크렇기 때문에 매틀랩 프로그램은 다양한 함수 파일과 스크립트 파일로 구성되겠죠 자 그럼 본격적으로 프로그래밍에 들어가보죠 프로그래밍 방식에는 여러가지가 있지만 매트랩 프로그래밍은 모듈러 프로그래밍 입니다 즉 전체의 작업을 여러 개의 작은 ……..모듈로 나누고 각 모듈을 함수로 구성하면서 그 함수를 스크립트에 모아서 실행시키는 거죠 알고리즘적으로 말하면 divide and conquer라고 도 하고요 Top-down프로그래밍 방식이라고도 부릅니다 여러분이 익숙한 씨언어로 견주어서 말하면 함수는 함수고 스크립트 파일은 메인함수에 해당됩니다
  23. 사용자 함수정의를 연습해 보기 위해서 하나의 예를 들도록하겠습니다 반지름 값을 입력인자로 받아서 원의 원주와 넓이를 계산하는 함수 입니다 한번 어러분의 맵틀랩을 키고 타이핑 해보세요 그리고 파일 이름은 함수이름과 동일하게 저장하도록합니다 원주와 넓이를 계산공식은 간단하기 때문에 바디를 작성해 보세요
  24. 사용자 함수정의를 연습해 보기 위해서 하나의 예를 들도록하겠습니다 반지름 값을 입력인자로 받아서 원의 원주와 넓이를 계산하는 함수 입니다 한번 어러분의 맵틀랩을 키고 타이핑 해보세요 그리고 파일 이름은 함수이름과 동일하게 저장하도록합니다 원주와 넓이를 계산공식은 간단하기 때문에 바디를 작성해 보세요
  25. 사용자 함수정의를 연습해 보기 위해서 하나의 예를 들도록하겠습니다 반지름 값을 입력인자로 받아서 원의 원주와 넓이를 계산하는 함수 입니다 한번 어러분의 맵틀랩을 키고 타이핑 해보세요 그리고 파일 이름은 함수이름과 동일하게 저장하도록합니다 원주와 넓이를 계산공식은 간단하기 때문에 바디를 작성해 보세요
  26. 사용자 함수정의를 연습해 보기 위해서 하나의 예를 들도록하겠습니다 반지름 값을 입력인자로 받아서 원의 원주와 넓이를 계산하는 함수 입니다 한번 어러분의 맵틀랩을 키고 타이핑 해보세요 그리고 파일 이름은 함수이름과 동일하게 저장하도록합니다 원주와 넓이를 계산공식은 간단하기 때문에 바디를 작성해 보세요
  27. 사용자 함수정의를 연습해 보기 위해서 하나의 예를 들도록하겠습니다 반지름 값을 입력인자로 받아서 원의 원주와 넓이를 계산하는 함수 입니다 한번 어러분의 맵틀랩을 키고 타이핑 해보세요 그리고 파일 이름은 함수이름과 동일하게 저장하도록합니다 원주와 넓이를 계산공식은 간단하기 때문에 바디를 작성해 보세요
  28. 사용자 함수정의를 연습해 보기 위해서 하나의 예를 들도록하겠습니다 반지름 값을 입력인자로 받아서 원의 원주와 넓이를 계산하는 함수 입니다 한번 어러분의 맵틀랩을 키고 타이핑 해보세요 그리고 파일 이름은 함수이름과 동일하게 저장하도록합니다 원주와 넓이를 계산공식은 간단하기 때문에 바디를 작성해 보세요
  29. 사용자 함수정의를 연습해 보기 위해서 하나의 예를 들도록하겠습니다 반지름 값을 입력인자로 받아서 원의 원주와 넓이를 계산하는 함수 입니다 한번 어러분의 맵틀랩을 키고 타이핑 해보세요 그리고 파일 이름은 함수이름과 동일하게 저장하도록합니다 원주와 넓이를 계산공식은 간단하기 때문에 바디를 작성해 보세요
  30. 사용자 함수정의를 연습해 보기 위해서 하나의 예를 들도록하겠습니다 반지름 값을 입력인자로 받아서 원의 원주와 넓이를 계산하는 함수 입니다 한번 어러분의 맵틀랩을 키고 타이핑 해보세요 그리고 파일 이름은 함수이름과 동일하게 저장하도록합니다 원주와 넓이를 계산공식은 간단하기 때문에 바디를 작성해 보세요
  31. 먼저 매틀랩을 구성하는 두가지 종류의 파일에 대해서 얘기해 보겠습니다. 한가지는 스크립트 파일입니다 이 파일은 간단하게 말하면 우리가 실행하는 매트랩 명령어의 모음이라고 생각하시면 됩니다. 스트립트 파일을 실행 시키면 매트랩 컴파일러는 스크립트 파일의 가장 위에있는 명령부터 차레대로 수행합니다 다른 한가지는 함수파일입니다 함수파일은 두가지 가있는데 하나는 사용자 직접 정의 하는 함수가 있고 다른 하나는 매트랩에서 일반적으로 자주 사용되는 기능을 위해서 기본적으로 제공하는 함수가 있습니다 프로그래밍에서 이런한 함수의 집합을 라이브러리라고 하는데 매트랩은 수학연산을 위한 매우 강력하고 폭 넓은 라이브러리를 제공하기 때문에 강력합니다 본 강의에서는 다양한 스크립트 파일과 함수 파일이 나올텐데요 혼란을 피하기 위해서 함수 파일은 직선 박스 안에 표시하고 스크립트파일은 점선 박스 안에 표시하겠습니다.
  32. 먼저 메트랩 프로그래밍의 가장 일반적인 부분에 대해서 애기를 해보겠습니다 강의 중간에 질문이 있으시면 언제든지 손을 들고 말씀해 주세요 사실 맵틀랩도 하나의 프로그래밍 언어이기 때문에 그 기초는 다른 언어와 매우 흡사합니다 혹시 매트랩 프로그래밍에 경험이 있으신 분 얼마나 되나요? 아니면 씨언어? 잘하시는 분들은 좀 지루할 수도 있겠지만 간단하게 짚어보도록 하겠습니다.
  33. 저의 발표 자료와 강의 구성은 아타웨이 교수의 책을 참고로 하였습니다 책의 PDF파일을 제가 가지고 있습니다 관심있으신 분은 연락 주세요