​지난 시간 정리

MLE에 대한 간략한 소개까지 완료 했습니다.

 

다시 한 번 간단히 말씀드리면, 데이터를 목격하고 과연 이 데이터는 어떻게 생긴 분포로 부터 나온것 이 가장 있음직(likelihood) 할까를 구하는 문제입니다.

 

제주도 옆 우도 예제를 말씀드리며 개와 고양이 중에 뭘 봤냐라는 문제는 이항분포를 가정하고 MLE를 통해 이항분포의 모수 p(개를 볼 확률)를 구해봤습니다. 또한, 그냥 동물을 보고 무게를 측정했을 때는 정규분포를 가정하고 MLE를 통해 정규분포의 모수 평균과 분산을 구해봤습니다.

 

이제 Gaussian Noise를 선형회귀에 적용하여 MLE에서 배운 지식을 활용해 우리가 사용했던 MSE(또는 SSE)가 진짜 합리적이였는지 봐야합니다.

 

제가 전에도 말씀 드렸죠? 우리는 왜 이 공부를 하고 있는지 생각하면서 가는게 정말 중요하다고요.

우리는 MSE(또는 SSE)를 활용해서 우리가 예측에 사용할 빨간선을 구했습니다. 그런데 진짜 MSE(또는 SSE)를 활용해서 빨간선을 구하는게 합리적인지 의심이 생겼다고요. 그래서 다른 방법으로도 MSE(또는 SSE)를 활용하는 것이 맞다고 나온다면 우리는 의심을 거둘 수 있을 겁니다.

 

Gaussian Noise를 선형회기에 적용하고 MLE를 활용해도 역시 MSE(또는 SSE)가 합리적이였다는 것을 알 수 있습니다. 수학적으로 SSE와 같은식이 나옵니다.

 

하지만 그 전에 확률과 통계를 잠시 다루고 가겠습니다. 이 부분은 다른 좋은 강의가 많아서 제가 만드는게 의미가 있을까 고민을 했습니다.(사실 머신러닝도 좋은 강의가 많긴 합니다.)  하지만, 제가 확실히 아는가에 대한 물음에 자신이 없어서 저 역시 한 번 강의를 만들면서 정리하는게 맞다고 생각했습니다.

**강의 보러 가기: https://youtu.be/pyeyuBmIOr4?si=SXI3E7pSC4C3j767

확률과 통계의 관계

확률과 통계는 데이터 분석의 두 축을 이루는 중요한 개념입니다. 이 둘의 차이를 간단히 설명하자면 다음과 같습니다:

 

확률(Probability): 모델이 주어졌을 때, 데이터를 예측하는 과정입니다. 예를 들어, 공평한 동전을 던질 때 앞면이 나올 확률이 1/2임을 예측하는 것이 확률입니다.

 

통계(Statistics): 데이터를 기반으로 모델을 추정하는 과정입니다. 예를 들어, 데이터를 보고 𝑦 = 𝑎𝑥+𝑏 형태의 선형 모델을 찾아내는 것이 통계입니다.

 

제가 참고한 웹에서 확률은 동물을 보고 발자국을 예측하는 것이고, 통계는 발자국을 보고 동물을 추정하는 것과 같아고 비유하고 있습니다. 한 번 읽어보시 바랍니다.

 

A Brief Introduction to Probability & Statistics: https://betterexplained.com/articles/a-brief-introduction-to-probability-statistics/

 

표본공간, 실험, 사건

 

확률을 이해하려면 몇 가지 기본 개념을 알아야 합니다.

 

1. 표본공간(Sample Space)

 

모든 실험 결과를 포함하는 집합입니다. 예를 들어, 동전을 한 번 던질 때 표본공간은 앞면(Head)과 뒷면(Tail)을 포함하는 집합 𝑆= {𝐻,𝑇}입니다.

 

2. 실험(Experiment)

데이터를 얻기 위해 수행하는 행위를 의미합니다. 동전을 한 번 던지는 것도 하나의 실험입니다.

 

3. 사건(Event)

표본공간의 부분집합으로, 특정 조건을 만족하는 결과를 나타냅니다. 예를 들어, 주사위를 던졌을 때 짝수가 나오는 사건은 {2, 4, 6}입니다.

 

