안녕하세요?

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

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

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

 

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초 내용을 위와 같이 바꿔야 합니다.

 

감사합니다. 

안녕하세요?

 

11강에서 그라디언트에 대해서 공부했습니다. ML을 공부하며 제가 처음 넘겼던 고비였습니다. 그레이디언트 디센트를 공부하면서 이해는 하겠는데, 뭔가 답답한 기분이 계속 들었습니다. "그레이디언트가 기울기 벡터라고 하고 원래 그레이디언트는 증가하는 방향이다."라는 의미가 안 다가왔었습니다. 네 맞습니다. 그레이디언트 에 대해서 잘 몰랐습니다. 이번강의 보시면서 저처럼 답답한 기분이 드시는 분은 꼭 11강부터 보시기 바랍니다.

11강 보기:https://youtu.be/b5jLTJ68UQY?si=Blp_SYRZArcqdiKf

강의보기: https://youtu.be/V-YRX8fb_aU

 

Optimization(최적화)

최적화는 머신러닝뿐만 아니라 다양한 분야에서 활용되는 이론입니다. AI 대학원에서도 따로 한 과목이 있을 정도로 내용도 많고 중요한 이론이죠.

하지만, 우리는 아직 Deep Learning을 공부하는 단계가 아니니까 아주 간단하게만 공부할 예정입니다. 그래도 딥러닝 최적화에 대한 맛보기 정도는 같이 학습할 겁니다. 지난 강에서 Jacobian과 Hessian을 간단히 소개했기 때문에 충분히 이해할 수 있습니다.

가봅시다.!!

최적화의 3 요소: Objective function, Decision Variable, Constraint

영어로 3요소를 보니까 처음 보는 거 같지만, 앞에 두 개는 이미 공부했습니다.

1. Objective Function(목적함수)

$$ \min_x f(x) $$

$f(x)$ 가 목적함수고 이걸 최소화시키는 x를 찾는다는 겁니다. 많이 보고 들은 말입니다. 우리의 목적함수는 뭐였죠? 맞습니다. MSE 또는 SSE였습니다.

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

위와 같이 쓸 수 있습니다.

 

2. Decision Variable(결정변수)

$$ x = \begin {bmatrix}
x_0 \\
x_1 \\
... \\
x_{N}
\end {bmatrix} $$

우리의 결정변수는 $w$ 였습니다. 우리의 회귀 선을 결정해 주는 변수인 거죠.

$$ w = \begin {bmatrix}
w_0 \\
w_1 \\
... \\
w_{N}
\end {bmatrix} $$

이 두 가지는 Direct Solution을 공부하면서 계속 봐왔습니다. 혹시 잘 모르시면 이전 강의 빨리 돌려서 보시면 금방 이해하실 수 있습니다.

 

3. Constraint(제약조건)

우리의 목적함수 MSE, Loss Function을 구할 때는 제약조건이 없었습니다. 그래서 강의에서 하나 추가해서 예를 들었습니다. $w_j \geqq 0, \forall j$ 즉, 모든 $j$에 대하여 $w_j$는 0보다 크거나 같다는 겁니다. 결괏값(종속변수) $y$ 에 대해서 모든 입력값(독립변수)$x$가 양의 관계를 갖는다고 제약조건을 줬습니다.

집값과 관계가 있는 독립변수를 면적과 방의수로 했는데 만약 전체 데이터에 대해 양의관계가 아니라면 데이터가 부족하거나 편향돼있다고 판단하고 최적화 알고리즘을 실행시킬 필요도 없다는 거죠.

Convex function

출처: https://vitalik.eth.limo/general/2020/11/08/concave.html

 

사실 다 아실 겁니다. "아래로 블록", "위로 블록". Convex를 왜 공부할까요? 그라디언트 디센트가 뭐였는지 제가 간략하게 설명했었습니다. 아무점이나 잡은 다음에 $w$에 대응하는 L(w)를 구하고 $w$를 계속 변경하면서, $\nabla L(w)$가 거의 0과 가까워지면 stop 하는 알고리즘입니다. 그럼 아무 데나 잡은 점에서 convex 한 function 이어야만 합니다. 그래야 $w$를 계속 변경하면서 대입하는 게 의미가 있는 겁니다. $w$에 대한 함수가 아래로 블록 하지 않은데 $w$를 움직여 봤자 최솟값으로 갈 수 없겠죠.

 

여기서 의문이 드셔야 됩니다. 우리가 배운 MSE는 $w$에 대한 함수이고 2차 방정식이었고, 최고차항의 계수는 $x_i^2$으로 무조건 컨벡스인데 이런 알고리즘을 배워야 돼?

 

