본문 바로가기
정보공유

[정보] 기계학습 / 딥러닝이란 무엇인가

by 날고싶은커피향 2017. 12. 9.


기계 학습과 신경망, 딥러닝의 기초 개념을 설명하고 있는 자료입니다.
많은 참고 하시기 바랍니다.

기계학습 / 딥러닝이란 무엇인가 from Yongha Kim

 

 
1. 기계 학습 / 딥러닝이란 무엇인가 스마일게이트모바일 iO스튜디오 2016.0329 김용하 @ysoya
 2.  인공지능? 일반인의 인식 : 자연어 처리가 가능한 인공 성격 … 에다가 인간 외형을 씌운 것 A.Iが止まらない (Ken Akamatsu)
 3.  실제로는 … 입력값으로 부터 결과 값을 내는 함수를 만들어 내는 것 하드코딩 인공지능(?) 곱셈 인공지능(?)
4.  이런 함수는 어떻게 만들 수 있을까? input = 비트맵 이미지를 입력 받아 무엇인지 출력하는 함수
5.  예를 들면 이렇게 해볼 수 있다 윤곽선 검출 Edge Detection 윤곽선 템플릿들 teapot apple bottle 윤곽선 템플릿을 겹쳐보았을 때 얼마나 잘 겹치는지를 비교하여 제일 잘 겹친 것을 선택! 30년 전이었으면 이 것으로 논문도 낼 수 있었음
6.  대학에서도 아직 가르치는 내용 컴퓨터 비전 교재입니다 앞 페이지에서 말한 내용을 포함한 각종 기하학적 전-후처리 동원
7.  성능 올리기가 쉽지 않다 반대로 돌아간 teapot은? 무늬가 있는 teapot은? 특이하게 생긴 teapot은? 배경과 섞여 있는 특이한 teapot은? 사람은? 고양이는? https://www.wikiwand.com/en/Outline_of_object_recognition 선배들이 매우 다양한 방법을 사용해봤지만, 은탄환은 없었다
8.  다른 분야도 제각기 다양한 알고리즘 시도 자연어 처리 - 형태소 분석 - 구문 트리 - 기계 번역 - 키워드 추출 음성 인식 - 음성 검출, 퓨리에 변환 - 각종 음향학적 필터 - 음소 추출 - 은닉 마르코프 모델 (HMM)
 9.  사람처럼 할 수 없을까? • 제각각 다른 로직을 작성하는 것이 아니라, • 배우면서 점점 잘하게 되는 만능 알고리즘? – 엔지니어가 일일이 튜닝하지 않아도 – 수 많은 데이터들을 통해 – 내부 동작을 스스로 구성해가며 – 기존에 고안했던 방법론 이상의 성능을 내었으면…
10.  기계 학습 : 데이터로부터 임의의 함수를 도출해보자! • 교사 학습 (supervised learning) – 입력에 대한 정답값이 있음. 대조하며 학습 – backpropagation • 비교사 학습 (unsupervised learning) – 정답 없이 입력값들만 주어짐 – clustering, autoencoder • 강화 학습 (reinforcement learning) – 입력값(액션)에 대한 평가만 주어짐 – Q-learning clustering Q-learning
 11.  다양한 기계 학습 방법론 등장 • 신경망: 인간의 뇌신경 흉내를 내보면 어떨까 • 유전자 알고리즘: 정보를 유전자로 인코딩하고 교배와 선택을 반복하면 진화하지 않을까 • 의사 결정 트리: 세상은 if-then의 반복이여 등등… 이 방법론이 수많은 역경을 딛고 현재 가장 고도화 됨
