본문 바로가기
studyLog. AI/공통

ML/DL 스터디 1주차 정리

by 브라이티_ 2023. 4. 6.
반응형

*개발학회에서 진행한 머신러닝/딥러닝 기초 스터디 내용을 정리한 글입니다.

 

인공지능이란 무엇인가

출처: https://velog.io/@jeromecheon/Machine-Learning-1

 

인공지능-머신러닝-딥러닝 사이의 관계는 다음과 같다. 딥러닝은 비교적 최근에 급발전한 기술이다. (지금 듣고 있는 학부 NLP 수업에서 딥러닝 모델을 많이 다루는데, 이를 이해하기 위해 혼자 열심히 공부중이다. 너무 어렵다.)

 

What is Rule-base AI?

 

인공지능 혹은 AI 라는 단어를 들었을 때, 다들 굉장히 그것이 복잡하다고 생각한다. (나 또한 그랬다.) 

 

인공신경망 같은 경우 깊은 레이어를 쌓아 학습시킨다는가, 그런데 사실, 원래 고전의 AI는 Rule-based 였다. 이를 활용해서 과거에는 의사를 대체하려는 시도도 많았다. 예를 들어, 특정 증상들에 대한 정보 및 진단 RULE 을 학습시켰다. 그런데 아무래도 그것이 한계를 마주해, 점차 학습을 하는 방향으로 바뀌었다. 그렇지만 사실 학습이라는 방법은 굉장히 cost가 높은 방법이다. 여하튼 AI는 인간이 하려는 모든 행위를 기계도 할 수 있게 하는 것이다.

 

What is ML?

 

일반적으로 알고리즘 문제(백준) 사이트를 보면, 어떤 intput 을 주고 그것에 해당하는 output 값을 출력하도록 문제를 낸다. 이와 달리 머신러닝 같은 경우는, 기계에게 input 과 output 값을 모두 주고 그 사이의 관계성(함수 f(x)) 을 스스로 찾아내도록 한다. 

 

Tom Mitchell 에 의한 ML의 정의가 가장 보편적으로 사용되는데, 핵심은 TEP 이다.

 

컴퓨터가 학습을 하기 위해서는 세가지 요소가 있어야 한다.

- Task: 기계가 수행해야 하는 과제

- Experience: 학습시키는 경험 혹은 데이터

- Performance 성과 측정

E 데이터를 학습시켜 T를 수행할때 P가 향상되었다면 우리는 그것을 학습시켰다고 할 수 있다. 

*딥러닝 처음할 때에는 MNIST 데이터셋 많이 다루게 된다. (손글씨 인식을 위한 분류 task 에 사용)

 

Example of ML

 

Pattern recognition

Generating Patterns

Prediction

Recogninzing anomalies (이상치 감지)

Planning/decision making

 

ML의 분류

 

머신러닝은 크게 세가지 혹은 네가지로 분류한다.

1. supervised learning(지도 학습); 정답 label이 있는 상태에서 학습

2. unsupervised learning(비지도 학습); label이 없는 상태에서 학습

3. reinforcement learning(강화 학습)

 


 

Supervised Learning (지도학습) 의 분류

 

지도학습은 학습의 종류를 크게 두 가지로 나눈다; Regression vs. Classification

Regression 회귀: 최종적으로 어떤 값을 예측하는 것이다. (연속적인 값)

Classification 분류: 어떤 데이터가 어떤 카테고리에 들어갈 지 맞추는 것이다.

 

Regression 회귀

 

회귀는 값을 예측하는 것이기 때문에, 초기 dataset 을 보고 x와 y사이의 관계를 찾는다.

한편 수식에서 R^d는 d차원의 벡터를 의미하고, d는 보통 feature (특징)을 의미한다.

일반적으로 어떤 task를 수행하는데 feature 가 하나만 있을리가 없겠죠?

데이터마다 feature가 d개씩 있어서 r^d라고 표현한다. (= d개의 feature를 가지고 있다고 생각)

 

가령 제일 단순하게 feature = 1(개) 라고 생각해보자.