확률변수와 확률함수

확률변수(Random Variable)

 

확률을 한 번 정리하기로 한 이유 중 하나입니다.

 

머신러닝을 공부하시는 많은 분들이 확률에 대해서 정확히 공부를 하지 않고 시작하는 경우가 많기 때문에, 이 확률변수를 정확히 모르는 경우가 많습니다.

 

확률변수는 표본공간의 원소를 실수로 변환하는 함수입니다.

  • 동전을 던져 앞면을 1, 뒷면을 0으로 변환한다고 가정하면, 확률변수 𝑋는 다음과 같이 정의됩니다:
    𝑋(𝐻) = 1, 𝑋(𝑇)= 0
  • 즉, 표본공간 {𝐻,𝑇}를 실수 {1,0}으로 변환하는 역할을 합니다.

확률함수(Probability Function)

 

확률변수의 값을 확률로 변환하는 함수입니다. 를 들어, 동전을 던질 때 𝑃(𝑋=1)=1/2, 𝑃(𝑋=0)=1/2 입니다.
모든 확률은 0 이상이어야 하며, 확률의 총합은 1이어야 합니다.

 

이 확률함수는 이름이 두개입니다. 이산형 확률변수의 확률함수는 확률질량함수라고 하고 연속형 확률변수의 확률함수는 확률밀도함수라고 합니다.

 

확률분포가 되기 까지

 

위는 강의 노트 중에 있는 내용입니다. 쉬운 내용이니까 꼭 정리하시면 좋습니다. 표본공간에는 전체 원소가 있습니다.(동전을 던진 다면 H, T) 이 표본공간의 원소를 숫자로 바꿔주는 함수를 확률변수(Random Variable X, X(H) =1 / X(T) =0)라고 합니다. 마지막으로 이 확률변수를 확률로 바꿔주는 함수를 확률 함수라고 하고, 확률함수에는 이산형과 연속형이 있다는 겁니다. 꼭 정리하시기 바랍니다.

 

강의를 보시면 동전과 주사위로 두 번 정도 예를 들어 드렸으니 기억하시는데 도움이 되실 겁니다.

 

이산형 확률변수와 확률분포

이산형 확률변수(Discrete Random Variable)

 

이산형 확률변수는 유한하거나 셀 수 있는 무한한 값을 가질 수 있습니다.

 

예시 1: 동전 던지기

동전 한 번 던질 때 표본공간은 {𝐻,𝑇}이며, 확률변수 𝑋는 {1,0}으로 변환됩니다.

예시 2: 주사위 던지기

주사위를 던지면 표본공간은 {1,2,3,4,5,6}이고, 확률변수도 동일하게 {1,2,3,4,5,6}입니다.

 

확률분포(Probability Distribution)

 

확률분포는 확률변수를 통해 얻어진 확률들의 패턴을 나타냅니다.

이산형 확률분포: 동전 던지기처럼 값이 딱딱 떨어지는 분포입니다.

연속형 확률분포: 동물의 몸무게처럼 값이 연속적으로 나타나는 분포입니다.

기대값과 평균의 차이

기대값(Expected Value)은 확률분포의 평균을 나타냅니다. 이는 실험을 하기 전에도 계산할 수 있습니다.

반면, 평균(Mean)은 실제 데이터를 기반으로 계산한 값입니다. 예를 들어, 주사위의 기대값은 모든 값의 확률 가중 평균으로 𝐸[𝑋]=3.5 입니다. 이는 공정한 주사위를 가정한 이론적 확률에서 계산된 값입니다.

 

기대값과 평균의 차이에서도 저는 빈도주의자와 베이지안 관점의 차이가 느껴집니다. 기대값은 실험을 하기 전에 예측할 수 있는 값이니 베이지안 관점이고 평균은 실험을 통해서 나올 수 있는 값이니 빈도주의자 관점 같습니다. 

결론

확률과 통계는 데이터 분석에서 떼려야 뗄 수 없는 개념입니다. 이번 글에서는 확률과 통계의 기본 개념부터 확률변수, 확률함수, 이산형 확률분포, 그리고 기대값과 평균의 차이를 살펴봤습니다. 다음 글에서는 연속형 확률변수와 분포에 대해 알아보겠습니다.