12.  신경망 모델 (1957년에 나왔음) x0 x1 y0 x2 w0 w1 w2 y0 = act( x0*w0 + x1*w1 + x2*w2 ) 활성 함수. 결과값 정규화를 위해 사용 (ex : 0보다 크면 1로 간주하고 0보다 같거나 작으면 0) 입력 노드 가중치(weight)들 출력 노드 x0는 상수 문턱값으로, -1 고정 w0~2는 -0.5 ~ 0.5로 랜덤 초기화 입력값에 대해 적절한 출력값을 내도록 w값들을 조정해보자 = 신경망 학습 x와 w 벡터 내적입니다. 참 쉽죠? 최근의 심층 신경망도 대부분의 연산은 벡터 내적입니다.
13.  신경망 모델 x0 x1 y0 x2 w0 w1 w2 OR AND x1 x2 target x1 x2 target 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1 입력값을 넣었을 때 출력값이 타겟값과 다르면 출력이 타겟값에 가까워질 수 있도록 가중치를 조정한다 △wi = η(target – result)xi 학습률 (0 ~ 1) 기초적인 이진 논리를 배운다고 해봅시다
14.  이것이 단층 퍼셉트론 x0 x1 y0 x2 w0 w1 w2 수학적으로는 n 차원 선형 분리 함수(hyperplane)의 계수를 찾아내는 과정임 https://en.wikipedia.org/wiki/Perceptron
 15.  그러나 문제 발생 어리석은 중생들아 신경망으론 XOR 학습이 안됨요 : 수학적으로 증명하심 문제 많으니 연구 그만하라 Perceptrons (1969) 심볼릭 AI의 거두였던 고 Minsky옹은 사술에 현혹되는 제자들을 두고 볼 수가 없어 논문을 썼다 https://en.wikipedia.org/wiki/Perceptrons_(book) 신경망은 그 뒤로 10년간 암흑기 AND, OR와 달리, XOR는 선 하나로 분류할 수 없다
16.  다층 신경망 (MLP : Multi-Layer Perceptron) 1980~ • 다층 신경망을 학습시키는 새 알고리즘( Backpropagation ) 으로 XOR 문제 돌파 – 하지만 노이즈에 취약 – 층을 여럿 쌓으면 학습이 잘 안됨 – 전처리가 필요 (edge detection… ㅜ.ㅜ) – 어느 이상 성능이 안올라가네? • 역시 안돼… https://en.wikipedia.org/wiki/Vanishing_gradient_problem 잠깐 다시 유행했지만, 고도화된 다른 방법들을 능가하지 못했습니다 https://en.wikipedia.org/wiki/Backpropagation
 17.  심층 신경망 (DNN : Deep Neural Network) 2010~ • 여러 층을 효율적으로 학습 시킬 수 있는 방법들이 등장! • 빡세게 학습 돌릴 수 있는 방대한 트레이닝 데이터와 • 초 빠른 성능의 컴퓨터 (GPU) 전처리도 필요가 없다! 그러나 기존 다층 신경망의 한계를 2010년께 심층 신경망으로 돌파! 신경망 층이 깊어서 deep 입니다
18.  심층 신경망 심층 학습 방법의 예 : Autoencoder 중간층의 노드 수를 줄이면서도 입력값과 출력값이 같아질 수 있도록 가중치 값을 학습 비교사 학습 가능 이것을 반복해서 신경망 층을 쌓아갈 수 있다 입력(비트맵 이미지)과 출력(‘cat’) 사이의 큰 간극을 교사학습을 하지 않고도 채워나갈 수 있네?
19.  심층 신경망 • 입력에 가까운 노드는 저수준 개념을, 출력에 가까운 노드는 고수준 개념을 추상화함
20.  결과, 기존 방법론을 다 발라버림 이미지 인식 에러율
21.  인간이 0.1초 (뉴런이 10번 동작하는 시간) 이내에 할 수 있는 것이면 (그게 무엇이든) 컴퓨터도 10단계 정도의 인공신경망으로 해낼 수 있다!
22.  이미지 인식 이외의 분야로 확장 음성 인식도 급격하게 에러율 내려감 http://deview.kr/2014/session?seq=26 AlphaGo (2016) 강화 학습으로 방대한 탐색 공간에 대한 고수준 전략을 수행할 수 있게됨
23.  단어 같이 입력 공간이 퍼져 있는 데이터? 고래 망치 서울 유황 오리 단어 종류 만큼의 차원이 필요?! 수십만 차원에 퍼져있는 데이터? ‘개념 차원’으로 프로젝션하여 처리 주변에 출현한 단어들을 고려한 클러스터링 word2vec (자세한 설명은 생략) Sparse input space
 24.  Sequence to sequence RNN / LSTM 신경망 모델 사용 (자세한 설명은 생략) Recurrent NN Long Short-Term Memory 번역 (text to text) 현재 구글 번역기 7월에 로이터가 언급했듯, 좌석 구성이 바로 최신 장치들 사이에서의 다툼의 연료가 되고 있다 딥뉴럴넷 번역 7월에 로이터가 언급했듯, 좌석의 구성이 바로 최신 비행기들 사이에서의 다툼을 벌이고 있는 분야이다 인간 번역 7월에 로이터가 언급했듯, 좌석 배치가 바로 최신 제트기들이 다툼을 벌이고 있는 분야이다
