머신러닝 개요

이현우·2022년 8월 23일
0

머신러닝

목록 보기
2/5

1. 머신러닝이란?

딥 러닝을 포함하고 있는 개념

1.1 머신 러닝이 아닌 접근 방법의 한계

머신 러닝이 아닌 기존의 프로그래밍 작성 방식을 통해서는 해결하기 어려운 문제 예시를 하나 들면

예시 : 주어진 사진으로부터 고양이 사진인지 강아지 사진인지 판별하는 일

사람에게는 너무나 쉬운 일이지만 이 문제를 풀 수 있는 프로그램을 작성하는 것은 상당히 난해한 수준이다.
입력된 이미지로부터 강아지와 고양이를 구분할 수 있는 코드를 어떻게 작성할 수 있을까?

def prediction(image as input):
	어떻게 코딩해야 할까요?
    return 결과

사진이란 건 사진을 보는 각도, 조명, 타겟의 변형에 따라서 너무나 천차만별이라 사진으로부터 공통된 명확한 특징을 잡아내는 것이 쉽지 않다. 사실 해당 프로그램은 숫자를 정렬하는 것과 같은 명확한 알고리즘이 애초에 존재하지 않는다.

이러한 이미지 인식 분야에서 규칙을 정의하고 특징을 잡아내기 위한 많은 시도들이 있었다.
하지만 결국 한계가 있을 수밖에 없었고 결국 요즘에 이르러서는 사람이 규칙을 정의하는 것이 아니라 머신 러닝으로 문제를 해결하고 있다.

1.2 머신 러닝 방식

머신 러닝이 위에서 언급한 예시 문제를 해결할 수 있는 이유는 해결을 위한 접근 방식이 기존의 프로그래밍 방식과는 다르기 때문이다.

  • 위 이미지에서 위쪽은 기존의 프로그래밍의 접근 방식
  • 아래쪽은 머신 러닝의 접근 방식을 보여준다.
  • 머신 러닝은 데이터가 주어지면, 기계가 스스로 데이터로부터 규칙성을 찾는 것에 집중한다. 주어진 데이터로부터 규칙성을 찾는 과정을 우리는 훈련(training) 또는 학습(learning)이라고 한다.

2. 머신러닝 훑어보기

2.1 지도 학습과 비지도 학습

머신 러닝은 크게 지도 학습, 비지도 학습, 강화 학습으로 나뉜다.
지도 학습과 비지도 학습의 핵심적인 차이는 데이터의 구성이 서로 다르다는 점이다.

2.1.1 지도 학습(Supervised Learning)

지도 학습이란 정답(레이블(Lable))이 있는 데이터를 통해서 학습하는 방법을 말한다.

  • 대표적인 기술로는 회귀(Regression)와 분류(Classification)가 있다.

2.1.2 비지도 학습(Unsupervised Learning)

비지도 학습이란 정답이 없는 데이터를 통해서 학습하는 방법을 말한다.

  • 대표적인 기술로는 **군집화(Clustering), 연관 규칙(Association Rule), 차원 축소(Dimensionality Reduction)가 있다.
    • 군집화(Clustering) - 정해진 분류 없이 기계가 스스로 데이터들을 보고 학습하며, 비슷한 특징의 데이터들끼리 군집화 시키는 기술
    • 연관 규칙(Association Rule) - 데이터 간의 관계(relationship) 혹은 패턴(pattern)을 학습
    • 차원 축소(Dimensionality reduction) - 고차원의 데이터를 저차원의 데이터로 만드는 것이 목표이며 굉장히 차원이 높은 데이터의 학습을 조금 더 효율적이게 하기 위해 사용되는 기술

2.1.3 자기지도 학습(Self-Supervised Learning, SSL)

  • 레이블이 없는 데이터가 주어지면, 모델이 학습을 위해서 스스로 데이터로부터 레이블을 만들어서 학습하는 경우를 자기지도 학습이라고 한다.
  • 대표적인 예시로는 Word2Vec과 같은 워드임베딩 알고리즘이나, BERT와 같은 언어 모델의 학습 방법을 들 수 있다.

2.2 분류(Classification)와 회귀(Regression)