안녕하세요?

지난 강에서 Direct Solution은 컴퓨팅 비용이 높아서 Gradeint Descet를 알고리즘으로 쓴다고 했습니다. 그라디언트 디센트를 학습해야 하는데, 먼저 Gradient에 대해서 자세히 보고 가겠습니다.

 

강의 틀린 부분 정정합니다: 그라디언트의 방향이 그라디언트 값이 커지는 방향이라고 했는데 함수 $f$ 가 커지는 방향이 더 정확합니다.

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

 

그라디언트의 정의

일차함수 $y = ax + b$를 $x$에 대해서 미분하면 $\frac{dy}{dx} = a$가 됩니다. 이 $a$ 값을 gradient라고 할 수 있을까요? 정답은 아닙니다. 그라디언트의 정의를 봅시다.

"다변수 함수 모든 입력값에서 모든 방향에 대한 순간변화율"

 

네, 적어도 다변수 함수여야 그라디언트라고 할 수 있는 겁니다.

$ f(x_1, x_2) = w_0 + w_1x_1 + w_2x_2 $ 평면에서 그라디언트의 설명

그럼 $ f(x_1, x_2) = w_0 + w_1x_1 + w_2x_2 $를 보겠습니다.

이변수 함수

만약 $f(x_1, x_2)$의 그래프가 위 그림과 같다면 $ f(x_1, x_2) $의 Gradient는 편미분한 벡터 $[w_1, w_2]$ 입니다. 이는 노란 평면 각 지점에서 기울기를 나타냅니다.

 

그라디언트 벡터 $[w_1, w_2]$는 노락 평면 각 점에서 $(x_1, x_2)$ 평면으로 사영 됐을때 벡터입니다. 즉, 그라디언트 벡터는 $(x1, x2)$ 평면에 있다는 거죠. 그런데 어떻게 기울기일까요?

 

그라디언트 벡터가 기울기가 아니라, 그라디언트 벡터의 크기가 기울기 입니다. $(x_1, x_2)$ 평면에 대해 그라디언트 크기인 $\sqrt{w_1^2 + w_2^2}$ 만큼 노란 평면이 기울어져 있다는 뜻입니다.

 

$(x_1, x_2)$ 값이 조금만 움직여도( = $\lim_{x_1, x_2 \to 0}$ ), $ f(x_1, x_2) $ 방향(위 그림에서 세로축방향)으로 $\sqrt{w_1^2 + w_2^2}$ 만큼 움직인다는 겁니다. 그럼 왜 그라디언트를 기울기 벡터라고 하는지 이해하셨을 겁니다.

 

그리고, 노란평면 어디에서도 그라디언트 벡터는 $(w_1, w_2)$니까 기울기의 크기도 당연히 같습니다. $y = ax + b$의 직선이 어느점에서도 순간 기울기가 $a$인거랑 같은 개념이라고 생각하시면 됩니다.

 

그라디언트의 방향은 어떻게 되는 걸까요? $ f(x_1, x_2) $의 값이 커지는 방향입니다. 강의에서는 그라디언트 값이 커지는 방향이라고 했는데 틀렸습니다. 함수 $f$가 커지는 방향이라고 정정합니다.

예시

아직 아리송하신 분들을 위해 예를들어 설명드릴께요. 강의에서 말씀드렸지만, 저는 단순하거나 극단적인 예를 좋아합니다. $ f(x_1, x_2) = 2x_1 + x_2 $의 예를 봅시다.

그라디언트 벡터는 [2, 1]입니다. 그리고, 그라디언트 벡터의 크기는 $\sqrt{5}$ 입니다. $(x_1, x_2)$ 축으로 아주 조금씩만 움직여도 $ f(x_1, x_2) $ 방향으로는 $\sqrt{5}$ 만큼 움직인다는 겁니다.

 

그라디언트 벡터 자체는 $(x_1, x_2)$ 평면에 표시되는 거고요. 저 보라색 면이 $(x_1, x_2)$ 평면에 대하여 $\sqrt{5}$ 만큼 기울어져 있다고 해석할 수 있는 겁니다.

 