Linear regression, y=ax+b 에서 우리는 a, b를 찾아 x 와 y 사이의 관계성을 찾아야 한다.

이때 찾아야하는 값 a, b를 우리는 parameter(파라미터) 라고 부른다.

그리고 모델에서 예측한 값은 보통 ^(hat)을 붙여서 y^ 과 같이 표기한다.

 

한편 실제로 변수가 여러개일 때는 어떻게 될까?

a^Tx + b (*이때 a와 x는 벡터) = a1x1 + a2x2 + b

 

단순 2차원에서 관계식을 찾을 때에는 '선'을 찾았는데, 3차원에서는 2차원 평면으로 된 관계식을 찾는다.

이를 일반화하여서, 만약 N차원에서 값을 예측을 한다고 하면 그 결과값은 N-1차원의 관계식(hyperplane)으로 표현된다. 

그리고 그 관계식을 hyperplane 이라고 표현한다.

 

궁극적으로 regression에서 하고자 하는 것은 이 hyperplane을 어떻게 잘 찾을 것인가이다.

일반화한 Regression 식은 다음과 같다; y = Ax +b (*y는 벡터)

y = ax+b 에서 얼마나 잘 fit 한 a와 b를 찾을 수 있을것인가?

(How to fined best hypothesis set?)

 

Loss function (=Error function =Objective function) 

 

hypothesis 를 evaluate 하는 지표로서 loss function 을 사용한다.

loss function는 모델링을 하는 사람 마음이라서, 평가 기준에 따라 항상 바뀔 수 있다. 

보통 간단한 머신러닝 딥러닝에서는 loss function 으로 L1 loss 와 L2 loss 를 많이 사용한다.

*L1 loss function: 실제값과 예측값 사이의 차의 절댓값(선형대수학에서의 L1 norm)의 평균

**L2 loss function: 실제값과 예측값 아이의 차의 제곱한 값(선형대수학에서의 L2 norm)의 평균 

 

L1과 L2의 차이는 길이 vs 넓이, 한마디로 L1에 비해 L2는 실제값과 예측값 사이의 클수록 훨씬 더 크게 오류로서 반여오딘다. (왜냐하면 제곱하기 때문이다.) 쉽게 말해서, 예측 모델이 같은 양만큼 틀렸음에도 불구하고 더 많은 페널티를 부여한다. task마다 작게 많이 틀려도 되는 task, 크게 조금 틀려야 하는 task 등등 성격이 다양하기 때문에 각 task 마다 적절한 loss function 이 존재할 수 있고 그것을 사용하여야 한다.

 

우리는 loss function의 값이 최소화되는 hypothesis 를 찾아야한다. 실제로 정확한 '해'를 찾기는 어렵다. 그래서 보통은 iterative한 방법으로 찾으려 한다. 그리고 이러한 과정을 optimization (최적화) 이라고 한다. 최적화의 방법으로 가장 많이 나오는 방법론이 Gradient Descent 방법론이다. (자연어처리 수업에서 듣고 엥 했던, 우선 편미분으로 기부터 죽었던 그런 개념이다. 하하) 이는 기울기를 찾으면, 현재 기울기의 반대방향으로 계속해서 내려가며 loss의 최저점을 찾아가는 방법이다. 그 밖에도 최적화의 방법에는 ADAM,  RMS 곱 등 여러가지, 방법은 많다.

 

Classification 분류

 

Classification 은 이제 범주를 나누는 것이다. (Discrete, 반면 회귀는 continous 한 데이터를 다룬다.)

예시) 강아지-고양이 분류

 


 

Unsupervised Learning 비지도학습

 

비지도 학습에서 x, y는 각각 x, y축을 의미한다.

이 학습론에는 label 이 없다. 그냥 주어진 값들로부터 제일 대표적인 값을 찾으려 하는 것이다. 

예시_1) Clustering (K-Means)

예시_2) Dimensionality Reduction (차원 축소)

: 고차원의 데이터를 시각화하거나 혹은 타 모델에 또 넣기 위해서 차원을 줄이는 것이 필요해질 때가 있다. (단순화) 

