본문 바로가기
딥러닝/CS182

CS182 - [Lecture 2] Machine Learning Basics

by sb99 2022. 6. 25.

Part 1

Different types of learning problems

 

머신러닝 문제는 크게 지도 학습, 비지도 학습, 강화 학습으로 나눌 수 있다.

 

 

가장 기초적인 지도 학습 (Supervised Learning)은 X로부터 Y를 예측하는 것이다.

Input인 x와 이에 상응하는 결과인 y가 주어지면, 모델은 이를 학습하고 새로운 x에 대해 y를 예측한다.

이때, 분류 문제에서 사용되는 y를 label이라 부른다.

(지도 학습을 위한 y값을 입력값으로서 제공하기 위해서는 사람이 직접 라벨링 하는 과정이 필요할 것이다.)

결국, 지도학습이란 결괏값을 도출하는 함수를 학습하는 것이라 할 수 있다.

 

그렇다면 지도학습이 생성하는 함수를 어떻게 표현할 수 있을까?

이는 간단한 선형 방정식이나 비선형 방정식으로 표현이 가능하다.

딥러닝의 경우 여러 개의 layers가 쌓여있는 그림으로 도식화할 수도 있을 것이다.

 

또한 우리는 Input 값 x에 대한 예측값 fθ(x)에 대해

입력된 실제값과의 MSE (Mean Squared Error)를 계산함으로써 예측값과 실제값 간의 차이를 구할 수 있다.

이 값은 모델의 정확도를 측정하거나 모델을 학습하는 데 사용된다.

 

 

비지도 학습 (Unsupervised Learning)은 지도 학습과 달리 결괏값이 주어지지 않는다.

비지도 학습의 목표는 데이터의 representation을 학습하는 것이며,

대표적인 모델로는 GAN, VAE 등이 있다.

 

 

강화 학습 (Reinforcement Learning)은 모델의 행동 (결과)에 따른 보상을 극대화하는 방향으로 모델을 학습시키는 것이다.

Input을 받고 결괏값에 따라 모델을 학습한다는 점에서 지도 학습과 비슷한 맥락으로 볼 수 있다.

다만 강화학습의 경우 모델의 행동이 이전의 행동과 보상에 따라 다음의 행동이 달라지며,

정확한 y를 예측하기 위한 방향으로 학습하는 것이 아닌 보상을 극대화하는 방향으로 학습한다는 점이 다르다.

 

 

Part 2

Supervised Learning

먼저 지도 학습에 대해 알아보자.

이전에 언급했던 바와 같이, 지도 학습은 x로부터 y를 예측한다.

즉, x가 입력 되었을 때 실제값과 동일한 y를 생성하는 것을 지도 학습이라 할 수 있을 것이다.

 

하지만 y를 예측하는 것은 그렇게 단순하지 않다.

손글씨 데이터를 예측하는 경우를 생각해보자.

만약 컴퓨터가 악필체를 보고 단순히 숫자 하나만 출력하게 된다면 많은 정보들이 손실될 수 있다.

 

예를 들어, 4번째 줄의 4의 경우 사람이 보아도 4인지 9인지 확신할 수 없다.

이러한 경우에는 4일 확률과 9인 확률을 출력하여 다음 학습에 활용한다면 더욱 많은 정보를 유지할 수 있을 것이다.

 

다시 말해, 우리는 하나의 input에 대해 하나의 label을 예측하기보다는,

각 레이블의 확률을 출력함으로써, 즉, 확률분포를 도출함으로써 더 많은 정보를 학습할 수 있다.

정리하자면, 지도 학습에서는 주어진 input인 x에 대해 해당 x가 y인 확률분포를 계산하는 것이 목표가 된다.

 

개와 고양이를 분류하는 문제에 대해 생각해보자.

랜덤 input인 x가 주어졌을 때 계산되어야 하는 결과는

x가 개 이미지일 확률과 고양이 이미지일 확률로 이루어진 확률 분포이다.

이 두 개의 확률은 0 이상이며, 두 확률 값의 합은 1이 되는 것이 특징이다.

 

