다운로드
작성자: admin 작성일시: 2016-05-17 11:37:04 조회수: 7552 다운로드: 377
카테고리: 기초 수학 태그목록:

행렬의 성질

행렬은 여러 개의 숫자로 이루어져 있으므로 실수와 같이 부호 혹은 크기를 정의하기 어렵다. 하지만 그와 부호/크기와 유사한 유용한 개념들을 행렬에서도 정의할 수 있다. 여기에서는 이러한 개념들에 대해 살펴본다.

행렬의 부호

영 벡터가 아닌 모든 벡터 $x$ 에 대해 다음 부등식이 성립하면 행렬 $A$ 가 양의 정부호(positive definite)라고 한다.

$$ x^T A x > 0 $$

만약 이 식이 등호를 포함한다면 양의 준정부호(positive semi-definite)라고 한다.

$$ x^T A x \geq 0 $$

예를 들어 단위행렬(identity matrix) $I$는 양의 정부호이다. 다음 식에서 벡터 $x$가 영벡터(zeros-vector)가 아니라는 점에 주의한다.

$$ x^T I x = \begin{bmatrix} x_1 & x_2 & \cdots & x_N \end{bmatrix} \begin{bmatrix} 1&0&\cdots&0\\ 0&1&\cdots&0\\ \vdots&\vdots&\ddots&\vdots\\ 0&0&\cdots&1\\ \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_N \end{bmatrix} = x_1^2 + x_2^2 + \cdots + x_N^2 > 0 $$

다음과 같은 행렬도 양의 정부호이다.

$$ A = \begin{bmatrix} 2&-1&0\\-1&2&-1\\0&-1&2 \end{bmatrix} $$

이는 다음처럼 증명할 수 있다.

모든 벡터 $x^T = [x_1 \; x_2 \; x_3]$에 대해

$$ \begin{align} x^TA x &= \begin{bmatrix} x_1 & x_2 & x_3 \end{bmatrix} \begin{bmatrix} 2&-1&0\\-1&2&-1\\0&-1&2 \end{bmatrix} \begin{bmatrix} x_1\\x_2\\x_3 \end{bmatrix} \\ &= \begin{bmatrix} (2x_1-x_2)&(-x_1+2x_2-x_3)&(-x_2+2x_3) \end{bmatrix} \begin{bmatrix} x_1\\x_2\\x_3 \end{bmatrix} \\ &= 2{x_1}^2 - 2x_1x_2 + 2{x_2}^2 - 2x_2x_3 + 2{x_3}^2 \\ &= {x_1}^2+(x_1 - x_2)^{2} + (x_2 - x_3)^{2}+{x_3}^2 \end{align} $$

이 성립한다. 그리고 이 값은 제곱의 합으로 이루어졌으므로 $x$가 영벡터인 경우($x_1 = x_2 = x_3 = 0$)를 제외하고는 항상 0보다 크다.

$$ {x_1}^2+(x_1 - x_2)^{2} + (x_2 - x_3)^{2}+{x_3}^2 > 0 $$

연습 문제 5.2.1

다음 행렬이 양의 정부호인지 양의 준정부호인지 혹은 어떤 것에도 해당되지 않는지 판단하라.

$$ \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix} $$

행렬의 크기

행렬의 부호와 마찬가지로 행렬의 크기를 정의하는 것도 어려운 일이다. 하나의 행렬에 대해 하나의 실수를 대응시키는 개념의 놈(norm), 대각합(trace), 행렬식(determinant)이란 연산은 크기와 유사한 개념이다.

행렬 놈

행렬의 놈(norm)은 행렬 $A$에 대해 다음 식으로 정의되는 숫자이다. 보통 $\Vert A \Vert_L$ 로 표기한다. 이 식에서 $a_{ij}$는 행렬 $A$의 $i$번째 행, $j$번째 열의 원소이다.

$$ \Vert A \Vert_L = \left( \sum_{i=1}^N \sum_{j=1}^M |a_{ij}|^L \right)^{1/L} $$

$L$는 보통 1, 2 또는 무한대($\infty$)가 쓰이는데 $L=1$이면 L1-놈, $L=2$이면 L2-놈이라고 부른다. 이 중 $L=2$인 경우가 많이 쓰이므로 $L$ 값 표시가 없는 경우는 $L=2$인 놈이라고 생각하면 된다.

