[CS182] Lecture 2: ML Basics 1 (머신러닝 문제의 종류, Model, Loss function, Optimizer)
인공지능/CS182 스터디

[CS182] Lecture 2: ML Basics 1 (머신러닝 문제의 종류, Model, Loss function, Optimizer)

해당 글은 CS182: Deep Learning의 강의를 정리한 글입니다. 여기서 사용된 슬라이드 이미지의 권리는 강의 원작자에게 있습니다.

머신러닝 문제의 종류


머신러닝이 다루는 문제는 주어진 데이터가 어떤 형식으로 전달되는지에 따라 Supervised learning(지도 학습), Unsupervised learning(비지도 학습), Reinforcement learning(강화 학습) 세가지로 구분할 수 있다.

Supervised learning

Supervised learning은 입력 데이터 $x$가 주어지면 그에 대응되는 라벨 데이터 $y$를 예측해야 하는 문제입니다. 동물 사진이 주어지면 어떤 동물이 찍혀있는지를 맞추거나, 영어 문장을 프랑스어 문장으로 변역하거나, 엑스레이 사진을 보고 질병이 있는지를 예측하기 등의 문제들이 모두 supervised learning에 속합니다.

Supervised learning 문제에서 주어진 데이터는 입력 데이터와 라벨 쌍$(x,y)$으로 주어집니다. 그래서 보통 데이터셋을 다음과 같이 표현합니다.
$$
\mathcal{D}={(x_1,y_1),(x_2,y_2),...,(x_n),(y_n)}
$$
그래서 supervised learning을 데이터셋 $\mathcal{D}$가 주어지면 $f_\theta(x)\approx y$가 되도록 파라미터 $\theta$ 값을 찾는 문제라고 표현할 수 있습니다.

Supervised learning은 매우 다양한 문제가 존재하며, 많은 회사들이 자신의 제품에 supervised learning 모델을 사용하고 있습니다. 스팸메일 필터나 손글씨 인식부터 얼굴 인식이나 기계 번역까지 다양한 문제와 예시가 존재합니다.

Unsupervised learning

Unsupervised learning은 입력 데이터 $x$만 주어진 상태로 해결해야하는 문제를 말합니다. Supervised learning은 $x$에서 $y$를 예측할 수 있도록 representation을 학습합니다. 그렇기에 supervised learning에서 얻은 representation는 과제에 특화되어 있습니다. 하지만 unsupervised learning은 $x$만 주어진 상태로 representation을 학습해야 합니다. 그러다보니 unsupervised learning이 학습한 representation은 데이터의 일반적인 특성을 담고 있다고 할 수 있습니다.

Unsupervised learning을 사용하는 대표적인 과제로 generative modeling과 self-supervised representation learning이 있습니다. Generative modeling은 데이터를 생성하는 모델을 학습하는 과제를 말합니다. GAN처럼 파악한 데이터의 특성을 모방한 새로운 데이터를 생성하거나 VAE처럼, 학습한 representation이 나타내는 특성을 데이터로 변환하는 것 처럼 $x$의 특성을 파악해 데이터를 생성합니다.
Self-supervised representation learning은 라벨 데이터를 입력 데이터와 똑같이 두고 supervised learning을 수행하는 방법을 말합니다. 대표적으로 BERT나 GPT의 pretrain에서 사용합니다. 두 모델 모두 다음에 올 적합단 단어를 예측하도록 학습합니다. 이렇게 하면 모델이 텍스트에 대한 특성을 학습했기 때문에 이후 downstream task에 대한 fine-tuning을 더 빠르게 수행할 수 있습니다.

Reinforcement learning


Reinforcement learning의 문제 상황은 supervised learning이나 unsupervised learning과는 많이 다릅니다. Reinforcement learning 모델의 목표는 상황에 대한 정보를 받으면 행동을 결정하여 전체적으로 가장 많은 보상을 얻는 것입니다. 예를 들어, 자율 주행 모델을 학습한다고 하면 자동차 주변이나 도로의 상황을 입력받고 자동차를 어떻게 운전할지를 학습하게 됩니다. 이때 안전하게 운전할 때마다 보상을 주거나 교통 법규를 위반할 때 벌을 주는 방식으로 피드백을 전달하게 되면 자율 주행 모델은 최대한 안전하게 운전하는 방향으로 자동자의 행동을 결정할 것입니다.

