[ML] 머신러닝 기초
인공지능 != 머신러닝 != 딥러닝
인공지능 ⊃ 머신러닝 ⊃ 딥러닝
인공지능과 빅데이터 : 빅데이터 파이프라인의 마지막 분석 단계에서 인공지능 기술 사용 가능
𝖣𝗂𝖿𝖿𝖾𝗋𝖾𝗇𝗍 𝗄𝗂𝗇𝖽𝗌 𝗈𝖿 𝖫𝖾𝖺𝗋𝗇𝗂𝗇𝗀
☆ 4가지 방법과 각각의 차이점
· Supervised Learning
· Unsupervised Learning
· Semi-supervised Learning
· Reinforcement Learning
- Supervised Learning
- 학습을 위해 ‘정답’이 주어진 데이터 필요
- 주어진 데이터를 ‘분류’하는 작업에 주로 이용 (Classification)
- 대표적 분류 모델 : Decision Trees, Neural Networks, Support Vector Machines(SVM)
- Unsupervised Learning
- 학습을 위한 ‘정답’이 필요 없으며, 데이터만 있으면 학습 가능
- 주어진 데이터를 ‘군집화’하는 작업에 주로 이용 (Clustering)
- 대표적 군집화 모델 : Hierarchical Clustering, K-means Clustering
* 주의 : 모델 정량평가를 위해서는 ‘정답’ 필요
- Semi-supervised Learning
- 일부 데이터에만 ‘정답’ 존재
- 정답이 없는 데이터도 학습에 도움이 될 것이라는 가정
- Reinforcement Learning
- 행동(선택) → 보상(or 패널티)
- 더 큰 보상을 얻는 방향으로 학습 진행
𝖥𝖾𝖺𝗍𝗎𝗋𝖾
== Attribute, 여러가지 Data type
ex) 사람의 Feature : 키, 성별, 나이 등
Feature 정의는 왜 중요한 것인가요 ?
- 적절하게 정의하는 것은 매우 중요. 모델의 성능을 좌우할 수 있음
- Domain Knowledge 혹은 전문지식 요구
ex) 일본어 문장에 대한 감정 분석 — 일본어 지식 필요
Feature의 개수는 많은게 좋을까 작은게 좋을까 ?
- 모델마다 적절한 개수 필요, 너무 많으면 좋지 않음
- Feature를 무턱대고 늘리면, Curse of Dimensionality(차원의 저주) 문제 발생
* Curse of Dimensionality = Feature가 늘어남에 따라 데이터 조합의 개수(특징 공간)은 급격히 증가하므로 그만큼 필요 데이터도 증가하고, 차원에 비해 데이터가 너무 적으면 Overfitting 발생 가능성이 증가
- Feature의 개수
- 문제에 따라 수백 ~ 수만개 이상이 될 수 있음
- Classification의 경우, Label 개수(Class 개수) 보다는 많은 것, Data 개수보다는 적은 것이 일반적
ex) Label(Class) = 강아지와 고양이를 분류 할 때 ~ 강아지, 고양이
Feature 정의를 생략할 수 없을까 ?
- Deep Learning의 경우, Feature를 자동으로 각 Layer에서 인지하게 되므로 Feature 정의가 쉽다
But, Deep Learning은 각 Feature에 대한 해석을 할 수 없다, Parameter 개수를 정해줘야 한다
𝖬𝗈𝖽𝖾𝗅
= Method
- Model은 주어진 데이터에 대해, 임의의 task를 수행하기 위한 Hypothesis
아래 모델 예시 중, 더 적합한 모델은 ?
- y = ax + c
- y = ax^ + bx + c
- Complexity (복잡도)
- Computational Complexity
= 데이터가 증가함에 따라 얼마나 계산량이 증가하는가
- Data (Sample Complexity / Consistency )
= 데이터가 증가함에 따라 모델의 결과물이 좋아지는가
* 두 모델이 동일하게 결과를 낼 때, Computational Complexity는 낮고 Data Complexity는 높으면 좋다
아래 모델 예시 중, 더 복잡한 모델은 ?
- y = ax + c
- y = ax^ + bx + c
* Feature가 더 많다(곱셈, 덧셈을 더 많이 진행)
* Computational 관점으로 (a, b, c) 3개의 Parameter로 인한 계산량 증가
- Parametric, Non-Parametric
- Mahcine Learning은 task를 해결하는 방법론
- Parametric과 Non-Parametric은 task를 해결하는 방법을 고민하는 것과 관련이 있음
- 비지도 학습의 경우, 이를 따져보는 것이 중요 (지도학습에도 적용 가능)
- ‘Parameter = 매개변수’는 모델이 최적화하는 대상(bias, weight 등)
- Parametric은 고저 된 크기의 매개 변수 세트로 데이터를 요약하는 학습 method (아무리 많은 데이터를 처리해도 매개변수 수 고려 x)
- Non-Parametric은 모델을 적용하기 어려운 상황, 데이터 Feature가 많아지거나 분포양상에 대한 지식이 없을 때 사용
ex) 순수 빈도수 기반 접근 (순위합검정), knn 알고리즘
- Generative, Discriminative
- Generative 방식 = Joint Probability, P(x, y)를 학습
- Discriminative 방식 = Conditional Probability, P(y|x)를 직접 학습
* Joint 연산 시, 비교적 다양한 목적들에 사용이 가능하기 때문에 Generative가 더 Powerful
But, Classification을 진행할 때, Bates Rule을 이용하여 P(y|x) 계산
𝖭𝗈 𝖥𝗋𝖾𝖾 𝖫𝗎𝗇𝖼𝗁 𝗏𝗌. 𝖮𝖼𝖼𝖺𝗆’𝗌 𝖱𝖺𝗓𝗈𝗋
- 전자 : ‘모든 것에 최선인 알고리즘은 없다 !’
- 후자 : ‘단순함이 의외로 진리일 가능성이 있다’
𝖤𝗏𝖺𝗅𝗎𝖺𝗍𝗂𝗈𝗇 𝗈𝖿 𝖬𝗈𝖽𝖾𝗅
= 정성평가, 정량평가
- 정성평가 : 눈으로 직접 확인 하는 것
ex) Case를 직접 분석, 특정결과들의 원인을 추론
- 정량평가 : 정답(Truth Ground)와 비교하여 성능을 대수로 표현하고 비교
- 정량평가 방법
- Accuracy = 1 — Error
- Precision, Recall, F1 score …
- ROC curve의 Area Under the Curve(AUC) 값
- BLEU metric(score) = BiLingual Evaluation Understudy (가중 기하 평균)
But, 객관적이지 못함 (의미없이 중복되어도 횟수 셈), 이것을 대비하여 Clipping Precision Counts라는 대안 등장
ex) 자동번역 문장에 대한 평가에서 관사 ‘the’가 반복되는 경우
But, 실제로 문장이 완성되지 않았더라도 성능이 높게 나옴, Brevity Penalty라는 대안 등장 (문장 전체 Length 고려)
- 평가를 위한 데이터 분배
- Train/Test = 권장 x, 테스트 결과를 보고 판단할 수 있음 (최적화 단계가 테스트 결과로부터 영향을 받으면 안됨)
- Train/Validation/Test = 모델 튜닝을 위한 데이터, 학습에 간접적으로 영향을 주는 데이터 → Validation Data
- k-fold Cross-Validation = 가장 객관적, Train Data를 k등분하여 첫번째 토막을 Validation or Test Data로 사용
> 두번째 토막을 Validation or Test Data 나머지 k-1개를 Training Data … (모든 fold 사용시 까지)
- Bias와 Variance
ex) 불을 끌 때, 소방호스가 향한 방향 Bias, 소방호스에서 물이 나가는 분사 정도 Variance
- 왼 : 모델의 결과 — Model의 Complexity가 낮음, 판단 경계선을 더 빼곡하게 나눌 수 있다
But, 너무 Over하게 디면 Train set에만 너무 맞춰져 Test set에 대한 성능은 떨어질 수 있다
* Model Complexity가 너무 높아지면 Overfitting 확률 증가 (Model Complexity는 Model의 Feature와 관련)
- 오 : Model Complexity가 높아지면 Training Sample의 Prediction Error(예측 오류율)은 감소
But, Test Sample의 Prediction Error는 다시 높아지는 데, 이것이 Overfitting(과적합)
*용어
- Generalization = Unseen Data에 대해서 잘 동작하면 Generalization이 잘된 것
- Capacity = 모델에 의한 공간 (판단경계선)
- Variance가 큰 Model의 대책 : Data 개수를 늘리거나 모델 경량화
- Bias가 큰 Model의 대책 : Model Complexity 상향
☆ Variance가 큰 모델은 Overfittig, Bias가 큰 모델은 Underfitting — 이 둘은 trade-off 관계
𝖠𝗅𝗀𝗈𝗋𝗂𝗍𝗁𝗆 𝖿𝗈𝗋 𝖳𝗋𝖺𝗂𝗇
= ‘학습의 목적’ : 임의의 주어진 모델의 Parameter들의 값을 주어진 Data에 맞게 Update
- Parameter 최적화, Target Function의 함수 값을 최적화하는 Parameter 값 찾기
*용어
- Loss Fuunction : Data Instance에 대한 Prediction Penalty 정의하는 함수, 틀렸을 때 어느 정도 틀렸나
ex) Square Loss, Hinge Loss, 0/1 Loss …
- Cost Function : Loss Function보다 일반화된 개념, 전체 데이터에 대한 Loss 합에 정규화 term 포함
ex) MSE(Mean Squared Error)
- Objective Function : 가장 일반화된 용어, 학습을 통해 ‘최적화’하려는 모든 종류의 함수
ex) MLE
# Loss is a part of cost which is a type of objective
* 많이 사용되는 학습 알고리즘
- MLE (Maximum Likelihood Estimation)
- MAP (Maximum a Posteriori Estimation)
- EM (Expectation-Maximiazation)
- Gibbs Sampling, Gradient Descent, Variational Inference, Laplace Approximation …
𝖣𝖺𝗍𝖺
= 데이터를 바탕으로 기계학습 알고리즘의 Parameter들이 학습
‘요리에 비유하면 어떻게 될까 ?
- 재료 = Data, 재료손질 = Feeature Engineering, 요리방법 = Algorithm, 시식 = Evaluation
Data가 부족하거나, 분포가 치우쳐져(biased) 있을 때는 어떻게 할까 ?
- Sampling : Down-sampling = 비율이 많은 데이터를 적게 채택, Up-sampling = 비율이 적은 데이터를 많이 채택
- Distant Supervision : Semi-supervised 방식, ‘가정’을 바탕으로 데이터 Label이 있다고 취급
ex) 머리카락 길이가 30cm 이상이면 Girl
- Bagging (Bootstrap Aggregating) : 전체 Data에서 Sampling하여 Train, Test 반복