그렇다면 함수로부터 도출된 값을 어떻게 확률로서 변경할 수 있을까?

분류의 경우 보통 softmax 함수를 활용한다.

해당 함수는 값의 크기에 따라 0부터 1까지의 수로 변환하며, 두 값의 합은 1이 된다.

 

물론 무조건적으로 softmax 함수를 사용해야 하는 것은 아니다.

입력받은 데이터의 정보를 유지하고 일대일 대응 함수이며,

모든 확률의 합이 1이 되고 양수로 이루어진 확률분포를 생성하는 함수라면 다른 함수를 사용하는 것도 가능하다.

 

 

분류 문제에 자주 사용되는 softmax 함수는 어떻게 작동하는 것일까?

우선 함수로부터 도출된 값 (모델에 x를 입력하였을 때 도출된 값)에 exp를 입힘으로써 양수로 만든다.

또한 분모에 모든 labels에 exp값을 입힌 값을 더하여 추가해주는데,

이로써 모든 확률들을 더했을 때 값이 1이 되도록 만든다.

 

 

그런데 왜 exponential을 활용한 함수가 softmax라는 이름을 가지게 되었을까?

그 이유는 softmax의 형태에서 확인할 수 있다.

softmax함수는 확률이 0.5 부근에서 가장 가파르게 상승하지만,

확률이 0과 1에 가까워질수록 완만한 곡선 모양을 갖는다.

즉, 부드럽게 최댓값과 최솟값에 접근하기 때문에 softmax라는 이름을 가지게 되었다.

 

 

Part 3

Loss Functions

머신러닝의 과정은 다음과 같다.

해당 파트에서는 loss function에 대해 알아보고자 한다.

 

 

Loss Function에 대해 알아보기 전에, 데이터셋이 어떻게 생성되는지 알아보도록 하자.

데이터셋에서 특정 레이블을 지닌 데이터 x가 뽑힐 확률은 p(x)이며,

x를 Input으로서 입력 하였을 때 y가 도출될 확률을 p(y|x) 이다.

즉, 도메인으로서 주어지는 (x,y) 튜플들은 p(x)p(y|x)에 해당하는 p(x,y) 확률을 가진다.

 

 

여기서 핵심은 p(y|x) 부분이다.

p(y|x)는 input x에 대한 label y의 확률을 의미하는 것으로, 모델은 p(y|x)를 학습하게 된다.

p(y|x)를 학습한다는 것은 p(D)가 최대가 되도록 모델의 파라미터들을 학습한다는 것을 의미한다.

 

다만 해당 식을 사용하여 p(D)의 최댓값을 구하는 것에는 문제점이 있다.

p(D)는 여러개의 p(x)p(y|x) 들의 합으로 이루어져있는데, 데이터의 개수가 상당히 큰 경우에는

1보다 작은 값들이 수없이 곱해지게 되면서 수가 매우 작아진다.

수의 절댓값 감소가 커질 수록 정보손실이 발생할 가능성이 커지기 때문에,

우리는 양변에 로그를 취하여 p(D)를 최대화한다.

 

 

하지만 실제로 대부분의 경우에는 p(D)를 극대화 하는 것이 아닌, 

-p(D)를 최소화하는 방향으로 모델을 학습한다. (의미는 같다.)

 

이러한 Loss Function을 negative log-likelihood (NLL)라고 부르며, 

-p(D)를 최소화하기 위해서는 -logp(y|x) 를 최소화하는 방향으로 모델의 파라미터들을 학습한다.

 

 

따라서 모델의 파라미터들은 Loss Functions를 최소화하기 위한 방향으로 학습되므로,

우리는 Loss Functions를 '모델의 파라미터가 나쁜 정도'를 나타내는 척도로서 여길 수 있다.

 

앞서 언급한 손실함수 negative log-likelihood (also called cross-entropy) 이외에도,

답이면 1, 아니면 0을 출력하는 zero-one loss function과

에러를 제곱하여 평균을 출력하는 mean squared error 등이 존재한다.

 

 

