본문 바로가기

Vector Inner Product Dot Product 벡터 내적 선형대수 [빅공남! 통계 같이해요]

KAIST수학전공쌤 2022. 1. 27.

Vector dot product inner product 벡터 내적 개념은 빅데이터 공부에서 중요한 개념 중에 하나입니다. 빅데이터 공부에서 차원축소 기법 중에서 PCA 주성분분석을 공부하다보면 수직으로 축을 잡아간다는 개념이 등장합니다. 고차원 공간에서 수직의 의미를 이해하려면 먼저 내적의 의미와 계산방법을 이해하고 있어야만합니다. 그래서 오늘 포스팅에서는 내적과 수직의 개념에 대해서 정리를 해보고자합니다. 유튜브 공부영상 링크는 포스팅 하단에 첨부하도록 하겠습니다. 

 

벡터의 내적을 요약하면 2가지로 설명할 수 있습니다.

 

1) 벡터의 크기

2) 벡터의 각도 (코사인)

 

그래서 위의 개념을 설명하기 위해서 아래 3가지 관점에서 이해하고자합니다.

 

1) 벡터의 크기

2) 벡터의 내적

3) 벡터의 수직

1. 벡터의 크기

벡터의 크기는 피타고라스 공식을 떠올리면 됩니다. 먼저 2차원 직각삼각형에서 벡터의 크기를 아래 그림과 같이 보도록 하겠습니다. 2차원에서 먼저 계산해보도록 하겠습니다. x좌표제곱 + y좌표의 제곱 = 빗변의 제곱과 같으므로 루트(x좌표 제곱 + y좌표 제곱)을 계산하면 벡터의 크기를 계산 할 수 있습니다. 

아래 그름과 같이 일반화 하면 피타고라스로 어떤 좌표가 주어지든 좌표에서 벡터의 크기를 계산해낼 수 있습니다.

이번에는 3차원 공간에서 벡터의 크기를 살펴보겠습니다. 좌표(x1,y1,z1)으로 표현된 벡터에서 아래 그림의 밑변의 크기는 2차원 벡터의 크기이므로 루트(x제곱+y제곱)이 됩니다. 높이는 z1으로 볼수 있으므로 벡터의 크기는 다시 피타고라스로 계산하면 루트(x제곱+y제곱+z제곱)으로 계산해낼 수 있습니다.

위의 2차원, 3차원 벡터의 크기를 정의하면, 이제는 n차원 공간에서의 벡터의 크기도 피타고라스 공식을 이용해서 각 좌표의 합으로 계산해낼 수 있습니다. 다음 그림과 같이 표현합니다.

 

2. 삼각함수 ☞ 코사인?

아래 그림과 같이 삼각함수의 코사인은 벡터 내적에서 중요한 개념입니다. 직각삼각형에서 한 각도가 주어질 때, 코사인 값의 정의는 밑변/빗변 즉 밑변을 빗변으로 나눈 값을 이미합니다. 코사인은 = 밑변/빅변 이 공식에서 밑변 = 으로 식을 고칩니다. 그러면 밑변 = 빗변 x 코싸인 쎄타 로 바꿀 수 있습니다. 즉, 빗변과 각도를 알고 코사인 값을 계산만 한다면 밑변을 계산해낼 수 있다는 것을 의미합니다.

이번에는 코사인 90도일 때가 얼마인지 계산된 값을 보겠습니다. 중요한 점은 바로 90도일때의 코싸인 값은 0이 된다는 것입니다. 반대로, 코싸인 값이 0이 될 때, 각도가 90도가 된다는 것도 알 수 있습니다.

 

3. 벡터 내적의 개념 (1) - 기하학적 의미

벡터의 내적의 정의는 바로 아래와 같습니다. 먼저 2차원 공간에서 두 벡터가 주어졌을 때, 두 벡터의 크기 곱하기 코싸인 값을 곱하면 내적으로 정의합니다. 이 개념은 먼저 정의이기 떄문에 약속을 한 것입니다. 아래 벡터 내적의 정의를 보면서 의미를 살펴보도록 합니다.

 

a벡터의 크기와 b벡터의 크기에 코싸인을 곱합다? 이 계산값의 의미를 좀더 생각합니다. 이 개념을 이해하고자 하면

