안녕하세요?

선형회귀를 공부하고 있는 이유

우리는 지금 선형회귀를 공부하고 있습니다. 그런데 왜 선형회귀를 공부해야 할까요?

공부하면서 중간중간에 "내가 왜 이걸 공부하고 있지?"라는 질문을 스스로에게 던지는 것이 중요합니다. 이는 공부에 대한 동기 부여와 내용을 깊이 이해하는 데 도움이 됩니다. 제가 자주 사용하는 공부 방법이기도 합니다.

 

Syllabus가 있는 강의나 책으로 공부할 경우, 반드시 처음에 목차와 세부 목차를 보면서 전체 내용을 예측하고 세부 내용을 공부하는 것이 좋습니다. 세부 내용을 공부할 때는 앞뒤 연결 관계와 이 내용이 전체에서 어떤 위치에 있는지를 이해하는 것이 중요합니다. 그리고 한 단원이 끝날 때마다 그 내용을 머릿속으로 정리해 보세요.

 

시험 전날 벼락치기를 할 때도 이런 식으로 공부하는 것이 유익하며, 시간이 허락한다면 각 단원의 내용을 노트로 정리하는 것도 좋은 방법입니다. 중요한 것은 노트를 잘 필기하는 것이 아니라, 머릿속에서 내용이 잘 정리되도록 하는 것입니다. 단원이 끝난 후에 노트를 보지 않고 내용을 재구성해보는 것이 중요합니다. 가능하다면, 여러분도 직접 강의를 만들어보세요. 자신이 이해한 내용을 다른 사람에게 설명할 수 있을 때, 진정으로 그 내용을 이해한 것입니다.

 

기술사 시험이나 대학원 입시와 같이 방대한 양을 준비할 때는 반복 학습이 중요합니다. 반복 학습을 통해 점차 노트의 내용을 줄여가면서, 제목만 봐도 내용이 머릿속에서 자연스럽게 떠오를 수 있도록 훈련하는 것이 이상적입니다.

선형회귀와 머신러닝

선형회귀는 머신러닝에서 예측에 사용하는 가장 기본적인 알고리즘 중 하나입니다. 우리는 면적, 방의 수 등의 특성이 집값에 선형적으로 영향을 미치는 예를 통해 이 알고리즘을 학습했습니다. 이 과정에서 우리의 데이터에 대해 빨간 선을 그렸고(즉, 모델을 수립했고), 이 모델을 통해 새로운 데이터를 예측할 수 있었습니다.

 

이 빨간선을 그리기 위해 사용한 것은 평균 제곱 오차(MSE, Mean Squared Error)입니다.

 

MSE는 다음과 같이 정의됩니다:

$$ L(w) = \frac {1}{N}\sum_{i=1}^N (w^Tx_{i} - y_{i})^{2} $$

 

이때 우리가 고민해 볼 수 있는 질문은, "과연 MSE를 최소화하는 방식으로 빨간 선을 그리는 것이 합리적인가?" 하는 것입니다. 만약 다른 방법으로도 MSE를 통해 우리의 빨간선을 찾는 것이 옳다는 것을 확인할 수 있다면, 우리는 더욱 확신을 가지고 이 방법을 사용할 수 있을 것입니다.

 

따라서 이번 시간에는 확률적 가정을 통해 MSE로부터 빨간선을 찾는 것이 맞다는 것을 증명하고자 합니다. 이를 위해 먼저 확률 이론을 공부하겠습니다.

 

제가 설명하는 부분은 제가 이해한 내용이므로, 완벽하지 않을 수 있습니다. 하지만 제 설명이 여러분의 이해에 도움이 되기를 바랍니다. 또한, 여러분이 더 잘 알고 있는 내용이 있다면 저에게도 가르쳐주세요.

강의보고오기: https://www.youtube.com/watch?v=pzf4nqN_yCI

강의 동영상

확률 이론의 철학적 배경: 존재론 vs 인식론

 

갑자기 존재론과 인식론이 나옵니다. 저도 처음에 MA Book을 보는데 당황스러웠습니다.

출처: MA book 4th edition, page 255

 

위 표에서 보면 확률이론을 두 가지 관점에서 보고 있습니다. 존재론적 커밋먼트와 인식론적 커밋먼트. 그래서 우리는 먼저 존재론과 인식론에 대해서 이해할 필요가 있습니다.

 

