행렬의 성질

Jane의 study note.·2022년 11월 30일
0

선형대수

목록 보기
4/9

[목차]
1. 정부호(positive definite)와 준정부호(positive semi-definite)
2. 행렬 놈(norm)
3. 대각합 (trace)
4. 행렬식(determinant)

1. 정부호와 준정부호

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

xTAx>0x^T A x > 0

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

xTAx0x^T A x \geq 0

위 방법에 따르면 모든 행렬에 대해 양의 정부호와 준정부호를 정의할 수 있지만 보통 대칭행렬에 대해서만 정의한다.

예를 들어 항등행렬(identity matrix) II는 양의 정부호다. 다음 식에서 벡터 xx가 영벡터(zeros-vector)가 아니라는 점에 주의한다.

xTIx=[x1x2xN][100010001][x1x2xN]=x12+x22++xN2>0x^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=[210121012]A = \begin{bmatrix} 2&-1&0\\-1&2&-1\\0&-1&2 \end{bmatrix}

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

모든 벡터 xT=[x1  x2  x3]x^T = [x_1 \; x_2 \; x_3]에 대해

xTAx=[x1x2x3][210121012][x1x2x3]=[(2x1x2)(x1+2x2x3)(x2+2x3)][x1x2x3]=2x122x1x2+2x222x2x3+2x32=x12+(x1x2)2+(x2x3)2+x32\begin{aligned} 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{aligned}

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

x12+(x1x2)2+(x2x3)2+x32>0{x_1}^2+(x_1 - x_2)^{2} + (x_2 - x_3)^{2}+{x_3}^2 > 0

2. 행렬 놈 (norm)

행렬의 놈(norm)은 행렬 AA에 대해 다음 식으로 정의되는 숫자다. 보통 Ap\Vert A \Vert_p로 표기한다. 이 식에서 aija_{ij}는 행렬 AAii번째 행, jj번째 열의 원소다. 행렬의 놈에도 여러 정의가 있는데 여기에서는 요소별 행렬 놈(entrywise matrix norm)의 정의를 따른다.

Ap=(i=1Nj=1Maijp)1/p\Vert A \Vert_p = \left( \sum_{i=1}^N \sum_{j=1}^M |a_{ij}|^p \right)^{1/p}

pp는 보통 1, 2 또는 무한대(\infty)가 사용되는데 이 중 p=2p=2인 경우가 가장 많이 쓰이므로 pp값 표시가 없는 경우는 p=2p=2인 놈이라고 생각하면 된다.
p=2p=2인 놈은 프로베니우스 놈(Frobenius norm)이라고 불리며 AF\Vert A \Vert_F이라고 표기하기도 한다.

A=A2=AF=i=1Nj=1Maij2\Vert A \Vert = \Vert A \Vert_2 = \Vert A \Vert_F = \sqrt{\sum_{i=1}^N \sum_{j=1}^M a_{ij}^2}

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

놈은 모든 크기의 행렬에 대해서 정의할 수 있으므로 벡터에 대해서도 정의할 수 있다.
벡터의 놈에서 중요한 성질은 벡터의 놈의 제곱이 벡터의 제곱합과 같다는 것이다.

x2=i=1Nxi2=xTx\Vert x \Vert^2 = \sum_{i=1}^N x_{i}^2 = x^Tx

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

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

- 놈의 4가지 성질

사실 위에서 쓴 놈의 공식은 공식적인 정의가 아니다. 정확한 놈의 정의는 다음 4가지 성질이 성립하는 행렬 연산을 말한다. 이러한 연산이 여러 개 존재하기 때문에 놈의 정의도 다양하다.

  • 놈의 값은 0이상이다. 영행렬일 때만 놈의 값이 0이 된다.
A0\|A\|\ge 0
  • 행렬에 스칼라를 곱하면 놈의 값도 그 스칼라의 절대값을 곱한 것과 같다.
αA=αA\|\alpha A\|=|\alpha| \|A\|
  • 행렬의 합의 놈은 각 행렬의 놈의 합보다 작거나 같다.
A+BA+B\|A+B\| \le \|A\|+\|B\|
  • 정방행렬의 곱의 놈은 각 정방행렬의 놈의 곱보다 작거나 같다.
ABAB\|AB\| \le \|A\|\|B\|

3. 대각합 (trace)

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

tr(A)=a11+a22++aNN=i=1Naii\text{tr}(A) = a_{11} + a_{22} + \dots + a_{NN}=\sum_{i=1}^{N} a_{ii}

예를 들어 NN차원 항등행렬(identity matrix)의 대각합은 NN이다.

tr(IN)=N\text{tr}(I_N) = N

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

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

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

마지막 식은 곱셈에서 순서가 바뀌어도 대각합이 같다는 것을 이용하여 증명할 수 있다.

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

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

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

xTAx=tr(xTAx)=tr(AxxT)=tr(xxTA)x^TAx = \text{tr}(x^TAx) = \text{tr}(Axx^T) = \text{tr}(xx^TA)

이 식은 원래의 트레이스 트릭 식의 AA, BB, CC 에 각각 xTx^T, AA, xx를 대입한 것이다. 이차 형식은 스칼라값이기 때문에 대각합을 취해도 원래의 값과 같다.

넘파이에서는 trace() 명령으로 대각합을 계산할 수 있다.

4. 행렬식 (determinant)

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

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

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

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

행렬 AA가 스칼라가 아니면 여인수 전개(cofactor expansion)라고 불리는 다음 식을 이용하여 계산한다. 이 식에서 ai,ja_{i,j}AAii행, jj열 원소이고 i0i_0(또는 j0j_0)는 계산하는 사람이 임의로 선택한 행번호(또는 열번호)이다.

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

또는

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

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

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

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

마이너에 (1)i+j(-1)^{i+j}를 곱한 값 (1)i+jMi,j(-1)^{i+j}M_{i,j}여인수(cofactor)라고 하며 Ci,jC_{i,j}로 표기한다.

Ci,j=(1)i+jMi,jC_{i,j} = (-1)^{i+j}M_{i,j}

여인수를 사용하여 위 여인수 전개식을 다시 표현하면 다음과 같다.

det(A)=i=1NCi,j0ai,j0=j=1NCi0,jai0,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}

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

[123456789]\begin{bmatrix} 1&2&3\\ 4&5&6\\ 7&8&9\\ \end{bmatrix}

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

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

det(A)={(1)1+1M1,1}a1,1+{(1)2+1M2,1}a2,1+{(1)3+1M3,1}a3,1=M1,1a1,1M2,1a2,1+M3,1a3,1=M1,1M2,14+M3,17\begin{aligned} \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{aligned}

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

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

[123456789]        M1,1=det([5689])\begin{aligned} \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) \end{aligned}

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

[123456789]        M2,1=det([2389])\begin{aligned} \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) \end{aligned}

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

[123456789]        M3,1=det([2356])\begin{aligned} \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) \end{aligned}

이 마이너값 M1,1M_{1,1}, M2,1M_{2,1}, M3,1M_{3,1}은 마찬가지로 여인수 공식을 이용해서 계산할 수 있다.

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

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

마찬가지 방법으로

M2,1=6M_{2,1} = -6
M3,1=3M_{3,1} = -3

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

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

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

※ 출처

김도형의 데이터 사이언스스쿨 중 2.3 행렬의 성질

0개의 댓글