저는 사실 2차 포물면으로 처음 이해했습니다. 대부분의 자료에서 2차 포물면으로 설명하고 있습니다. 처음 이해했을때 아주 감동을 받았었죠. 다 이해하고 나니까 1차 평면에서 먼저 이해하고 2차 포물면으로 넘어가는게 훨씬 수월할거 같아서 1차 평면부터 설명드렸습니다.

 

혹시 이해가 잘 가셨나요? 피드백 부탁드립니다.

2차 포물면에의 그라디언트

강의에서는 조금 더 나아가서, 2차 포물면에서 그라디언트와 독립변수가 2개 이상인 경우도 설명했습니다. 원리는 같습니다.

 

예를들어 2차 포물면에서는 그라디언트 벡터가 $[w_1, w_2]$가 아니라 $[2w_1x_1, w_2x_2]$ 이렇게 되는 겁니다. 무슨 얘기냐고요? 그라디언트 벡터가 $(x_1, x_2)$ 좌표에 따라서 값이 변한다는 거죠?

 

우리는 $f(x) = x^2$의 순간기울기가 $x$ 값에 대해서 변한다는 걸 이미 알고 있습니다. 같은 개념이니까 충분히 이해할 수 있습니다.

 

상세한 내용은 유트브 강의 참고하세요. 감사합니다.

안녕하세요? 이번 강은 벡터미분입니다. 그냥 미분도 골 아픈데 벡터 미분까지 해야되나라는 생각이 절로 듭니다. 샬로우 러닝 단계에서는 썸네일에 소개한거 처럼 스칼라를 벡터로 미분하는 정도만 이해하면 되지만, 딥러닝에서의 최적화를 이해하기 위해서는 벡터를 벡터로 미분하는 것 까지 이해해야 합니다. (Jacobian과 Hessian 이해죠)

강의보고오기: https://www.youtube.com/watch?v=u19p1eJsvB0&t=89s

 

 

무조건 이해해야 되냐고요? 세상에 무조건은 거의 없습니다. 이해 못해도 됩니다. 그래도 알면 조금 더 재미있어 집니다.

강의에서 제가 간단하게 미분을 설명했습니다. 머신러닝을 공부할때 꼭 알아야 되는 부분이라 간단하게 설명했습니다. 더 자세히 알기 위해 강추드리는 아래 강의 영상을 보시는 겁니다. 

 

미분의 이해 참고 동영상

 

1. 뉴턴 vs 라이프니치의 미적분 이야기: https://www.youtube.com/watch?v=GJO-52Xm6JU

 

2. 수학은 다르마: https://www.youtube.com/watch?v=glW0ugwYvnA&t=1864s

 

영상 보시고 오셨나요? 저는 재미있게 봤습니다. ^^

 

벡터미분

 

