수업

인공지능 - 2. 머신러닝 기본

eunslog 2023. 4. 12. 00:16
머신 러닝(machine learning)

- 머신 러닝(Machine Learning)은 컴퓨터 시스템이 데이터에서 학습하고 패턴을 찾아내어 예측이나 의사 결정을 내리는 인공지능 분야 중 하나

- 데이터를 사용해 모델을 학습시키고, 이를 통해 새로운 데이터를 예측하거나 분류하는 것. 이러한 모델은 데이터에서 자동으로 패턴을 인식하고 이를 바탕으로 예측하거나 분류를 수행

-1959년 아서 사무엘(Arthur Samuel)이 처음 용어 사용

 

머신 러닝과 학습 데이터
  • 학습 데이터

- 머신 러닝 모델이 학습하는 데 사용되는 데이터 셋

- 충분히 다양하고 대표적인 데이터를 사용하여야 하며, 데이터의 양과 질에 따라 모델의 정확도와 일반화 성능이 크게 달라질 수 있다.

 (-3.1, 4.5) -> 2차원 특징벡터

규칙 : a가 음수이면 불량

만약, 다른 데이터셋 추가된다면 규칙이 바뀔 수도 있다.

-> 머신 러닝에서는 사용되는 학습 데이터가 전체 데이터를 대표하지 못하면 학습을 통해 얻은 결과는 편향될 수밖에 없기에, 적절한 학습 데이터 확보가 중요하다.

•  현장에서 획득한 데이터들에는 오류나 잡음 심지어 특이값 포함

-> 데이터에 내재되어 있는 패턴이나 규칙이 학습되지 않을 수 있다.

-> 일련의 데이터 정제 과정을 거쳐야 한다.
 
같은 학습 데이터가 주어지더라도 학습 방법에 따라 그 결과가 달라질 수가 있다.

 

 

기존 알고리즘과 학습 알고리즘
기존 알고리즘 학습 알고리즘
-문제에 대한 규칙을 수작업으로 프로그래밍하여 해결하는 방법 -데이터를 통해 스스로 학습하는 알고리즘
-입력 데이터와 이에 대응하는 출력 데이터 쌍을 학습하고, 이를 기반으로 새로운 입력 데이터에 대한 출력을 예측
-기존 알고리즘보다 일반화 성능이 높고, 새로운 문제에 대한 대처 능력이 우수

-새로운 데이터를 학습할 때마다 모델의 성능이 개선
데이터 분석가 필요
프로그래머가 규칙을 코딩
-대량의 학습 데이터 필요, 데이터 전처리와 모델 선택 등에 대한 추가적인 노력과 전문 지식이 필요
"프로그래머가 인공지능의 학습 알고리즘 원리를 안다면 쉽게 현장에 적용"
-학습 데이터의 품질과 양, 학습 알고리즘의 선택 등에 따라 모델의 성능이 크게 달라질 수 있다.
ex) ab 모두가 양수인 경우만 정상, 그렇지 않은 경우는 불량”

a = input(“a의 값 ?”)
b = input(“b의 값 ?”)
if a > 0 and b > 0 : print(“정상”)
else: print(“불량”)

 

학습 데이터와 특징 벡터

-특징들이 많을수록 학습 성능이 좋아지진 않는다. (어떠한 특징들은 학습에 방해가 된다.)

- selection : 문제에 적합한 특징들을 선별

- extraction : 기존 특징들을 조합 및 변형하여 새로운 특징을 추출

*딥러닝 기술 - 이미지를 학습 데이터로 주면 필요한 특징 선별 및 추출 과정도 학습을 통해 이뤄진다.

 

테스팅과 교차검증

1. 학습이 제대로 이루어졌는지 평가 방법

데이터 - 학습용(순수학습용, 검증용(validation)), 테스트용 존재