이 개념을 이해하려면 삼각함수와 벡터의 크기 개념이 필요하기 때문에 위에서 정리를 했었습니다. 바로 벡터 내적을 계산한다는 의미는 a벡터를 b로 정사영(Projection)시킨후 그 벡터의 크기와 b벡터의 크기의 곱으로 나타낼 수 있습니다. 숫자로 예를 들어서 설명을 하면 다음과 같습니다.

a벡터의 크기가 5, b벡터의 크기가 7이고 각도가 쎄타인 경우를 보면, 5x7x코싸인 쎼타로 볼수 있습니다. 여기서 이렇게 볼 수도 있습니다. 5코싸인 쎼타 x 7로 이해하게 되면, 5 코싸인 쎄타의 의미는 a벡터를 b로 수직으로 정사영(Projection)시킨 길이가 되는 것입니다.

 

이번에는 두벡터가 2차원 공간에서 수직이라면 어떻게 될까? 라는 생각을 해볼 수 있습니다. 아래 그림을 보면서 생각을 해보겠습니다. 내적의 정의에 의해서 두 벡터의 크기 곱하기 코싸인 세터를 해야합니다. 근데 만약 쎄타가 90도라면 내적값이 0이 된다는 것을 알 수 있습니다.

 

그런데 여기까지는 이해했는데... 궁금증이 한 점이 생깁니다... 매번 삼각함수를 이용해서 내적을 계산해야할까?

4. 벡터 내적의 개념 (2) - 좌표로 계산할 수 있다

수학적으로 수학자는 벡터를 좌표로 쉽게 계산할 수 있는 공식을 만들어냅니다. 먼저 3번에서 정리한 길이과 각도로 계산한 값과 물론 같은 값이 나옵니다. 수학적 증명을 통해서 다른 방법으로도 쉽게 계산할 수 있다는 것을 알아냅니다. 2차원에서 벡터의 내적값은 다음과 같이 계산할 수 있습니다. 봐표 x좌표의 곱 + y좌표의곱으로 벡터늬 내적을 계산할 수 있다는 것을 알아 냅니다.

그래서 2차원의 벡터 내적 계산법은 다음 2가지와 같습니다.

1) a벡터 크기 x b벡터 크기 x 코싸인 쎼타

2) (a벡터 x좌표 * b벡터 x좌표) + (a벡터 y좌표 * b벡터 y좌표)

두가지 내적 공식은 다른 방법이지만 숫자는 같은 숫자로 나오게 됩니다. (수학 증명 생략)

위의 공식을 통해서 예제를 통해 벡터 내적 계산법을 확인해 보겠습니다. 

a벡터 = (1,3)

b벡터 = (-1,-2)

a,b의 내적 = 1*(-1) + 3*(-2) = -7

이번에는 다음 예제를 통해서 내적을 계산해보겠습니다.

a벡터 = (1,0)

b벡터 = (0,1)

a,b의 내적 = 1*(0) + 0*(1) = 0

 

이번 예제에서는 벡터의 내적이 0이 나온다는 것을 알 수 있습니다. 벡터의 기하학적 개념인 a크기 * b크기 * 코싸인 쎼타의 결과가 0이 나오는 것입니다. 결국, 내적이 0이 된다는 사실로 거꾸로 기하학적 의미를 살펴보면, 두 벡터가 90도를 이룬다는 것을 알 수 있습니다.

 

3. 3차원 벡터의 내적

3차원 공간에서도 동일하게 내적의 의미를 2가지로 정리할 수 있습니다.

1) 벡터 a크기 x 벡터 b크기 x 코싸인 쎄타

(그런데 3차원에서는 각도를 쉽게 측정할 수 없습니다.)

2) x좌표의 곱의 합 + y좌표의 곱의 합 +z좌표의 곱의합

(수학적 증명 생략)

 

아래 그림과 같이 좌표의 곱으로 결국 2차원 처럼 내적을 계산해 낼 수 있습니다. 같은 방법으로 내적값을 계산하고 거꾸로 코싸인 쎄타를 찾는 과정으로 각도를 계산해낼 수 있습니다.

이번에는 다음 예제를 통해서 내적을 계산해보겠습니다.

a벡터 = (1,0,1)

b벡터 = (-1,0,1)