Reinforcement learning 또한 많은 분야에서 활발하게 사용되고 있습니다. 예를 들어, 로봇이 다양한 환경에 적응하거나 웹페이지에서 광고를 어디에 배치해야 사용자에게 노출이 잘 되는지 분석하는 등의 다양한 문제를 reinforcement learning을 통해 해결할 수 있습니다.

Supervised Learning 문제를 풀기 위한 세가지

앞에서 언급했듯, 물체 감지나 기계 번역처럼 입력 데이터와 라벨 데이터 쌍이 존재하는 문제는 supervised learning으로 해결할 수 있습니다. 예를 들어, 어떤 입력 데이터가 들어오면 이 데이터가 강아지를 나타내는지, 아니면 고양이를 나타내는지 판별하는 문제를 supervised learning으로 해결 할 수 있습니다.
하지만 supervised learning을 적용하기 위해서는 다음 세가지를 정해야 합니다.

  • Model $f_\theta(x)$ 정하기
  • Loss function $\mathcal{L}(\theta)$ 정하기
  • Optimizer 정하기

각각이 무엇이고 어떤 역할을 하는지는 강아지와 고양이를 구분하는 문제를 해결하는 예시를 통해 알아봅시다.

Model 정하기

먼저 model을 정해야 합니다. Model이란 입력 데이터 $x$를 통해 라벨 데이터 $y$를 예측하는 규칙 또는 함수를 말합니다. 이때 이 함수는 파라미터 $\theta$에 의해 달라지기 때문에 parameterized function이라고도 부르기도 합니다. 그래서 모델을 수학 기호로 $f(x, \theta)$ 또는 $f_\theta(x)$처럼 표기하기도 합니다. 우리는 여기서 $f_\theta(x)$가 $y$를 정확하게 예측할 수 있도록 $\theta$값을 찾아야 합니다.

 

그렇다면 강아지와 고양이를 구분하는 $f_\theta(x)$을 정하도록 해봅시다. 함수를 정할 때는 $x$와 $y$가 어떤 값인지를 정해야 합니다. $x$는 사진일 수 있고 아니면 사진에서 어떤 특성을 뽑아낸 데이터일 수 있습니다. 하지만 여기서는 들어오는 값을 그대로 사용할 겁니다.
그렇다면 $y$는 어떨까요? 왠지 $y$값이 강아지 또는 고양이 그대로 나오면 될 것 같습니다. 하지만 여기서는 해당 동물이 강아지일 확률과 고양이일 확률을 반환해보기로 합니다. 왜 확률로 정한걸까요?

 

이유는 모든 데이터의 라벨을 이산적으로 표현하기 힘든 경우도 존재하기 때문입니다. 위의 예시는 MNIST의 손글씨 이미지를 보고 어떤 숫자인지 예측해본 결과입니다. 오른쪽에 있는 확률값들은 왼쪽의 글자를 보고 어떤 숫자일지를 확률로 나타낸 겁니다. 어떤 경우는 명백하게 한가지 숫자로만 보입니다. 하지만 세번째 숫자의 경우 저 글자가 3인지 5인지 조금 애매합니다. 모델도 3일 확률과 5일 확률이 다른 숫자들에 비해 높습니다. 이런 경우 모델이 예측하는 숫자 하나만을 내뱉는다면 이러한 정보를 얻을 수 없습니다. 하지만 모델이 확률을 반환한다면 모델이 어떤 데이터를 명확하게 구분하고 어떤 데이터를 햇갈려하는지 알 수 있게 됩니다. 이는 머신러닝 모델을 통해 판단을 내릴 때 중요한 정보가 됩니다. 하지만 여기서는 가장 높은 확률의 라벨을 모델이 예측한 라벨로 볼 겁니다.
이처럼 각 라벨별 확률을 계산하는 모델을 표현하자면 $f_\theta(x)=p_\theta(y|x)$이 될 것입니다. 결국 $x$가 결정됐을 때 어떤 라벨일 확률을 계산하기 때문에 조건부 확률로 표기할 수 있습니다. 그리고 이 조건부 확률도 파라미터에 따라 달라질 수 있어야 하기 때문에 조건부 확률에 $\theta$가 들어가 있습니다. 참고로 파라미터 값도 입력값이기 때문에 $p(y|x,\theta)$로 적은 경우도 있습니다.

 