- 수집한 데이터를 학습 셋(train set)과 테스트 셋(test set)으로 나눈 후 학습은 학습 셋만을 이용하여 진행, 학습이 끝난 후 테스트 셋을 사용하여 그 성능을 평가. 학습 셋과 테스트 셋의 비율은 보통 80:20
- 보통 테스트 셋을 사용하여 성능을 측정할 경우, 성능이 좋지 않으면 다시 하이퍼패러미터 (hyperparameter)를 수정하여 학습 셋에 대해 재학습하고 다시 평가하는 과정을 반복 -> 테스트 셋에 적응된 모델
더보기

하이퍼패러미터 : 학습 알고리즘 자체의 패러미터

- 테스트 셋은 단 한 번의 최종 성능 평가용으로만 사용하고, 학습 데이터 셋을 이요해 교차검증(cross validation) 실시

2. 교차 검증(cross validation)

- 학습 셋을 여러 묶음 (fold)으로 나눈 후 그 중 한 묶음을 성능 평가용으로 사용하고 나머지 묶음들은 학습용으로 사용
- 각 묶음이 한 번씩 평가용으로 사용될 수 있도록 이 과정을 반복, 성능은 이들의 평균을 사용
ex) 5-묶음 교차검증 (5-fold cross validation)
1. 학습 셋을 5개의 묶음으로 나누고, 먼저 2, 3, 4, 5번째 묶음을 이용하여 학습(4개를 학습용으로, 1개를 테스트용으로)
2. 학습된 결과를 첫 번째 묶음에 대해 적용하여 첫 번째 성능 측정
3. 동일한 방법으로 두 번째, 세 번째, 번째, 다섯 번째 성능을 얻은 후 이 다섯 번의 평균을 교차검증의 최종 성능으로 사용 (2번째를 테스트용, 나머지(3개)를 학습용 이렇게 반복하고 성능의 평균으로 판단함.)

->

하이퍼패러미터들을 바꾸면서 교차검증 성능이 좋은 하이퍼패러미터 조합을 찾아 그 조합을 전체 학습 셋에 대한 모델 패러미터로 사용
그 학습된 모델을 테스트 셋에 적용하여 최종 성능 얻음.
수집한 데이터가 많지 않아 학습 셋과 테스트 셋으로 분리하기 힘든 경우, 분리X & 전체 데이터에 대해 교차검증 실시

 

 

과적합(overfitting)과 과소적합(underfitting)

과적합: 학습 데이터에 내재된 패턴의 복잡도보다 더 복잡한 모델 사용 or 학습 데이터가 전체 데이터를 대표하지 못해 발생

과소 적합: 데이터에 내재된 패턴을 제대로 학습 못하는 현상 발생 - 학습에 사용된 모델이 더 단순한 경우 or 특징이 좋지 않을때

 

머신 러닝 방법 분류
학습 시 사람의 감독이 필요한 지와 그 형태에 따라
 - 지도학습 (supervised learning), 비지도학습 (unspervised learning), 준지도학습 (semisupervised learning), 강화학습 (reinforcement learning) 
준지도학습은 지도학습, 비지도학습 같이 사용

 

학습 데이터 제공 방법에 따라
 -온라인 (online) 학습과 배치(batch) 학습
일반적인 모델 (패턴)을 생성하느냐 그렇지 않으냐에 따라
 -사례기반 (instance-based) 학습과 모델기반 (model-based) 학습
 
지도학습

학습 시 입력필드의 값, 출력필드의 값을 모두 제시하고 학습시키는 방법(출력필드 : 타겟이라고도 함)

ex) x좌표 값과 y좌표 값을 이용해 그 분면 판단

 

1. 분류(classification)

: 데이터 그룹(class)을 미리 정해 놓고, 그룹의 정해지지 않은 입력 데이터가 어떤 그룹(class)에 속하는지를 판별하는 방법

- 학습 데이터는 입력 필드의 값과 그에 대응되는 클래스로 구성

- 학습 데이터를 이용하여 학습을 하면 분류 모델이 만들어 지고, 이 모델을 이용하여 새로운 입력에 대한 클래스를 판별

