Snoopy [K-mooc] 1. Introduction to Machine Learning(머신러닝 개요, 선형회귀)
강의 내용 정리하기/실습으로 배우는 머신러닝

[K-mooc] 1. Introduction to Machine Learning(머신러닝 개요, 선형회귀)

Sooyoon Jeong 2022. 11. 21.

성신여대 김영훈 교수님의 K-MOOC 실습으로 배우는 머신러닝 강의 내용을 바탕으로 포스팅하였습니다.


1차시: 인공지능과 머신러닝 개요

1. 머신러닝의 발전

머신러닝의 발전에 큰 역할을 한 것은 아래 2가지, 빅데이터와 분산화된 컴퓨팅의 등장이다.

 

1️⃣ 빅데이터시대의 도래

2️⃣ 분산화된 컴퓨팅의 등장(효율적이고 빠른 계산이 가능한 장비의 등장), GPU computing 기술

 

💡 CPU computing VS GPU computing

CPU는 중앙처리장치로 기본적인 연산과 계산을 해주는 장치이다.

보통은 CPU 컴퓨팅을 이용해 계산을 해왔지만, 최근 GPU 컴퓨팅 기술을 이용하여 굉장히 효율적으로 계산을 할 수 있게 되었다.

 

CPU와 GPU를 활용하여 그림을 그린다고 가정하면,

CPU는 그림을 그리기 위해 하나 하나 점을 찍어가면서 그림을 쭉 그려나가는 방식을 사용하고

GPU는 짧은 시간동안 여러개의 점을 동시에 찍는 방식을 사용한다.

 

GPU를 사용함으로써 굉장히 효율적으로 계산을 할 수 있게 되었고 이는 딥러닝의 발전을 가속화시키는데 큰 역할을 했다.

딥러닝에서 성공을 이루면서 기존에 있었던 다른 기본적인 머신러닝 알고리즘들도 GPU를 이용한 효율적인 계산에 관심을 갖게되었고 응용되면서 많은 양의 데이터를 효율적으로 계산할 수 있게 된 것이다.

 

2. 인공지능, 머신러닝, 딥러닝

출처: 김영훈 교수님 강의 자료, 좌: AI, ML, DM 우: 전통적인 AI와 현재의 AI

 

가. 머신러닝이란?

경험을 통해 스스로 성능이 향상되도록 기계를 학습시키는 것, 즉 데이터를 이용해서 유용한 함수를 학습하는 것을 의미한다.

 

흔히 머신러닝이 곧 인공지능이라고 생각하지만, 인공지능을 구현하는 방법은 여러가지가 있을 수 있고 머신러닝은 그 방법들 중 하나이다.

 

나. 머신러닝 필수 요소 및 절차

1️⃣ 환경, 데이터

경험을 축적하고 상호작용할 수 있는 환경

여기서 경험이란 '데이터'를 의미한다.

 

따라서 데이터란 환경과 상호작용하면서 얻어진 내용들과 패턴이 녹아져 있는 일련의 저장 결과물을 의미한다.

 

2️⃣ 모델

 사용자가 컴퓨터를 학습시킬 수 있는 알고리즘을 입력하고

컴퓨터가 스스로 데이터 안의 유용한 패턴을 찾고 이를 반영하는 함수를 찾는다.

 

3️⃣performance

평가기준에 따라 학습된 결과를 평가한다.

이 과정에서 문제를 해결하기 위한 최적의 함수를 찾는 과정을 동반한다.

 

4️⃣ 실전에 적용

학습된 함수를 현실에 가져와서 사용함

(만약, 버스와 기차를 구분하는 함수를 만들었다면 이미지를 해당 함수에 넣고 해당 이미지가 무엇인지 분류하게끔 시킨다.)

 

다. 딥러닝이란?

머신러닝의 하위 분야, 머신러닝 중에서도 신경망을 다루는 분야이다.

딥러닝은 인간의 인지능력, 시각능력, 언어적인 능력 등 사람의 오감과 관련된 모델링을 하는데 있어 뛰어난 성능을 보인다.