벡터미분을 이해하기 위해서 3가지 개념 먼저 소개해 드리겠습니다. 바로 Scalar, Vector, Matrix 입니다.

                        출처: [https://www.linkedin.com/pulse/machine-learning-basics-scalars-vectors-matrices-tensors-prasad/](https://www.linkedin.com/pulse/machine-learning-basics-scalars-vectors-matrices-tensors-prasad/)

출처 링크를 읽으시면 좋지만, 대부분 알고 계실거 같습니다.

 

우선 규칙을 말씀드리면 벡터는 특별한 언급이 없으면 열벡터를 의미합니다.(그냥 관례입니다)

 

벡터를 스칼라로 미분

벡터는 열벡터를 의미한다고 했죠? 어느 한 벡터를 스칼라로 미분한다는 건, 벡터 각 성분의 값을 스칼라 값으로 미분해준다는 걸 의미합니다.

원래 있던 열벡터의 각 성분에 하나의 스칼라로 미분하고 그대로 쓰는 거니까 어렵지 않으실 겁니다.

 

스칼라를 벡터로 미분

스칼라를 벡터로 어떻게 미분할까요? 우리가 가장 익숙한 건 스칼라를 스칼라로 미분하는 거였죠? 네 늘 해오던 그냥 미분입니다. 그런데 이걸 벡터로 미분하려면 어떻게 해야 할까요?

 

스칼라는 양 밖에 없고, 벡터는 방향과 양이 있습니다. 우리가 미분하고 싶은 스칼라 값이 원래 벡터의 연산이였다고 생각하면 됩니다. 같은 성분을 가진 벡터끼리의 내적은 스칼라가 되기 때문입니다. 또는 방향이 없는 스칼라를 미분해야 하니까, 스칼라 값을 미분하고 싶은 벡터 공간으로 데리고 온다고 생각하면 됩니다. 벡터 공간으로 데리고 오니까 성분이 생길 수 있는 거죠?

자세히 보면, 그라디언트의 정의와 같습니다.(그라디언트는 아직 공부 안했습니다.)

  • "스칼라 값으로 나오는 벡터의 연산이 있었다" 우리 계속 봐온거죠?

$ \hat{y} = w^{T} x $를 x벡터로 미분하면 $w^{T}$만 남습니다. 각 성분으로 편미분한 결과입니다. 그리고 $w^{T} x $는 같은 성분을 가진 벡터의 내적이니까 스칼라 값입니다. 

  • 직관적으로 생각해 봅시다. 양만 있는 스칼라를 벡터로 미분하려면, 스칼라를 벡터공간으로 데리고 와야되고 벡터 공간으로 데리고 오면 각 성분이 생기니까, 각 성분으로 미분해 주면 된다 라는 인사이트가 있으시면 됩니다.

스칼라를 벡터로 미분한 결과는 행벡터로 씁니다. 이거는 기억해 주세요. 벡터를 스칼라로 미분하면 열벡터로 쓰고, 스칼라를 벡터로 미분하면 행벡터로 쓴다는거는 외우시는게 좋습니다. 

 

벡터벡터미분에 대한 Insight

 

강의에서는 추가로 벡터를 벡터로 미분, 스칼라를 벡터로 두번 미분 / 즉 Jacobian과 Hessian을 설명합니다. 우리는 아직 Shallow Learning을 공부하는 단계라 꼭 알 필요는 없지만 추가 설명했습니다. 

 

딥러닝에서 중요한 개념이기 때문에 아래 내용을 느낌적으로 가져가 주셨으면 좋겠습니다. 

 

스칼라를 벡터로 미분하는거 까지가 Shallow Learning입니다. 즉 하나의 스칼라 $y$ 값에 대해 여러 $x$ 값이 있는거 입니다. 어떤 데이터의 특성이 결국 "선형" 이라는 말입니다. 

 

그런데 벡터를 벡터로 미분한다고 생각해보세요. 여러 스칼라 $y$ 값에 대해 여러 $x$ 값이 있다는 거라고 생각할 수 있는거죠. 데이터의 구간에 따라서 식도 변할 수 있고, 같은 구간에서도 여러 y값을 가질 수 있다는 의미죠? 굉장히 복잡하기는 하지만 어떤 관계를 있다라고는 생각할 수 있는거 입니다. 

 

네 바로 딥러닝 설명을 드린겁니다. 굉장히 복잡하지만 수학식으로 표현되면 그 관계를 학습해서 유의미한 결과를 얻을 수 있는거죠? 

 

벡터를 벡터로 미분한 걸 Jacobain이라고 하는데 결국 우리의 데이터가 가지는 기울기의 집합이라고도 이해할 수도 있는거고. 스칼라를 벡터로 2번 미분한건 Hessain이고 딥러닝 옵티마이제이션 문제를 푸는데 활용할 수 있는 값입니다. 

 

강의를 보시면 더 직관적으로 상상하실 수 있을 겁니다. 하지만, 아직 Deep Learning을 배우기 전이니 이 정도만 하고 넘어가겠습니다.  

 

다음강에서 뵙도록 하겠습니다. 

 

 

안녕하세요. 우리 빨간선을 어떻게 구하는지에 대해 알아보기로 합시다. 단순한 코드 안에 있는 복잡한 로직에 대한 공부 시작입니다.

 

강의보고오기

https://www.youtube.com/watch?v=vJ-DaRgfsZk

 

 

벡터식 표현

우선 두개의 벡터를 정의하겠습니다. 가중치를 뜻하는 w 벡터와 선형회귀 독립변수인 $ x $ 벡터를 정의하겠습니다.  종속변수 $ y $ 도 있습니다. .

 

$$  w = \begin{bmatrix}
w_{0} \\
w_{1}
\end{bmatrix}, \qquad   x = \begin{bmatrix}
1 \\
x_{1}
\end{bmatrix}$$

 

두 벡터를 사용하여 아래와 같이 나타낼 수 있습니다. 

 

$$ \hat{y} = w^{T} x $$

 

$$ \hat{y} = \begin{bmatrix}
w_{0} & w_{1}
\end{bmatrix}\begin{bmatrix}
1 \\
x_{1}
\end{bmatrix}$$

 

 

집값의 예시를 보겠습니다. 독립변수는 여러개가 될 수 있지만, 집의 면적 하나만 있다고 가정했습니다.  그리고 $y$ 는 집값입니다. 그럼 집의 면적에 대응하는 $ y $ 값(집값)이 있을겁니다. 우리는 이 데이터를 학습하여 예측값 $y$ 즉, $\hat{y}$에 대응하는 빨간선을 그리는게 목표입니다. . 

 

강의에서는 우선 독립변수가 하나인 예제를 설명하고, 독립변수를 늘려가며 설명합니다. 면적, 방의수, 주차공간... 계속해서 독립변수를 늘릴 수 있습니다. 

 

중요한 점은 독립변수가 아무리 늘어나도 선형회기라는 것입니다. 모든 인풋변수(독립변수)가 집값과 선형관계이기 때문입니다. 

 

Shallow Learning에서는 대부분 선형관계만 한다고 말씀드렸습니다. 그렇다고 진짜 선형만 하는 건 아닙니다. 선형같은 비선형도 합니다. 선형회귀 끝나면 바로 Logistic Regression을 할 예정인데, 얘는 비선형입니다.

 

왜 선형같은 비선형이냐고요? 거의 선형 모델인데 결과를 비선형적으로 분류하기 때문입니다. 선형회귀 끝내고 자세히 설명하겠습니다.(엄격히 말하면 비선형인데, 딥러닝은 아닙니다. 딥러닝에서만 비선형 문제를 풀 수 있는 건 아니니까요. 하지만 딥러닝은 훨씬 더 복잡한 비선형도 잘 풉니다.)

선을 구하기 위해 사용하는 방법: MSE, SSE

SSE(Sum Squared Error)  또는 MSE(Mean Squared Error) 를 사용하고 이를 Loss Function, Cost Function으로 부릅니다. Opimization 관점으로 목적함수라고 하고요. 같은 식에 이름이 여러 개여서 참 혼란스럽스니다. 

(Loss Function과 Cost Function은 작은 차이가 있습니다. $ \sum $이 없는게 Loss Function, $ \sum $이 있으면 Cost Function이라는데 이는 책마다 차이가 있는 거 같습니다. 굳이 구분한다면 이와 같이 구분하시고 그냥 아무거나 써도 무방할 듯 합니다.)

 

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

 

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

 

수학식으로 보면 복잡해 보이지만, 사실 별 거 아닙니다.

 

SSE는 (예측 집값 - 실제 집값)의 제곱을 모두 더한 값입니다. MSE는 이 값을 데이터 수로 나눠준 것이죠. 이 값을 최소화하는 선이 우리가 찾고자 하는 빨간 선입니다.
 
모든 데이터와 그에 대한 예측값의 차이가 가장 작은 선을 구한다는 것입니다. 직관적으로 합리적인 방법이라고 느껴지시나요? 나중에 확률적 가정으로 이 방법이 합리적이라는 것도 보여드릴 예정입니다.
 
강의에서는 벡터로 바꾸는 과정과 데이터가 어떻게 식으로 표현되는지 더 자세하게 설명했으니 참고하세요. 그리고 omega라고 불리는 것도 그냥 $ w $(더블유)라고 생각하시면 됩니다. 감사합니다.
 
 
 
 
 

안녕하세요? 6강 선형회귀입니다.

강의보고오기: https://youtu.be/bPKHIGEh6gU?si=t9fQRQSQwFZd2ZX7

 

6강은 간단한 선형회귀 모델의 예시와 우리가 그린 빨간선이 데이터를 잘 설명하는가에 대한 지표 2개 MSE(Mean Squared Error와 R2 스코어를 다루고 넘어갑니다.

 

우리가 중고등학교때 가장 익숙한 식 중 하나가 $y = ax + b$ 였을 겁니다. a를 기울기, b를 절편이라고 배웠죠. 보통 $a, b$가 주어진 상태에서는 $x, y$의 관계를 그래프로 그려보며 의미를 이해했습니다.

 

선형회귀 예시 - 머신러닝에의 관심사는 a, b

머신러닝에서는 $x, y$가 데이터로서 주어지고 우리는 $a, b$를 구해야 합니다. 그리고 이 때 $a, b$를 다르게 표기 합니다. $a$는 weight(가중치), b를 bias(편항)로 표현하며, 식은 아래와 같습니다.

$$ y = wx + b $$

$x, y$ 값은 데이터로 주어질 것입니다. 가장 많이 사용하는 집값의 예를 보겠습니다. 

면적과 집값과의 관계

 

그림에서 첫 번째 열이 면적 $x$의 값입니다. 두 번째열은 집의 가격 $y$입니다. 두개 열의 데이터를 학습하여 집값을 빨간선으로 예측합니다.

 

저 빨간선을 그리기 위해서 우리가 알아야 할 값은 뭘까요? 1차 방정식에서 기울기( $ w $ )와 절편( $ b $ )를 알면 우리가 원하는 빨간선을 그릴 수 있습니다. 데이터를 바탕으로 데이터를 가장 잘 설명하는 빨간선을 찾는 것이라고 표현할 수 있습니다. 

 

학습하는 코드를 보겠습니다.

 

선형회귀 코드

 

코드 진짜 간단하죠? 생성형 AI를 활용해서 만들었습니다. 만약 코딩을 공부하고 싶으시면 이론을 공부하신 후에 생성형 AI에 만들어 달라고 하면 코드를 만들어 줄겁니다. 그리고 한줄 한줄 설명도 해줍니다. 쉽죠?

 

하지만 우리는 저 코드안에 들어있는 알고리즘에 대한 공부를 할 예정입니다. 결코 쉽지 않습니다. 

 

평가 지표 - MSE, R2 Score

우리가 그린 빨간선이 얼마나 데이터를 잘 설명해주는가를 평가하기 위한 지표 2개를 설정했습니다.  MSE와 R2 스코어입니다. 이 중에서 MSE는 앞으로 앞으로 자주 등장하니 눈여겨 보시기 바랍니다.

 

강의에서 두개의 지표에 대한 자세한 설명을 했습니다. 잘못된 내용은 피드백 바랍니다. 



의견

저는 원래 실용주의적인 성향이 강해서 이론보다는 코드 구현을 중요하게 여겼지만, 최근에는 생각이 바뀌었습니다. 이론을 이해하고 생성형 AI와 소통하며 코딩하고 결과를 분석하는 과정이 더 중요하다고 생각합니다. 대학원에서 대부분의 과제를 생성형 AI의 도움을 받아 수행해보니, 이론을 알아야 생성형 AI에게 좋은 명령과 질문을 할 수 있음을 알게 되었습니다. 또한, 코드와 실행 결과를 해석하고, 생성형 AI가 잘못된 정보를 제공할 때 이를 수정할 수 있습니다.

 

언젠가는 이론을 몰라도 모든 것을 쉽게 구현할 수 있는 날이 올지도 모릅니다. 과거에 수학 계산원이 중요한 역할을 했지만 컴퓨터의 등장으로 사라진 것처럼, 언젠가는 컴퓨터 관련 개발자도 사라지고 연구자만 남을 수도 있습니다. 마치 수학 분야에서 연구자는 여전히 남아 있는 것처럼요.

 

하지만, 아직까지는 AI 개발자에게 이론 지식은 중요합니다. 새로운 기술이 나왔을때 관련 문헌을 읽고 적용하기 위해서는 이해가 필요합니다. 현재 급속도로 새로운 기술이 나오고 있는 상태죠. 그리고 생성형 AI 특성 상 잘 알려지지 않은 도메인에 대해서는 깊은 이해가 없어 오류도 높을 수 있습니다. 아직 사람의 수정과 선택이 필요한 상태이니 열심히 공부하시기 바랍니다.~

 

 

감사합니다.

'Machine Learning' 카테고리의 다른 글

8강 선형회귀 - Loss Function  (0) 2024.07.20
7강 벡터  (0) 2024.07.20
5강 머신러닝의 개요 subNote - for 기술사  (0) 2024.07.17
4강 머신러닝 뜻 / 머신러닝 개요  (0) 2024.07.17
3강 인공신경망의 역사  (1) 2024.07.16

강의보고오기: https://www.youtube.com/watch?v=Yk_vH_MRLCI&t=3s

 

이번 강의는 어떻게 다뤄야 할까 고민이 많았습니다.

 

MA book에서 처럼 그냥 인공지능의 역사를 다룰까? 아니면 기술사 서브노트에 나온데로 인공신경망의 역사를 할까 고민을 많이 했습니다. 또 한가지 고민은 그냥 빼버릴까 였습니다. 빼버리고 싶었던 이유는 유트브에 인공지능 역사에 대한 너무 좋은 콘텐츠가 많기 때문입니다. 저처럼 어설프게 글씨와 설명이 전부인게 아니라 화려한 비디오에 귀에 박히는 목소리로 설명해주는 좋은 자료가 많습니다. 

 

고민끝에 최초 강의를 시작했던 이유를 생각하며 기술사 서브노트를 바탕으로 설명하기로 했습니다. 제가 강의를 시작한 이유 중 하나는 기술사 공부할때 AI토픽에서 느낀 답답한 마음때문이였습니다. 서브노트를 읽어도 이해가 안가고, 이해가 안가서 관련내용을 찾아보면 "그냥 이래" 또는 모르는 부분을 이해하기 위한 수학적 원리를 파고파고 들어가야 하는 경우가 많았습니다. 그러다가 토픽 한개를 공부하느라 몇번 밤을 지세웠습니다. 

 

저의 전문성을 키우는 것과 많은 예비 기술사 분들이 서브노트를 보시면서 의문이 없었으면 하는 마음이 제가 강의를 시작한 기본 이유이므로 서브노트 내용을 기준으로 설명하기로 했습니다. 그리고 수학적 내용은 각 토픽에서 필요할때 바로 강의하는 방식으로 진행할 겁니다. 최대한 거꾸로 안 찾아가도록 말이죠. 

 

인공신경망의 역사

 

기술사 관점으로 말씀드리면 문제가 "인공지능의 역사"를 물어본 것과 "인공신경망"의 역사를 물어봤을때 다르게 써야 한다는 겁니다. 서브노트에서 처럼 "인공신경망의 역사"를 묻는다면 "딥러닝의 역사"라고 생각하고 답안을 작성하는 것이 좋습니다. 따라서, 강의에서도 Perceptron과 Back Propagation을 중심으로 설명드렸습니다. 그 중에서도 아직까지는 Perceptron에 대해서만 더 집중적으로 설명드렸는데 이유는 아직 우리는 Shallow Learning을 배우는 단계라서 그 편이 더 좋을 것 같다고 생각했습니다. 

 

중요하게 생각하셔야 할 내용은 Perceptron은 Shallow Learning에서 배우지만, 이 Percpetron으로 Connected Layer를 만들어 인공신경망을 형성한다는 것입니다. 그리고 Perceptron이 여러개 연결되면 왜 Deep한 Learning이 될 수 있는지 직관적으로 이해하시는 부분입니다. 지금 이 직관을 가지신다면 나중에 Deep Learning 공부할 때 훨씬 쉽게 이해하실 수 있을겁니다.

 

강의에서 제가 y = Wx + b에서 W를 계속 오메가라고 읽는데, 그냥 w가 맞는 같습니다. Weight의 약자인 w로 생각해 주세요. 소문자이면 벡터이고 대문자이면 행렬을 의미합니다. 제가 배울때 누군가에게 계속 ω(오메가)라고 들어서 저도 아무생각 없이 ω(오메가)라고 읽었습니다. 혼란을 드려 죄송합니다.

 

감사합니다.

 

+ Recent posts