전부는 아니지만 머신 러닝의 많은 문제는 분류 또는 회귀 문제에 속한다.
선형 회귀는 대표적인 회귀 문제에 속하고, 로지스틱 회귀는(이름은 회귀이지만) 대표적인 분류 문제에 속한다.

분류는 또한 이진 분류(binary Classification)과 다중 클래스 분류(Multi-Class Classification)로 나뉜다.

2.2.1 이진 분류 문제(Binary Classification)

  • 이진 분류는 주어진 입력에 대해서 두 개의 선택지 중 하나의 답을 선택해야 하는 경우를 말한다.
  • 성적표를 보고 합격, 불합격인지 판단하는 문제, 메일을 보고 정상 메일인지 스팸 메일인지 판단하는 문제 등이 이에 속한다.

2.2.2 다중 클래스 분류(Multi-class Classification)

  • 다중 클래스 분류는 주어진 입력에 대해 세 개 이상의 선택지 중에서 답을 선택해야 하는 경우를 말한다.
  • 과학, 영어, IT, 학습지, 만화라는 레이블이 붙어있는 5개의 책장이 있다고 할 때 책을 보고 다섯개의 책장 중에서 분야 맞는 적절한 책장에 책을 넣는 문제, 시험 점수에 따라 A, B, C, D, F의 학점을 매기는 문제 등이 이에 속한다.

2.2.3 회귀 문제(Regression)

  • 정답이 몇 개의 정해진 선택지 중에서 정해져 있는 경우가 아니라 어떠한 연속적인 값의 범위 내에서 예측값이 나오는 경우를 말한다.
  • 역과의 거리, 인구 밀도, 방의 개수 등을 입력하면 부동산 가격을 예측하는 머신 러닝 모델이 있다고 할 때, 머신 러닝 모델이 부동산 가격을 784,563,450원으로 예측하는 경우도 있을 것이고, 812,570,300원으로 예측하는 경우도 있을 수 있다. 특정 값의 범위 내에서는 어떤 숫자도 나올 수 있다.
  • 기존의 분류 문제와 같이 분리된(비연속적인) 답이 결과가 아니라 연속된 값을 결과로 가지는 이러한 문제를 회귀 문제라고 부른다.
  • 예시로 시계열 데이터(Time Series Data)를 이용한 주가 예측, 생산량 예측, 지수 예측 등이 있다.

2.3 샘플(Sample)과 특성(Feature)

  • 많은 머신 러닝 문제가 1개 이상의 독립 변수 x를 가지고 종속 변수 y를 예측하는 문제이다.
  • 머신 러닝 모델 중 특히 인공 신경망은 독립 변수, 종속 변수, 가중치, 편향 등을 행렬 연산을 통해 연산하는 경우가 많다.

독립 변수 x의 행렬을 X라고 하였을 때, 독립 변수의 개수가 n개이고 데이터의 개수가 m인 행렬 X는 다음과 같다.


이때 머신러닝에서는 하나의 데이터, 행렬 관점에서는 하나의 행을 샘플(Sample)이라고 부른다. (데이터 베이스에서 레코드라고 부르는 단위이다) 그리고 종속 변수 y를 예측하기 위한 각각의 독립 변수 x를 특성(Feature)라고 부른다. 행렬 관점에서는 각 열에 해당된다.

2.4 머신 러닝 모델의 평가


머신 러닝을 위한 데이터를 준비했다면 기계를 학습하기 전 해당 데이터를 훈련용, 검증용, 테스트용 이렇게 세 가지로 분리하는 것이 일반적이다.

  • 훈련 데이터는 머신 러닝 모델을 학습하는 용도이다.
  • 테스트 데이터는 학습한 머신 러닝 모델의 성능을 평가하기 위한 용도이다.
  • 검증용 데이터는 모델의 성능을 조정하기 위한 용도이다. 더 정확히는 모델이 훈련 데이터에 과적합(overfitting)이 되고 있는지 판단하거나 하이퍼파라미터의 조정을 위한 용도이다.
    • 하이퍼파라미터(초매개변수) : 사람이 값을 지정하여 모델의 성능에 영향을 주는 변수
    • 매개변수 : 가중치와 편향, 학습을 하는 동안 값이 계속해서 변하는 수