존재론(Ontology): 존재론은 우리가 무언가가 실제로 존재하는지에 대한 질문을 던집니다. 확률 이론에서 존재론적 관점은 특정 사건이 객관적으로 존재하고, 그 사건의 사실 여부에 관심을 둡니다.

 

인식론(Epistemology): 인식론은 우리가 무엇을 어떻게 아는지에 대한 질문을 다룹니다. 확률 이론에서 인식론적 관점은 어떤 사실에 대한 믿음의 정도를 다루며, 이 믿음을 0과 1 사이의 숫자(0, 1 포함)로 표현합니다.

 

사실 철학적 내용은 저도 정말 잘 모르는 내용이니 아래 유튜브를 참고해 주시기 바랍니다.

 

Ontology/Epistemology: https://study.com/academy/lesson/ontology-vs-epistemology-differences-examples.html
(유료입니다. 여유되시는 분들은 결제해서 보세요)

 

영문 유튜브:

https://www.youtube.com/watch?v=F2mHeudPGNI

 

https://www.youtube.com/watch?v=hkcqGU7l_zU

 

 

한글 유튜브:
https://www.youtube.com/watch?v=YmO_6Fskt_w

 

https://www.youtube.com/watch?v=qxHvg6y9sZM

 

 

확률의 이해

확률 이론은 존재론적 관점에서는 사실에 초점을 맞추고, 인식론적 관점에서는 그 사실에 대한 믿음의 정도를 0과 1 사이의 숫자로 표현합니다. 예를 들어, 어떤 사건이 일어날 가능성을 70%로 표현한다면, 이는 그 사건에 대한 믿음의 정도를 나타내는 것입니다..

 

퍼지 논리는 존재론적 관점에서 사실을 받아들일 때 0과 1 사이의 값으로 표현합니다. 그러나 퍼지 논리는 더 유연하게 사실을 다룹니다. 더 자세한 내용은 아래의 유튜브 링크를 참고해 주시기 바랍니다.

 

Fuzzy의 이해: https://www.youtube.com/watch?v=CBTEVFphv-E

 

Fuzzy vs Probability: https://www.youtube.com/watch?v=RXThpkgba7w&list=PLO-6jspot8AL5wrkCNUXAJ8_0qHli6Zat&index=1

 

 

제 강의에서는 명제논리, 술어논리 등에서도 간략하게 설명합니다. 그리고 확률과 Fuzzy의 차이점을 설명하기 위해, 켄타우로스의 예를 들었습니다.

 

각 Language에서 차이점을 보면, 아래와 같이 표현할 수 있습니다.

 

확률: 켄타우로스는 사람이야. 사람일 확률은 60%야
Fuzzy: 켄타우로스는 60% 사람이고, 40%는 말이야. 켄타우로스는 사람에 가까워.

빈도주의(Frequentist) vs 베이지안(Bayesian)

이제 확률에 대한 두 가지 관점을 보겠습니다. 빈도주의와 베이지안입니다.

 

빈도주의(Frequentist):

빈도주의자는 확률을 객관적인 사실로 봅니다. 예를 들어, 동전의 앞면이 나올 확률을 계산할 때, 수많은 동전 던지기 실험을 통해 이 확률을 계산합니다. 즉, 실험 결과에 기반한 객관적 확률을 중요시합니다. 한 번 동전을 던진 결과에 대해서는 확률을 말할 수 없다고 보는 것이 빈도주의자의 입장입니다.
(빈도주의자는 존재론적 관점과 많이 닮아있습니다. 빈도주의자는 사실 자체에 관심이 있습니다. 빈도주의는 동전의 확률을 말할 때 수없이 많은 횟수를 던졌을 때 나온 결과에 따라 확률을 말합니다. 주관적 믿음이 아니라 사실 자체로 받아들인다고 할 수 있습니다. 강의에서 예시처럼 동전을 던진 다음에 확률을 말하라고 하면, 이미 던진 결과에 대한 확률은 없다고 합니다.)

 

베이지안(Bayesian):

베이지안 관점에서는 확률을 주관적인 믿음으로 봅니다. 동전을 던지기 전에도, 던진 후에도 확률을 말할 수 있습니다. 또한, 새로운 증거를 얻을 때마다 기존의 믿음(사전 확률)을 업데이트하여 확률을 재계산합니다.
(베이지안은 인식론적 관점처럼 확률을 믿음으로 봅니다. 따라서 동전을 던지기 전과 던진 후에도 확률을 말할 수 있습니다. 그리고 결과를 본 후에 사전믿음을 업데이트합니다.)