이제 본격적으로 모델을 정해봅시다. 아주 간단한 방법은 입력값에 파라미터를 곱해 하나의 값을 계산하는 방법입니다.
$$\begin{align}
p(y=\mathrm{dog|x})&=x^T\theta_{\mathrm{dog}}\\
p(y=\mathrm{cat}|x)&=x^T\theta_{\mathrm{cat}}
\end{align}$$
하지만 이런 방식으로는 확률값을 만들기 어렵습니다. 확률은 0과 1 사이의 값이여야 하는데, 입력값과 파라미터의 내적이 0과 1사이에 들어간다는 것을 보장할 수 없기 때문입니다. 또한 두 확률의 합이 1이 되어야 합니다. 이 또한 내적만으로 보장하긴 어렵습니다.

 


이 두가지 조건을 만족하기 위해 softmax를 사용할 겁니다. 즉 여기서 사용할 모델은 다음과 같습니다. softmax 함수를 통해 각 라벨별로 계산한 함수값을 확률값처럼 변환할 수 있습니다.
$$ \begin{align}
f_\theta(x)&=\mathrm{softmax}(p(y=\mathrm{dog|x}),p(y=\mathrm{cat}|x))=\mathrm{softmax}(x^T\theta_{\mathrm{dog}},x^T\theta_{\mathrm{cat}})\\
\theta&={\theta_{\mathrm{dog}},\theta_{\mathrm{cat}}}\\
\mathrm{softmax}(x_1,x_2,...,x_n)&={\frac{e^{x_1}}{\sum_i^ne^x_i},\frac{e^{x_2}}{\sum_i^ne^x_i},...,\frac{e^{x_n}}{\sum_i^ne^x_i}}
\end{align} $$
이러한 방식으로 각 라벨에 해당될 확률을 구하는 모델을 Logistic Regression이라 부릅니다.

Loss function 정하기

Loss function이란 모델의 예측값과 실제 라벨값이 얼마나 차이나는지 계산하는 함수를 말합니다. 달리 말하자면 모델이 얼마나 예측이 틀렸는지를 계산하는 함수입니다. 우리는 Loss function을 통해 어떤 파라미터 값이 더 정확하게 예측하는지 수치로 비교할 수 있습니다. 또한 optimizer를 정할 때 설명하겠지만, 어떤 파라미터 값을 사용할지 정할지에도 영향을 줍니다.

그렇다면 어떤 Loss function을 골라야 할까요? 모델이 확률 분포 $p(y|x)$를 예측하는 만큼 Loss function을 도출하는 방식도 여기에서 더 들어가도록 합시다.

 

먼저 데이터셋을 구축하는 과정을 먼저 살펴봅시다. 사진을 보고 강아지와 고양이를 구분하기 위해서는 일단 강아지 사진과 고양이 사진이 필요할 겁니다. 이 과정은 $x\sim p(x)$처럼 표현할 수 있습니다. 이미지에 대한 확률분포 $p(x)$에서 어떤 표본 사진을 추출했다고 볼 수 있습니다.
그 다음에는 수집한 사진에 강아지인지 고양이인지 라벨을 부여하는 과정을 수행해야 합니다. 이 또한 표본 추출로 표현하면 $y \sim p(y|x)$이라 할 수 있습니다. 여기서 $p(y|x)$는 라벨링하는 사람의 생각이라고 비유하면 이해하기 쉽습니다. 위의 슬라이드에 나온 사진처럼 누가 봐도 강아지로 보이는 사진은 $p(y=\mathrm{dog}|x)$값이 매우 클 것이고 실제로 dog 라벨이 붙여질 확률이 아주 높습니다. 하지만 구분이 어려운 사진의 경우 $p(y=\mathrm{dog}|x)$와 $p(y=\mathrm{cat}|x)$값이 비슷할 것이고 확률에 의해 강아지와 고양이 둘 중 하나로 붙여질 것입니다.

 