행렬에 대한 L2놈은 프로베니우스 놈(Frobenius norm)이라고 불리며 $\Vert A \Vert_F$이라고 표기하기도 한다.

$$ \Vert A \Vert = \Vert A \Vert_2 = \Vert A \Vert_F = \sqrt{\sum_{i=1}^N \sum_{j=1}^M a_{ij}^2} $$

놈의 정의에서 놈은 항상 0보다 같거나 크다는 것을 알 수 있다.

놈은 모든 크기의 행렬에 대해서 정의할 수 있으므로 벡터에 대해서도 정의할 수 있다.

벡터의 놈에서 중요한 성질은 벡터의 놈의 제곱이 벡터의 제곱합과 같다는 것이다.

$$ \Vert x \Vert^2 = \sum_{i=1}^N x_{i}^2 = x^Tx $$

놈은 0 또는 양수이므로 놈의 제곱이 가장 작을 때 놈도 가장 작아진다. 따라서 놈을 최소화하는 것은 벡터의 제곱합을 최소화하는 것과 같다.

행렬과 벡터의 놈은 항상 0과 같거나 0보다 큰 값을 가진다.

NumPy에서는 linalg 서브패키지의 norm 명령으로 행렬의 놈을 계산할 수 있다.

In [1]:
A = (np.arange(9) - 4).reshape((3, 3))
A
Out:
array([[-4, -3, -2],
       [-1,  0,  1],
       [ 2,  3,  4]])
In [2]:
np.linalg.norm(A)
Out:
7.745966692414834

연습 문제 5.2.2

행렬 $A \, (A \in \mathbf{R}^{N \times M})$의 놈의 제곱 $\Vert A \Vert^2$이 그 행렬을 이루는 행 벡터 $r_i$의 놈의 제곱의 합 또는 열 벡터 $c_i$의 놈의 제곱의 합과 같음을 증명하라.

$$ \Vert A \Vert^2 = \sum_{i=1}^N \Vert r_i \Vert^2 = \sum_{j=1}^M \Vert c_j \Vert^2 $$

대각합

대각합(trace)은 정방 행렬에 대해서만 정의되며 다음처럼 대각원소의 합으로 계산된다.

$$ \operatorname{tr}(A) = a_{11} + a_{22} + \dots + a_{NN}=\sum_{i=1}^{N} a_{ii} $$

예를 들어 $N$차원 단위행렬(identity matrix)의 대각합은 $N$이다.

$$ \operatorname{tr}(I_N) = N $$

대각합을 구할 때는 절댓값을 취하거나 제곱을 하지 않기 때문에 대각합의 값은 놈과 달리 음수가 될 수도 있다.

대각합은 다음과 같은 성질이 있다. 아래의 식에서 $c$는 스칼라이고 $A, B, C$는 행렬이다.

  • 스칼라를 곱하면 대각합은 스칼라와 원래의 대각합의 곱이다.
$$ \text{tr} (cA) = c\;\text{tr} (A) $$
  • 전치연산을 해도 대각합이 달라지지 않는다.
$$ \text{tr} (A^T) = \text{tr} (A) $$
  • 두 행렬의 합의 대각합은 두 행렬의 대각합의 합이다.
$$ \text{tr} (A + B) = \text{tr} (A) + \text{tr} (B) $$
  • 두 행렬의 곱의 대각합은 행렬의 순서를 바꾸어도 달라지지 않는다.
$$ \text{tr} (AB) = \text{tr} (BA) $$
  • 세 행렬의 곱의 대각합은 다음과 같이 순서를 순환시켜도 달라지지 않는다.
$$ \text{tr} (ABC) = \text{tr} (BCA) = \text{tr} (CAB) $$

이 식은 다음과 같이 증명할 수 있다.

$$ \text{tr} ((AB)C) = \text{tr} (C(AB)) = \text{tr} ((CA)B) = \text{tr} (B(CA)) $$

특히 마지막 식은 트레이스 트릭(trace trick) 이라고 하여 이차 형식(quadratic form)의 미분을 구하는데 유용하게 사용된다. 이 두 식에서는 $A, B, C$가 각각 정방 행렬일 필요는 없다. 최종적으로 대각합을 구하는 행렬만 정방 행렬이기만 하면 된다.

