이 강의의 목표는 공식을 빨리 외우는 것이 아닙니다. 목표는 아래 식을 스스로 설명할 수 있게 되는 것입니다.
a1Te=0
이 식은 말로 풀면 다음 뜻입니다.
벡터 a1과 벡터 e는 직교한다.
이 문장이 어려운 이유는 한 줄 안에 여러 개념이 한꺼번에 들어 있기 때문입니다.
- a1은 무엇인가?
- e는 무엇인가?
- 위에 붙은 T는 무엇인가?
- a1Te는 왜 내적인가?
- 내적이 0이면 왜 직교인가?
- 왜 최소제곱에서는 이런 식이 나오는가?
이 강의는 이 질문을 하나씩, 아주 작은 단계로 나누어 설명합니다.
수학은 기호가 많습니다. 기호를 뜻도 모른 채 보면 어렵습니다. 그래서 먼저 읽는 법부터 정리합니다.
| 기호 |
읽는 법 |
뜻 |
| v |
벡터 v |
숫자를 순서대로 모아 놓은 것, 또는 방향과 크기를 가진 화살표 |
| vT |
v 전치 |
세로 벡터를 가로로 눕힌 것 |
| uTv |
u 전치 곱하기 v |
두 벡터 u와 v의 내적 |
| u⋅v |
u dot v |
두 벡터의 내적 |
| ∥v∥ |
v의 노름 |
벡터 v의 길이 |
| uTv=0 |
u와 v의 내적이 0 |
두 벡터가 직교한다는 조건 |
| Ax |
A 곱하기 x |
행렬 A의 열벡터들을 x의 숫자만큼 섞은 결과 |
| e=b−Ax |
오차 벡터 e |
실제값 b와 예측값 Ax 사이에 남은 차이 |
여기서 가장 중요한 것은 이것입니다.
uTv=u⋅v
즉 uTv와 u⋅v는 같은 내적을 다르게 쓴 것입니다.
먼저 벡터부터 다시 봅시다.
예를 들어
v=[32]
라는 벡터가 있습니다.
이 벡터는 숫자 두 개를 세로로 적은 것입니다.
- 첫 번째 숫자 3: 오른쪽으로 3만큼 간다.
- 두 번째 숫자 2: 위쪽으로 2만큼 간다.
그래서
[32]
는 평면에서 오른쪽으로 3, 위로 2 가는 화살표로 볼 수 있습니다.
또 다른 예를 봅시다.
[05]
는 오른쪽으로는 가지 않고, 위로만 5만큼 가는 벡터입니다.
[−20]
는 왼쪽으로 2만큼 가고, 위아래로는 움직이지 않는 벡터입니다.
즉 2차원 벡터는 보통 이렇게 읽으면 됩니다.
[오른쪽 방향 성분위쪽 방향 성분]
벡터
a=[23]
가 있다고 합시다.
이 벡터는 세로로 서 있습니다. 이것을 가로로 눕히면
aT=[23]
가 됩니다.
여기서 위에 붙은
T
는 transpose, 즉 전치를 뜻합니다.
전치는 어렵게 생각할 필요가 없습니다.
- 세로 벡터를 가로 벡터로 바꾼다.
- 가로 벡터를 세로 벡터로 바꾼다.
- 행렬에서는 행과 열을 서로 바꾼다.
지금은 첫 번째만 기억하면 충분합니다.
[23]⟶[23]
두 벡터가 있습니다.
a=[23],e=[45]
이때
aTe
를 계산해 봅시다.
먼저
aT=[23]
입니다. 따라서
aTe=[23][45]
입니다.
행렬곱 규칙대로 계산하면
aTe=2⋅4+3⋅5=8+15=23
입니다.
즉
aTe
는 같은 자리끼리 곱해서 더한 값입니다.
[23]와[45]
를 비교하면
- 첫 번째 자리끼리 곱한다: 2 곱하기 4
- 두 번째 자리끼리 곱한다: 3 곱하기 5
- 두 결과를 더한다: 8 더하기 15
그래서 답은 23입니다.
이 계산을 내적이라고 부릅니다.
aTe=a⋅e
중요한 점은 내적의 결과가 벡터가 아니라 숫자라는 것입니다.
aTe=23
여기서 23은 하나의 숫자입니다.
처음에는 내적이 그냥 같은 자리끼리 곱해서 더하는 계산처럼 보입니다. 그런데 이 계산은 방향에 대한 정보를 담고 있습니다.
아주 쉬운 기준 벡터부터 봅시다.
i=[10]
이 벡터는 오른쪽 방향입니다. 이제 임의의 벡터
v=[32]
와 내적해 봅시다.
iTv=[10][32]=1⋅3+0⋅2=3
결과는 3입니다.
그런데 이 3은 바로 벡터 v가 오른쪽으로 가는 양입니다.
v=[32]
는 오른쪽으로 3, 위로 2 가는 벡터였습니다. 오른쪽 방향 벡터
i=[10]
와 내적했더니 오른쪽 방향 성분 3이 뽑혀 나온 것입니다.
이번에는 위쪽 방향 벡터를 봅시다.
j=[01]
계산하면
jTv=[01][32]=0⋅3+1⋅2=2
이번에는 위쪽 방향 성분 2가 뽑혀 나왔습니다.
이 예시에서 내적의 감각을 얻을 수 있습니다.
내적은 한 벡터가 다른 벡터 방향으로 얼마나 가고 있는지 재는 값이다.
내적값은 양수, 음수, 0이 될 수 있습니다.
오른쪽 방향 벡터
[10]
와 오른쪽으로 5만큼 가는 벡터
[50]
를 내적해 봅시다.
[10][50]=5
값이 양수입니다. 두 벡터가 같은 방향을 보고 있기 때문입니다.
이번에는 오른쪽 방향 벡터와 왼쪽으로 가는 벡터를 내적해 봅시다.
[10][−50]=−5
값이 음수입니다. 기준은 오른쪽인데, 다른 벡터는 왼쪽으로 가고 있기 때문입니다.
오른쪽 방향 벡터와 위쪽 방향 벡터를 내적해 봅시다.
[10][05]=1⋅0+0⋅5=0
값이 0입니다.
오른쪽 방향과 위쪽 방향은 서로 90도입니다. 한쪽 방향으로는 다른 쪽 성분이 전혀 없습니다.
그래서 내적값은 이렇게 읽습니다.
| 내적값 |
의미 |
| 양수 |
두 벡터가 비슷한 방향을 본다 |
| 음수 |
두 벡터가 반대 방향을 본다 |
| 0 |
한 벡터가 다른 벡터 방향 성분을 갖지 않는다 |
두 벡터가 서로 90도로 만나는 것을 직교한다고 합니다.
가장 쉬운 예시는 오른쪽 방향과 위쪽 방향입니다.
a=[10],e=[01]
계산하면
aTe=[10][01]=1⋅0+0⋅1=0
입니다.
그래서
aTe=0
이라고 쓰면
a와 e의 내적이 0이다.
라는 뜻입니다.
그리고 내적이 0이라는 말은
e가 a 방향으로 가진 성분이 없다.
라는 뜻입니다.
그래서 영벡터가 아닌 두 벡터에 대해
aTe=0
이면 두 벡터는 직교합니다.
단, 한 가지 조심할 점이 있습니다. 영벡터
[00]
는 모든 벡터와 내적하면 0이지만, 방향이 없습니다. 그래서 "각도가 90도다"라고 말하려면 보통 두 벡터가 영벡터가 아니어야 합니다.
이제 처음 목표였던 식을 다시 봅시다.
a1Te=0
이 식을 한 번에 이해하려고 하지 말고, 조각으로 나눕니다.
예를 들어
a1=[23]
라고 합시다.
a1T=[23]
입니다.
예를 들어
e=[3−2]
라고 합시다.
그러면
a1Te=[23][3−2]=2⋅3+3⋅(−2)=6−6=0
입니다.
따라서
a1Te=0
은
a1과 e의 내적이 0이다.
라는 뜻입니다.
그리고 내적이 0이면
e 안에는 a1 방향 성분이 없다.
라는 뜻입니다.
그래서
a1과 e는 직교한다.
라고 말합니다.
앞에서는 숫자 예시로 봤습니다. 이제 공식으로도 확인해 봅시다.
영벡터가 아닌 두 벡터 u, v 사이의 각도를 θ라고 하면 내적은 다음처럼 표현됩니다.
uTv=∥u∥∥v∥cosθ
이 식은 이렇게 읽으면 됩니다.
- ∥u∥: 벡터 u의 길이
- ∥v∥: 벡터 v의 길이
- θ: 두 벡터 사이의 각도
- cosθ: 두 벡터가 얼마나 같은 방향을 보는지 나타내는 값
두 벡터가 90도로 만나면
θ=90∘
입니다.
그리고
cos90∘=0
입니다.
그래서
uTv=∥u∥∥v∥cos90∘=∥u∥∥v∥⋅0=0
이 됩니다.
반대로 두 벡터가 영벡터가 아닌데
uTv=0
이라면
∥u∥∥v∥
는 0이 아닙니다. 따라서 0이 되는 이유는
cosθ=0
이기 때문입니다. 이때 각도는 90도입니다.
그래서 영벡터가 아닌 두 벡터에 대해
uTv=0
이면 직교한다고 말합니다.
이제 투영을 봅시다.
투영은 쉽게 말해 그림자입니다. 어떤 벡터를 한 방향 위로 내려놓아서, 그 방향 성분만 남기는 것입니다.
먼저 쉬운 예시부터 봅시다.
v=[32]
라는 벡터가 있습니다.
이 벡터를 x축 방향, 즉 오른쪽 방향 위로 투영하면 어떻게 될까요?
x축 방향 벡터는
u=[10]
입니다.
벡터 v는 오른쪽으로 3, 위로 2 가는 벡터입니다. x축 방향 성분만 남기면 위쪽 성분 2는 사라지고, 오른쪽 성분 3만 남습니다.
그래서 투영 결과는
proju(v)=[30]
입니다.
원래 벡터는
[32]
였고, 투영 결과는
[30]
입니다.
남은 부분은
r=v−proju(v)=[32]−[30]=[02]
입니다.
이 남은 부분
r=[02]
는 위쪽 방향입니다.
기준 방향
u=[10]
는 오른쪽 방향입니다.
오른쪽 방향과 위쪽 방향은 직교합니다. 실제로 내적해 보면
uTr=[10][02]=0
입니다.
즉 투영하고 남은 부분은 기준 방향과 직교합니다.
기준 벡터를
u
라고 하고, 투영할 벡터를
v
라고 합시다.
v를 u 방향으로 투영한 결과는 u 방향 위에 있어야 합니다. 그러므로 투영 결과는 어떤 숫자 c에 대해
cu
처럼 생겼을 것입니다.
문제는 c가 얼마인지 찾는 것입니다.
투영하고 남은 벡터를
r=v−cu
라고 하겠습니다.
투영이 제대로 되었다면, 남은 부분 r은 기준 방향 u와 직교해야 합니다.
따라서
uTr=0
이어야 합니다.
여기에
r=v−cu
를 넣으면
uT(v−cu)=0
입니다.
괄호를 풀면
uTv−cuTu=0
입니다.
따라서
cuTu=uTv
이고,
c=uTuuTv
입니다.
그래서 투영 공식은
proju(v)=uTuuTvu
입니다.
같은 내적을 점 기호로 쓰면
proju(v)=u⋅uv⋅uu
라고도 씁니다.
단, 기준 벡터 u는 영벡터이면 안 됩니다. 영벡터는 방향이 없어서 "그 방향으로 투영한다"는 말 자체가 성립하지 않기 때문입니다.
이번에는 기준 방향이 x축이 아닌 경우를 봅시다.
u=[21],v=[43]
라고 합시다.
먼저
uTv
를 계산합니다.
uTv=[21][43]=2⋅4+1⋅3=11
다음으로
uTu
를 계산합니다.
uTu=[21][21]=2⋅2+1⋅1=5
따라서
uTuuTv=511
입니다.
투영 결과는
proju(v)=511[21]=[22/511/5]
입니다.
남은 벡터는
r=v−proju(v)=[43]−[22/511/5]=[−2/54/5]
입니다.
정말로 남은 벡터가 u와 직교하는지 확인해 봅시다.
uTr=[21][−2/54/5]=2⋅(−2/5)+1⋅(4/5)=−4/5+4/5=0
맞습니다. 투영하고 남은 벡터는 기준 방향과 직교합니다.
이제 최소제곱으로 넘어갑시다.
우리가 풀고 싶은 식이
Ax=b
라고 합시다.
이 식은 이렇게 읽을 수 있습니다.
행렬 A의 열벡터들을 잘 섞어서 b를 만들 수 있는가?
예를 들어 행렬 A의 열벡터가
a1, a2
이고
A=[a1a2]
라고 합시다.
또
x=[x1x2]
라고 하면
Ax=x1a1+x2a2
입니다.
즉 Ax는 a1과 a2를 x1, x2만큼 섞어서 만든 벡터입니다.
A의 열벡터들을 여러 비율로 섞어서 만들 수 있는 모든 벡터들의 모음을 열공간이라고 합니다.
그러면
Ax=b
는 이렇게 말할 수 있습니다.
b가 A의 열공간 안에 있는가?
만약 b가 열공간 안에 있으면 정확한 해가 있습니다. 어떤 x를 골라서 정확히 Ax=b를 만들 수 있습니다.
하지만 실제 데이터에서는 b가 열공간 위에 정확히 놓이지 않는 경우가 많습니다. 그러면 정확한 해가 없습니다.
그럴 때는 "완전히 맞는 답" 대신 "가장 가까운 답"을 찾습니다.
즉
Ax
가
b
에 최대한 가까워지도록 하는
x
를 찾습니다.
이 문제를 최소제곱이라고 합니다.
xmin∥Ax−b∥2
이 식은 이렇게 읽습니다.
Ax와 b 사이의 차이의 길이 제곱을 가장 작게 만드는 x를 찾아라.
최소제곱에서는 오차 벡터가 중요합니다.
예측값은
Ax
입니다.
실제값은
b
입니다.
그래서 오차 벡터를
e=b−Ax
라고 둡니다.
이 식은 이렇게 읽습니다.
실제값에서 예측값을 뺀 것이 오차다.
만약
e=0
이면 오차가 없다는 뜻입니다. 즉 정확히 맞췄다는 뜻입니다.
하지만 정확히 맞출 수 없다면 e가 완전히 0이 될 수 없습니다. 그때는 e의 길이가 가장 작아지도록 해야 합니다.
이제 최소제곱의 가장 중요한 문장을 봅시다.
가장 가까운 점에서는 오차 벡터가 열공간과 직교한다.
이 말이 왜 맞는지 쉬운 그림으로 생각해 봅시다.
바닥 위에 어떤 점들이 있고, 우리는 바닥 위에서만 움직일 수 있다고 합시다. 그런데 목표점 b는 바닥 위가 아니라 공중에 떠 있습니다.
바닥 위에서 목표점 b에 가장 가까운 점은 어디일까요?
바로 목표점에서 바닥으로 수직으로 내려온 점입니다.
왜 수직일까요?
만약 목표점과 바닥 위의 점을 잇는 선이 비스듬하다면, 바닥 위에서 조금 더 움직여서 거리를 줄일 수 있습니다. 가장 가까운 점에서는 더 이상 바닥 방향으로 줄일 수 있는 성분이 없어야 합니다.
그래서 남은 오차는 바닥과 수직입니다.
선형대수에서는 이 "바닥" 역할을 하는 것이 열공간입니다.
- 예측값 Ax는 열공간 안에 있습니다.
- 실제값 b는 열공간 밖에 있을 수 있습니다.
- 오차 e=b−Ax는 예측값에서 실제값으로 가는 남은 차이입니다.
- 가장 가까운 예측값을 찾으면, 오차 e는 열공간과 직교합니다.
즉 최소제곱 해에서는
e=b−Ax
가 행렬 A의 모든 열벡터와 직교합니다.
행렬 A의 열벡터가
a1, a2, …, an
이라고 합시다.
그러면
A=[a1a2⋯an]
입니다.
오차 벡터 e가 열공간과 직교한다는 말은, 특히 e가 열공간을 만드는 모든 기본 방향과 직교한다는 뜻입니다.
즉
a1Te=0
이고,
a2Te=0
이고,
계속해서
anTe=0
입니다.
이것을 한 줄로 쓰면
a1Te=0,a2Te=0,⋯,anTe=0
입니다.
각 식의 뜻은 같습니다.
각 열벡터와 오차 벡터의 내적이 0이다.
즉
오차 벡터는 행렬 A가 움직일 수 있는 모든 방향과 직교한다.
라는 뜻입니다.
방금 조건을 다시 봅시다.
a1Te=0,a2Te=0,⋯,anTe=0
이 식을 매번 길게 쓰기는 불편합니다.
행렬 전치를 이용하면 한 번에 쓸 수 있습니다.
A=[a1a2⋯an]
이면
AT=⎣⎢⎢⎢⎢⎡a1Ta2T⋮anT⎦⎥⎥⎥⎥⎤
입니다.
따라서
ATe=⎣⎢⎢⎢⎢⎡a1Ta2T⋮anT⎦⎥⎥⎥⎥⎤e=⎣⎢⎢⎢⎢⎡a1Tea2Te⋮anTe⎦⎥⎥⎥⎥⎤
입니다.
그러므로
ATe=0
은 사실 다음 조건들을 한꺼번에 쓴 것입니다.
⎣⎢⎢⎢⎢⎡a1Tea2Te⋮anTe⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡00⋮0⎦⎥⎥⎥⎥⎤
즉
ATe=0
은
오차 e가 A의 모든 열벡터와 직교한다.
라는 말을 짧게 쓴 것입니다.
여기서 오른쪽의 0은 보통 하나의 숫자 0처럼 쓰지만, 실제로는 모든 성분이 0인 영벡터입니다.
최소제곱에서는 오차를
e=b−Ax
라고 두었습니다.
가장 가까운 점에서는 오차가 열공간과 직교하므로
ATe=0
입니다.
여기에
e=b−Ax
를 넣습니다.
AT(b−Ax)=0
괄호를 풀면
ATb−ATAx=0
입니다.
양변을 정리하면
ATAx=ATb
가 됩니다.
이 식을 정규방정식이라고 합니다.
정규방정식은 갑자기 나온 공식이 아닙니다. 아래 과정을 압축한 결과입니다.
- 정확히 Ax=b를 만들 수 없을 수 있다.
- 그러면 Ax가 b에 가장 가까워지도록 한다.
- 가장 가까운 점에서는 오차 e=b−Ax가 열공간과 직교한다.
- 열공간과 직교한다는 말은 A의 모든 열벡터와 직교한다는 말이다.
- 그 조건을 쓰면 ATe=0이다.
- e=b−Ax를 넣으면 AT(b−Ax)=0이다.
- 정리하면 ATAx=ATb이다.
선형회귀도 같은 생각을 사용합니다.
데이터 점들이 하나의 직선 위에 정확히 놓이지 않는다고 합시다. 그러면 모든 점을 완벽하게 지나는 직선은 없을 수 있습니다.
그래도 우리는 가장 잘 맞는 직선을 찾고 싶습니다.
이때 각 데이터의 실제값과 예측값 사이에는 오차가 생깁니다. 선형회귀는 이 오차들의 제곱합이 가장 작아지는 직선을 찾습니다.
즉 선형회귀는 최소제곱 문제입니다.
그리고 최소제곱 문제의 핵심 조건은
AT(b−Ax)=0
입니다.
이 식은 말로 풀면 다음과 같습니다.
더 이상 줄일 수 없는 최선의 예측에서는, 남은 오차가 모델이 움직일 수 있는 방향들과 직교한다.
문제: 다음 두 벡터가 직교하는지 확인하라.
u=[12],v=[2−1]
풀이:
uTv=[12][2−1]=1⋅2+2⋅(−1)=2−2=0
내적이 0입니다. 따라서 두 벡터는 직교합니다.
문제: 다음 식의 뜻을 설명하라.
a1Te=0
풀이:
a1Te는 벡터 a1과 벡터 e의 내적입니다.
따라서
a1Te=0
은
a1과 e의 내적이 0이다.
라는 뜻입니다.
내적이 0이라는 말은
e가 a1 방향 성분을 갖지 않는다.
라는 뜻입니다.
그래서 영벡터가 아닌 경우에는
a1과 e가 직교한다.
라고 말할 수 있습니다.
문제: 벡터
v=[31]
를
u=[10]
방향으로 투영하라. 그리고 남은 벡터가 u와 직교하는지 확인하라.
풀이:
u는 x축 방향입니다. 따라서 v에서 x축 방향 성분만 남기면
proju(v)=[30]
입니다.
남은 벡터는
r=v−proju(v)=[31]−[30]=[01]
입니다.
내적을 계산하면
uTr=[10][01]=0
입니다. 따라서 남은 벡터 r은 기준 방향 u와 직교합니다.
문제: 최소제곱에서 왜
ATAx=ATb
가 나오는지 설명하라.
풀이:
최소제곱에서는 예측값 Ax가 실제값 b에 가장 가까워지도록 합니다.
오차 벡터를
e=b−Ax
라고 두면, 가장 가까운 점에서는 오차가 열공간과 직교합니다.
그래서
ATe=0
입니다.
여기에
e=b−Ax
를 넣으면
AT(b−Ax)=0
입니다.
정리하면
ATb−ATAx=0
이고,
ATAx=ATb
가 됩니다.
- 벡터는 숫자 묶음이고, 화살표로 볼 수 있다.
- 전치 aT는 세로 벡터 a를 가로로 눕힌 것이다.
- aTe는 두 벡터 a와 e의 내적이다.
- 내적은 같은 자리끼리 곱해서 더한 값이다.
- 내적은 한 벡터가 다른 벡터 방향으로 얼마나 가고 있는지 알려준다.
- 내적이 0이면 한 벡터가 다른 벡터 방향 성분을 갖지 않는다는 뜻이다.
- 영벡터가 아닌 두 벡터의 내적이 0이면 두 벡터는 직교한다.
- 투영은 한 방향 성분만 남기는 것이다.
- 투영하고 남은 벡터는 기준 방향과 직교한다.
- 최소제곱은 정확한 해가 없을 때 가장 가까운 해를 찾는 방법이다.
- 최소제곱 해에서는 오차 e=b−Ax가 열공간과 직교한다.
- 열공간과 직교한다는 말은 A의 모든 열벡터와 직교한다는 말이다.
- 이 조건을 압축하면 ATe=0이다.
- e=b−Ax를 넣으면 AT(b−Ax)=0이다.
- 정리하면 정규방정식 ATAx=ATb가 된다.
- 벡터
[32]
를 말로 설명할 수 있는가?
- 다음 전치를 계산할 수 있는가?
[47]T
- 다음 내적을 계산할 수 있는가?
[23][51]
-
a1Te=0이 왜 a1과 e의 내적이 0이라는 뜻인지 설명할 수 있는가?
-
내적이 0이면 왜 직교라고 말하는지 설명할 수 있는가?
-
투영하고 남은 벡터가 왜 기준 방향과 직교하는지 설명할 수 있는가?
-
최소제곱에서 오차 벡터 e=b−Ax가 왜 열공간과 직교해야 하는지 설명할 수 있는가?
-
다음 식이 무엇을 압축한 것인지 설명할 수 있는가?
ATe=0
- 다음 정규방정식이 어떤 순서로 나오는지 말할 수 있는가?
ATAx=ATb