(사실 이전부터 차원축소나 K-Means 모두 많이 알고있던 것들이었는데, 이번 기회에 이렇게 구체적으로 차원 축소를 하는 이유를 알 수 있어서 좋았다.)

 

강화학습

 

강화학습은 앞선 두가지와 다르게 구조 자체가 특이하다. 그래서 보통 게임 AI 에서 많이 활용된다.

Agent - Action - Envrionmnent - Agent's state 변화 - ... (사이클 반복)

이러한 과정을 통해 점차 Agent에게 reward가 최대화되는 방향으로 학습하는 것을 의미한다. 

(인공지능 수업때 가볍게, 그리고 자주 들었던 내용이라 반가웠다.)

 

 


 

머신러닝은 갖고 있는 데이터를 split하여 training data와 testing data로 나눈다. 그리고 훈련을 통해 제일 좋은 function을 찾고, 좋은 성능이 나오면 그것을 가지고 prediction을 진행한다.

 

머신러닝이 어려운 이유

 

머신러닝이 어려운 이유는 아래와 같은 오류들이 발생하기 때문이다.

 

1) bias-variance problem 

예측한 값이 틀린 경우 (error) 우리는 이것을 bias 관점과 variance 관점에서 볼 수 있다.

- bias: 실제로 이것이 얼마나 틀렸는가 

- variance(분산): 데이터가 얼마나 퍼져있는가 

사실 머신러닝에서 절대적인 정답은 없지만, 그래도 이상치는 있다. (하지만 현실적으로는 거의 불가능하다.)

이 관점에서 varinace가 낮은 것이 항상 좋지만은 않다.

 

high bias = underfitting

high variance = overfitting

:모델을 너무 정확히 그리려고 하다보니 (train data에 너무 맞추려다 보니) 모델이 과적합된 현상이다.

이 경우 train erros는 0이나 실제 test와는 차이가 엄청 날 수 있다. (=generalization error)

이처럼 generalization error가 높은 것을 overfitting 이라고 한다.

 

위 overfitting 와 관련해서 등장한 것이 ockham's razor 이론이다. (옛날 이론이기는 하다.)

ockham's razor : 여러 개의 모델이 있을 때 모두가 train data에는 어느정도 잘 맞는다고 하면, 그 중에 제일 단순한 모델을 고르는 것이 제일 좋다. 이는 항상 complex 한 모델이 좋다고 보장할 수는 없다는 의미이다.

 

한편 ML에는 여러 모델이 있는데, SVM(서포트 벡터 머신... 예전 경영대 머신러닝 수업에서 배웠다.)이 ML에서는 제일 바이블 같은 친구이다. 간단하게 원리를 설명하면, input space 에서는 hyperplane 이 굉장히 복잡하게 구성이 되는데, 이것을 오히려 낮은 차원에서 높은 차원으로 매핑시키는 것이다. (매핑하면 오히려 hyper plane 이 단순해지는...) 

 


1주차 회고:

사실 경영대 학부에서 머신러닝 수업을 들었었기 때문에 대부분 들어본 개념이긴 하였다. 그러나 그 수업에서는 구체적인 원리보다는 '교수님이 코드를 이렇게 짜서 줄테니 너네는 복붙해서 적용만 잘 해 !' 이런 느낌이어서 구체적인 원리까지는 알지 못했다. (사실 구체적인 원리를 알려면 수학적인 부분으로 들어가기 때문에 경영대생에게 불필요한 부분이기는 하다.) 그런데 이번에 스터디를 통해 정확히 개념을 정립할 수 있어서 매우 유익했다. 한편 듣다보니 아무래도 딥러닝보다는 머신러닝을 중심으로 스터디가 진행될 것 같아서, 딥러닝이 필요했던 나로서는 약간 아쉽기는 한 것 같다. (자연어 처리 페이퍼 쓰려면 딥러닝 스터디 개인적으로 많이 해야하는데 벌써 막막함 ㅇㅅㅇ)

반응형

'studyLog. AI > 공통' 카테고리의 다른 글

허깅페이스(Hugging Face)에 대해 알아보자.  (0) 2023.07.14