Part 4

Optimization

마지막으로 알아볼 내용은 Optimization이다.

우리는 Loss functions을 '모델의 파라미터가 나쁜 정도'라고 정의했다.

따라서 Optimization을 활용하여 Loss functions의 값 (이하 Loss)을 최소화한다.

 

Optimization에 사용되는 수식에 대해 살펴보기 전에 개념적으로 접근해보자.

우측 상단에 그려진 그래프는 파라미터가 2개일 때 형성될 수 있는 Loss를 나타낸다.

현재의 파라미터 값을 고려했을 때 현재의 위치가 검은색 점이라면,

우리는 학습을 통해 검은색 점이 그래프의 가운데로 향하도록 움직여야 할 것이다.

 

더욱 간단하게 나타낸 것이 좌측 중앙부에 그려진 2차원 형태의 그림이다.

검은 점에서의 기울기가 음수이면 검은 점은 오른쪽으로 가야하고,

검은 점에서의 기울기가 양수이면 검은 점은 왼쪽으로 가야함을 확인할 수 있으며,

따라서 모델이 학습 해야 할 방향은 도출된 Loss에 대한 미분 값을 구함으로써 알아낼 수 있다.

 

파라미터가 여러 개일 경우 각각의 파라미터에 대해 미분하면 되며,

미분 값을 이전의 파라미터에 빼줌으로써 Loss를 감소시키는 방향으로 모델을 학습하게 된다.

 

 

이해를 확실히 하기 위해, 먼저 가장 기초적인 알고리즘인 Logistic Regression에 대해 알아보자.

이전에 언급했던 바와 같이 모델은 데이터 x를 입력 받으면, 각 labels에 대한 값들을 반환한다.

이는 (m, 1) 형태의 matrix를 이루고 있으며 m개의 값들을  각각의 확률 값으로서 나타내기 위해 softmax 함수에 입력 된다.

 

 

Logistic Regression을 Binary Classification(이진 분류) 문제에 적용해보자.

이진 분류의 경우에는 P(y1|x) + P(y2|x) = 1이라는 점을 활용하여 수식을 간단하게 정리할 수 있다.

가장 하단에 붉은색 원 안에 있는 공식이 그것이며, 이를 Sigmoid 함수라고도 부른다.

 

 

Risk는 모델이 잘못될 수 있는 확률을 의미한다.

Risk에는 경험적 Risk를 의미하는 Empirical Risk와, 실제 Risk를 의미하는 True Risk가 존재한다.

우리는 실생활에서 자연적으로 발생하는 데이터 중 일부 데이터만 활용할 수 있으므로,

실제로 계산할 수 있는 것은 Empirical Risk이다.

즉, 지도 학습에서는 Empirical Risk를 감소시키는데 초점이 맞춰져있다.

 

하지만 당연하게도 이상적인 Risk 감소는 일부 데이터에 대한 Risk가 아닌,

실제 모든 데이터에 대한 Risk를 의미하는 True Risk의 감소일 것이다.

 

Overfitting은 Empirical Risk는 낮지만 True Risk는 높은 경우로,

데이터 셋의 크기가 너무 작아 실제 데이터를 반영하지 못하거나

모델이 너무 많은 파라미터와 데이터 학습으로 인해 주어진 데이터셋에 과도하게 학습되어 발생할 수 있다.

 

Underfitting은 Empirical Risk와 True Risk가 모두 높은 경우로,

모델의 파라미터와 학습량이 너무 적어 제대로 된 학습이 이루어지지 않았거나

Optimizer가 제대로 설정되지 않은 경우 발생할 수 있다.

 

 

References

'딥러닝 > CS182' 카테고리의 다른 글

CS182 - [Lecture 5] Backpropagation  (0) 2022.07.02
CS182 - [Lecture 4] Optimization  (0) 2022.06.29
CS182 - [Lecture 3] Error Analysis  (0) 2022.06.27
CS182 - [Lecture 1] Introduction  (0) 2022.06.23
[시작] CS182  (0) 2022.06.18

댓글