MJay

딥러닝과 빅데이터 (DB 소사이어티 겨울학교) - AI & Machine Learning 요약 본문

Cloud Computing/AI

딥러닝과 빅데이터 (DB 소사이어티 겨울학교) - AI & Machine Learning 요약

MJSon 2017. 3. 6. 22:51



처음에는 Artifical Intelligence and Machine Learning 

AI란 사람의 지적 행동을 컴퓨터가 모방할 수 있도록 하는 과학 분야이다.




Turing Test에서 시작했다. A는 컴퓨터이고 B는 휴먼이다




A.I. 가 할수 있는것들은 이렇게 다양합니다. 



이런 기능도 다 AI에서 비롯된 것입니다.



관련된 이슈로는  Rank Learning Algorithms -> Seamlessly integrating into RDBMS(관계형데이터베이스가)있다. 
유명한 Netflix도 recommendation을 쓰는데 AI에서 나왔다고 하면 된다.
Approaches to AI 
1. Knowledge-based Approach - Data are already formalized.
2. Data Driven Approach - Data are raw, not filtered, need to extract


이제 본론으로 가보자  

AI의 특성을 보자면 -> 1. 많은 사람한테 임팩트를 준다.  2. 다양하다 .  3. 매우복잡하다

복잡성의 2가지를 보자면 
 1. Compution Complexity -> 정말 경우의 수가 많다.        
 2.  Information Complexity -> 정보가 부족해서 어려움이 많다.
 예로 들면 KookMin이라는게 학교이름이지만 장소도 될수있다. 

그래도 결국  1.  많은 서버   2. 많은 정보가 필요하다


이렇게 결국은 4차 산업혁명의 주요  factors는 BigData , HardWare, Machine Learning Algorithm 이다.

AI는 어떻게 문제를 해결할까?
 현실세계에선 코딩을 통해 풀지만 AI는 다르다 
AI는 해야할 Tasks를 적절하게 Modeling 해서 model을 이용해 Algorithm을 골라서 Program을 돌린다.



예로 들자면 어떤 문제가 있으면 현실세계에서는 input이 있으면 그에 맞게 coding을 하지만 AI에서는 적절하게 list of web Pages와 f(x) 라는 알고리즘을 이용해 문제를 해결한다.

결국 what to compute  & how to compute it이 핵심이다.

AI의 종류는 다양하다 간단한 Low-level intelligence를 보자면 

Reflex가 있다.



Reflex라는 건 반응이다. 하나의 종류가 Sentiment Analysis가 있다. 문장이 있으면 이것이 Positive 인지 Negative인지 알아가는 것이다. Reflex-based Models라고도 한다.

모델이 있으면 적절한 알고리즘을 대입하여 문제를 풀게 한다. 



low-level intelligence보다 더 나은 종류가 있따. States-based Model이다. 

어떤 state(rtfclnllgnc)가 있으면 온갖 과거 정보를 통해 미래의 값을 측정하는 것이다.



State-based Models를 먼저 Search Problems가 있다. 어떤 정보가 있을때 이와 관련된 정보를 이용해 미래를 예측하는 것이다.

Markov decision process는 어떤 값에 대해서 decision maker에 따라 여러가지 경우를 예측 하는 process이다.

Adversarial games는 상대방의 경우의 수에 따라서 과거 정보를 통해 예측하는 것이다.

Pac-Man도 뒤에 따라오는 균에 따라서 과거 정보를 통해 Path를 추측하는 논문을 냈다고 한다. 

그 다음의 Next Intelligence는 Variables가 있따.



Variabe-based Models이라고 한다. 여러가지 제약 사항이 있을때 그에 맞는 변수를 만드는 것이다.

Constrraint satifaction problem -> 여러가지 제약이 있을때 추측하는 case랑

Bayesian networks -> 별로 제약이 없는 경우이다.

그 다음 제일 최고급 level intelligence는 Logic이다. 

예로 들면 이런 문장이 있을때 ( Logic) 결과값을 예측하는 것이다. 딱봐도 어려워보인다.



함축적 표현도 , 고차원적인 논리를 푸는 문제도 있다.  이제 Algorithm을 알아보자. 이런 많은 level의 intelligence를 풀기 위해 쓰이는 Algorithms은 Machine Learning이다. 최적화 시키기 위해 optimization problems을 시행하기 위한 알고리즘이다.



최적화라는 건 결국 오류를 최소화 한다고 보면 된다. 최적화를 시키기 위해 많은 tool이 있는데 그 중 하나가 Gradient Descent 이다. 

이제 본격적으로 Machine Learning에 대해서 알아보자.

Reflex의 Machine Learning은 어떻게 쓰일까?


주로 쓰이는 Machine Learning의 3 종류를 배워봅시다. 예로 들면 어떤 메일이 있으면 이게 spam 인지 아닌지 구분해야하는 문제가 있다면 여기서 우리는 predictor , 예측해주는 f를 이용해 

input->[f]->output 을 구하면된다. 