네 맞습니다. 현재까지 배운 목적함수에 대해서 Convex를 결정하는 알고리즘을 넣는 거는 의미가 없습니다. 하지만 딥러닝에서는 얘기가 다릅니다.

딥러닝의 목적함수

 

딥러닝의 목적함수는 위 그림처럼 아주 복잡합니다. GD는 초기화 시, 아무 점이나 고르기 때문에 현재 점에서 Convex 한 지 판단할 수 있으면, Convex 하지 않은 경우 GD를 생략할 수 도 있을 겁니다.

Convex Function, Convex Set

 

Convex인지 어떻게 판단할까요? 위 그림 아래 수학식이 있습니다.

(수학식의 내용은 강의에서는 더 자세하게 설명했습니다.)

"왜 Convex 수식을 공부해야 되는 거야?" 더 나아가면, Machine Learning 수학식들을 왜 다 공부하는지도 의문입니다.

도대체 왜???????

 

수학식으로 쓸 수 있으면 알고리즘으로 만들 수 있고, 컴퓨터로 프로그래밍이 가능합니다. 컴퓨터는 계산기니 까요.

그럼 진짜 우리가 쓰는 GD알고리즘이 Convex를 판단하고 GD를 할까요?

 

다시 복잡한 딥러닝의 목적함수를 생각해 봅시다. 

 

저렇게 복잡하니 무조건 Non-Convex인데 무슨 소리인지 모르겠는데...

 

그럼 구간을 나누어서 특정 구간에서 Convex인지 판단하는 건 괜찮을 까요? 그리고 다른 $w$(즉 다른 점)를 잡아 다시 해당 구간에서 Convex여부를 판단하고 GD를 한다면 효율적일 것 같습니다. 

 

유튜브 강의에서 Non-Convex 한 4차 방정식의 경우로 생각해봅시다. 4차 방정식은 아래로 블록 2개가 있으니까 Random Initialization을 몇 번해서 Convex한 경우에 GD를 수행하고 $L(w)$가 가장 작을 때를 구하면 될 것 같습니다.  

 

진짜 이렇게 구하는 게 좋을까요? 

GD 코드 예시

 

우리가 쓰는 패키지의 GD관련 Method가 이런 방법을 사용할까요? 진짜 효율적일까 한번 생각해 봅시다. 

 

정답부터 말씀드리면 실제 GD 알고리즘에서 Convex를 판단하는 로직은 없습니다. 위 Deep Learning 목적함수 그림에서 Deep Learning 목적함수를 매우 복잡한 것처럼 표현했지만, 3차원 공간에 최대한 복잡하게 보이게 표현한 것뿐입니다. 실 데이터에서 딥러닝의 목적함수는 3차원 공간에 표현 불가능하고 훨씬 더 복잡합니다. 그 복잡한 목적함수를 구간 별로 나누어서 Convex를 판단한다는 건 전혀 실용적이지 않습니다. Convex 한 지 판단하는 계산을 추가하는 것 자체가 컴퓨터에게 추가적인 부하를 주는 겁니다.

 

그냥 그라디언트 디센트를 진행하고 Local Minimum을 피하기 위한 기법들을 사용하는 게 훨씬 효율적입니다. 또한 앞 서 말씀 뜨렸지만, 우리가 현재까지 배운 MSE는 명확하게 Convex입니다. 굳이 Convex 판단 로직을 추가하지 않아도 됩니다. 

 

Non-Convex는 Global Minimum이 보장되지 않습니다. 즉 Local Minimum에 도달할 가능성이 있다는 거죠. 하지만, Global Minimum을 찾는 방법과 Local Minimum을 피하는 방법이 있습니다. 그래서 굳이 Convex를 판단하지 않고 일단 GD를 진행하고 Global Minimum에 가는 방법을 쓰는 겁니다. 

 

대표적으로 2가지 방법이 있습니다.

 

1. 초기화와 관련된 방법과

2. 수학적으로 GD 식에 변형을 주는 방법도 있습니다.

 

1번 중에 하나는 여러 점에서 GD를 하고 가장 작은 $L(w)$를 선택하는 방법입니다. 유튜브 강의에서 설명했습니다.  또한, 향후 딥러닝을 공부할할 때 여러 번 초기화 하는 것 말고도 Xavier/He 초기화를 공부할 것입니다.

 

2번에는 AdaGrad, Adam, RMSProp 등이 있습니다. 이 역시도 Deep Learning을 학습하며 공부할 예정입니다.

 

아직까지는 Shallow만 이해하셔도 됩니다. 

 

+ Recent posts