2018년 7월 24일 화요일

5주/3강: 기계 학습의 기초

[커세라 강좌 소개] 자료기반 천문학(Data-Driven Astronomy)
-----------------------------------------------------------------
Week 5: Learning from data: regression
제5주차: 자료에서 정보 얻어내기(회귀/경향성 분석)
- Using machine learning tools to investigate your data
  수집한 자료를 조사하기 위해 기계학습 도구(분석 소프트웨어)를 활용하기
- Calculating the red-shifts of distant galaxies
  먼 은하의 적색편이 계산하기
-----------------------------------------------------------------
1강: 자료 가지고 학습하기
Lesson 1: Learning from Data / 한글자막
-----------------------------------------------------------------
2강: 우주의 규모, 거리측정
Lesson 2: The Cosmological Distance Scale / 한글자막
-----------------------------------------------------------------
3강: 기계 학습의 기초
Lesson 3: What is machine learning /  한글자막 / 영문자막

---------------------------------------------------------
{프롤로그} 기계 학습(Machine Learning)이 우리 주변에 성큼 와있지만 참 어려운 주제다. 5분짜리 동영상 강좌로 이해될 내용이 아니다. 이분법적 프로그래밍에 비하여 학습기반 프로그래밍의 기초적 의미 만이라도 전달 되길 바란다.
---------------------------------------------------------

[강의대본]



[00:06] 인간의 모양 인식(pattern recognition)능력이 매우 특출나다. 예를 들어 연구에 따르면 사람의 얼굴을 인식 하는데 0.1초면 충분하다고 한다. 아마 이런 능력을 가지고 있다는 점이 그리 놀랄일이 아닐지 모르지만 인간의 초창기 생존에 큰 영향을 줬을 것이다.



[00:21] 과학자로서 우리의 이런 능력을 애니 캐넌(Annie Cannon)과 하바드대학 천문대의 다른 인간 컴퓨터(Human Computer)가 그랬던 것처럼 별의 스펙트럼 분류에 적용해 왔다.

* 1946년 미국 항공우주국의 고속 우주비행센터의 "컴퓨터 룸"의 모습


[00:34] 때로는 인간 분류기(Human Classifier)는 자료에 대한 전반적인 이해를 가지고 있기도 했거니와 결정을 지을 때 사용할 평가표나 진단목록을 가지고 있다. 먼저 이 평가표(criteria)는 비교적 문서화 하기 쉽다. 그러나, 두번째 사항인 전반적 이해(통찰, intuition)를 글로 쓰기는 불가능하다. 어떻게 해야 우리가 문서화 할 수 없는 일을 컴퓨터 프로그램이 하도록 훈련 시킬 수 있을까?

[00:58] 초창기 지능 시스템 개발자들은 더 많은 규칙들을 세우려 하였다. 가능한 모든 경우를 상정하여 이에 따르는 고정된 규칙(hard-coded rule)의 양이 엄청난 시스템을 만들었다. 이런 류의 시스템은 (모든 경우를 다 고려하면) 성공적일 수 있지만 개발 시간이 오래걸린다. 게다가 예상치 못한 입력 혹은 애매함의 정도가 높은 입력이 주어지면 이에 대처할 능력이 부족하다. ('고정된' 규칙은 유연성이 없다)

[01:15] 반면 기계학습 알고리즘(machine learning algorithms)은 특정 규칙에 의존하지 않는다. 그대신 제공한 자료에서 양상(patterns)을 배우거나 찾아내려고 시도 한다. 기계학습 알고리즘에는 크게 두가지 범주가 있다. 비감독(un-supervised) 학습(자율학습)과 감독(supervised) 학습(지도학습)이다.



[01:30]지도학습 알고리즘은 구분해 놓은 자료로부터 학습하는 반면 자율학습 알고리즘은 자료에서 양상을 발견해 내려한다. 따라서 학습 알고리즘은 미지의 입력을 받아도 분류해 낼 수 있다. 우리는 지도 기계 학습(Supervised machine learning)에 대하여 촛점을 맞춰 보기로 한다. 대부분 천문학에서 이 방식을 채택하고 있기 때문이다. 그리고 특히 회귀(regression)와 분류(classification)의 분야에 대해서 다루기로 한다. 이번 강좌에서 슬로언 디지털 스카이 서베이(SDSS)의 은하 관측자료에서 적색편이(red-shift)를 계산하기 위한 결정 트리(Decision tree)를 작성 사용키로 한다. 예제를 활용해 지도기계학습이 어떻게 이뤄 지는지 직접 해보기로 한다. 학습 방법론의 취사선택이 중요하며 그에 따른 어려움도 강의 말미에서 다뤄본다.