베이즈 정리

 

베이지안관점

베이즈 정리는 베이지안 확률론에서 중요한 역할을 하는 수학적 정리로, 관측된 데이터를 바탕으로 초기 가정이나 믿음을 업데이트하는 방법을 설명합니다. 이 정리는 새로운 증거나 데이터를 반영하여 사전 확률(사전 믿음)을 사후 확률(사후 믿음)로 갱신하는 과정에서 사용됩니다.

 

베이즈 정리 수식의 의미

그림 왼쪽의 식 $P(A|B) = \frac {P(B|A) P(A)}{P(B)}$는 조건부 확률의 기본 성질을 나타내며, 사건 $A$가 주어졌을 때 사건 $B$가 발생할 확률을 계산합니다. 하지만 이것만으로는 베이지안 관점에서의 베이즈 정리를 완전히 설명하지는 않습니다.

 

베이즈 정리와 베이지안 접근

베이즈 정리가 진정으로 의미를 갖기 위해서는 베이지안 관점이 필요합니다. 베이지안 접근법에서는 우리의 사전 믿음 $\theta$를 설정한 후, 데이터를 관찰하고 이를 바탕으로 우리의 믿음을 업데이트합니다.

오른 쪽 아래식으로 설명하면, 어떤 가설 $H$를 세우고 증거 $E$를 관찰한 후, 우리는 베이즈 정리를 통해 이 가설이 맞을 확률을 갱신할 수 있습니다. 위 그림에서 오른쪽의 식이죠.

 

여기서:
$P(H|E)$: 증거 $E$가 주어졌을 때 가설 $H$가 참일 확률 (사후 확률)
$P(E|H)$: 가설 $H$가 참일 때 증거 $E$가 나타날 확률
$P(H)$: 가설 $H$가 참일 사전 확률 (사전 믿음)
$P(E)$: 증거 $E$가 나타날 전체 확률

 

이렇게 베이즈 정리는 기존의 믿음($P(H)$)을 새로운 증거($E$)에 따라 어떻게 업데이트해야 하는지를 수학적으로 설명합니다.

최대우도추정법(MLE, Maximum Likelihood Estimation)

위의 모든 내용은 앞으로 설명할 MLE를 좀 더 확실히 이해하기 위한 내용들입니다. MLE를 왜 하냐고요? MSE가 과연 합리적인지 알아보기 위해 확률적 가정으로도 MSE를 통해 빨간 선을 구하는 것이 맞나 본다고 했습니다. 다음 시간부터 MLE를 공부하도록 하겠습니다.

그라디언트 디센트까지 드디어 정리했습니다. 이번 강은 ITPE에서 제공해주신 서브노트를 정리하는 시간입니다.

초반에도 언급했지만 저는 기술사를 공부할때 AI관련 서브노트 보기가 참 힘들었습니다. 읽어도 이해가 안가서...

지금은 그때보다는 괜찮은 것 같습니다. 앞의 내용을 읽고 강의를 들으신 모든 분들이 서브노트 보시는게 편해졌기를 바랍니다.

 

강의보기: https://www.youtube.com/watch?v=w8q1LnX3yRQ

 

강의수정내용:

강의 내용 6분 48초에 목적함수가 Convex해야 Gradient Descent가 의미있다고 했는데 틀린 설명입니다. Non Convex해도 우리는 GD를 사용합니다. 우선 GD를 사용하고 Local Minimum을 벗어나거나 Global Minimum을 찾는 알고리즘을 사용합니다. 

 

그래서,

 

"Convex 해야 GD를 수행했을떄 Global Minumum이 보장된다. Deep Learning에서 처럼 Convex하지 않다면, 우리는 Global Minimum을 구하기 위해 1. 초기화와 관련된 방법과 2. GD 알고리즘(수학식)에 변형을 주는 기법을 사용한다."

 

6분 48초 내용을 위와 같이 바꿔야 합니다.

 

감사합니다. 

지난 시간에 최적화를 공부했습니다. 왜 최적화를 공부했을까요? 최적화를 이해하면 그라디언트 디센트가 목적함수(손실함수)를 최소화하는 방향으로 모델 파라미터 $w$를 조정하는 과정을 이해할 수 있습니다.

(모델 파라미터: Weight, Bias / 하이퍼 파라미터: Learning Rate)

 