- 학습된 모델에 학습에 사용 한 입력 값을 주면 보통 그 결과가 좋을 수밖에 없음. (분류 성능 판단 시, 학습에 사용되지 않고 그 클래스를 알고 있는 데이터들을 사용하여 평가)

 

2. 회귀 분석(regression)

: 입력 값들과 그에 대한 출력 값을 주어서 학습. 차이점은 출력 값이 몇 개의 값으로 한정이 되지 않다는 것-

-학습된 모델에 미지의 입력 값을 주면 제시된 클래스 중 하나를 결과로 출력 (앞 예에서 1, 2, 3, 4 하나의 값)

-이 이외의 값도 출력. 학습에 사용된 입력 값을 주면 학습 시 주어진 출력이 그대로 나오는 것이 아니라 그에 근접한 값이 출력

 

- 다양한 지도학습 알고리즘 존재

k-Nearest Neighbors, Linear Regression, Logistic Regression, Support Vector Machines (SVMs), Decision Trees, Random Forests, Neural networks
 
비지도학습
입력 필드만을 이용하여 학습하는 방법

입력이 주어졌을 때 출력으로 무엇이 나와야하는지 지정해주지 않음.

 

 
1. 클러스터링(clustering)
데이터를 유사한 그룹으로 자동으로 묶어줌.
 -> k-Means 클러스터링
   •구현이 용이 하면서 성능이 좋기 때문에 많이 사용
   •그룹 수 k를 사용자가 정의
 

 

2. 차원 축소

- 일반적으로는 더 많은 특징들을 사용하면 더 좋은 성능을 얻을 수 있을 것 같지만,

특징 선별이 안 좋은 경우, 특징들 간의 간섭으로 인해 더 성능이 안 좋아질 수 있음.

- 특징의 개수가 많아지면 학습 속도도 많이 느려짐.

- 특징 축소 알고리즘은 학습 속도를 높이는 목적 외에 데이터를 시각화할 목적으로도 유용함.

- 주성분 분석, LLE, t-SNE등 존재

  ->PCA (가장 대표적인 차원 축소 알고리즘)

   •훈련 세트에서 가장 큰 분산을 보이는 축을 식별. 이어 첫 번째 축과 직교하면서 또한 가장 큰 분산을 보이는 두 번째 축을 찾음. 이런 식으로 원하는 차원의 개수의 축을 찾음
   •이렇게 찾은 각 축의 단위 벡터를 주성분이라 함
   •원래의 특징 벡터들은 이 주성분들로 구성된 초평면으로 투영 (projection)함으로써 축소 벡터를 얻게 됨
   (n차원의 공간을 다른 축으로 변환. 새로운 축(주성분)을 찾아내서 기존 데이터를 투영시킴 -> 차원 축소)
 
PCA

 

3. 연관 규칙(association rule) 학습
- 주어진 거래 데이터들로부터 연관 규칙들을 자동으로 생성하는 방법
- 데이터 마이닝 기법으로 빅데이터 분석에도 많이 사용
- 거래 항목들 간의 연관 관계와 그 확신도를 같이 계산
- 확신도는 그 연관 규칙이 학습 데이터들과 얼마나 일치하는지를 나타내는 척도로 (규칙과 일치하는 거래의 수) / (규칙의 조건부를 만족하는 전체 거래 수)로 계산

 

강화(reinforcement) 학습

- chat GPT에도 활용됨.

- 행동심리학에서 영감을 받아 만들어진 학습 방법
- 어떤 환경 안에서 정의된 에이전트가 현재의 상태를 인식하여, 선택 가능한 행동들 중 보상을 최대화하는 행동 혹은 행동 순서를 선택하도록 학습하는 방법

- 바둑처럼 주어진 목표가 있고 그 목표를 이루기 위해 반복적인 행동을 해야 하는 문제에 적합 (행위를 결정 시, 현 상태만 고려하고 이전 상태 고려 X)