다음으로 벡터의 덧셈, 곱셈, 뺄셈, 나눗셈을 살펴보겠습니다. 덧셈은 오른쪽 그림과 같이 각 원소끼리 더합니다. 이 때 더하고자 하는 벡터끼리는 차원이 같아야 겠지요. 오른쪽 그림에서 a, b 두 개의 벡터가 더해지면 만들어지는 벡터 a+b가 어떻게 생겼는지, 왜 그렇게 되는지 유심히 봐두세요. 앞으로 알아두면 편리합니다. 빼기는 부호를 바꿔서 더하는 것으로 생각하시면 됩니다. 즉, a-b = a + (-b) 이렇게. 이것 역시 그림을 유심히 봐두세요.
우리가 흔히 쓰는 1,2,3,... 이런 것들을 scalar라고 부릅니다. 어느 논문엔가 만약 n ∈ N 이라고 정의되어 있다면, n이라는 스칼라 변수가 자연수(natural number)다라고 생각하시면 됩니다. 만약 s ∈ R이라고 쓰여 있으면, s라는 스칼라 변수가 있는데 얘는 실수(real number)다라고 생각하시면 됩니다.
벡터(vector)는 스칼라들의 모임입니다. 보통은 스칼라들을 왼쪽 그림에서 x처럼 세로로 정렬하고요. (편의상 가로로 정렬하는 책도 있습니다. 정의를 유심히 보시면 됩니다). 예제에서 x처럼 n개의 스칼라가 모인 벡터를 n차원(dimension) vector라고 부르고, 만약 스칼라 애들이 실수라면 위의 그림에서처럼 R의 n승에 포함된다 라고 표기합니다. 저처럼 실제 데이터를 다루는 사람들은 대개 이런 식으로 표현된 벡터들만 만납니다.
행렬(matrix)는 위의 A처럼 스칼라들이 두 방향으로 뻗어나간 형태를 가집니다. 세로로 m개, 가로로 n개가 모여있으면 m-by-n matrix라고 부르고, 실수들의 모임이라면 R의 mxn승 이라고 표기합니다. 세로로 긴 하나를 뽑아 행벡터 (column vector), 가로로 긴 하나를 뽑아 열벡터 (row vector) 라고 부릅니다. 위의 예제와 같은 m-by-n 행렬은 n개의 행벡터와 m개의 열벡터를 갖습니다.
1. Vector
흔히 벡터는 길이와 방향을 갖는다 라고 이야기 합니다. 흔히 벡터의 길이는 원점으로부터의 거리로 정의합니다. 즉, 왼쪽 그림과 같이 3-dimensional vector가 주어져있다면, 길이는 ||a|| =
(a12+ ... + a32)1/2으로 계산할 수 있습니다. 길이가 1인 벡터를 unit vector라고 부릅니다. 만약 어떤 벡터 a의 unit vector를 구하고 십다면, 길이를 구해서 a/||a||와 같이 나눠주면 됩니다. 그럼 방향은 같고 길이는 1인 벡터가 됩니다.
내적이 있다면 외적도 있습니다. 내적을 해서 벡터가 스칼라가 된다면 외적을 하면 벡터가 행렬이 됩니다. 연산은 아래의 그림을 참고하시기 바랍니다.
이제 곱셈을 살펴보겠습니다. 일단은 벡터의 곱셈을 상상해봅시다. 우리가 아는 스칼라끼리의 곱은 2*3=6 이런겁니다. 가능한 벡터의 곱은 참 여러가지가 있습니다. 가장 쉽게는 각 element끼리 곱하는걸 생각할 수 있겠지요. 위의 그림에서 주어진 벡터 a,b를 예로 들어 생각해보면, 각 원소끼리의 곱은 a ☉ b = [a1b1 a2b2 a3b3] 이렇게 됩니다. 이 곱셈을 Hadamard product라고 부릅니다.
다음으로 생각해볼 곱은 dot product (=inner product)인데 벡터에서 특별한 말이 없다면 다 벡터에서의 곱은 다 이 '내적'입니다. 내적의 계산은 옆의 그림을 참고하세요. 이 '내적'은 벡터 둘을 곱했더니 스칼라가 나오는 연산입니다. 자기 자신과의 내적은 길이의 제곱이라는 부분도 눈여겨보세요. 얘를 놈이라고 부릅니다. 그리고 두개의 벡터가 서로 수직일 땐 내적을 하면 0이라는 사실도 눈여겨보시기 바랍니다.
2. Matrix
오른쪽 그림과 같이 세로로 m개, 가로로 n개가 모여있으면 m-by-n matrix라고 부릅니다. 세로로 긴 하나를 뽑아서 행벡터 (column vector), 가로로 긴 하나를 뽑아서 열벡터 (row vector)라고 부릅니다. m-by-n 행렬에선 행벡터가 n개, 열벡터가 m개 있습니다. 컴퓨터에 데이터에 입력시킬 때 대개의 경우 데이터는 이런 행렬 형태로 처리됩니다. 뇌영상의 경우 PET, fMRI 등은 3차원 영상인데요 (2차원의 이미지의 가장 작은 단위가 픽셀(pixel)로 부른다면, 3차원 이미지에서 이미지를 이루는 가장 작은 단위는 복셀(voxel)이라고 부릅니다). 보통 이런 뇌영상을 분석할 때 3차원 영상을 일렬로 쭈욱 펴서 벡터라이즈 합니다. 만약 한 사람에 대해 하나의 3차원 영상이 있었고 (보통 PET이나 MRI 영상이 이렇습니다), 총 n명이 있다면 n-by-p (복셀의 개수) 만한 행렬이 만들어집니다. 만약 한 사람에 대해 시간에 따라 n장의 3차원 영상을 찍었다면 이 역시 n-by-복샐의 개수 만한 행렬로 표현할 수 있을 것입니다.
로 구합니다. 따라서 두개의 행렬을 곱할 땐 앞에 곱해지는 행렬 (A)의 열의 개수와 뒤에 곱해지는 행렬 (B)의 행의 개수가 동일해야 합니다. 행렬의 곱은 다양한 예제를 만들어 손으로 직접 풀어보는게 좋습니다. 앞으로 선형대수를 공부하는데 큰 도움이 될껍니다.
행렬의 덧셈은 벡터와 같이 각 element끼리 더하거나 빼면 됩니다. 그러니까 같은 크기의 행렬일 때만 덧셈과 뺄셈이 되겠지요. 행렬은 각 element끼리 곱하는 Hadamard product를 할 수도 있습니다. 하지만 일반적으로 행렬의 곱셈이라고 하면 왼쪽 그림과 같이 정의됩니다. 내적과 외적의 업그레이드 버젼이라고 할 수 있지요.
만약 A가 l-by-m 차원의 행렬이고 B가 m-by-n 차원의 행렬이라면 두 개의 행렬의 곱 AB는 l-by-n이 됩니다. 왜냐하면 A의 i번째 row vector와 B의 j번째 column vector의 내적이 곱한 행렬의 (i,j)번째 원소가 되기 때문입니다 (왼쪽 그림 참조). 다시 써보면, C=AB. 이 때, C의 (i,j)번째 원소 cij는
cij=ai1b1j+ai2b2j+...+aimbmj
행렬은 transpose라는 연산도 있습니다. AT를 하면 왼쪽 그림과 같이 행벡터가 열벡터가 되고, 열벡터는 행벡터가 됩니다. A=AT인 행렬을 symmetric matrix라고 합니다. symmetric matrix가 되기 위해서는 행과 열의 개수가 같은 square matrix, 즉, 정사각 행렬이 되어야 겠지요. 우리고 알고 있는 covariance matrix, correlation matrix들이 대표적인 symmetric matrix 입니다.
덧셈, 뺄셈했고, 곱셈도 했으니 남은건 나눗셈이지요. 이제 슬슬 정리하는데 지쳐오고 있습니다. 저는 왜 이런 짓을 하고 있는걸가요...
잠시 문제 하나를 풀어보도록 하겠습니다. 2x=6라는 식이 주어졌을 때 x의 값을 어떻게 구했었지요?
이렇게,
2x=6 → 2/2x = 6/2 → x = 3
그럼, 이건 어떻게 풀까요?
네, A는 행렬, x와 b는 벡터입니다. 스칼라였을 경우를 생각해보면,
A/Ax = b/A → x = b/A
강렬하게 이리 풀고 싶을 것이라는 생각이 듭니다. 비슷합니다. 대신 1/A이런 표현은 쓰지 않고요. A-1이라고 쓰고 A의 역함수(inverse matrix)라고 부릅니다. 그리고 2/2=1처럼 행렬에 대해 A-1A=I가 되는 행렬을 정의해야 할텐데요. 즉, 숫자 1처럼 곱했을 때 AI=A, IA=A와 같이 자기자신이 되게 하는 행렬을 정의하는데요. I를 identity matrix 라고 부릅니다. diagonal 성분은 1이고 그렇지 않은 부분은 다 0인 행렬을 말합니다. 역행렬을 이용해서 다시 써보면,
Ax = b → A-1Ax = A-1b → Ix = A-1b → x = A-1b
이렇게 벡터 x를 구할 수 있겠습니다. 그럼 인제 A의 역행렬은 어떻게 구하느냐가 문제 되겠습니다.