최적화를 판단해서 그라디언트 디센트를 할지 말지 결정할 수도 있습니다. 하지만, 최적화 판단을 GD전에 하는 것은 비효율적이기 때문에 실제로는 사용하지 않는다고 설명드렸습니다. 

 

우리가 아직까지 우리가 배운 선형회귀 모델은 아주 단순해서 Convex를 확인하는 알고리즘 필요 없습니다. 어차피 Convex한 모델만 합니다.  $L(w)$는 $w$에 대한 함수인데, 우리가 현재까지 배운 $L(w)$는 선형회귀의 평균제곱합(MSE)이였습니다. 그리고 이 MSE는 겨우 $w$에 대한 2차 함수이고 계수도 $x^2$으로 다 양수니까 Convex 하다는 겁니다. 최고차항이 2차이고 2차항의 계수가 양수니까요.

 

그래도 지금 최적화에 대한 기본적인 이해를 가져가면 딥러닝을 공부할 때 Convex 하지 않은 목적함수에서 Global Minimum을 어떻게 찾는지에 대해서 더 쉽게 이해할 수 있다고 말씀드렸습니다.

 

이번 강에서는 그라디언트 디센트에 대해서 본격적으로 알아보겠습니다. 알고리즘 기본원리와 종류에 대해 가봅시다.~

강의보기: https://www.youtube.com/watch?v=tDcHML8FW1M

 

그라디언트 디센트 알고리즘

 

기본 알고리즘

우리의 목적함수 MSE는 아래와 같습니다. 

$$ L(w) = \frac {1}{N}\sum_{i=1}^{N}(w^Tx_i - y_i)^2 $$

위 $L(w)$를 $w$에 대해 미분하면 아래와 같이 됩니다. 

$$ \nabla L(w) = \frac {2}{N}\sum_{i=1}^{N}(w^Tx_i - y_i) x_i $$

주로 $x$를 미분해 와서 머릿속이 조금 복잡해지지만, 충분히 하실 수 있습니다.

Gradient Descent Algorithm

 

$x$가 아니라 $w$에 대한 거라는 것만 익숙해지신다면, 위 그림 이해는 쉽습니다. 2차 함수만 이해하면 됩니다. 제 경험상 많은 분들이 그라디언트 디센트 부분은 금방 이해하시더라고요.

무작위 시작점 $w_0$가 그림의 그래프에서 최소점보다 오른쪽에 있으면 $w$에 대한 미분값은 양수가 되어 $w_0$부터 시작하여 점점 작아집니다. 이를 $w$에 대한 미분 값 $\nabla L(w)$가 $\epsilon$ 보다 작거나 같을 때까지 반복한다는 거죠.

 

$w_0$가 그림의 그래프에서 최소점보다 왼쪽에 있을 때도 현재 알고리즘이 맞는지 각자 생각해 보도록 합시다. 

 

Learning Rate(LR) $\gamma$

우리가 처음 배우는 Hyper Parameter입니다. 다른 종류의 파라미터가 하나 더 있었습니다. 네 맞습니다. 모델 파라미터였습니다. $w$와 $b$, Weight와 Bias였습니다. 우리가 모델을 만들기 위해서 구해야 하는 값이죠. Hyper Parameter는 모델을 만들 수 있도록 조정할 수 있는 값들입니다. 하이퍼 파라미터를 구하는 방법이 뭘까요?

별다른 방법이 없습니다. 그냥 성능이 잘 나온다 싶은 놈을 고르면 됩니다. 여러 개 넣어보거나 경험적 지식으로 후보군을 선정해서 돌려본 다음에 성능이 잘 나온 걸로 고르면 됩니다. 하이퍼 파라미터를 선택하는 방법에 대해서는 Youtube 강의 14강에서 다뤘습니다. 궁금하신 분들은 Youtube 강의 14강 2분 9초부터 3분까지 들으시면 됩니다.

https://www.youtube.com/watch?v=w8q1LnX3yRQ

 

아무튼 그라디언트 디센트에서 LR이 너무 크면 $w$ 값이 최소점으로 수렴하지 못하고 최소점의 왼쪽, 오른쪽으로 진동하며 움직일 수 있고, 너무 작으면 수렴하는데 너무 많은 시간이 걸릴 수 있습니다.

여기까지 대부분 학습하는 분들이 잘 이해해서 자세한 설명은 생략하겠습니다. 부족하다 느껴지시는 분들은 유트브 강의를 보시면 좀 더 도움이 되실 겁니다.

그라디언트 디센트 알고리즘의 종류