이차 형식의 트레이스 트릭 공식은 다음과 같다.

$$ x^TAx = \text{tr}(x^TAx) = \text{tr}(Axx^T) = \text{tr}(xx^TA) $$

이 식은 원래의 트레이스 트릭 식의 $A$, $B$, $C$ 에 각각 $x^T$, $A$, $x$를 대입한 것이다. 이차 형식은 스칼라값이기 때문에 대각합을 취해도 원래의 값과 같다.

NumPy에서는 trace 명령으로 trace를 계산할 수 있다.

In [3]:
np.trace(np.eye(3))
Out:
3.0

연습 문제 5.2.3

$x$, $A$가 각각 크기가 2 인 벡터, 크기가 2x2 인 정방 행렬일 때 이차 형식의 트레이스 트릭이 성립함을 보인다.

연습 문제 5.2.4

$N \times M$ 행렬 $X$에 대해 다음 식을 증명하라.

$$ \operatorname{tr}(X(X^TX)^{-1}X^T) = M $$

위 식에서 $(X^TX)^{-1}$은 $X^TX$의 역행렬(inverse matrix)로 $X^TX$와 곱하면 단위행렬이 되는 행렬이다. 역행렬에 대해서는 나중에 자세히 공부한다.

$$ (X^TX)^{-1}X^TX = X^TX(X^TX)^{-1} = I $$

연습 문제 5.2.5

행렬 $A \, (A \in \mathbf{R}^{3 \times 3})$의 놈의 제곱 $\Vert A \Vert^2$이 다음과 같음을 증명하라.

$$ \Vert A \Vert^2 = \text{tr}(A^TA) $$

행렬식

정방 행렬 $A$의 행렬식(determinant)은 $\text{det}(A)$, $\text{det}A$, 또는 $|A|$라는 기호로 표기한다.

행렬식은 다음처럼 재귀적인 방법으로 정의된다.

우선 행렬 $A$가 $1\times 1$ 즉 스칼라인 경우에는 행렬식이 자기 자신의 값이 된다.

$$\det \left( \begin{bmatrix}a\end{bmatrix} \right) = a $$

행렬 $A$가 스칼라가 아니면 코팩터 전개(cofactor expansion)라고 불리는 다음 식을 이용하여 계산한다. 이 식에서 $a_{i,j}$는 $A$의 $i$행, $j$열 원소이고 $i_0$(또는 $j_0$)는 계산하는 사람이 임의로 선택한 행번호(또는 열번호)이다.

$$ \det(A) = \sum_{i=1}^N \left\{ (-1)^{i+j_0}M_{i,j_0} \right\} a_{i,j_0} $$

또는

$$ \det(A) = \sum_{j=1}^N \left\{ (-1)^{i_0+j} M_{i_0,j} \right\} a_{i_0,j} $$

위에서 "또는"이라는 말을 한 이유는 두 식중 아무것이나 써도 같은 결과가 나오기 때문이다. 즉, 행렬에서 임의의 행 $i_0$ 하나를 선택하거나 임의의 열 $j_0$ 하나를 선택한 다음 이 값에 가중치 $(-1)^{i+j_0}M_{i,j_0}$ 또는 $ (-1)^{i_0+j} M_{i_0,j}$를 곱하여 더한 것이다.

가중치로 사용된 $M_{i,j}$는 마이너(minor, 소행렬식)라고 하며 정방 행렬 $A$ 에서 $i$행과 $j$열을 지워서 얻어진 (원래의 행렬보다 크기가 1만큼 작은) 행렬의 행렬식이다.

마이너 값도 행렬식이므로 마찬가지로 위의 정의를 이용하여 계산한다. 이처럼 점점 크기가 작은 행렬의 행렬식을 구하다 보면 스칼라인 행렬이 나오게 되는데 행렬식의 값이 자기 자신이 된다. 따라서 행렬식을 구하는 방법은 재귀적(recursive)이다.

마이너에 $(-1)^{i+j}$를 곱한 값 $(-1)^{i+j}M_{i,j}$을 코팩터(cofactor, 여인수)라고 하며 $C_{i,j}$로 표기한다.

$$ C_{i,j} = (-1)^{i+j}M_{i,j} $$