이 동물은 강아지일까요, 고양이일까요? 출처: https://m.animalplanet.co.kr/contents/?artNo=4744

이렇게 되면 결국 우리가 데이터셋을 구축하는 과정을 $(x,y)\sim p(x,y)$이라 말할 수 있습니다. $p(x)$에 의해 $x$가 결정되고 $p(y|x)$에 의해 $y$가 결정되므로 조건부 확률의 정의에 의해 입력 데이터와 라벨 쌍$(x,y)$는 $p(x)p(y|x)=p(x,y)$에 의해 결정됐다고 할 수 있습니다.

 


그렇다면 우리는 수집된 데이터셋 $\mathcal{D}={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}$의 확률 $p(\mathcal{D})$를 구할 수 있습니다. 데이터셋의 표본 $(x_i,y_i)$는 위에서 설명한 대로 $(x_i,y_i)\sim p(x,y)$대로 추출되었기 때문에 각 표본의 확률은 $p(x_i,y_i)=p(x_i)p(y_i|x_i)$로 구할 수 있습니다. 그리고 각 표본은 독립항등분포(independent and identically distributed, i.i.d.)를 만족합니다. 즉, 표본끼리 독립 사건이며 표본 모두 동일한 확률분포에 의해 뽑혔습니다. 따라서 $p(\mathcal{D})$는 다음과 같이 구하면 됩니다.
$$
p(\mathcal{D})=\prod_ip(x_i,y_i)=\prod_ip(x_i)p(y_i|x_i)
$$

 


앞에서 설명했듯이 사람이 라벨링하는 과정을 $y\sim p(y|x)$로 표현할 수 있습니다. 그렇다면 사람이 아니라 모델이 한다면 어떨까요? 즉,
$$
p(\mathcal{D})=\prod_ip(x_i)p_\theta(y_i|x_i)
$$
은 무엇을 의미할까요? 이는 모델이 얼마나 잘 맞추는지 볼 수 있는 수치가 될 것입니다. $p_\theta(y_i|x_i)$은 입력 데이터 $x_i$를 보고 해당 데이터의 라벨이 $y_i$ 일 확률을 계산합니다. 그렇다면 모델이 정확하게 라벨을 예측했다면 $p_\theta(y_i|x_i)$ 값은 높아질 것입니다.

 


그렇다면 우리는 $p(\mathcal{D})$값을 높일 수 있는 방향으로 파라미터 $\theta$를 조절한다면, $p_\theta(y_i|x_i)$는 현실세계에서 라벨링하는 $p(y_i|x_i)$와 유사해질 수 있다고 생각해볼 수 있습니다. 이를 수학으로 표현해봅시다.
$$
\theta^*\leftarrow\arg \max_\theta \prod_ip(x_i)p_\theta(y_i|x_i)
$$
만약 이를 직접 계산한다면 모든 수를 곱해야 합니다. 그런데 곱할 값들이 모두 확률입니다. 0과 1사이의 값을 계속 곱하다보면 0에 가까운 값들이 나올 수도 있습니다. 무엇보다 컴퓨터에서는 실수 표현에 한계가 있기 때문에 정확한 값을 구하기 어렵습니다. 그러다보니 보통 $p(\mathcal{D})$이 아니라 $\log p(\mathcal{D})$을 구합니다.
$$
\log p(\mathcal{D})=\sum_i{\log p(x_i)+\log p_\theta(y_i|x_i)}=\sum_i\log p_\theta(y_i|x_i)+\mathrm{const}
$$
여기서 $p(x_i)$는 $\theta$가 변해도 항상 같은 값을 가집니다. 그렇기 때문에 상수로 간주하고 $p_\theta(y_i|x_i)$만 신경써도 됩니다. 그래서 최종적으로
$$\begin{align}
\theta^*&\leftarrow\arg\max_\theta\sum_i\log p_\theta(y_i|x_i)\\