[02:06] 이미 잘 알고 있는 은하를 가지고 시작한다. 우리는 이를 확실한 기준(gold standard)으로 삼기로 한다. 이번 예제에서 사용하는 이 기준은하는 적색편이가 스펙트럼으로 측정된 은하들이다. 훈련을 위해 충분히 여러가지 경우를 볼 필요가 있으므로 많은 시료를 원하기 마련이고 그 표준 은하들의 특성이 바르게 모형화 되어 향후 옳은 결과를 낳길 바란다. 또한 초기 분류에 대해 확신을 갖길 바란다. 이번 훈련용으로 사용할 은하의 적색편이는 스펙트럼 분석 기법(spectroscopic techniques)으로 계산되었다. 이는 매우 신뢰할 만한 적색편이 측정법이다. 인간 전문가에 의해 분류된 자료를 기준으로 사용하는 경우도 있다.

[02:47] 학습자료로 사용할 수 있는 또다른 선택은 비전문가 자료의 활용이다. 은하 동물원(Galaxy Zoo)은 방대한 시민 과학자들의 연구 기획인데 아마추어 천문가들의 헌신과 기계학습 방법으로 우주를 연구한다.



[03:01] 이제 다음 단계는 입력 자료에서 정해진 바에 따라 특징을 추출(extract features)하는 일이다. 때로 수작업으로 분류할 대 적용하는 기준은 특정한 특징에 따라 설계된 것이 분명하다. 예로서 다섯개의 서로다른 슬로언 필터(Sloan Filter)를 사용해 측정한 강도를 비교하므로서 얻는 색차를 이용할 것이다.



다섯개 필터는 각각 U, G, R, I, Z 다. 각 필터는 은하로부터 방출되는 빛의 일부 파장만을 측정한다. 색차를 계산하기 위해 천문학자는 이웃한 필터를 통과한 빛의 강도에서 서로 뺀다. 예를들어 U 빼기 G 를 하던가 I 빼기 Z 와 같은 식이다. 나중에 이에대해 다시 살펴본다. 어떤 특징을 활용할지 혹실치 않은 경우 원 자료에서 가능하면 많은 특징을 추린 후에 분류기로 하여금 무엇이 가장 확실한지 우선순위를 정하게 할 수 있다.



[03:48] 이제 분류 알고리즘을 선택할 차례다. 이번 예제에서는 결정 트리(decision tree)를 활용할 것이다. 여러분중에 신경망(neural network), 랜덤 포레스트(random forest), 나이브 베이즈 분류(naive Bayes classification)에 대해 들어본 적이 있을 것이다. 이렇게 여러가지 분류 알고리즘을 모두 이해하고 어떤 알고리즘이 적합한지 판단할 수 있다면 더할 나위 없다.



어떤 일에 대해서는 나이브 베이즈(Naive Bayes)) 분류가 아주 신속하나 정밀도가 떨어지기도 한다. 반면 랜덤 포레스트(Random Forest) 분류기는 정밀도는 높으나 실행이 매우 느리다. 기계학습은 매우 실험적 기준을 따른다. 몇가지 선택 가능한 서로다른 알고리즘을 시험해 보는 것도 좋다. (사용자 입장에서 비교 활용 하려면 라이브러리로 준비된 것들에서 고른다. 처음부터 모든 알고리즘을 공부하여 작성할 필요는 없다.)



[04:27] 이제 가장 중요한 지점에 도달했다. 분류된 자료를 가지고 있고 이 자료에 나온 관측 대상의 표현하는 특징을 선택하였다. 이제 선택한 분류기(알고리즘)을 알려진 (기준)자료를 가지고 먼저 훈련을 시킨다. 훈련은 기본적으로 입력과 결과 사이의 관계 모형을 확립하는 과정이다. 모형의 본질은 사용된 분류 알고리즘에 따라 다르다. 다음 강의에서 결정 트리 모형에 대하여 좀더 깊이 다뤄보겠다.

[참고] Microsoft Azure Machine Learning을 위한 알고리즘 선택 방법
https://docs.microsoft.com/ko-kr/azure/machine-learning/studio/algorithm-choice





Concept Reliability in Machine Learning*
https://pdfs.semanticscholar.org/44c5/1e13f364777d609215b3bc357b5f4d12f1d0.pdf