코팩터를 사용하여 위 코팩터 전개식을 다시 표현하면 다음과 같다.

$$ \det(A) = \sum_{i=1}^N C_{i,j_0} a_{i,j_0} = \sum_{j=1}^N C_{i_0,j} a_{i_0,j} $$

예를 들어 다음과 같은 행렬을 생각해보자.

$$ \begin{bmatrix} \bbox[yellow,2pt]{1}&2&3\\ \bbox[yellow,2pt]{4}&5&6\\ \bbox[yellow,2pt]{7}&8&9\\ \end{bmatrix} $$

여기에서 임의의 행 또는 열을 선택한다. 행이든 열이든 상관없다.

만약 첫번째 열을 선택했다고 하면($j_0=1$) 이 행렬의 행렬식은 다음처럼 계산한다.

$$ \begin{eqnarray} \det(A) &=& \left\{ (-1)^{1+1}M_{1,1} \right\} a_{1,1} + \left\{ (-1)^{2+1}M_{2,1} \right\} a_{2,1} + \left\{ (-1)^{3+1}M_{3,1} \right\} a_{3,1} \\ &=& M_{1,1} a_{1,1} - M_{2,1} a_{2,1} + M_{3,1} a_{3,1} \\ &=& M_{1,1} - M_{2,1} \cdot 4 + M_{3,1} \cdot 7 \end{eqnarray} $$

이때 마이너 값 $M_{1,1}$, $M_{2,1}$, $M_{3,1}$는 각각 다음과 같은 행렬의 행렬식이다.

$M_{1,1}$은 원래의 행렬에서 $1$번째 행과 $1$번째 열을 지워서 만들어진 행렬의 행렬식이다.

$$ \begin{bmatrix} \cancel{1}&\cancel{2}&\cancel{3}\\ \cancel{4}&5&6\\ \cancel{7}&8&9\\ \end{bmatrix} \;\; \rightarrow \;\; M_{1,1} = \det \left( \begin{bmatrix}5&6\\8&9\end{bmatrix} \right) $$

$M_{2,1}$은 원래의 행렬에서 $2$번째 행과 $1$번째 열을 지워서 만들어진 행렬의 행렬식이다.

$$ \begin{bmatrix} \cancel{1}&2&3\\ \cancel{4}&\cancel{5}&\cancel{6}\\ \cancel{7}&8&9\\ \end{bmatrix} \;\; \rightarrow \;\; M_{2,1} = \det \left( \begin{bmatrix}2&3\\8&9\end{bmatrix} \right) $$

$M_{3,1}$은 원래의 행렬에서 $3$번째 행과 $1$번째 열을 지워서 만들어진 행렬의 행렬식이다.

$$ \begin{bmatrix} \cancel{1}&2&3\\ \cancel{4}&5&6\\ \cancel{7}&\cancel{8}&\cancel{9}\\ \end{bmatrix} \;\; \rightarrow \;\; M_{3,1} = \det \left( \begin{bmatrix}2&3\\5&6\end{bmatrix} \right) $$

이 마이너 값 $M_{1,1}$, $M_{2,1}$, $M_{3,1}$은 마찬가지로 코팩터 공식을 이용해서 계산할 수 있다.

예를 들어 $M_{1,1}$을 구하는데 있어 첫번째 행을 선택하기로 했다고 하자($i_0=1$), 그럼 코팩터 전개식은 다음과 같아진다.

