2.7 Transpose and Permutations

전치 행렬과 순열 행렬

전치 행렬 ATA^T와 순열 행렬 PP는 선형대수에서 매우 자주 등장하는 기본 행렬이다.

핵심 성질은 다음과 같다.

  • AxAx의 전치는 xTATx^TA^T이다.
  • ABAB의 전치는 BTATB^TA^T이다.
  • A1A^{-1}의 전치는 (AT)1(A^T)^{-1}이다.
  • 내적은 xy=xTyx \cdot y = x^Ty로 표현된다.
  • 외적은 xyTxy^T로 표현된다.
  • 대칭행렬은 ST=SS^T=S를 만족한다.
  • 직교행렬은 QT=Q1Q^T=Q^{-1}을 만족한다.
  • 순열행렬은 단위행렬 II의 행을 재배열한 행렬이다.
  • 순열행렬은 PT=P1P^T=P^{-1}을 만족한다.

전치(Transpose)

전치 행렬은 행과 열을 바꾼 행렬이다.

예를 들어 다음 행렬 AA가 있다고 하자.

A=[123004]A= \begin{bmatrix} 1 & 2 & 3 \\ 0 & 0 & 4 \end{bmatrix}

그러면 전치 행렬 ATA^T는 다음과 같다.

AT=[102034]A^T= \begin{bmatrix} 1 & 0 \\ 2 & 0 \\ 3 & 4 \end{bmatrix}

즉, AAiijj열 원소는 ATA^Tjjii열 원소가 된다.

(AT)ij=Aji(A^T)_{ij}=A_{ji}

전치 법칙

전치에는 다음 법칙들이 성립한다.

1. 합의 전치

(A+B)T=AT+BT(A+B)^T=A^T+B^T

2. 곱의 전치

(AB)T=BTAT(AB)^T=B^TA^T

곱의 전치에서는 순서가 뒤집힌다.

3. 역행렬의 전치

(A1)T=(AT)1(A^{-1})^T=(A^T)^{-1}

즉, 역행렬을 취한 뒤 전치해도 되고, 전치한 뒤 역행렬을 취해도 같다.


(Ax)T=xTAT(Ax)^T=x^TA^T

AxAxAA의 열벡터들의 선형결합이다.

행렬 AA의 열벡터를 a1,a2,,ana_1,a_2,\ldots,a_n이라고 하면 다음과 같이 쓸 수 있다.

A=[a1 a2  an]A=[a_1 \ a_2 \ \cdots \ a_n]

그리고

x=[x1x2xn]x= \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix}

이면,

Ax=x1a1+x2a2++xnanAx=x_1a_1+x_2a_2+\cdots+x_na_n

양변을 전치하면 다음과 같다.

(Ax)T=(x1a1+x2a2++xnan)T(Ax)^T = (x_1a_1+x_2a_2+\cdots+x_na_n)^T

전치는 덧셈에 대해 분배되므로,

(Ax)T=x1a1T+x2a2T++xnanT(Ax)^T = x_1a_1^T+x_2a_2^T+\cdots+x_na_n^T

한편 ATA^TAA의 열벡터들이 행벡터로 바뀐 행렬이다.

AT=[a1Ta2TanT]A^T= \begin{bmatrix} a_1^T \\ a_2^T \\ \vdots \\ a_n^T \end{bmatrix}

따라서 xTATx^TA^TATA^T의 행들을 x1,x2,,xnx_1,x_2,\ldots,x_n을 계수로 선형결합한 것이다.

xTAT=x1a1T+x2a2T++xnanTx^TA^T=x_1a_1^T+x_2a_2^T+\cdots+x_na^T_n

따라서 다음이 성립한다.

(Ax)T=xTAT(Ax)^T=x^TA^T

내적과 외적

전치 기호 TT가 곱 안쪽에 위치하면 내적이 된다.

xy=xTyx \cdot y = x^Ty

이때 크기는 다음과 같다.

(1×n)(n×1)=(1×1)(1 \times n)(n \times 1)=(1 \times 1)

즉, 결과는 스칼라이다.

반대로 전치 기호가 바깥쪽에 위치하면 외적이 된다.

xyTxy^T

이때 크기는 다음과 같다.

(n×1)(1×n)=(n×n)(n \times 1)(1 \times n)=(n \times n)

즉, 결과는 행렬이다.

외적 xyTxy^T는 rank one product라고도 한다.
외적의 결과 행렬은 모든 열이 하나의 벡터 방향에 종속되므로 rank가 1 이하이다.


전치의 정의

전치 행렬 ATA^T는 다음 식을 모든 xx, yy에 대해 만족시키는 유일한 행렬이다.

(Ax)Ty=xT(ATy)(Ax)^Ty=x^T(A^Ty)

즉, 행렬 AA를 내적의 반대편으로 넘기면 전치가 발생한다.

AATA \quad \longrightarrow \quad A^T

이 성질은 딥러닝의 역전파에서도 자주 나타난다.

예를 들어

z=Wxz=Wx

라면, 역전파에서 xx에 대한 기울기는 다음 형태로 나타난다.

Lx=WTLz\frac{\partial L}{\partial x} = W^T \frac{\partial L}{\partial z}

즉, forward에서 WW를 곱했다면 backward에서는 WTW^T가 등장한다.


내적과 전치의 관계

내적은 순서를 바꾸어도 값이 같다.

uTv=vTuu^Tv=v^Tu

즉,

u,v=v,u\langle u,v\rangle=\langle v,u\rangle

이를 이용하면 다음 관계를 확인할 수 있다.