하이퍼 파라미터와 매개변수의 차이

  • 하이퍼 파라미터는 보통 사용자가 직접 정해줄 수 있는 변수이다.
    • 경사 하강법에서 학습률(learning rate)이나, 딥 러닝에서 뉴런의 수나 층의 수와 같은 것들이 대표적인 하이퍼파라미터이다.
  • 가중치와 편향과 같은 매개변수는 사용자가 결정해주는 값이 아니라 모델이 학습하는 과정에서 얻어지는 값이다.

순서
1. 훈련용 데이터로 훈련을 모두 시킨 모델은 검증용 데이터를 사용하여 정확도를 검증하며 하이퍼파라미터를 튜닝(tuning)한다. 검증용 데이터에 대해서 높은 정확도를 얻도록 하이퍼파라미터의 값을 바꿔보는 것이다. 이렇게 튜닝하는 과정에서 모델은 검증용 데이터의 정확도를 높이는 방향으로 점차적으로 수정된다.
2. 튜닝 과정을 모드 끝내고 모델의 최종 평가를 하고자 한다면, 이제 검증용 데이터로 모델을 평가하는 것은 적합하지 않다. 모델은 검증용 데이터의 정확도를 높이기 위해서 수정되어져 온 모델이기 때문이다. 모델에 대한 평가는 이제 모델이 한 번도 보지 못한 데이터인 테스트 데이터의 몫이다.

수능을 준비하는 수험생으로 비유하자면 훈련 데이터는 실제 공부를 위한 문제지, 검증 데이터는 모의고사, 테스트 데이터는 실력을 최종적으로 평가하는 수능 시험이라고 볼 수 있다.

2.5 혼동 행렬(Confusion Matrix)

머신 러닝에서는 맞춘 문제수를 전체 문제수로 나눈 값을 정확도(Accuracy)라고 한다.
하지만 정확도는 맞춘 결과와 틀린 결과에 대한 세부적인 내용을 알려주지는 않는다.
이를 위해 사용하는 것이 혼동 행렬(Confusion matrix)이다.
예를 들어 참(True)과 거짓(False) 둘 중 하나를 예측하는 문제였다고 가정하면 아래의 혼동 행렬에서 각 열은 예측값을 나타내며, 각 행은 실제값을 나타낸다.

머신 러닝에서는 다음과 같은 네 가지 케이스에 대해서 각각 TP, FP, FN, TN 을 정의한다.
앞의 T와 F는 정답과 오답을 나타내고 뒤의 P와 N은 예측값을 나타낸다.

  • True Positive(TP) : 실제 True인 정답을 True라고 예측 (정답)
  • False Positive(FP) : 실제 False인 정답을 True라고 예측 (오답)
  • False Negative(FN) : 실제 True인 정답을 False라고 예측 (오답)
  • Ture Negative(TN) : 실제 False인 정답을 False라고 예측 (정답)

이 개념을 사용하면 정밀도(Precision)과 재현율(Recall)이 된다.

2.5.1 정밀도(Precision)

정밀도란 모델이 True라고 분류한 것 중에서 실제 True인 것의 비율이다.

2.5.2 재현율(Recall)

재현율이란 실제 True인 것 중에서 모델이 True라고 예측한 것의 비율이다.

정밀도(Precision)이나 재현율(Recall)은 모두 실제 True인 정답을 모델이 True라고 예측한 경우. 즉, TP에 관심이 있다. 두 식 모두 분자가 TP임에 주목하자.

2.5.3 정확도(Accuracy)

정확도(Accuracy)는 우리가 일반적으로 실생활에서도 가장 많이 사용하는 지표이다. 전체 예측한 데이터 중에서 정답을 맞춘 것에 대한 비율이다.

그런데 정확도(Accuracy)로 성능을 예측하는 것이 적절하지 않은 때가 있다.

  1. 비가 오는 날을 예측하는 모델을 만들었다고 하자.
  • 200일 동안 총 6일만 비가 왔다고 해보자. 그런데 이 모델은 200일 내내 날씨가 맑았다고 예측했다.
  • 이 모델은 총 200번 중 총 6회 틀렸다.
  • 194/200 = 0.97이므로 정확도는 97%이지만 정작 비가 온 날은 하나도 못 맟춘 셈이다.
  1. 스팸 메일을 분류하는 스펨 메일 분류기를 만들었다고 하자.
  • 메일 100개 중 스팸 메일은 5개였다.
  • 스팸 메일 분류기는 모두 정상 메일이라고 탐지했다.
  • 정확도는 95%이지만 정작 스팸 메일은 하나도 못 찾아낸 셈이다.

