선형대수의 주인공은 벡터입니다. 물리 시간에는 "크기와 방향을 가진 화살표", 프로그래밍에서는 "숫자 배열", 신호 처리에서는 "샘플을 늘어놓은 것"이라고 배웠을지 모릅니다. 이 장의 첫 메시지는 이 셋이 같은 것이라는 점입니다. 더할 수 있고 상수배할 수 있으면 벡터이고, 선형대수는 이 두 연산만으로 무엇을 할 수 있는지를 끝까지 따라가는 학문입니다. 이 장에서는 그 두 연산으로 선형 결합을 만들고, 몇 개의 벡터로 어디까지 갈 수 있는지(생성), 쓸모없는 벡터가 섞였는지(선형 독립)를 묻습니다. 그리고 길이와 각도를 재는 내적과 노름을 더해, 검색 엔진이 문서 두 개가 얼마나 비슷한지 재는 방법까지 갑니다.
화살표, 숫자 목록, 샘플링된 신호, RGB 픽셀을 모두 Rn의 벡터로 보고 같은 규칙으로 더하고 상수배한다.
선형 결합 c1v1+⋯+ckvk를 계산하고, 벡터 몇 개가 생성하는 집합이 점·직선·평면 중 무엇인지 판단한다.
선형 독립의 정의를 쓰고, 2차원에서 세 벡터는 반드시 종속인 이유와 종속 관계식을 직접 찾는다.
내적을 성분의 곱의 합과 ∥u∥∥v∥cosθ 두 가지로 이해하고, 각도·직교·사영 길이를 계산한다.
L1, L2, L∞ 노름의 단위 공을 그리고, 삼각 부등식과 코시–슈바르츠 부등식의 뜻과 증명 아이디어를 설명한다.
단어 빈도 벡터의 코사인 유사도로 문서를 순위화하고, 왜 유클리드 거리 대신 각도를 쓰는지 안다.
이 수식이 없었다면검색 엔진의 "비슷한 문서"
도서관에 문서가 백만 건 있고, 누군가 "반도체 식각 공정"을 검색했다고 합시다. 어떤 문서가 가장 관련 있을까요? 검색어가 들어 있는지만 보면 수천 건이 똑같이 "일치"하고, 순서를 매길 근거가 없습니다. 사람이 일일이 읽고 점수를 매기는 것은 불가능합니다.
1960~70년대 코넬 대학교의 제라드 솔턴(Gerard Salton)과 그의 SMART 시스템은 이 문제를 기하 문제로 바꾸는 벡터 공간 모형을 발전시켰습니다. 문서마다 "단어 1이 몇 번, 단어 2가 몇 번, …"을 적은 긴 숫자 목록, 즉 벡터를 만들고, 검색어도 같은 방식의 벡터로 만듭니다. 그러면 "관련 있다"는 말은 "두 벡터가 같은 방향을 가리킨다"가 되고, 그 정도는 두 벡터 사이 각의 코사인, 곧 내적 한 번으로 계산됩니다. 오늘날의 추천 시스템과 언어 모델의 임베딩 검색도 같은 생각 위에 서 있습니다.
문서 순위 매기기→사람이 읽기? 불가능→문서 = 벡터, 유사도 = 내적→곱셈과 덧셈만으로 순위
벡터란 무엇인가: 화살표, 목록, 신호
바람, 픽셀, 센서 로그를 같은 코드로 다룰 수 있을까
드론 제어기는 바람의 속도(동쪽으로 3 m/s, 북쪽으로 1 m/s)를, 카메라 ISP는 픽셀의 (R, G, B) 값을, 진동 감시 장치는 1초에 1,000번 잰 가속도 샘플을 다룹니다. 겉모습은 전혀 다르지만 세 경우 모두 "두 개를 더하기"(바람 두 개가 겹치기, 두 사진 합성, 두 신호 중첩)와 "몇 배 하기"(바람 세기 2배, 노출 2배, 증폭기 이득)가 자연스럽게 필요합니다. 각각 따로 수학을 만들어야 할까요?
그럴 필요가 없습니다. 세 대상 모두 숫자를 순서대로 늘어놓은 것이고, 더하기와 몇 배 하기를 성분마다 하면 되기 때문입니다. 실수 n개를 세로로 늘어놓은 것을 Rn의 벡터(vector)라고 부르고, 각 숫자를 성분(component)이라고 부릅니다.
바람은 R2, 픽셀은 R3, 1초 분량 신호는 R1000의 벡터다. 이 책은 벡터를 굵은 소문자 v로, 스칼라(실수 하나)를 보통 글씨 c로 쓴다.
n=2,3일 때는 벡터를 원점에서 점 (v1,v2,v3)으로 향하는 화살표로 그릴 수 있습니다. n=1000이면 화살표는 그릴 수 없지만, 성분을 가로축에 늘어놓아 막대그래프(신호)로 그릴 수 있습니다. 그림은 달라도 계산 규칙은 하나입니다. 이것이 선형대수가 강력한 이유입니다. 2, 3차원에서 그림으로 얻은 직관이 천 차원, 백만 차원에서도 그대로 계산을 이끌어 줍니다.
그림 1-1. 같은 대수, 다른 그림. ① 2차원 벡터는 원점에서 시작하는 화살표, ② 3차원 픽셀 값은 세로로 늘어놓은 숫자 세 개, ③ 15개 샘플로 이루어진 신호는 R15의 벡터 하나다. 세 경우 모두 덧셈과 상수배를 성분마다 한다.
아래 시뮬레이터에서 숫자 세 개를 바꿔 보세요. 같은 벡터가 3차원 화살표로, 막대 세 개로, 색 하나로 동시에 보입니다. 상수 c를 바꾸면 화살표는 길어지고, 막대는 함께 높아지고, 색은 밝아집니다. 세 그림이 같은 연산에 같은 방식으로 반응한다는 것을 확인하세요.
SIMULATOR
숫자 셋, 세 가지 얼굴
색으로 볼 때 255 초과는
v—
c·v—
길이 ‖c·v‖—
픽셀로 보면—
해볼 것: ① c를 0.5로 내리면 화살표 길이, 막대 높이, 밝기가 모두 정확히 절반이 됩니다(색상은 그대로). ② c = 2에서 R이 255를 넘으면 색 표현은 깨지지만 벡터 계산은 아무 문제가 없습니다. 이것이 "수학적 벡터"와 "저장 형식(8비트)"의 차이입니다. 모델: 색은 감마 보정을 무시하고 값을 그대로 sRGB로 표시합니다. 3차원 화살표는 비스듬한 투영으로 그렸습니다.
정의 1.1 (벡터 공간 Rn)Rn은 실수 n개의 순서 있는 목록 전체의 집합이다. 두 벡터의 합과 스칼라 c에 의한 스칼라배를 성분마다 정의한다.
u+v=u1+v1⋮un+vn,cv=cv1⋮cvn
모든 성분이 0인 영벡터0가 있고, 모든 v에 대해 v+(−1)v=0이다. 5장에서는 이 두 연산의 성질(교환·결합·분배 법칙 등 여덟 가지)만 만족하면 함수나 행렬도 "벡터"로 부를 수 있다는 것을 봅니다.
덧셈과 스칼라배: 평행사변형과 늘이기
배는 실제로 어느 쪽으로 가는가
배가 물에 대해 북동쪽으로 초속 4 m(엔진이 내는 속도)로 나아가는데, 해류가 동쪽에서 서쪽으로 초속 1.5 m로 흐릅니다. 육지에서 보면 배는 어느 방향으로, 얼마나 빨리 움직일까요? 각도와 삼각함수를 한참 써야 할 것 같지만, 벡터로 쓰면 덧셈 한 번입니다.
성분마다 더한다는 정의는 그림으로 머리–꼬리 잇기(tip-to-tail)입니다. u의 끝에 v의 시작을 붙이면, 원점에서 v의 끝까지가 u+v입니다. 순서를 바꿔 v 다음 u를 이어도 같은 점에 도착하므로, 두 경로가 평행사변형을 이루고 합은 그 대각선입니다. 교환 법칙 u+v=v+u가 그림으로 보이는 셈입니다.
그림 1-2. 왼쪽: u 다음 v를 이어도, v 다음 u를 이어도 같은 점에 도착한다. 가운데: u−v는 "v에 무엇을 더하면 u가 되나", 즉 v의 끝에서 u의 끝으로 가는 화살표다. 오른쪽: cv는 v와 같은 직선 위에 있고, c<0이면 방향이 반대가 된다.
SIMULATOR
화살표를 이어 붙이기: 덧셈·뺄셈·상수배
u, v의 끝점을 끌어 보세요
연산
u—
v—
결과—
결과의 길이—
해볼 것: ① '배와 해류 예제'를 불러와 실제 진행 방향을 읽어 보세요(u = 엔진 속도, v = 해류). ② u − v 모드에서 v를 u 위에 겹치면 결과가 영벡터가 됩니다. ③ c·u 모드에서 c를 음수로 내리면 화살표가 원점을 지나 반대편으로 넘어갑니다. 모델: 점은 0.25 단위로 맞춰집니다. 배 예제의 단위는 m/s, 위쪽이 북쪽입니다.
예제 1.1 — 배와 해류
엔진 속도: 북동쪽 4 m/s이므로 u=4(cos45∘,sin45∘)≈(2.83,2.83). 해류: 서쪽 1.5 m/s이므로 v=(−1.5,0).
① 합: u+v=(2.83−1.5,2.83+0)=(1.33,2.83).
② 속력: 1.332+2.832=1.77+8.01≈3.13 m/s.
③ 방향: 동쪽에서 arctan(2.83/1.33)≈64.8∘, 즉 북쪽에서 동쪽으로 약 25°.
해류가 서쪽으로 밀기 때문에 배는 엔진 방향(북동 45°)보다 북쪽으로 치우쳐 가고, 속력도 4에서 약 3.1로 줄었습니다. 각도 공식을 따로 외울 필요 없이 성분마다 더하고, 길이와 방향은 마지막에 한 번 계산했다는 점이 핵심입니다.
선형 결합: 두 연산으로 만들 수 있는 모든 것
물감 세 통으로 어떤 색까지 섞을 수 있나
디스플레이 한 화소에는 빨강·초록·파랑 서브픽셀이 있고, 화면이 내는 모든 색은 세 서브픽셀 빛의 세기를 조절해 더한 것입니다. 로봇 팔은 관절 두 개의 움직임을 섞어 손끝을 원하는 곳으로 보냅니다. 두 경우 모두 질문은 같습니다. "주어진 재료 벡터를 몇 배씩 더하면 목표에 닿을 수 있는가, 그리고 몇 배씩이어야 하는가?"
더하기와 상수배, 두 연산만 섞어서 만들 수 있는 것을 선형 결합(linear combination)이라고 부릅니다. 선형대수의 거의 모든 질문은 결국 선형 결합에 대한 질문입니다.
정의 1.2 (선형 결합) 벡터 v1,…,vk∈Rn과 스칼라 c1,…,ck에 대해
c1v1+c2v2+⋯+ckvk
를 v1,…,vk의 선형 결합이라 하고, ci를 계수(coefficient) 또는 가중치라고 한다.
예를 들어 u=(2,1), v=(−1,1)이면 3u+2v=(6−2,3+2)=(4,5)입니다. 반대 방향 질문, "(4,5)를 만들려면 u와 v를 몇 배씩 써야 하나"는 미지수 두 개짜리 연립방정식입니다.
왼쪽은 "벡터들의 선형 결합"이라는 열 그림, 오른쪽은 "직선 두 개의 교점"이라는 행 그림이다. 같은 문제를 두 각도에서 본 것이고, 3장의 주제다.
아래 시뮬레이터에서 계수 a,b를 움직여 au+bv를 만들어 보세요. 화살표 au를 먼저 가고, 그 끝에서 bv를 갑니다. 기울어진 격자는 a,b가 정수인 점들입니다. 이 격자가 바로 "u,v로 잰 좌표계"이며, 7장에서 기저와 좌표라는 이름으로 다시 만납니다.
SIMULATOR
목표 점에 닿는 계수 찾기
u, v를 끌고, 계수로 목표 ◎에 닿아 보세요
a·u + b·v—
목표—
목표까지 거리—
span{u, v}—
슬라이더로 a, b를 움직여 보세요.
해볼 것: ① 목표에 0.1 이내로 다가가면 성공 표시가 뜹니다. '정답 계수로'는 연립방정식의 해를 바로 보여 줍니다. ② 'u, v를 한 직선에'를 누르면 격자가 한 줄로 납작해지고, 그 직선 밖의 목표에는 어떤 계수로도 닿지 못합니다. ③ '무작위 결합'을 켠 채 u, v를 끌어 보세요. 점들이 평면 전체로 퍼지거나 한 직선에 몰립니다. 모델: 계수 슬라이더 범위는 −4~4이므로 목표가 멀면 범위를 벗어난 정답 계수가 표시될 수 있습니다.
생성: 벡터 몇 개로 갈 수 있는 곳
관절 두 개짜리 로봇은 공중 어디든 갈 수 있을까
3차원 공간에서 손끝을 움직이는 방법이 두 방향뿐이라면(각 방향의 양만 조절할 수 있다면) 손끝은 공간의 어디까지 갈 수 있을까요? 세 방향이 있으면 공간 전체에 닿을까요? 세 방향이 모두 같은 평면 위에 있다면 어떨까요?
가능한 모든 계수로 만든 선형 결합 전체의 집합을 생성(span)이라고 부릅니다. "이 재료로 만들 수 있는 모든 것"입니다.
정의 1.3 (생성)span{v1,…,vk}={c1v1+⋯+ckvk∣c1,…,ck∈R}. 계수를 모두 0으로 고르면 영벡터가 나오므로 생성은 언제나 원점을 포함한다.
생성의 모양은 차원이 몇이든 몇 가지뿐입니다. 영벡터 하나만 있으면 점(원점), 0이 아닌 벡터 하나면 원점을 지나는 직선, 서로 다른 방향의 벡터 둘이면 원점을 지나는 평면입니다. 3차원에서 같은 평면에 있지 않은 세 벡터는 공간 전체를 생성합니다. 반대로 세 번째 벡터가 앞의 두 벡터가 만든 평면 위에 있으면, 세 번째 벡터는 아무것도 새로 보태지 못하고 생성은 여전히 평면입니다.
그림 1-3. 3차원에서 u,v는 원점을 지나는 평면을 생성한다. 왼쪽: 세 번째 벡터 w가 그 평면 위에 있으면 w=au+bv로 쓸 수 있어 생성이 커지지 않는다. 오른쪽: w가 평면 밖으로 튀어나오면 cw만큼 평면을 위아래로 옮길 수 있어 공간 전체가 생성된다.
로봇 질문에 답하면 이렇습니다. 관절이 두 개면 손끝이 움직일 수 있는 방향은 기껏해야 평면 하나이고(독립적으로 움직이는 방향이 둘일 때), 3차원 공간의 임의의 방향으로 움직이려면 서로 독립인 방향이 셋 필요합니다. 산업용 로봇 팔이 위치와 자세(각 3자유도)를 모두 맞추기 위해 보통 관절을 여섯 개 이상 두는 것도 같은 셈법입니다(관절 운동은 실제로는 비선형이지만, 한 자세 근처의 작은 움직임은 선형으로 근사됩니다).
한 문장 판별법 "b가 span{v1,…,vk}에 속하는가?"는 "연립방정식 c1v1+⋯+ckvk=b에 해가 있는가?"와 같은 질문입니다. 2장에서 이 식을 Ac=b로 쓰고, 3장에서 소거법으로 기계적으로 답합니다.
선형 독립: 쓸모없는 벡터가 섞였는가
센서 세 개 중 하나가 나머지의 복사본이라면
평면 위 물체의 위치를 재려고 서로 다른 방향을 향한 거리 센서를 달았습니다. 그런데 설치 실수로 세 번째 센서 방향이 첫 번째 센서 방향의 정반대라면, 세 번째 센서는 새로운 정보를 줄까요? 측정 방향이 몇 개 있어야 하고, 어떤 조건이면 "쓸모없는" 방향이 섞였다고 할 수 있을까요?
생성을 키우지 못하는 벡터, 즉 나머지 벡터의 선형 결합으로 쓸 수 있는 벡터가 섞여 있으면 그 벡터 묶음을 선형 종속(linearly dependent)이라고 합니다. 그런 벡터가 하나도 없으면 선형 독립(linearly independent)입니다. 이것을 "어느 벡터가 범인인가"를 지목하지 않고 대칭적으로 쓰면 다음 정의가 됩니다.
정의 1.4 (선형 독립) 벡터 v1,…,vk가 선형 독립이란
c1v1+c2v2+⋯+ckvk=0⟹c1=c2=⋯=ck=0
이라는 뜻이다. 즉 영벡터를 만드는 방법이 "모든 계수를 0으로" 하는 뻔한 방법 하나뿐이다. 0이 아닌 계수를 포함한 관계식이 있으면 선형 종속이고, 그 관계식을 종속 관계라고 부른다.
두 정의가 같은 이유는 간단합니다. 종속 관계 c1v1+⋯+ckvk=0에서 cj=0이면 양변을 cj로 나누어 vj=−∑i=j(ci/cj)vi로 쓸 수 있으니, vj가 나머지의 선형 결합입니다. 거꾸로 vj가 나머지의 결합이면 vj를 반대편으로 옮겨 계수 −1=0인 관계식을 얻습니다.
정리 1.1Rn에서 n개보다 많은 벡터는 항상 선형 종속이다. 특히 평면 R2에서 세 벡터는 반드시 종속이다.
증명 아이디어(n = 2).u,v가 종속이면 이미 끝이다. 독립이면 u,v가 평면 전체를 생성하므로(앞 절) w=au+bv로 쓸 수 있고, au+bv−w=0이 종속 관계다. 일반적인 n에서는 미지수가 식보다 많은 동차 연립방정식이 항상 0이 아닌 해를 갖는다는 사실(3장, 5장)로 증명한다.
아래 시뮬레이터는 평면 위 세 벡터의 종속 관계를 실시간으로 찾아 줍니다. 찾은 계수대로 c1u, c2v, c3w를 머리–꼬리로 이으면 닫힌 삼각형이 되어 원점으로 돌아옵니다. 합이 영벡터라는 뜻입니다. 두 벡터만 남기면 "닫힌 경로를 만들 수 있느냐"가 곧 "두 벡터가 한 직선 위에 있느냐"입니다.
SIMULATOR
영벡터로 돌아오는 고리: 종속 관계 찾기
세 벡터의 끝점을 끌어 보세요
벡터 개수
종속 관계—
판정—
u, v의 평행사변형 넓이—
해볼 것: ① 세 벡터를 어떻게 놓아도 고리가 닫힙니다(정리 1.1). ② 'u, v만'에서 v를 u와 같은 직선에 놓으면 넓이가 0이 되고, 그때만 종속 관계가 나타납니다. ③ w를 u 위에 겹치면 관계식에서 v의 계수가 0이 됩니다. v는 이 관계에 필요 없습니다. 모델: 종속 관계는 계수 중 절댓값이 가장 큰 것을 1로 맞춘 한 가지를 보여 줍니다(관계식은 상수배만큼 여러 개 있습니다). 점은 0.25 단위로 맞춰집니다.
예제 1.2 — 종속 관계를 손으로 찾기
u=(1,2), v=(3,1), w=(5,5)의 종속 관계를 찾아라.
① u,v는 평행하지 않으므로(1⋅1−2⋅3=−5=0) 평면을 생성한다. 그러니 w=au+bv를 푼다.
② a+3b=5,2a+b=5. 둘째 식에서 b=5−2a, 첫째 식에 넣으면 a+15−6a=5, a=2, b=1.
③ 검산: 2(1,2)+(3,1)=(5,5). 따라서 2u+v−w=0.
센서 문제로 돌아가면, 세 번째 측정 방향은 앞의 두 방향의 결합이므로 새로운 정보가 없습니다. 다만 실제 측정에는 잡음이 있으므로, 여분의 측정은 정보량이 아니라 잡음을 줄이는 데 쓰입니다. 이것이 8장의 최소제곱입니다.
흔한 오해 "각 쌍이 평행하지 않으면 독립이다"는 틀립니다. 위의 u,v,w는 어느 두 개도 평행하지 않지만 셋은 종속입니다. 독립성은 묶음 전체의 성질입니다. 또 영벡터를 포함한 묶음은 언제나 종속입니다(1⋅0=0이 종속 관계).
내적: 길이와 각도를 재는 곱
바람 중 몇 m/s가 활주로 방향인가
활주로가 북동쪽을 향하고, 바람이 (4,−1) m/s(동쪽 4, 남쪽 1)로 붑니다. 이륙 성능에 중요한 것은 활주로와 나란한 성분(맞바람·뒷바람)이고, 안전에 중요한 것은 활주로에 수직인 성분(옆바람)입니다. 바람을 두 성분으로 나누려면 무엇이 필요할까요?
덧셈과 스칼라배만으로는 길이도 각도도 잴 수 없습니다. 이를 위해 벡터 두 개에서 숫자 하나를 만드는 새 연산을 들여옵니다.
정의 1.5 (내적, 길이)u,v∈Rn의 내적(dot product, inner product)과 벡터의 길이(유클리드 노름)를
u⋅v=u1v1+u2v2+⋯+unvn=uTv,∥v∥=v⋅v=v12+⋯+vn2
로 정의한다. 길이가 1인 벡터를 단위 벡터라 하고, v/∥v∥로 만드는 것을 정규화라고 한다.
길이의 정의는 피타고라스 정리를 n차원으로 늘린 것입니다. 놀라운 것은 성분의 곱을 더하기만 한 내적이 각도를 안다는 사실입니다.
정리 1.2 (내적의 기하적 의미) 0이 아닌 두 벡터 사이의 각을 θ라 하면
u⋅v=∥u∥∥v∥cosθ.
증명. 삼각형의 세 변 u, v, u−v에 코사인 법칙을 쓰면 ∥u−v∥2=∥u∥2+∥v∥2−2∥u∥∥v∥cosθ. 왼쪽을 내적으로 전개하면 (u−v)⋅(u−v)=∥u∥2−2u⋅v+∥v∥2. 두 식을 비교하면 결론이 나온다. n차원에서도 두 벡터는 원점과 함께 평면 하나에 놓이므로 같은 논리가 성립한다.
여기서 곧바로 세 가지 사실이 나옵니다. 내적이 양수면 예각, 0이면 직각, 음수면 둔각입니다. 특히 u⋅v=0일 때 두 벡터가 직교(orthogonal)한다고 합니다. 그리고 v의 u 방향 성분(그림자의 부호 있는 길이)은 ∥v∥cosθ=v⋅u/∥u∥입니다.
그림 1-4. 왼쪽: v를 u가 놓인 직선에 수직으로 내린 그림자의 길이가 ∥v∥cosθ이고, 여기에 ∥u∥를 곱한 것이 내적이다. 그림자 벡터 자체 u⋅uv⋅uu를 사영이라 하며 8장의 주제다. 오른쪽: 내적의 부호는 두 화살표가 같은 쪽을 보는지 알려 준다.
SIMULATOR
내적 = 그림자 길이 × 길이
u, v의 끝점을 끌어 보세요
u·v = u₁v₁ + u₂v₂—
‖u‖‖v‖cos θ—
각 θ—
|u·v| / (‖u‖‖v‖)—
해볼 것: ① v를 돌려 가며 두 계산(성분 곱의 합, 길이·코사인의 곱)이 항상 같은지 확인하세요. ② 그림자가 u의 반대쪽으로 넘어가는 순간 내적이 음수가 됩니다. ③ 마지막 칸은 항상 1 이하이고, 두 벡터가 평행할 때만 1입니다(다음 절의 코시–슈바르츠 부등식). '활주로와 바람'에서는 u가 활주로 방향 단위 벡터, v가 바람입니다. 모델: 점은 0.1 단위로 맞춰집니다.
예제 1.3 — 맞바람과 옆바람
활주로 방향 단위 벡터 r^=(1/2,1/2)≈(0.707,0.707), 바람 w=(4,−1).
① 활주로 방향 성분: w⋅r^=4(0.707)+(−1)(0.707)=2.12 m/s. 양수이므로 바람이 활주로 진행 방향과 같은 쪽으로 분다(이 방향으로 이륙하면 뒷바람).
② 나란한 부분: 2.12r^=(1.5,1.5). 수직 부분: w−(1.5,1.5)=(2.5,−2.5), 크기 ≈3.54 m/s(옆바람).
③ 검산: (2.5,−2.5)⋅r^=0으로 수직이 맞고, 2.122+3.542≈17=∥w∥2로 피타고라스도 맞는다.
노름: 길이를 재는 여러 가지 자
택시가 달리는 거리와 새가 나는 거리
바둑판 모양 도시에서 동쪽으로 3블록, 북쪽으로 4블록 떨어진 곳에 가려면 택시는 7블록을 달려야 하고, 새는 직선으로 5블록을 납니다. 공장 장비의 허용 오차를 볼 때는 "가장 크게 벗어난 축 하나"가 중요할 수도 있습니다(이 경우 4). 어느 것이 벡터의 "진짜 길이"일까요?
셋 다 정당한 길이입니다. 상황에 따라 다른 자를 쓸 뿐입니다. 길이라고 부를 만한 함수가 가져야 할 성질을 먼저 정해 두고, 그 성질을 만족하는 것을 모두 노름(norm)이라고 부릅니다.
정의 1.6 (노름) 함수 ∥⋅∥:Rn→R가 다음 세 성질을 만족하면 노름이다. ① ∥v∥≥0이고 ∥v∥=0⟺v=0. ② ∥cv∥=∣c∣∥v∥. ③ 삼각 부등식∥u+v∥≤∥u∥+∥v∥.
∥v∥1=i∑∣vi∣,∥v∥2=(i∑vi2)1/2,∥v∥∞=imax∣vi∣,∥v∥p=(i∑∣vi∣p)1/p(p≥1)
노름의 성격은 단위 공, 즉 길이가 1 이하인 점들의 모양으로 한눈에 보입니다. L2는 원, L1은 꼭짓점이 축 위에 있는 마름모, L∞는 정사각형입니다. p를 1에서 키우면 마름모가 부풀어 원을 지나 정사각형으로 다가갑니다. p<1이면 모양이 안쪽으로 오목해지고 삼각 부등식이 깨져 노름이 아닙니다.
그림 1-5. 세 노름의 단위 공. 같은 점 (3,4)의 길이는 L1로 7, L2로 5, L∞로 4다. 항상 ∥v∥∞≤∥v∥2≤∥v∥1이므로 단위 공은 L1⊂L2⊂L∞ 순으로 커진다.
SIMULATOR
단위 공의 모양: p를 바꾸며 보는 노름
점 x를 끌어 보세요
노름
‖x‖₁—
‖x‖₂—
‖x‖∞—
선택한 노름—
—
해볼 것: ① x를 축 위에 놓으면 세 노름이 모두 같아지고, 대각선 위에서 가장 크게 벌어집니다. ② Lᵖ에서 p를 1 아래로 내리면 공이 오목해집니다. 그 상태의 공 안 두 점을 잇는 선분이 공 밖으로 나가는 것, 즉 삼각 부등식이 깨지는 것을 확인하세요. ③ p를 8까지 올리면 공이 L∞의 정사각형에 다가갑니다. 모델: p < 1인 "노름"은 비교용으로만 그립니다.
정리 1.3 (코시–슈바르츠 부등식) 모든 u,v∈Rn에 대해
∣u⋅v∣≤∥u∥2∥v∥2
이고, 등호는 한 벡터가 다른 벡터의 상수배일 때만 성립한다.
증명 아이디어.v=0이라 하고 실수 t에 대한 함수 f(t)=∥u−tv∥2=∥u∥2−2tu⋅v+t2∥v∥2를 본다. 길이의 제곱이므로 모든 t에서 f(t)≥0이다. 아래로 볼록한 이차식이 음수가 되지 않으려면 판별식이 0 이하여야 하므로 4(u⋅v)2−4∥u∥2∥v∥2≤0. 등호는 f(t)=0, 즉 u=tv인 t가 있을 때다. 기하적으로는 ∣cosθ∣≤1이라는 말이며, 거꾸로 이 부등식 덕분에 n차원에서도 cosθ=∥u∥∥v∥u⋅v로 각도를 정의할 수 있다.
코시–슈바르츠에서 L2 노름의 삼각 부등식이 곧바로 나옵니다. ∥u+v∥2=∥u∥2+2u⋅v+∥v∥2≤∥u∥2+2∥u∥∥v∥+∥v∥2=(∥u∥+∥v∥)2. "두 변의 합은 나머지 한 변보다 길다"는 중학교 기하가 천 차원 신호 공간에서도 성립한다는 뜻이고, 신호 처리에서 "잡음 두 개를 더한 것의 크기는 각 크기의 합을 넘지 않는다"는 오차 한계로 매일 쓰입니다.
어느 노름을 쓸까L2: 에너지·전력(신호의 제곱 합), 최소제곱. L1: 이상값에 덜 민감한 오차, 희소한 해를 찾는 압축 센싱·라소 회귀. L∞: 최악의 경우 오차, 공차 검사, 미니맥스 필터 설계. 이 책에서 첨자 없이 ∥v∥라 쓰면 L2입니다.
코사인 유사도: 문서와 취향을 비교하기
긴 기사와 짧은 메모, 어느 쪽이 검색어와 더 가까운가
"GPU"라는 단어가 30번 나오는 긴 기술 기사와 2번 나오는 짧은 메모가 있습니다. 둘 다 GPU에 관한 글입니다. 검색어 "GPU 성능"을 단어 빈도 벡터로 바꿔 두 문서와의 거리를 재면, 짧은 메모가 압도적으로 가깝게 나옵니다. 단지 짧다는 이유로요. 길이에 속지 않는 비교 방법이 필요합니다.
해법은 길이를 버리고 방향만 비교하는 것입니다. 두 벡터 사이 각의 코사인을 코사인 유사도(cosine similarity)라고 부릅니다.
sim(q,d)=cosθ=∥q∥∥d∥q⋅d=∥q∥q⋅∥d∥d
단어 빈도처럼 성분이 모두 0 이상이면 값은 0(겹치는 단어 없음)에서 1(비율이 똑같음) 사이다. 문서 d를 두 배로 늘려 같은 글을 두 번 붙여도 cosθ는 그대로다. 미리 모든 벡터를 정규화해 두면 유사도는 내적 한 번이다.
실제 검색 엔진은 단어마다 수십만 개의 성분을 쓰고, 흔한 단어("그리고", "있다")의 가중치를 낮추는 TF–IDF 같은 가중치를 곱합니다. 하지만 마지막 단계는 같습니다. 정규화한 벡터끼리 내적을 구해 큰 순서로 늘어놓습니다. 아래 시뮬레이터는 단어 두 개("GPU", "레시피")만으로 만든 2차원 장난감 모형입니다.
SIMULATOR
검색어 벡터를 끌어 문서 순위 매기기
검색어 q(◆)를 끌어 보세요
순위 기준
해볼 것: ① 검색어 "GPU"에서 기준을 '유클리드 거리'로 바꾸면 짧은 메모(D2)가 1위로 올라옵니다. 코사인으로는 D1·D2·D5가 거의 같은 점수입니다. ② 정규화를 켜면 모든 문서가 단위 원 위로 모이고, 두 기준의 순위가 같아집니다(단위 벡터끼리는 거리² = 2 − 2cos θ). ③ q를 대각선 위에 두면 '섞인 글' D4가 1위입니다. 모델: 단어 두 개의 빈도만 쓴 장난감 예이며, 실제 검색은 수만~수십만 차원과 TF–IDF 같은 가중치를 씁니다.