EX) 이미지 , 음성 정보 등 

 

3. 모델 성과 평가

모델을 만들어 함수를 도출했다면, 이 함수가 input과 output의 관계를 설명하기에 적절한지 판단하는 과정이 필요하다.

그럼 '적절하다'라는 것은 어떤 기준으로 판단해야할까?

 

그 기준은 바로 '실제값과 예상값의 차이는 어느정도인가?'이다.

오차라는 개념으로 받아들일 수 있으며 가장 기본적인 오차의 개념으로 MSE가 있다.

 

MSE란, mean squared error로 오차의 제곱 평균을 의미하며 값이 적을 수록 좋다.

MSE 공식

 

MSE 이외에도 오차를 정의하는 여러 방법들이 있는데,

이처럼 오차를 정의하고 계산하여 최종적으로 더 작은 오차를 가지는 모형을 선택하는 개념이

곧 모형을 평가하고 최종적인 모형을 결정하는 머신러닝의 기본 개념이라고 생각하면 된다.


2차시: 머신러닝 학습개념

머신러닝에서 학습은 바로 '최적화'를 의미한다.

 

머신러닝에서 학습이 왜 최적화를 의미하는지 선형회귀를 이용하여 배워보도록 하겠다.

1. Linear Regression

Linear Regression은 굉장히 기본적인 머신러닝 방법론이며

input과 output의 관계는 선형적이다. 라는 전제조건을 가지고 있다.

 

1️⃣ 모형 세우기(basic function 구축하기)

 input과 output의 관계를 아래 식으로 표현할 수 있으며, 이를 회귀 모형이라고 부른다.

x는 입력되는 데이터(독립변수), y는 출력되는 데이터(종속변수), β는 회귀계수이다.

 

본 모형의 핵심은 회귀계수라고 할 수 있다.

왜냐하면 입력과 출력이 선형관계일 때, 둘이 어떤 수준의 배수만큼 영향을 주는지가 가장 궁금하기 때문이다.

따라서 β들을 잘 결정해줘야만 최종적으로 좋은 선형회귀모형을 얻을 수가 있다.

 

추가적으로 대략적인 함수 형태를 세울 때

1차항만 쓸 것인지, 2차항만 쓸 것인지 또 아니면 3차 이상을 쓸 것인지 등등 선택할 수 있는데,

이런 개념이 바로 하이퍼파라미터 튜닝이다.

 

2️⃣ 손실함수(loss function) 정의

모형을 세운 다음에는 손실함수를 정의해주어야 한다.

MSE

손실함수는 실제 값과 모형의 출력 값의 차이를 구함으로써 정의를 할 수 있다.

(1차시에서 설명한 MSE 값이 대표적인 연속변수의 손실함수이다 .)

 

※ y_i는 f(x_i)

 

3️⃣ 최적의 β 구하기(최적화 단계)

손실함수를 정의 후 손실함수가 가장 최소화되는 β 구해주어야 한다.

(즉, 오차가 제일 적은 β를 구하는 것이다.)

 

loss funtion에 실제값과 예측값을 넣고, 최적의 β를 구하기 위해 방정식을 그래프로 표현하였다고 하자.

x가 2가 될 때 loss funtion이 최소가 된다는 것을 사람은 쉽게 알 수 있지만,

컴퓨터는 이를 인식하기가 어렵다. 

출처: 김영훈 교수님 강의 자료

조금 더 엄밀할 수학적인 방법을 사용하여 미분계수가 0이 되는 지점을 찾으라고 명시를 해주면, 컴퓨터 보다 이해하기 쉬울 것이다.

 

위의 과정들이 데이터를 이용하여 input과 output의 상관관계 또는 함수관계를 도출하는 과정으로

기본적 학습 방법, 학습의 프레임워크라고 부른다.

 

이해하기 쉽도록 가장 단순한 선형회귀 모형으로 설명하였으나,