&\mathrm{or}\\

\theta^*&\leftarrow\arg\min_\theta-\sum_i\log p_\theta(y_i|x_i)
\end{align}$$
이라 표현할 수 있습니다. 여기서 표현이 두 개인 이유는 첫번째 식은 위에서 본 그대로 적용해 값이 최대값이 되는 $\theta^*$를 찾는 문제로 설정한 겁니다. 이를 maximum likelihood estimation (MLE)라 부릅니다. 하지만 optimizer는 보통 loss 값을 줄이는 방식을 사용합니다. 그렇다보니 보통은 두번째 식처럼 최솟값이 되도록 $\theta^*$를 찾는 문제로 변환합니다. 여기서 두번째 식에서 보이는 식 $-\sum_i\log p_\theta(y_i|x_i)$을 negative log likelihood (NLL)이라고 부릅니다. 또한 NLL 식이 정보이론에서 cross entropy 식과 똑같기 때문에 cross entropy라고도 부릅니다.
이제 우리는 loss function을 찾은 겁니다. NLL 값이 최솟값을 갖도록 하는 $\theta$값을 구하면 우리는 그것이 정확한 예측을 해낼 수 있다는 것을 알게 되었습니다. 그렇기 때문에 우리는 loss function $\mathcal{L}(\theta)=-\sum_i\log p_\theta(y_i|x_i)$로 둘 수 있는 것입니다.

 


NLL 말고도 다양한 loss function이 존재합니다. zero-one loss 처럼 틀린 개수를 나타내는 함수도, 오차의 제곱을 계산하는 mean squared error 외에도 모델의 예측이 얼마나 틀렸는지를 나타낼 수 있다면 loss function으로 사용할 수 있습니다.

Optimizer 정하기

Optimizer란 모델이 최대한 정확하게 예측할 수 있도록 $\theta$ 값을 찾는 방법을 말합니다. 최적의 $\theta$를 찾는 방법도 매우 다양합니다. 주어진 범위 내에서 랜덤으로 값을 정하면서 탐색하는 random search이나, 오차의 제곱 합이 최소가 되는 해를 찾는 최소제곱법 (least square method) 등이 존재합니다. 하지만 여기서는 딥러닝에서도 두루 쓰이는 방법인 Gradient Descent (경사하강법)을 사용할 겁니다.

 

Gradient Descent는 직관적으로 이해하기 쉽습니다. 표면에 구슬을 놓으면 맨 아래로 굴러가듯이 loss function으로 그려지는 평면에 $\theta$값을 맨 아래로 굴리면 됩니다. 이를 위해 현재 $\theta$값이 있는 위치의 기울기를 구하고 내려가는 방향으로 $\theta$값을 조정하면 됩니다. 이를 식으로 표기하면 다음과 같습니다.
$$
\theta\leftarrow\theta-\alpha\nabla_\theta\mathcal{L}(\theta)
$$
먼저 $\nabla_\theta\mathcal{L}(\theta)$을 먼저 계산합니다. $\nabla_\theta\mathcal{L}(\theta)$는 loss function에 $\theta$의 각 변수에 대한 편미분을 구하면 됩니다. 이러면 각 변수마다 기울기를 구하게 됩니다.
$$\begin{eqnarray}
\nabla_\theta\mathcal{L}(\theta)=\left[ {\begin{array}{cc}
\frac{\delta\mathcal{L}(\theta)}{\delta\theta_1}\\
\frac{\delta\mathcal{L}(\theta)}{\delta\theta_2}\\
...\\
\frac{\delta\mathcal{L}(\theta)}{\delta\theta_n}\\
\end{array}}\right]
\end{eqnarray} $$
이후 $\nabla_\theta\mathcal{L}(\theta)$을 $-\alpha$를 곱하고 $\theta$에 더해주면 됩니다. 음수로 바꾸는 이유는 이차 함수를 두고 계산해보면 알 수 있습니다. 양의 기울기면 변수값을 빼고, 음의 기울기면 변수값을 더해줘야 최소값에 도달할 수 있습니다. 그리고 $\alpha$는 일종의 속도를 조절하는 역할을 합니다. Lecture 4때 배우지만 기울기가 너무 크면 loss 값이 최소가 되는 위치에서 멀어질 수 있고, 너무 작으면 최소값에 도달할 때까지 걸리는 시간이 길어집니다. 이제 이 과정을 $\mathcal{L}(\theta)$가 최소가 될 때까지 반복해 $\theta$값을 찾으면 됩니다.

