SlideShare a Scribd company logo
1 of 14
Genetic Programming을
이용한 Machine Learning
Model 만들기
심상진
Genetic Programming?
• Genetic Algorithm과 거의 동일
• 단지, Evolution하는 대상이 Code일뿐
Genetic
Algorithm?
• 자연의 생물 유전학과
자연선택설에 기반을 둔
알고리즘
• 병렬적이며, 전역적인 탐색
알고리즘!!
• 가능한 해들을 정해진 형태의
자료구조로 표현하고, 이들을
변형시켜가면서 평가과정을
거쳐 점점 더 좋은 해들을
찾아가는 알고리즘
<Ref> http://nnpdf.hepforge.org/html/GA.html
요구 조건?
우리에게 주어진 문제를 일정한 규칙에
따라서 조작하는데 문제가 없는 형태로
표현되어야 함
(예를 들어, 방문판매원 문제의 경우
도시를 이동한 순서를 담고 있는 List)
1
Crossover와 Mutation 그 외의 기타
연산으로 부터 나온 결과들을 평가할 수
있어야 함(적합도 함수)
- 이를 통해서 이 가능해가 얼마나 문제의
정답에 가까운지를 평가할 수 있음
2
가능해가 Program
Code도?
• 우리가 풀려는 문제를 푸는 코드를
Genetic Algorithm의 기본적인
아이디어를 적용해서 만들어 낼 수
있지 않을까?
• 이게 Genetic Programming!!
GA를
적용하기
위한 조건은?
Program Code에 대한
적합도는 어떻게 계산할 수
있을까?
또한 Program Code를 어떻게
변형가능한 자료구조로
나타낼 수 있을까?
Code의 적합도 계산하기
Code의 목적을 생각하면,
문제를 얼마만큼 잘 풀었는지
검사하면 됨
C/C++와 같은 컴파일
언어가 GP의
가능해라면? – 컴파일한
후 실행시켜서 그
결과로 평가하면 됨
Python과 같은
인터프린터 언어가
GP의 가능해라면? –
그냥 해석기에게 맡기고
그 결과로 평가하면 됨
Code를 변형가능한 자료구조로 나타내기
대학교에서 컴파일러 제작 수업
또는 자료구조 수업을 들었다면,
Abstract Syntax Tree 또는 줄여서
Tree가 생각나야 함
즉, Abstract Syntax
Tree, Tree로 표현된
것을 이용하면 됨
Tree의 구성요소?
Function Set &
Terminal Set
• Function Set : {+, -, *, /, etc…}
• Terminal Set : {Integer, Double, String, …}
http://web.cs.ucdavis.edu/~vemuri/classes/ecs271/The%20GP%20Tutorial.htm
Python으로 어떻게 구현?
• Genetic Programming을 할 수 있는 Library는 꽤 있음
• gplearn : https://github.com/trevorstephens/gplearn
• deap : https://github.com/DEAP/deap
• 그 외…
http://geneticprogramming.com/software/
여기서는 직접 구현!!
• Code 보면서 설명을…
Q&A

More Related Content

Viewers also liked

[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템NAVER D2
 
Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)Tae Young Lee
 
Spm12를 이용한 fmri analysis
Spm12를 이용한 fmri analysisSpm12를 이용한 fmri analysis
Spm12를 이용한 fmri analysisTae Young Lee
 
[216]딥러닝예제로보는개발자를위한통계 최재걸
[216]딥러닝예제로보는개발자를위한통계 최재걸[216]딥러닝예제로보는개발자를위한통계 최재걸
[216]딥러닝예제로보는개발자를위한통계 최재걸NAVER D2
 
Python 2 와 3 공존하기
Python 2 와 3 공존하기Python 2 와 3 공존하기
Python 2 와 3 공존하기태환 김
 
weather-data-processing-using-python
weather-data-processing-using-pythonweather-data-processing-using-python
weather-data-processing-using-pythonmarc_kth
 
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용Jihyung Song
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호NAVER D2
 
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)Haezoom Inc.
 
[F2]자연어처리를 위한 기계학습 소개
[F2]자연어처리를 위한 기계학습 소개[F2]자연어처리를 위한 기계학습 소개
[F2]자연어처리를 위한 기계학습 소개NAVER D2
 
Speaker Diarization
Speaker DiarizationSpeaker Diarization
Speaker DiarizationHONGJOO LEE
 
One-Shot Learning
One-Shot LearningOne-Shot Learning
One-Shot LearningJisung Kim
 
Pycon2017 이성용 Dances with the Last Samurai
Pycon2017 이성용 Dances with the Last SamuraiPycon2017 이성용 Dances with the Last Samurai
Pycon2017 이성용 Dances with the Last SamuraiSungYong Lee
 
머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)홍배 김
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향홍배 김
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)Lee Seungeun
 
Developing Korean Chatbot 101
Developing Korean Chatbot 101Developing Korean Chatbot 101
Developing Korean Chatbot 101Jaemin Cho
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016Taehoon Kim
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작Tae Young Lee
 
20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기Kim Sungdong
 

Viewers also liked (20)

[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템[224] 번역 모델 기반_질의_교정_시스템
[224] 번역 모델 기반_질의_교정_시스템
 
Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)
 