$$ M_{1,1} = \left\{ (-1)^{1+1}M'_{1,1} \right\} a'_{1,1} + \left\{ (-1)^{2+1}M'_{1,2} \right\} a'_{1,2} $$$$ \begin{bmatrix} \cancel{5}&\cancel{6}\\ \cancel{8}&9 \end{bmatrix} \;\; \rightarrow \;\; M'_{1,1} = \det([9]) = 9 $$$$ \begin{bmatrix} \cancel{5}&\cancel{6}\\ 8&\cancel{9} \end{bmatrix} \;\; \rightarrow \;\; M'_{1,2} = \det([8]) = 8 $$$$ M_{1,1} = 9 \cdot 5 - 8 \cdot 6 = -3 $$

마찬가지 방법으로

$$ M_{2,1} = -6 $$$$ M_{3,1} = -3 $$

가 되고 원래의 행렬식의 값은

$$ \det(A) = -3 - (-6)\cdot 4 + (-3) \cdot 7 = 0 $$

NumPy에서는 linalg 서브패키지의 det 명령으로 행렬식을 계산할 수 있다.

In [4]:
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
np.linalg.det(A)
Out:
-9.51619735392994e-16

위의 정의를 사용하면 크기가 2x2, 3x3인 정방행렬의 행렬식의 값은 다음 공식으로 계산할 수 있다.

  • 2×2 행렬의 행렬식
$$ \det \left( \begin{bmatrix}a&b\\c&d\end{bmatrix} \right) = ad-bc $$
  • 3×3 행렬의 행렬식
$$ \det \left( \begin{bmatrix}a&b&c\\d&e&f\\g&h&i\end{bmatrix} \right) =aei+bfg+cdh-ceg-bdi-afh $$

행렬식의 값도 대각합과 마찬가지로 음수가 될 수 있다.

연습 문제 5.2.6

행렬식의 정의를 사용하여 2x2 행렬과 3x3 행렬의 행렬식이 각각 위와 같이 된다는 것을 증명하라.

행렬식은 다음과 같은 성질을 만족한다.

  • 전치 행렬의 행렬식은 원래의 행렬의 행렬식과 같다.
$$ \det(A^{T}) = \det(A) $$
  • 단위 행렬의 행렬식은 1이다.
$$\det(I) = 1 $$
  • 두 행렬의 곱의 행렬식은 각 행렬의 행렬식의 곱과 같다.
$$\det(AB) = \det(A)\det(B) $$
  • 역행렬의 행렬식은 원래의 행렬의 행렬식의 역수와 같다.
$$ \det(A^{-1}) = \dfrac{1}{\det(A)} $$
  • 역행렬 $A^{-1}$은 원래의 행렬 $A$와 다음 관계를 만족하는 정방 행렬을 말한다. $I$는 단위 행렬(identity matrix)이다.
$$ A^{-1} A = A A^{-1} = I $$
  • 행렬식의 값이 0이 아니면 역행렬의 행렬식은 원래 행렬의 행렬식의 역수이다. 이 식은 역행렬의 정의를 사용하여 증명할 수 있다.
$$ \det(A) \det(A^{-1}) = 1 $$

부호와 크기의 관계

행렬의 양의 정부호 성질과 대각합/행렬식은 다음과 같은 관계가 있다. 이 관계의 역은 일반적으로 성립하지 않는다.

  • 행렬이 양의 정부호(positive-definite)이면 대각합이 양수이다.
  • 행렬이 양의 정부호(positive-definite)이면 행렬식이 양수이다.
  • 행렬이 양의 준정부호(positive-semidefinite)이면 대각합이 0이거나 양수이다.
  • 행렬이 양의 준정부호(positive-semidefinite)이면 행렬식은 0이다.

위 식의 증명은 나중에 행렬의 고유분해를 공부할 때 설명할 것이다. 하지만 중요한 성질이므로 반드시 외워야 한다.

연습 문제 5.2.7

다음 행렬의 대각합과 행렬식을 구하고 위의 관계가 성립하는지 확인한다.

$$ A = \begin{bmatrix} 2 & -1 & 0\\-1&2&-1\\0&-1&2 \end{bmatrix} $$$$ B = \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix} $$$$ C = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} $$

질문/덧글

pos. difinite 질문입니다 ngmt*** 2016년 5월 18일 1:49 오전

pos. difinite 의 예시를 설명하는 부분의 3x3 행렬 (x^T * M * x) 을 풀어 쓴 식에서 b와 c가 있는데, 이 두 변수는 어디에서 온 변수인가요?

답변 pos. difinite 질문입니다 관리자 2016년 5월 18일 9:11 오전

오타입니다. 수정하도록 하겠습니다.

교열맨 roh.*** 2018년 9월 9일 2:18 오전

(행렬의 크기)
행렬의 부호와 마찬가지로 행렬의 크기를 정의하는 것도 여러운 일이다. -> 어려운 일이다.

(대각합-트레이스 트릭)
최조적으로 대각합을 구하는 행렬만 정방 행렬이기만 하면 된다. -> 최종적으로

답변: 교열맨 관리자 2018년 9월 9일 10:55 오전

수정하였습니다. 지적 감사드립니다.