a,b의 내적 = 1*(-1) + 0*(0) + 1*1 = 0

이번 예제서도 벡터의 내적이 0이 나온다는 것을 알 수 있습니다. 벡터의 기하학적 개념인 a크기 * b크기 * 코싸인 쎼타의 결과가 0이 나오는 것입니다. 결국, 내적이 0이 된다는 사실로 거꾸로 기하학적 의미를 살펴보면, 두 벡터가 90도를 이룬다는 것을 알 수 있습니다.

4. n차원 벡터의 내적

이번에는 n차원 공간에서의 벡터 내적을 정의하도록 하겠습니다. 사람의 눈에는 3차원까지만 시각화 할 수 있지만, 4차원이상의 고차원에도 내적을 동일하게 적용시킬 수 있습니다. 즉, 2가지 의미로 벡터를 똑같이 정의를 내립니다. 중요한 점은 n차원 고차원에서도 각도 개념을 도입할 수 있는 것입니다. 아래 그림을 보면서 살펴보겠습니다. 아래 그림처럼 벡터의 개념을 2가지로 정리합니다.

 

3차원 공간에서도 동일하게 내적의 의미를 2가지로 정리할 수 있습니다.

1) 벡터 a크기 x 벡터 b크기 x 코싸인 쎄타

(그런데 3차원에서는 각도를 쉽게 측정할 수 없습니다.)

2) 각 좌표끼리의 곱을 모두 더한 값

이번에는 4차원 벡터에서 다음 예제를 통해서 내적을 계산해보겠습니다.

a벡터 = (1,1,0,1)

b벡터 = (0,0,1,1)

a,b의 내적 = 1*0+1*0+0*1+0*1 = 0

이번에도 내적이 0이 되는 것을 알 수 있습니다. 즉, 크기*크기*코싸인쎄타와 같다고 생각하면, 4차원 벡터에서도 수직 개념을 정의할 수 있습니다.

5. n차원 공간에서 두 벡터가 이루는 각도

위에서 정리한 내용을 정리하면 다음 결론을 얻어 낼 수있습니다. 두 벡터가 좌표로 주어진 다면, 코싸인 쎄타를 항상 계산할 수 있습니다. 즉, 두벡터의 코싸인 쎄타 = 좌표로 구한 내적값을 각각의 크기로 나누어주면 계산해 낼 수 있습니다. 특히 이 계산값이 0이라면 두 벡터는 수직을 이룬다는 것을 알 수 있습니다.

 

그래서 아까 살펴본 4차원의 내적 그림을 다시 한번 살펴보면, 좌표로 구한 내적값이 0이고 이값을 각각의 크기인 루트2로 나누게 되면 코싸인쎄타를 계산해 낼수 있습니다. 결국 코싸인 값이 0이기 때문에 두벡터가 이루는 각도는 90도라고 정의를 내릴 수 있는 것입니다.

6. 벡터와 행렬곱 그리고 전치행렬(Transpose)?

이번에는 벡터의 행벡터와 열벡터 개념을 도입해서 내적을 행렬의 곱셈으로 나타내는 것을 알아 보겠습니다. 아래 그림과 같이 내적을 계산했었는데, 앞의 a벡터를 이번에는 가로로 써보도록하겠습니다. 열벡터를 90도 회전에서 가로로 행벡터로 나타내는 것을 전치행렬(Transpose Matrix)를 구한다는 개념으로 이해할 수 있습니다. 각각의 벡터는 4x1행렬로 볼 수 있습니다. a벡터를 전치행렬 한다는 개념은 1x4행렬도 바꾸는 것으로 이해할 수 있습니다.

아래 그림처럼, a^(T)라는 기호로 열벡터를 행벡터로 바꿔서 써보았습니다.

이제 내적을 한다는 개념을 두 행렬의 곱셈으로 이해해도 같은 방식으로 계산이 됩니다. 그래서 행렬의 곱셈차원에서 바라본다면 (1x4)행렬과 (4x1)행렬의 곱셈이므로 1x1행렬, 즉, 숫자가 나오는 것을 확인할 수 있습니다. 이 숫자도 바로 내적이 되는 것입니다. 그래서 내적을 행렬로 보고 내적의 식을 쓴다면 다음과 같습니다.

댓글