[04:54] 이제 가장큰 의문은 훈련시킨 분류기의 정확도가 얼마나 신뢰할 만 한가이다. 이는 인간에게 도움이 될 척도이기도 하다. 분류기의 초기 시절에는 대부분 대상들이 한번 분류되면 그만 이었다. 애니 캐넌처럼 인간 분류기는 극도로 전문적이고 세심했다. 따라서 그들의 분류 결과는 아주 믿을 만 하였다. 그렇더라도 제아무리 성실한 인간 분류기라도 실수하지 말라는 법은 없다. 같은 자료를 다른 전문가가 다시 분류해서 그 둘을 비교해 보면 된다. 그로부터 그들의 분류가 얼마나 믿을 만 한지 수치로 보여줄 것이다.



[05:32] 만일 분류기가 실수를 한다면 A로 분류될 개체가 잘못하여 B로 분류될 것이다. 모든 개체가 분류되어야 한다면 각 실수는 두개의 분류 오류로 나타날 텐데, an extra B, a false positive 와 a missing A, a false negative. 기계학습 연구자들은 분류기의 신뢰도를 보통 두가지 값으로 계량화 한다. 정밀도(precision)와 회수율(recall) 이다. 그리고 이 두가지 값에 대해 실습시간에 계산해 보자. (?????)



[06:00] 단지 한종류의 자료 묶음을가지고 훈련된 우리가 만든 분류기가 어떻게 미지의 자료에 대해 정확하게 처리할지 알 수 있을까? 이에 대한 답을 얻기 위해 n-fold cross-validation(교차검증)을 활용한다. 적색편이 값이 계산된 은하들을 열개의 묶음(fold)으로 무작위로 나눈다. 그중 9개 묶음로 분류기를 훈련 시킨다. 나머지 열번째 묶음으로 분류기를 시험하여 정밀도와 회수율을 계산 한다. 이 과정을 각 묶음마다 반복하여 평균과 표준편차를 구한다. 바로 10번 접은 교차검증을 실시한 것이다.



[06:34] 비로서 우리는 자료로부터 분류 회귀를 학습한 시스템을 개발하는 과정을 거쳤고 그 분류기의 신뢰도를 평가하였다. 이제 그 분류기를 실행시켜 미지의 은하에 대한 적색편이를 결정하고 오류값도 평가 할 수 있게 되었다.

[참고] k-fold Cross-Validation
https://smlee729.github.io/r/machine%20learning/2015/03/19/2-k-fold-cv.html


--------------------------------------------------------------------
{에필로그} 나무위키의 "기계학습" 항목을 참조하면, '선수과목'으로 이렇게 나열되었다. 근본은 '수학'이다. '코딩'은 그저 거들뿐,

---{인용시작}---

- 확률론 및 통계학개론:...인공신경망도 통계학적인 관점에서 볼때는 아주 크고 복잡한 혼합 회귀모형의 일종에 지나지 않는다.

통계학에서 퍼온 것들: 회귀분석, 다변량 분석, 군집 분석, 확률 분포 추정, 마르코프/은닉 마르코프 모델, 서포트 벡터 머신, 베이즈 정리, 베이즈 확률론/베이지언 통계학.

- 미적분학: 다변수함수의 미적분까지는 반드시 공부해야 한다. 또, 테일러 급수와 그를 이용한 함수 근사값 구하기도 반드시 알아야 한다. 기계학습에서 많이 써먹는 것 중 하나인 경사 하강법에 이게 등장하기 때문. 그 외 라그랑주 승수법도 다뤄야 할 때가 있는데, 이것 역시 다변수함수 미적분학은 가야 나온다.

- 선형대수학: 고차원의 숫적 데이터를 다루고, 따라서 행렬이 필연적으로 등장한다.

- 수학적 최적화: 대부분의 학습방법이란 게 주어진 데이터에 맞춰서 오차를 최소화하면서 회귀 함수를 만드는 것인데, 이 때 필연적으로 최적화와 관련된 이야기가 반드시 등장한다.

- 이산수학: 확률 그래프 모델이라는 물건이 등장하는데, 여기서 등장하는 그래프는 엑셀 그래프가 아니고 이산수학에서 말하는 그래프다.



---{인용끝}---

그리고, (R, 파이썬, MATLAB 등) 프로그래밍 언어는 "기계학습 알고리즘을 배웠을 때 그것을 구현하는 데 필요한" 도구란다.

이어서, "IT분야가 다 그렇듯 알고리즘은 소수의 천재가 만들어내고 대부분의 엔지니어는 그것들을 적재적소에 활용하는 역할"을 한다는데...

외국에서 어릴때부터 '코딩' 교육을 한다며 우리도 따라 해야 한다고 야단이다. 우리가 그들처럼 천재들의 기반을 가지고 있을까?

댓글 없음:

댓글 쓰기