이진 분류(Binary classification)의 경우

우리가 사용한 모델은 라벨의 종류가 세가지 이상이여도 적용할 수 있습니다. 각 라벨마다 파라미터를 두기만 하면 되기 때문입니다. 하지만 우리가 설정한 강아지-고양이 분류 문제처럼 두 가지 라벨이 있을 때는 궅이 파라미터를 두가지로 둘 필요가 있을까요? 문제에서는 강아지가 아니면 고양이기 때문에 강아지일 확률이 낮다면 고양이일 확률이 높은 것 아닌가요?

그렇기 때문에 보통 이진 분류 문제에서는 한 라벨에 대한 확률만 구합니다. 강아지일 확률을 구하기만 하면 해당 이미지가 강아지일지 고양이일지를 예측할 수 있습니다. 그리고 확률을 한가지만 구하기 때문에 파라미터도 한 라벨에 대한 파라미터만 있으면 됩니다. 이렇게 하면 파라미터를 두개로 뒀을 때보다 찾아야할 파리미터 값 개수가 줄어들기 때문에 더 빠르게 찾을 수 있습니다. 하지만 파라미터를 두개로 뒀을 때와 똑같이 분류할 수 있는지 어떻게 확신할 수 있을까요?
이때 수학이 필요합니다. 다음 식을 봅시다.
$$
P(y_1|x)=\frac{e^{\theta^T_{y_1}x}}{e^{\theta^T_{y_1}x}+e^{\theta^T_{y_2}x}}
$$
위의 식은 $x$가 $y_1$일 확률을 구하는 식입니다. 여기서는 $\theta_{y_1}$와 $\theta_{y_2}$ 모두 알아야 확률을 구할 수 있습니다. 하지만 여기서 조금 식을 변형해봅시다.
$$\begin{align}
P(y_1|x)&=\frac{e^{\theta^T_{y_1}x}}{e^{\theta^T_{y_1}x}+e^{\theta^T_{y_2}x}}\\
&=\frac{e^{\theta^T_{y_1}x}e^{-\theta^T_{y_1}x}}{(e^{\theta^T_{y_1}x}+e^{\theta^T_{y_2}x})e^{-\theta^T_{y_1}x}}\\
&=\frac{e^{\theta^T_{y_1}x-\theta^T_{y_1}x}}{e^{\theta^T_{y_1}x-\theta^T_{y_1}x}+e^{\theta^T_{y_2}x-\theta^T_{y_1}x}}\\
&=\frac{1}{1+e^{(\theta^T_{y_2}-\theta^T_{y_1})x}}\\
&=\frac{1}{1+e^{\theta^T_yx}},\mathrm{where}\ \theta_y=\theta_{y_2}-\theta_{y_1}
\end{align} $$
다음과 같이 변형하면 굳이 파라미터를 두개나 할 필요가 없다는 것을 알 수 있습니다. 식을 정리하면 결국 입력 값 $x$와 파라미터 $\theta_y$를 곱하고 이를 sigmoid 함수에 넣으면 우리는 한 라벨의 확률을 구할 수 있습니다.
사실 이렇게 증명하지 않아도 짐작할 수 있는 쉬운 방법이 있습니다. 어차피 모든 라벨의 확률 합은 1이 되기 때문입니다. 즉, $P(y_1|x) + P(y_2|x) = 1$이기 때문에 $P(y_2|x)=1-P(y_1|x)$처럼 구할 수 있기 때문에 실제로 $P(y_1|x)$만 구하면 된다는 사실을 알 수 있습니다.

