내적은 정말 자주 쓰는 개념이다. 유사도를 비교하든, 두 벡터에 일정한 연산의 일종으로 사용하든, 딥러닝 공부하면서 자주 접했다. 놈 역시 내적과 밀접한 관련을 맺고 있는데, 이 개념들을 다시 정리해보도록 하자.
1. 내적(Inner Product)
내적의 정의는 우선 다음과 같다.
정의 1. F-벡터공간 V를 생각해보자. V에 정의된 내적 <x,y>는 V의 임의의 벡터 x,y의 순서쌍을 스칼라에 대응시키는 함수로, 다음 조건을 만족한다.
임의의 x,y,z∈V와 임의의 c∈F에 대하여
1. <x+z,y>=<x,y>+<z+y>
2. <cx,y>=c<x,y>
3. <x,y>=<y,x>(단, 이때의 z는 z의 켤레복소수를 의미)
4. x=0일 때, <x,x>는 양수이다.
조건 3은 복소수 공간에서는 <x,y>=<y,x>이지만, 실수 공간에서는 <x,y>=<y,x>가 되어 permutation invariant한 연산이 된다. 이는 내적이 딥러닝에서 가지는 중요한 성질 중 하나이다. 조건 1,2 는 행렬과 비슷하게 내적이 첫번째 성분에 대한 선형임을 보이게 된다.
증명 Fn의 두 벡터 x=(a1,a2,…,an),y=(b1,b2,…,bn)에 대하여 <x,y>=∑i=1naibi로 정의하자. 이때 <⋅,⋅>이 조건 1, 2를 만족함을 쉽게 보일 수 있다.
조건 2. C2의 두 벡터 x=(1+i,4),y=(2−3i,4+5i)에 대해 <x,y>는 다음과 같다.
<x,y>=(1+i)(2+3i)+4(4−5i)=15−15i
이때 위에서 정의한 내적을 Fn의 표준내적이라 한다고 한다. 하지만 만약 F=R이라면 켤레복소수가 자신과 동일하기 때문에, 굳이 계산할 필요가 없다. 이때 우리가 흔히 배운 내적(dot product)가 된다.
이제 행렬의 단위에서 내적을 생각해보자.
정의 2. A∈Mm×n(F)를 생각해보자. 모든 i,j에 대하여 (A∗)ij=Aij인 행렬 A∗를 A의 켤레 전치행렬(conjugate transpose) 또는 수반행렬(adjoint)이라 한다.
만약 행렬 A의 모든 성분이 실수라면 켤레 복소수는 자기 자신이 되므로 A∗는 단순하게 전치행렬이 되게 된다.
행렬에 대한 내적연산의 대표적 예시가 프로베니우스 내적이다.
정의 3. 벡터 공간 V=Mn×n(F)와 두행렬 A,B∈V에 대하여 프로베니우스 내적은 다음과 같이 정의된다.
<A,B>=tr<B∗,A>
이처럼 행렬에 대한 내적 연산이 가능해지면 공간에 대한 이야기가 가능해진다.
내적이 주어진 F-벡터공간 V를 내적공간이라 한다. 또한, F=C이면 V를 복소내적공간이라 하고, F=R이면 V를 실내적공간이라 한다.
예를 들어 V를 내적 <x,y>가 주어진 내적공간이라 하자. W가 V의 부분공간일때, W는 정의역을 x,y∈W로 제한한, 같은 함수 <x,y>가 주어진 내적공간이라고 한다. 내적공간이 특별한 이야기가 아니라, 어떠한 공간에서 내적이 정의될 수 있다면, 해당 공간은 특정 내적이 주어진 내적공간이라고 할 수 있다. 이는 행렬 뿐만 아니라 벡터에 대해서도 동일하게 성립된다.
앞으로 선형대수학 정리를 하면서 다룰 Fn은 표준 내적이 주어진 내적공간을 지칭하고, Mn×n(F)은 프로베니우스 내적이 주어진 내적공간을 지칭하게 될 것이다.
재밌는 점은 동일한 벡터공간이라 하더라도, 다른 내적이 주어지면 전혀 다른 내적공간이 되게 된다. 예를 들어 두 내적을 다음과 같이 정의해보자.
이때, f(x)=x,g(x)=x2은 두번째 내적공간에서는 0이 되기 때문에 직교하지만, 첫번째 내적공간에서는 그렇지 않다. 즉, 내적공간은 단순히 특정 벡터 공간을 의미하는 것이 아니라, "내적이 주어진" 벡터 공간을 의미하게 된다.
2. 내적의 성질
내적의 구체적인 성질로는 다음이 있다.
정의 4. 내적공간 V를 생각하자. 이때, 벡터 x,y,z∈V와 스칼라 c∈F에 대하여 다음이 성립한다.
1. <x,y+z>=<x,y>+<x,z>
2. <x,cy>=c<x,y>
3. <x,0>=<0,x>=0
4. <x,x>=0↔x=0
5. 모든 x∈V에 대하여 <x,y>=<x,z>이면 y=z이다.
즉, 코사인은 두 벡터의 내적을 정규화한 값이라고 생각할 수 있는데, 식을 다시 써보면 다음과 같다.
<x,y>=∣∣x∣∣⋅∣∣y∣∣cosθ
이때 두 벡터가 수직이라면 cosθ=0이므로 자연스레 <x,y>=0이 된다.
수직에 대해 조금 더 이야기 해보도록 하자.
4. 수직, 직교
직교의 정의는 다음과 같다.
정의 6. 내적공간 V에 대하여 벡터 <x,y>=0이면 두 벡터는 직교하거나 수직이라고 정의한다. 또한
1. V의 부분집합 S에 대하여 S에 속하는 서로 다른 임의의 두 벡터가 직교할 때, 집합 S를 직교 집합이라 한다.
2. ∣∣x∣∣=1인 벡터를 단위벡터라 한다.
3. V의 부분집합 S가 직교 집합이고 단위벡터로만 이루어져 있을 때, 집합 S를 정규직교집합이라 한다.
정규직교집합은 기저를 이루는 아주 중요한 집합이기 때문에 향후 중요하게 다뤄질 수밖에 없다.
또한 집합 S={v1,v2,…}가 정규직교집합이기 위한 필요충분조건은 <vi,vj>=δij이다. 이때 δ는 크로네커 델타로 아래와 같은 식을 가지고 있다.
δij={1,0,if i=j,if i=j.
즉, 자기 자신과 내적하면 1이고, 이외의 벡터와 내적하면 모두 0이어야 한다.
직교성은 말 그대로 두 벡터 간의 각을 보존하므로 0이 아닌 스칼라를 곱해도 영향을 받지 않는다.