[인공지능] 9장 기계학습

2022. 6. 9. 01:272022-1/인공지능

1) 기계학습이란?

컴퓨터에 학습 기능을 부여하기 위한 연구분야

  • 데이터를 컴퓨터가 학습하는 알고리즘을 연구
    • 학습데이터가 많아지면 알고리즘 성능이 향상되는 경향이 있음
    • 데이터 중심의 예측 또는 결정

 

기계학습 활용 분야

복잡한 데이터들이 있고, 이들 데이터에 기반하여 결정을 내려야 하는 분야

 

기계학습 역사

기계학습 종류

지도 학습 (Supervised Learning)

  • 학습데이터에 결과값(정답, 레이블) 주어짐
  • 입력을 출력에 매핑하는 일반적이 규칙(함수)를 학습하는 것이 목표

비지도 학습 (Unsupervised Learning)

  • 학습데이터에 결과값(정답, 레이블)은 주어지지 않음
  • 학습 알고리즘이 스스로 데이터에서 어떤 구조를 발견하는 학습

강화 학습(Reinforcement Learning)

  • 어떤 환경에서 컴퓨터가 스스로 반복 시행착오를 통해 작업 수행 방법(policy)을 학습하는 방법
    • 특정 상태에서 컴퓨터가 한 행동에 대해 보상/처벌 형태로 학습데이터가 주어짐
    • 보상(reward)을 최대화 하는 방향으로 학습
  • 동적인 환경에서 사용

특징(feature): 우리가 학습 모델에게 공급하는 입력 (속성, attributes)

레이블(label): y=f(X)에서 y 변수에 해당 (즉, 예측 대상이 되는 변수)

샘플, 또는 예제: 기계 학습에 주어지는 각각의 예제, y=f(X)에서 X에 해당, 레이블이 있는 샘플도 있고 레이블이 없는 샘플도 있음, 지도 학습을 위해서는 레이블이 있어야 함.

 

학습(learning): 주어진 문제를 해결하기 위한 모델을 만들거나 배우는 것

예측(prediction): 학습된 모델을 이용하여 레이블이 없는 샘플의 결과값(y')을 추정하는 것

 

학습 데이터와 테스트 데이터가 있어야 함

2) 지도학습

지도 학습 (Supervised Learning)

학습을 시키는 교사(supervisor)가 존재하는 학습 방법

-즉, 학습 데이터가 입력(X)과 결과값(y)에 대한 정보를 포함함

 

학습 데이터를 기반으로 입력(X)을 잘 결합하여 결과값(y)를 출력하는 모델을 만들고 새로운 입력 데이터의 결과값도 적절히 예측하는 방법을 학습하는 것이 목표

 

문제 종류

  • 회귀 (regression) - 결과값 y가 연속적인 값인 경우
  • 분류 (classification) -  결과값 y가 class인 경우

회귀

학습 데이터로부터 입력(X)과 연속적인 결과값(y)과의 관계를 잘 표현하는 모델(함수 혹은 일반적인 규칙)을 학습하고자 함

y=f(x) 학습!

 

알고리즘 종류

-선형모델, 비선형 모델, 단계적 회귀, 의사 결정트리, 신경망

 

분류(지도학습의 경우,,,)

입력을 두 개 이상의 레이블(클래스)로 분할하는 모델을 학습하

-해당 모델을 학습시킬 때 입력에 대한 레이블을 함께 제공해야 함

y=f(x)에서 출력 y가 이산적(discrete)인 경우에 이것을 분류 문제라고 부름!

 

분류 알고리즘

-신경망

-kNN

-SVM

-의사 결정 트리

3) 비지도학습

"교사"(정답) 없이 컴퓨터가 스스로 입력 데이터 간에 존재하는 패턴을 찾아내는 것

학습 데이터에서 레이블 y가 주어지지 않는다

데이터의 상관도를 분석하여 유사한 데이터들을 모을 수 있음

 

클러스터링

데이터간 거리 등을 고려하여 입력 데이터를 몇 개의 그룹으로 나누는 방법

분류와 달리 그룹의 개수는 미리 알지 못함

 

4) 강화 학습 (Reinforcement Learning)

주어진 환경에서 컴퓨터(agent)가 어떤 행동을 취할 때마다 외부에서 처벌이나 보상이 주어짐. 컴퓨터는 이 보상을 최대화 하는 방향으로 학습 진행

강화(Reinforcement): 시행착오(Trial and Error)를 통해 학습하는 방법을 의미

 

 

5) 기계 학습의 실용적인 가치

1. 프로그래밍 시간을 줄일 수 있다

2. 맞춤형 제품을 쉽게 개발할 수 있음

3. 프로그래머로 시도할 알고리즘이 떠오르지 않는 문제들을 해결할 수도 있음