Spm12를 이용한 fmri analysis
Spm12를 이용한 fmri analysisSpm12를 이용한 fmri analysis
Spm12를 이용한 fmri analysis
 
[216]딥러닝예제로보는개발자를위한통계 최재걸
[216]딥러닝예제로보는개발자를위한통계 최재걸[216]딥러닝예제로보는개발자를위한통계 최재걸
[216]딥러닝예제로보는개발자를위한통계 최재걸
 
Python 2 와 3 공존하기
Python 2 와 3 공존하기Python 2 와 3 공존하기
Python 2 와 3 공존하기
 
weather-data-processing-using-python
weather-data-processing-using-pythonweather-data-processing-using-python
weather-data-processing-using-python
 
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
[ Pycon Korea 2017 ] Infrastructure as Code를위한 Ansible 활용
 
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
[221] 딥러닝을 이용한 지역 컨텍스트 검색 김진호
 
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
PYCON KR 2017 - 구름이 하늘의 일이라면 (윤상웅)
 
[F2]자연어처리를 위한 기계학습 소개
[F2]자연어처리를 위한 기계학습 소개[F2]자연어처리를 위한 기계학습 소개
[F2]자연어처리를 위한 기계학습 소개
 
Speaker Diarization
Speaker DiarizationSpeaker Diarization
Speaker Diarization
 
One-Shot Learning
One-Shot LearningOne-Shot Learning
One-Shot Learning
 
Pycon2017 이성용 Dances with the Last Samurai
Pycon2017 이성용 Dances with the Last SamuraiPycon2017 이성용 Dances with the Last Samurai
Pycon2017 이성용 Dances with the Last Samurai
 
머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)머신러닝의 자연어 처리기술(I)
머신러닝의 자연어 처리기술(I)
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
 
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
CNN 초보자가 만드는 초보자 가이드 (VGG 약간 포함)
 
Developing Korean Chatbot 101
Developing Korean Chatbot 101Developing Korean Chatbot 101
Developing Korean Chatbot 101
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
 
Deep learning framework 제작
Deep learning framework 제작Deep learning framework 제작
Deep learning framework 제작
 
20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기
 

Py con2017발표자료

  • 1. Genetic Programming을 이용한 Machine Learning Model 만들기 심상진
  • 2. Genetic Programming? • Genetic Algorithm과 거의 동일 • 단지, Evolution하는 대상이 Code일뿐
  • 3. Genetic Algorithm? • 자연의 생물 유전학과 자연선택설에 기반을 둔 알고리즘 • 병렬적이며, 전역적인 탐색 알고리즘!! • 가능한 해들을 정해진 형태의 자료구조로 표현하고, 이들을 변형시켜가면서 평가과정을 거쳐 점점 더 좋은 해들을 찾아가는 알고리즘 <Ref> http://nnpdf.hepforge.org/html/GA.html
  • 4. 요구 조건? 우리에게 주어진 문제를 일정한 규칙에 따라서 조작하는데 문제가 없는 형태로 표현되어야 함 (예를 들어, 방문판매원 문제의 경우 도시를 이동한 순서를 담고 있는 List) 1 Crossover와 Mutation 그 외의 기타 연산으로 부터 나온 결과들을 평가할 수 있어야 함(적합도 함수) - 이를 통해서 이 가능해가 얼마나 문제의 정답에 가까운지를 평가할 수 있음 2
  • 5. 가능해가 Program Code도? • 우리가 풀려는 문제를 푸는 코드를 Genetic Algorithm의 기본적인 아이디어를 적용해서 만들어 낼 수 있지 않을까? • 이게 Genetic Programming!!
  • 6. GA를 적용하기 위한 조건은? Program Code에 대한 적합도는 어떻게 계산할 수 있을까? 또한 Program Code를 어떻게 변형가능한 자료구조로 나타낼 수 있을까?
  • 7. Code의 적합도 계산하기 Code의 목적을 생각하면, 문제를 얼마만큼 잘 풀었는지 검사하면 됨 C/C++와 같은 컴파일 언어가 GP의 가능해라면? – 컴파일한 후 실행시켜서 그 결과로 평가하면 됨 Python과 같은 인터프린터 언어가 GP의 가능해라면? – 그냥 해석기에게 맡기고 그 결과로 평가하면 됨
  • 8. Code를 변형가능한 자료구조로 나타내기 대학교에서 컴파일러 제작 수업 또는 자료구조 수업을 들었다면, Abstract Syntax Tree 또는 줄여서 Tree가 생각나야 함 즉, Abstract Syntax Tree, Tree로 표현된 것을 이용하면 됨
  • 10. Function Set & Terminal Set • Function Set : {+, -, *, /, etc…} • Terminal Set : {Integer, Double, String, …}
  • 12. Python으로 어떻게 구현? • Genetic Programming을 할 수 있는 Library는 꽤 있음 • gplearn : https://github.com/trevorstephens/gplearn • deap : https://github.com/DEAP/deap • 그 외… http://geneticprogramming.com/software/
  • 13. 여기서는 직접 구현!! • Code 보면서 설명을…
  • 14. Q&A