EXCELSIOR

[코딩더매트릭스]Chap09 - 내적 Inner Product 본문

Linear Algebra/Coding the Matrix

[코딩더매트릭스]Chap09 - 내적 Inner Product

Excelsior-JH 2018. 5. 17. 10:54

Chap 09

내적 - Inner Product

이번 9장에서는 길이 (length)와 직교 (perpendicular)의 개념이 수학적 용어로 어떻게 해석되는지 알아본다. 어떤 점에 가장 가까운 주어진 직선상의 점을 찾는 문제에 대해 살펴본다.

9.1 소방차 문제

아래의 그림에서 좌표 에 위치한 집 에 화재가 났다고 하자. 집 주변을 지나가는 도로는 원점과 점 을 지나는 직선이면, 집 와 가장 가까운 직선상의 어떤 지점으로 소방차를 위치 시킬 수 있으면 화재를 진압 시킬 수 있다고 하면, 두 가지를 생각할 수 있다.

  • 직선상의 어느 점이 집 와 가까운가?

  • 그렇다면, 가장 가까운 거리는 얼마나 되는가?



이것을 계산문제로 재구성 해보자. 앞의 3.5.3 에서 처럼 원점을 지나는 직선은 벡터의 스칼라배들의 집합으로서 표현할 수 있다. 위의 그림에서 도로는 직선 로 나타낼 수 있다. 따라서, 위의 소방차 문제는 아래와 같이 구성할 수 있다.

Computational Problem : 하나의 주어진 벡터에 가장 가까운 다른 하나의 주어진 벡터의 생성(Span) 내에 있는 벡터

  • input : 벡터

  • output : 에 가장 가까운 직선 상의 점


9.1.1 거리, 길이, norm, 내적

두 벡터 사이의 거리는 차분(difference) 로 정의한다. 이것은 벡터의 길이를 정의해야 한다는 것을 의미한다.(?) 벡터에 대해 "길이 "라는 용어를 사용하는 대신에 보통 을 사용한다.

벡터 로 표현한다. 은 길이 역할을 하므로, 다음의 성질을 만족해야 한다.

  • Property N1 : 임의의 벡터 에 대해, 은 음이 아닌 실수이다.

  • Property N2 : 임의의 벡터 에 대해, 이 영()이 될 필요충분조건은 가 영벡터인 것이다.

  • Property N3 : 임의의 벡터 와 임의의 스칼라 에 대해, 이다.

  • Property N4 : 임의의 벡터 에 대해, 이다.

벡터의 을 정의하는 한 가지 방법은 내적 (inner product)라고 하는 벡터들에 대한 연산을 정의하는 것이다. 벡터 의 내적에 대한 표기법은 아래와 같다

내적은 어떠한 공리(axiom)들을 만족해야 하며, 이 공리들에 대해서는 나중에 살펴보도록 하자.

내적이 정의 되었으면, 벡터 은 다음과 같이 정의된다.


9.2 실수 벡터들에 대한 내적

상의 벡터들에 대한 내적은 도트곱으로 정의된다.

  • 선형성 :

  • 대칭성 :

  • 동질성 :


9.2.1 실수 벡터들의

함수가 어떤 형태인지 살펴보자.

-벡터라 하고, 으로 표현하면,

좀 더 일반적으로, 만야 -벡터이면,

따라서 이다.

Example 9.2.1 : -벡터의 예를 고려해 보자. 벡터 의 길이는 무엇일까? 피타고라스 정리를 이용하면 아래와 같이 계산할 수 있다.

따라서, 위와 같이 피타고라스 정리에 의한 길이계산은 의 벡터들에 대한 길이와 일치한다.

9.3 직교성 - Orthogonality

직교 (Orthogonal)는 수직 (perpendicular)에 대한 수학적인 용어이다.

직교의 정의에 대해 알아보기 전에 피타고라스 정리 를 역으로 사용하여 피타고라스 정리가 성립되도록 직교의 개념을 정의해보자.