25.  심층 신경망들의 조합 이미지를 인식하는 DNN(Deep Neural Network) + 설명문 작성 DNN (image to text)
 26.  심층 신경망들의 조합 이미지를 인식한 뒤, 질문을 파악하여 답을 내놓음 (Question Answering)
 27.  특이점이 몇 년 내에 오는 것 아닐까요? ㅜ.ㅜ
28.  아직 괜찮다! : 돌파구가 몇 번 더 필요 • 적은 데이터로도 학습할 수 있어야 함 알파고 초기 학습에 3천만개의 교사학습 데이터가 필요했고, 이후 매일 수십만번의 강화 학습 반복 그러나, 실세계에서 동작하는 로봇은 가동 시간과 공간의 물리적인 제약이 있고 시행착오 도중 고장날 수도 있다… $$$
29.  아직 괜찮다! : 돌파구가 몇 번 더 필요 • 부가 학습에 제약이 있다 성능은 꾸준히 올릴 수 있으나, 도중에 학습 방침을 변경하는 것은 곤란 인간은 기존 지식을 응용하여 적응하는 추가 학습을 빠르게 할 수 있으나 현재의 신경망은 처음부터 다시 학습해야 함
30.  아직 괜찮다! : 돌파구가 몇 번 더 필요 • 기본적으로는 복잡한 함수의 근사 인간의 사고는 다양한 신경망 컴포넌트의 공동 작업. 어떻게 각 컴포넌트의 결과를 취합하여 보다 고도의 지능 활동으로 연결할 수 있을까? (아직 이런 것들은 인간이 휴리스틱하게 구성하고 있다) ‘관심’이란 무엇인가? ‘의식’이란 무엇인가? ‘의지’란 무엇인가? 최근엔 인지심리와 뇌과학의 성과를 신경망으로 모델화 하기 위해 노력중…
31.  일반인이 보는 인공지능으로 돌아가서… 날라리 10대 소녀 Tay https://www.tay.ai/ 셋 다 MS 것. 이 녀석들 의외로 덕후였습니다. 코타나 동생 微軟小冰 http://www.msxiaoice.com/ 여고생 린나 http://rinna.jp/rinna/ 자연어 처리가 가능한 인공 성격들
32.  FAIL ! 일반인들과의 대화를 통해 학습하도록 했더니 하루도 안되어 흑화함 범용적인 AI는 아직 걸음마 단계이며 보완해야 할 과제가 많이 남아 있다 하지만 우리 세대에 결국 초지능이 나올 확률이 매우 높으므로, 미리 대비해야함 https://www.ted.com/talks/nick_bostrom_what_happens_when_our_computers_get_smarter_than_we_are
 33.  프로그래머는 안전할까? • 프로그래밍도 Sequence (요구사항) to Sequence (코드) 작업 다만, 불완전한 요구사항으로부터 무결한 코드를 만들려면 다양한 사전 지식을 활용해야 함 일종의 번역 하스스톤 카드 설명을 보고 기능을 코딩하는 AI : 정형화된 도메인에서는 이미 코드 자동 생성이 가능 Latent Predictor Networks for Code Generation http://arxiv.org/pdf/1603.06744.pdf
 34.  AI에 지지 않기 위해 공부합시다 • Python + Theano(혹은 TensorFlow)가 요즘 딥러닝계의 Matlab • 쉽게 딥러닝 테스트 해볼수 있는 유틸리티 라이브러리도 나와 있고 튜토리얼도 많이 있습니다 http://keras.io/ http://deeplearning.net/reading-list/tutorials/
 35.  Q & A
 36.  APPENDIX
 37.  게임에 적용해볼 수 있을까요? 어떤 함수를, 어떤 방식으로 학습시킬 것인가? 를 고려해야 함 • 딥러닝 NPC AI ? – 뭘 어째얄지… FSM이나 BT 같은 기존 방식을 통으로 대체하는 것은 허들이 높습니다. – 챗봇? 타겟 셀렉션(어그로)을 신경망으로? 등 도메인을 좁혀서 접근합시다. • 이상 행동 탐지 : 봇 탐지, 어뷰징 탐지 – 최근 N분간의 플레이이어 액션을 입력으로 하여, 이상 행동인지 판정 – 비교사학습으로 접근하는 것이 좋다 교사학습 하려면 이상 행동을 많은 예제를 통해 모델링 가능해야 함 • 동적인 레벨 디자인 – 플레이어의 만족 함수를 근사, 스테이지에서의 만족감을 극대화 할 수 있도록 난이도나 보상을 조정

반응형