Empirical Risk와 True Risk

우리는 모델을 학습시키기 위해 현실 세계에서 데이터 일부를 추출합니다. 다시 말하자면 우리는 표본집단에 있는 데이터로 모집단 데이터를 예측하는 모델을 만듭니다. 그렇다면 표본집단으로 학습한 모델은 과연 모집단 데이터를 잘 예측할 수 있을까요?

 


이를 추론하기 위해서는 Risk 라는 개념이 필요합니다. Risk란 모델의 예측이 평균적으로 가지는 loss값을 말합니다. 해당 모델이 예측했을 때 생길 loss의 기댓값으로 나타낼 수 있다.
$$
\mathrm{Risk}=E_{x\sim p(x),y\sim p(y|x)}[\mathcal{L}(x,y,\theta)]
$$
여기서 $p(x)$와 $p(y|x)$은 현실세계, 또는 모집단의 확률 분포입니다. 그렇기에 True risk라고도 부릅니다. 그렇다면 모집단이 아니라 학습 데이터셋 $\mathcal{D}$에 대한 Risk도 있을 겁니다. 이를 Empirical risk라고 부릅니다.
$$
\mathrm{Empirical\ Risk}=E_{(x,y)\sim\mathcal{D}}[\mathcal{L}(x,y,\theta)]
$$

 


이제 우리의 문제로 다시 돌아와봅시다. 우리는 데이터셋을 가지고 학습한 모델이 실제 데이터도 잘 예측하는지 알고싶습니다. 이 문제를 아까 배운 Risk의 개념으로 설명하면 'Empirical risk를 최대한 낮추도록 모델을 학습시키면 True risk도 낮아질까?' 가 됩니다.
하지만 Emprical risk를 낮춘다고 True risk도 항상 낮아지지 않습니다. 때로는 Empirical risk가 낮아도 True risk가 높은 경우가 있습니다. 우리는 이를 Overfitting이라고 부릅니다. 모델이 Overfitting 됐다는 뜻은 학습 데이터셋은 매우 잘맞추지만 실제 데이터를 집어넣으면 제대로 예측하지 못한다는 뜻입니다. 이런 경우는 보통 학습 데이터셋이 너무 작거나 모델이 너무 커서 발생합니다.
이와는 다른 경우도 존재합니다. 학습을 계속 했음에도 불구하고 Empirical risk와 True risk 모두 높은 경우가 발생하기도 합니다. 이러한 경우는 Underfitting이라고 부릅니다. Underfitting된 모델은 학습 데이터든 실제 데이터든 모두 제대로 예측하지 못합니다. 이런 경우에는 모델이 너무 작거나 optimizer의 하이퍼파라미터를 제대로 설정하지 못하면 발생합니다.
Overfitting과 Underfitting은 다음 강의에서 자세하게 살펴볼 것이기 때문에 일단 여기서는 학습할 때 두가지 상황이 발생할 수 있다는 것을 유념하시면 됩니다.

Summary

이번 강의에서 우리는 머신러닝 문제의 종류가 Supervised learning, Unsupervised learning, Reinforcement learning 세가지로 나눠진다는 것을 배웠습니다.
또한 Supervised learning 문제를 해결하기 위해서는 model, loss function, optimizer가 필요하다는 것도 배웠습니다. 여기서 강아지-고양이 이미지를 분류하기 위해 logistic regression, negative likelihood-loss, gradient descent를 간단하게 알아보았습니다. 여기서 gradient descent는 이후 lecture 4에서 심도 있게 다룰 것입니다.
마지막으로 Empirical risk와 True risk 개념을 통해 모델이 항상 학습 데이터셋을 잘 예측한다고 실제 데이터를 잘 예측하지 않는다는 것도 설명할 수 있습니다. 해당 개념은 바로 다음 lecture에서 수학적으로 다뤄 어떻게하면 true risk도 줄이는 방향으로 학습할 수 있는지 알아볼 것입니다.