는 벡터라고하자. 이 벡터들의 길이는 이다. 이 벡터들의 평행이동을 생각하여 의 꼬리를 의 머리에 놓자. 그러면 '빗변'은 의 꼬리에서 의 머리까지이며 이다.


벡터 (빗변)의 제곱의 길이는 다음과 같다.

마지막 표현이 이 될 필요충분조건은 이 되는 것이다.

따라서, 만약 이면 직교 라고 정의한다.

Theorem(실수 벡터들에 대한 피타고라스 정리) : 만약 실수 벡터 가 직교하면 다음이 성립한다.


9.3.1 직교의 성질

Lemma (Orthogonality Properties) : 임의의 벡터 , 그리고 임의의 스칼라 에 대해,

  • Property O1 : 만약 와 직교하면 는 모든 스칼라 에 대해 와 직교한다.

  • Property O2 : 만약 둘 다 와 직교하면 와 직교한다.

    • Proof :

    • i.

    • ii.


Lemma : 만약 와 직교이면 임의의 스칼라 에 대해 다음이 성립한다.

  • Proof :


9.3.2 평행 및 수직 성분으로 벡터 분해

Definition : 임의의 벡터 에 대해, 만약 다음이 성립하면 벡터 은 각각 를 따른 투영(projection) 에 직교하는 투영 이라 정의한다.

여기서, 어떤 스칼라 에 대해, 이고, 에 직교한다.



9.3.3 소방차 문제에 대한 해의 직교 성질

Lemma (Fire Engine Lemma) : 는 벡터라고 하면, 에 가장 가까운 Span 내의 점은 이고, 그 거리는 이다.

  • Proof :


  • Span 상의 임의의 점이라 하자. 세 점 는 삼각형을 형성한다. 에서 로의 화살표는 이다. 에서 로의 화살표는 이며 이것은 이다. 에서 로의 화살표는 이다.

  • 는 둘 다 상에 있으므로, 이 둘은 의 배수이고, 이 둘의 차분인 또한 의 배수이다. 와 직교하므로 이것은 9.3.1의 Orthogonality Property Lemma에 의해 와 또한 직교한다. 이를 피타고라스 정리에 의하면 다음이 성립한다.

  • 만약 이면 이고, 따라서 이다.


9.3.4 투영 및 가장 가까운 점 찾기

위의 9.3.3 의 그림에서 이다. 이므로 이다. 또한, 이므로 이다. 이를 다음과 같이 표현할 수 있다.

에 대해 풀면 다음과 같다.

인 경우, 다음과 같다.


Lemma : 임의의 실수 벡터 에 대해,

  • 에 직교하는 가 존재한다.

  • Span 상에 있으며, 를 최소화하는 점 이다.

  • 의 값은 이다.

파이썬 코드를 이용해 의 생성(Span)에 대한 의 투영(projection)을 반환하는 함수를 구현해보자. 아래 코드에서 1e-20 부분은 벡터 가 아주 작은값(여기서는 ) 보다 작거나 같으면 는 영벡터라고 간주해주기 위한 부분이다.

  
def project_along(b, v):
   bv = 0
   vv = 0
   for u, w in zip(b, v):
       bv += u*w
   for u,w in zip(v, v):
       vv += u*w
   
   sigma = (bv / vv) if vv > 1e-20 else 0
   return [sigma*e for e in v]

>>> b = [2, 4]
>>> v = [6, 2]
>>> project_along(b, v)
[3.0, 1.0]


9.3.5 소방차 문제에 대한 솔루션

이제 9.1에서 봤던 소방차 문제에 대한 그림을 다시 보자.

이 문제에서 이고, 이다. 직선 위에 있는 가장 가까운 점은 이며, 는 다음과 같다.

따라서, 에 가장 가까운 점은 이다. 까지의 거리는 이다.

9.3.6 외적(Outer product)과 투영

벡터 외적 은 행렬-행렬 곱 으로 정의된다.

Comments