다양한 머신러닝 알고리즘에서도 모형의 대략적인 구조를 세우고 loss를 최소화 하는 최적의 모형을 찾는 일련의 과정이 큰 프레임워크 안에서 공통적으로 이루어지고 있다.


3차시: 머신러닝 프로세스 및 활용

1. 머신러닝 종류

1️⃣ 지도학습 (분류와 회귀)

2️⃣ 비지도학습(군집화, 차원축소 등)

3️⃣ 강화학습(Markov Decision process, DQN, policy Gradient 알파고 등)

 

2. 지도학습

y = f(x)의 관계에서 y가

범주형 변수이면 분류

연속형 변수이면 회귀

 

분류와 회귀 모두 loss function을 정의하고 이 값이 최소화가 되는 지점을 찾는다는 것은 동일하고 loss function의 종류만 다를 뿐이다.

(분류 - accuracy 등, 회귀 - MSE 등)

 

3. 손실함수 최소화

loss function를 최소화하는 방법은 크게 2가지로 구분할 수 있다.

 

출처: 김영훈 교수님 강의 자료

1️⃣ 휴리스틱방법

아주 엄밀한 수리적인 최적화 기법을 적용하지 않고 대략적인 알고리즘적인 접근 법을 통해 손실함수가 최소화 되게끔 유도하는 방법

2️⃣ 수리적인 기법

아주 엄밀한 수리적인 기법으로 로스함수를 정의하고 최소화하는 방법

 

4. 일반화된 오차와 하이퍼파라미터

지금까지 머신러닝에서 모형을 학습시키는 것에 대해 배워보았다. (모형 구축, 손실함수 정의, 손실함수 최소화)

 

머신러닝에서는 모형을 학습시키는 것도 중요하지만,

학습된 모형이 예측을 잘 할 수 있게끔 만들어주는 것도 굉장히 중요하다.

 

그리고 이때 사용하는 개념이 바로 validation이다.

 

가. 오차의 종류

오차를 산정할 때 training error와 validation error를 확인해볼 수 있다.

1️⃣ training error

training data 값과 실제 값의 오차

 

2️⃣ validation error (generation error)

validation data 값과 실제 값의 오차로 generation error라고도 부른다.

 

모델의 복잡성, training error, validation error의 관계를 그래프로 그리면 다음과 같다.

출처: 김영훈 교수님 강의 자료

모델의 복잡성이 높아질 수록 training error는 감소하지만, validation error는 올라가는 추세이다.

머신러닝 모델의 목표는 validation data가 정확하게 예측하도록 하는 것이기 때문에 하이퍼파라미터 튜닝을 통해 최적의 모델 값을 찾아주어야 한다.

 

나. 모델 검증

출처: 김영훈 교수님 강의 자료

모델을 검증하는 과정은 매우 중요하고

가장 권장하는 방법은 3번재이다.

 

Cross validation의 경우 데이터의 수가 적을 때 적합하다.

 

다. 하이퍼파라미터 튜닝과 성능평가

하이퍼파라미터란?

Training 과정에서 우리가 조절해야 되는 파라미터로

basis function의 특징들을 의미하고 복잡도를 결정해주는 것이다.

 

이를 잘 튜닝하는 것이 중요한데, 

보통 training data set을 valid data set으로 쪼갠 다음

valid data set을 활용하여 하이퍼파라미터 후보군에 대해서 하나씩 테스트 해보면서 그 중에 가장 좋은 후보군을 선택하는 것이 바로 하이퍼 파라미터 튜닝이다.

 

이렇게 튜닝을 거쳐 최종적인 기저함수(basis function)이 구현되면

training data set에 가지고 가서 다시 학습을 시킨 다음에(valid로 쪼개지 않은 train 원본으로 학습을 시킨다.)

 

testing data set으로 테스트를 해보면 실제로 이 모형이 어떻게 작동하는지, 잘 작동하는지 등

그 포퍼먼스를 측정할 수 있게된다.

 

 

 

 

 

댓글