비슷한 사례로 f를 통해 ouput 이 +1 , -1 인지 binary classification하는 문제도 있고 input을 통해 output, 예측을 하는 문제인 regression 문제도 있다.

input이 어는 category에 속하는지 보는 Multiclass classification 문제도 있고

Ranking , input의 순서를 출력해주는 문제

Strucutred prediction , 부분 적인 구조로 완벽한 구조를 만들어주는 문제이다


Machine Learning에서 predictor을 만들기 위해 쓰이는 data? example? 을 Training data라고 한다.  

컴퓨터는 Training Data을 Learner Algorithm을 적용하여 predictor f를 만든다. 

Training Data에서 feature name, feature value을 뽑아내는게 Feature Extraction이다. 이를 통해 수학적으로 output을 계산하기 위함이다.



그런데 기계는 feature name을 필요로 하지 않고 수식적으로 원한다. 그래서 names을 feature vector로 표현한다. 그 다음에 이 feature value을 weight vector라고 한다. 이제 이 둘을 곱하는 걸 Score이라 한다. 

Score  기준으로 ouput을 지정한다고 보면 된다.  결론은 f라는건 weight vector * feature vector 이고 그 output으로 binary classification을 본다고 하면 된다.



다른 Machine Learning인 Loss Minization에 알아봅시다. 이건 단순히 오류를 최소화 시키는 Machine Learning 기법이다.



이에 쓰이는 용어가 . score 얼마나 우리가 이 값이 맞다고 나타내는 측정 정도이다. margin, 얼마나 정확히 맞혔는지 알아보는 것이다.  단순하게 말하자면 결과값과 예측값의 차이, residual을 줄이는게 loss minimization이다.

Linear regression은 실제값과 예측값의 제곱을 줄이고자 하는게 원리이다. 



식에서 보면 Loss(x,y,z)를 Minimize하는게 목적이다. 여기서 실제값과 예측값의 제곱을 줄이는 경우도 있고 실제값과 예측값의 차이도 줄이는 경우도 있다.




SGD-> Stochastic Gradient Descnet(SGD) 에 알아보자 앞에서 말했듯이 최적화 문제의 목표는 TrainLoss 의 줄이는게 목적이다. 여기서 쓰이는 기법이 Gradient Descent이다. 쉽게 생각하면 미분을 통해 기울기값의 최소값, 0에 가까운 지점을 찾는 것이다. 거기서 TrainLoss가 최소가 된다고 보면 된다. 



예로들면 아까 보여줬던 식에서 미분을 하면 결국 predicition - 실제값의 최소를 찾는 것이다. 단점이 이 과정이 느리다 왜냐면 이 기법을 쓸때마다 모든 Train Data를 식에서 계속 써줘야하기때문이다. 그래서 나온게 

Stochastic gradient descent이다. 

SGD는 모든 데이터의 gradient를 평균내어 gradient update를 하는 대신 (이를 ‘full batch’라고 한다), 일부의 데이터로 ‘mini batch’를 형성하여 한 batch에 대한 gradient만을 계산하여 전체 parameter를 update한다. 

효율적인 기법이다. Gradient Descent에서 쓰이는 step size도 constance로 쓸수있고 iteration 의 값으로 나눌수도 있다고 한다.



SGD는 좋다고 하지만 binary classification 같은 경우에는 적용할수가 없다고 한다. 그럴때 쓰이는게 Support Vector Machines이다. 

서포트 벡터 머신(support vector machineSVM[1])은 기계 학습의 분야 중 하나로 패턴 인식, 자료 분석을 위한 지도 학습 모델이며, 주로 분류와 회귀 분석을 위해 사용한다. 두 카테고리 중 어느 하나에 속한 데이터의 집합이 주어졌을 때, SVM 알고리즘은 주어진 데이터 집합을 바탕으로 하여 새로운 데이터가 어느 카테고리에 속할지 판단하는 비확률적 이진 선형 분류 모델을 만든다. 만들어진 분류 모델은 데이터가 사상된 공간에서 경계로 표현되는데 SVM 알고리즘은 그 중 가장 큰 폭을 가진 경계를 찾는 알고리즘이다. SVM은 선형 분류와 더불어 비선형 분류에서도 사용될 수 있다.   출처



Logistic Regression은 Score을 Sigmoid Function으로 나타내 표현했다고 보면 된다.  지금까지 보면 Classification(binary 빼고) , Linear Regression 모두 SGD를 쓴다. 



다음 내용은 이제 Training Data를 넘어서서 어떻게 Test Data에 쓸것인지에 관한 내용이다. Training Set에 결과가 좋다고 좋은건 아니다. 결국 우린 Test Set를 썻을때 이 결과가 잘 맞는지 봐야하기 때문이다




간단하게 이 그림으로 보면 된다. Overfiiting Traiing에는 잘 맞아서 error가 적지만 Test랑 안 맞는 경우이다.





지금의 풀어야 할 문제는 algorithm이 잘 하고 있는지 우리가 이해할수 있는가이다.