Ax,y=x,ATy\langle Ax,y\rangle = \langle x,A^Ty\rangle

행렬 표기로 쓰면 다음과 같다.

(Ax)Ty=xT(ATy)(Ax)^Ty=x^T(A^Ty)

따라서 ATA^T는 내적에서 AA를 반대편으로 옮길 때 등장하는 행렬이라고 볼 수 있다.


대칭행렬

대칭행렬은 전치해도 자기 자신과 같은 행렬이다.

ST=SS^T=S

성분으로 쓰면 다음을 의미한다.

sji=sijs_{ji}=s_{ij}

즉, 주대각선을 기준으로 원소들이 대칭이다.

대칭행렬 SS가 가역이면, 그 역행렬 S1S^{-1}도 대칭행렬이다.

또한 임의의 행렬 AA에 대해 ATAA^TA는 항상 대칭행렬이다.

(ATA)T=AT(AT)T=ATA(A^TA)^T=A^T(A^T)^T=A^TA

따라서

ATA=SA^TA=S

는 항상 대칭행렬이다.

단, 일반적으로 다음은 성립하지 않는다.

ATAAATA^TA \neq AA^T

대칭행렬의 소거

대칭행렬 SS를 행 교환 없이 소거하면 다음과 같이 분해할 수 있다.

S=LDUS=LDU

예를 들어 다음 대칭행렬을 보자.

S=[1227]S= \begin{bmatrix} 1 & 2 \\ 2 & 7 \end{bmatrix}

먼저 LULU 분해는 다음과 같다.

[1227]=[1021][1203]\begin{bmatrix} 1 & 2 \\ 2 & 7 \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 2 & 1 \end{bmatrix} \begin{bmatrix} 1 & 2 \\ 0 & 3 \end{bmatrix}

이를 LDULDU 형태로 쓰면 다음과 같다.

[1227]=[1021][1003][1201]\begin{bmatrix} 1 & 2 \\ 2 & 7 \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 2 & 1 \end{bmatrix} \begin{bmatrix} 1 & 0 \\ 0 & 3 \end{bmatrix} \begin{bmatrix} 1 & 2 \\ 0 & 1 \end{bmatrix}

대칭행렬에서는 이때 다음 관계가 성립한다.

U=LTU=L^T

따라서 대칭행렬의 분해는 다음 형태로 볼 수 있다.

S=LDLTS=LDL^T

직교행렬

직교행렬 QQ는 다음을 만족하는 행렬이다.

QT=Q1Q^T=Q^{-1}

즉,

QTQ=IQ^TQ=I

직교행렬의 열벡터들은 서로 직교하고, 각각의 길이가 1인 단위벡터이다.

따라서 직교행렬은 길이와 각도를 보존하는 변환으로 이해할 수 있다.


순열행렬

순열행렬 PP는 단위행렬 II의 행을 임의의 순서로 재배열한 행렬이다.

예를 들어 단위행렬의 행을 바꾸면 다음과 같은 순열행렬이 된다.

P=[010100001]P= \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix}

n×nn \times n 단위행렬의 행을 재배열하는 방법은 총 n!n!개이다.
따라서 n×nn \times n 순열행렬도 총 n!n!개 존재한다.

순열행렬의 역행렬도 순열행렬이다.
순열을 적용한 뒤 그 역순으로 다시 배치하면 원래 상태로 돌아오기 때문이다.

P1P=IP^{-1}P=I

순열행렬에서는 다음이 성립한다.

PT=P1P^T=P^{-1}

따라서

PPT=IPP^T=I

즉, 순열행렬은 직교행렬의 한 종류이다.


순열행렬과 소거

가우스 소거 과정에서 pivot이 0이면 행 교환이 필요하다.
이때 행 교환은 순열행렬 PP를 왼쪽에서 곱해 표현할 수 있다.

행 교환이 필요한 경우에는 일반적인 A=LUA=LU 대신 다음 형태가 나타난다.

PA=LUPA=LU

즉, AA의 행을 먼저 재배열한 뒤 LULU 분해를 수행하는 것이다.

AA가 가역이면 적절한 행 교환 이후 0이 아닌 pivot nn개를 얻을 수 있다.


정리

  1. 전치 행렬은 행과 열을 바꾼 행렬이다.
(AT)ij=Aji(A^T)_{ij}=A_{ji}
  1. 곱의 전치에서는 순서가 뒤집힌다.
(AB)T=BTAT(AB)^T=B^TA^T
  1. 역행렬의 전치는 전치의 역행렬과 같다.
(A1)T=(AT)1(A^{-1})^T=(A^T)^{-1}
  1. 내적은 다음처럼 쓴다.
xy=xTyx \cdot y=x^Ty
  1. 외적은 다음처럼 쓴다.
xyTxy^T
  1. 행렬 AA를 내적의 반대편으로 넘기면 전치가 붙는다.
(Ax)Ty=xT(ATy)(Ax)^Ty=x^T(A^Ty)
  1. 대칭행렬은 전치해도 자기 자신이다.
ST=SS^T=S
  1. ATAA^TA는 항상 대칭행렬이다.
(ATA)T=ATA(A^TA)^T=A^TA
  1. 직교행렬은 전치가 역행렬이다.
QT=Q1Q^T=Q^{-1}
  1. 순열행렬은 단위행렬의 행을 재배열한 행렬이다.

  2. 순열행렬은 다음을 만족한다.

PT=P1P^T=P^{-1}
  1. 행 교환이 있는 소거에서는 다음 형태가 나타난다.
PA=LUPA=LU