Batch, Stochastics, Mini Batch 3가지가 있습니다.

 

Batch GD

위 그림에서 아래 부분입니다. 가장 기본적인 부분이죠. 잘 봐야 할 부분은 아래와 같습니다.

$$ L(w) = \frac {2}{N}\sum_{i=1}^{N}(w^Tx_i - y_i) x_i $$

$\sum$가 있으니, 모든 데이터에 대해서 다 더해준 값의 평균을 미분해 준다는 겁니다. 모든 데이터에 대해서 하니까 이 전에 배운 Direct Solution 보다는 속도면에서 괜찮을지 몰라도 맘에는 안 듭니다. 더 빠르게 할 수 있는 방법이 있을 거 같습니다.

 

Stochastics GD

Stochastics는 주식하시는 분들은 대부분 들어보셨을 것 같습니다. 확률적이라는 뜻입니다. 위 Stochasitcs 식에서 보면 Batch와 결정적 차이가 있습니다. 네. 맞습니다. $\sum$이 없습니다. 데이터 하나에 대해 바로 $w$를 업데이트합니다. 그리고 정해진 값만큼 반복하거나 $w$값에 업데이트가 없을 때까지 반복합니다.

따라서, 운이 좋으면 BGD에 비해서 빠르게 괜찮은 Global Minimum으로 수렴하지만, 운이 없으면 Local Minimum에 빠질 수 있습니다. 따라서 데이터를 적용할 때마다 잘 섞어줄 필요가 있습니다.

무슨 소리냐고요? 이해가 잘 안 갈 때 가장 좋은 방법은 극단적인 예시를 보는 겁니다.

위 SGD 그림에서 그래프를 봅시다. 파란색 동그라미가 데이터 포인트라고 하고 epoch가 4라고 가정하겠습니다. 그리고 빨간 선은 BGD로 구한 우리의 빨간 선입니다. 만약 우리가 SGD를 하면서 4개의 Point를 분홍색으로 고른다면, 많은 데이터 포인트에 대해서 다 고려할 필요 없이 4개의 포인트 만으로도 빨간 선과 거의 유사한 선을 구할 것입니다. 아주 빠르게 수렴할 수 있다는 겁니다.

하지만 만약 4개의 포인트를 빨간색으로 고른다면 초록색 선으로 수렴해 버릴 겁니다. Local Minimum에 빠지는 거죠. 그래서 데이터를 잘 섞어줄 필요가 있는 겁니다. 이해가 가셨나요? Youtube를 보신다면 더 잘 이해하실 수 있을 겁니다.

 

Mini Batch GD

예상하셨겠지만 BGD와 SGD의 절충안입니다. BGD는 한 번에 전체 데이터를 고려해서 하고, SGD는 한번에 하나의 데이터르 고려해서 합니다. 절충안인 Mini Batch는 적절한 데이터 수로 그룹핑해서 돌립니다. 총 데이터 수가 100개 일 때 10개 데이터 포인트를 골라서 정해진 epoch만큼 진행한다는 겁니다.

Batch Size를 어떻게 정할까요? 네, 이것도 하이퍼 파라미터이고 별다른 방법이 업습니다. 데이터마다 다를 수 있기 때문입니다.

세 개 GD 알고리즘 성능

 

세개 알고리즘에 대한 아주 유명한 그림입니다. 위의 수식과 설명을 이해하셨다면 이 그림의 의미를 분명히 이해하셨을 겁니다. 뭔가 답답하신 분들은 Youtube 강의를 보시면 될 것 같습니다. 저는 개인적으로 혼자 생각해 보시는 것을 강력히 추천드립니다.

Over Fitting

데이터가 너무 부족하거나 내재된 편향이 있을 때 오버피팅이 발생할 수 있습니다. 데이터가 적을 때 우리의 회귀선이 모든 데이터 포인트를 지나가게 한다면 어떨까요?

 

현재 주어진 데이터(훈련데이터)는 완벽하게 설명하고 있다고 볼 수 있습니다. 그런데 새로운 데이터는요(테스트 데이터, 실제데이터)? 선 위에 없을 확률이 높아집니다. 그런데 현재 데이터를 모두 선위에 두려고 복잡한 다항식을 만들었다면 계속해서 다르게 찍히는 새로운 데이터의 경향성과 관계가 없을 확률도 높아지는 겁니다.

오버피팅은 다시 다룰 예정이니 이 정도만 하고 마치겠습니다.

 

감사합니다.

+ Recent posts