이렇게 실질적으로 더 중요한 경우에 대한 데이터가 전체 데이터에서 너무 적은 비율을 차지한다면 정확도는 좋은 측정 지표가 될 수 없다.
이런 경우에는 F1-Score를 사용한다.

2.6 과적합(Overfitting)과 과소 적합(Underfitting)

학생의 입장이 되어 하나의 문제지를 과하도록 많이 풀어서 문제 번호만 봐도 정답을 맞출 수 있게 되었다고 가정하자. 그런데 너무 오랜 시간 하나의 문제지만 반복해서 푼 나머지 다른 문제를 풀거나 시험을 봤을 때 점수가 안 좋다면 그것은 의미가 없다.

머신 러닝에서 과적합(Overfitting)이란 훈련 데이터를 과하게 학습한 경우를 말한다.

  • 머신 러닝 모델이 학습에 사용하는 훈련 데이터는 실제로 앞으로 기계가 풀어야 할 현실의 수 많은 문제에 비하면 극히 일부에 불과한 데이터이다.
  • 기계가 훈련 데이터에 대해서만 과하게 학습하면 성능 측정을 위한 데이터인 테스트 데이터나 실제 서비스에서는 정확도가 좋지 않은 현상이 발생한다.

과적합 상황에서는 훈련 데이터에 대해서는 오차가 낮지만, 테스트 데이터에 대해서는 오차가 커진다. 아래의 그래프는 과적합 상황에서 발생할 수 있는 훈련 데이터를 사용한 훈련 횟수에 따른 훈련 데이터의 오차와 테스트 데이터의 오차(손실)의 변화를 보여준다.

y축은 오차(loss), X축의 에포크(epoch)는 전체 훈련 데이터에 대한 훈련 횟수를 의미한다. 에포크가 지나치게 크면 훈련 데이터에 과적합이 발생한다.

  • 과적합은 다르게 설명하면 훈련 데이터에 대한 정확도는 높지만, 테스트 데이터는 정확도가 낮은 상황이라고 말할 수 도 있다.
  • 이런 상황을 방지하기 위해서는 테스트 데이터의 오차가 증가하기 전이나 정확도가 감소하기 전에 훈련을 멈추는 것이 바람직하다.

반면, 테스트 데이터의 성능이 올라갈 여지가 있음에도 훈련을 덜 한 상태를 과소적합(Underfitting) 이라고 한다.

  • 과소 적합은 훈련 자체가 부족한 상태이므로 훈련 횟수인 에포크가 지나치게 적으면 발생할 수 있다.
  • 과대 적합과는 달리 과소 적합은 훈련 자체를 너무 적게한 상태이므로 훈련 데이터에 대해서도 정확도가 낮다는 특징이 있다.

과적합과 과소 적합을 테스트 데이터를 사용하여 판단할 수 있다고 설명하였지만, 더 정확히 설명하면 테스트 데이터를 두 가지 용도로 분리하여 사용하는 것이 더 바람직하다.

  • 각각의 용도는 과적합 모니터링과 하이퍼파라미터 튜닝을 위한 테스트 데이터와 오직 성능 평가만을 위한 테스트 데이터이다.
  • 전자의 테스트 데이터를 검증 데이터라고 부른다.

과적합 방지를 고려한 일반적인 딥 러닝 모델의 학습 과정은 다음과 같다.

  • Step 1. 주어진 데이터를 훈련 데이터, 검증 데이터, 테스트 데이터로 나눈다. 가령, 6:2:2 비율로 나눌 수 있다.
  • Step 2. 훈련 데이터로 모델을 학습한다. (에포크 +1)
  • Step 3. 검증 데이터로 모델을 평가하여 검증 데이터에 대한 정확도와 오차(loss)를 계산한다.
  • Step 4. 검증 데이터의 오차가 증가하였다면 과적합 징후이므로 학습 종료 후 Step 5로 이동, 아니라면 Step 2.로 재이동한다.
  • Step 5. 모델의 학습이 종료되었으니 테스트 데이터로 모델을 평가한다.
profile
GitHub - https://github.com/jenu8628

0개의 댓글