본문 바로가기
AI 수학/선형대수

크로네커 곱 (Kronecker Product)

by 깊은대학 2024. 12. 10.

두 행렬 \(A \in \mathbb{R}^{n \times m}, \ B \in \mathbb{R}^{p \times q}\) 의 크로네커 곱(Kronecker product) \(A \otimes B\) 는 다음과 같이 정의된다.

 

\[ \begin{align} A \otimes B= \begin{bmatrix} a_{11} B & ⋯ & a_{1m} B \\ ⋮ & ⋱ & ⋮ \\ a_{n1} B & ⋯ & a_{nm} B \end{bmatrix} \in \mathbb{R}^{np \times mq} \end{align} \]

 

예를 들어서 행렬 A와 B가 각각 다음과 같을 때,

 

\[ \begin{align} A= \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \ \ \ B=\begin{bmatrix} 10 & 20 & 30 \\ 40 & 50 & 60 \end{bmatrix} \end{align} \]

 

크로네커 곱 \(A \otimes B\) 는 다음과 같다.

 

\[ \begin{align} A \otimes B=\begin{bmatrix} 10 & 20 & 30 & 20 & 40 & 60 \\ 40 & 50 & 60 & 80 & 100 & 120 \\ 30 & 60 & 90 & 40 & 80 & 120 \\ 120 & 150 & 180 & 160 & 200 & 240 \end{bmatrix} \end{align} \]

 

크로네커 곱의 몇 가지 특성을 나열하면 다음과 같다.

 

\[ \begin{align} & (A+B) \otimes C= A \otimes C + B \otimes C \\ \\ & A \otimes (B+C)=A \otimes B+A \otimes C \\ \\ & (A \otimes B) \otimes C=A \otimes (B \otimes C) \\ \\ & A \otimes B \ne B \otimes A \\ \\ & (A \otimes B)^T=A^T \otimes B^T \\ \\ & (A \otimes B)^{-1}=A^{-1} \otimes B^{-1} \end{align} \]

 

즉 크로네커 곱에서 분배법칙과 결합법칙은 성립하지만 교환법칙은 성립하지 않는다. 또한 크로네커 곱의 전치(transpose)와 역행렬은 각각의 전치와 역행렬의 크로네커 곱과 같다.

 

 

크로네커 곱의 다양한 적용을 위해서는 벡터화(vectorization) 연산자가 필요하다. 어떤 행렬 \(A \in \mathbb{R}^{n \times m}\) 에 대한 벡터화 연산자 또는 스택(stack) 연산자 \(\mbox{vec}(A)\) 는 다음과 같이 행렬을 벡터로 변환하는 선형 변환으로 정의된다.

 

\[ \begin{align} \mbox{vec}(A)= \begin{bmatrix} a_{11} \\ a_{21} \\ ⋮ \\ a_{12} \\ a_{22} \\ ⋮ \\ a_{nm} \end{bmatrix} \in \mathbb{R}^{nm \times 1} \end{align} \]

 

즉 \(\mbox{vec}(A)\) 는 행렬 \(A\) 의 열(column)을 순서대로 쌓아서 만든 벡터이다. 예를 들어서 행렬 \(A\) 가 다음과 같을 때,

 

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

 

\(\mbox{vec}(A)\) 는 다음과 같다.

 

\[ \begin{align} \mbox{vec}(A)= \begin{bmatrix} 1 \\ 3 \\ 2 \\ 4 \end{bmatrix} \end{align} \]

 

정의에 의하면 행렬의 합 \(A+B\) 의 벡터화는 각각 행렬의 벡터화 합과 같다. 즉,

 

\[ \begin{align} \mbox{vec}(A+B)= \mbox{vec}(A) + \mbox{vec}(B) \end{align} \]

 

 

 

크로네커 곱은 벡터화 연산자와 함께 미지수가 행렬인 선형 방정식을 푸는데 사용되는데, 예로서 실베스터 방정식 \(AX+XB=C\), 리야프노프 방정식 \(A^T X+XA=-Q\) 등을 들 수 있다. 여기서 \(X\) 가 미지수인 행렬이다. 이 방정식을 푸는데 사용되는 관계식은 다음과 같이 두 식이 서로 동치라는 것이다.

 

\[ \begin{align} AXB= C \ \ \ \leftrightarrow \ \ \ (B^T \otimes A) \mbox{vec}(X)= \mbox{vec}(C) \end{align} \]

 

이를 이용하면 실베스터 방정식 \(AX+XB=C\) 를 다음과 같이 변환할 수 있다.

 

\[ \begin{align} & \mbox{vec}(AX+XB)= \mbox{vec} (C) \\ \\ \to \ \ & \mbox{vec}(AXI)+ \mbox{vec}(IXB)= \mbox{vec}(C) \\ \\ \to \ \ & [(I\otimes A)+(B^T \otimes I) ] \mbox{vec}(X)= \mbox{vec}(C) \\ \\ \to \ \ & (A \otimes B^T ) \mbox{vec}(X)= \mbox{vec} (C) \end{align} \]

 

위 식은 맨 마지막 줄은 다음과 같은 크로네커 합(sum)의 관계식에 의한 것이다.

 

\[ \begin{align} A \otimes B=I \otimes A+B \otimes I \end{align} \]

 

리야프노프 방정식 \(A^T X+XA=-Q \) 는 다음과 같이 변환할 수 있다.

 

\[ \begin{align} & \mbox{vec}(A^T X+XA)=- \mbox{vec}(Q) \\ \\ \to \ \ & \mbox{vec}(A^T XI)+ \mbox{vec}(IXA)=- \mbox{vec}(Q) \\ \\ \to \ \ & [(I \otimes A^T )+(A^T \otimes I) ] \mbox{vec}(X)=- \mbox{vec}(Q) \\ \\ \to \ \ & (A \otimes A)^T \mbox{vec}(X)= - \mbox{vec} (Q) \end{align} \]

 

댓글