본문 바로가기

6.수학과 알고리즘

수학기초 5 - 행렬1

들어가기

인공지능 스터디하는 중간에 도움될 만한 수학 기초 일부를 단순 참고용으로 정리했다.

작성자: http://ospace.tistory.com/ (ospace114@empal.com)

행렬

행렬은 선형대수학에서 선형 변환을 간단히 나타내기 위해 1개 이상 수나 식을 정사각형 배열로 나열한 것이다. 행렬은 처음에 연립 일차 방정식을 풀기위해서 시작했다.

$$ A = \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9\end{bmatrix} $$

위 행렬은 행과 열 수가 같은 정사각행렬(Square Matrix)이다. 행렬의 특정 요소를 표현하기 위해 행렬 $A_{ij}$형태로 사용하며 이는 i행, j열에 해당하는 성분으로 예를 들어 $A_{12} = 2$가 된다.

행 방향(가로)으로 구성된 행렬을 행 벡터(a), 열 방향(세로)으롤 구성된 행렬을 열 벡터(b)라고도 한다.

$$ a = \begin{bmatrix}1 & 2 & 3 \end{bmatrix}, b = \begin{bmatrix} 1 \\ 4 \\ 7 \end{bmatrix} $$

행렬곱

렬 A와 행렬 B의 행렬 곱은 A의 i행을 행 벡터로 B의 j열을 열벡터로 하여 이를 내적한 결과가 i행 j열 성분으로 하는 행렬이 된다. 행렬 곱은 m x n과 n x p 형태로 곱해야 한다.

$$ A \times B = \begin{bmatrix} a_1 & a_2\\ a_3 & a_4\\ a_5 & a_6 \end{bmatrix}\begin{bmatrix} b_1 & b_2\\ b_3 & b_4\end{bmatrix} = \begin{bmatrix} a_1b_1 + a_1b_3 & a_1b_2+a_2b_4\\ a_3b_1 + a_4b_4& a_3b_2+a_4b_4\\ a_5b_1+a_6b_3 & a_5b_2+a_6b_4 \end{bmatrix} $$

행렬 AB 곱에 대한 p행 q열 성분은 수식으로 표현하면 다음과 같다.

$$ [A_p, B_q] = \sum_{i=1}^n A_{pi}B_{iq} $$

행렬 곱은 교환법칙이 성립하지 않지만 예외적으로 단위행렬은 성립한다. 아다마르 곱(Hadamard Product)은 행렬 A와 행렬 B의 같은 위치 성분인 m x n과 m x n을 곱한 행렬이다. 표기는 $A \circ B$ 형태로 표시한다.

$$ A \circ B = \begin{bmatrix} a_1 & a_2\\ a_3 & a_4 \\ a_5 & a_6\end{bmatrix}\begin{bmatrix} b_1 & b_2\\ b_3 & b_4\\ b_5 & b_6\end{bmatrix} = \begin{bmatrix} a_1b_1 & a_2b_2\\ a_3b_3& a_4b_4 \\ a_5b_5& a_6b_6 \end{bmatrix} $$

행렬 종류

제로행렬

제로행렬(Zero Matrix)은 모든 성분이 0인 행렬로 영행렬이라고도 한다.

$$ 0_{3,3} = \begin{bmatrix} 0 & 0 & 0\\ 0 & 0 & 0\\ 0 & 0 & 0\end{bmatrix} $$

대각행렬

대각행렬(Diagonal Matrix)은 대각성분이외에 모두 0인 n차정방행렬이다.

$$ diag (1,2,3) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 2 & 0\\ 0 & 0 & 3\end{bmatrix} $$

단위행렬

단위행렬(Unit Matrix) 또는 항등 행렬(Identity Matrix)은 대각 성분이 1이고 나머지는 0인 정사각행렬이다. 보통 E로 표시한다.

$$ E = 1_{3,3}= \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0\\ 0 & 0 & 1\end{bmatrix} $$

전치행렬

전치행렬(Transposed Matrix)은 m X n 행렬에서 행과 열을 서로 부꾼 행렬로 m X n 행렬이 된다. 행렬 A의 전치행렬은 $A^T$, $^tA$, $A^t$으로 표기할 수 있다.

$$ A = \begin{bmatrix} 1&2\\ 3&4\\ 5&6\\ \end{bmatrix}, A^T= \begin{bmatrix} 1&2\\ 3&4\\ 5&6\\ \end{bmatrix}^T = \begin{bmatrix} 1&3&5\\ 2&4&6\\ \end{bmatrix} $$

대칭행렬

대칭행렬(Symmetric Matrix)은 대각성분을 중심으로 대칭인 n차 정방행렬이다. 대칭행렬은 그 전치행렬과 동일한 행렬이 된다.

$$ \begin{bmatrix} 1&2&3\\ 2&4&5\\ 3&5&6\\ \end{bmatrix} $$

삼각행렬

삼각행렬(Triangular Matrix)은 상삼가행렬과 하삼각행렬이 있다.

상삼각행렬은 대각성분 아래 모든 성분이 0인 n차정방행렬이다.

$$ \begin{bmatrix} 1&2&3\\ 0&4&5\\ 0&0&6\\ \end{bmatrix} $$

하삼각행렬은 대각성분 위의 모든 성분이 0인 n차정방행렬이다.

$$ \begin{bmatrix} 1&0&0\\ 2&4&0\\ 3&5&6\\ \end{bmatrix} $$

역행렬

역행렬(Inverse Matrix)은 임의 행렬에 곱한 결과가 단위행렬이 되는 행렬이다. A에 역행렬 표기는 $A^{-1}$이다.

$$ AA^{-1}=A^{-1}A=E $$

역행렬 구하는 방법은 여인수 또는 가우스 소거법(이하 소거법)이 있다. 여인수를 이용방법은 까다롭기에 소거법을 이용한 방법을 살펴보겠다. 아래 행렬에 대해 역행렬을 구해보자.

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

위의 행렬의 역행렬은 아래를 만족해야 한다.

$$ \begin{bmatrix} 3&1\\1&2\\ \end{bmatrix} \begin{bmatrix} x_1&x_2\\y_1&y_2\\ \end{bmatrix} = \begin{bmatrix} 1&0\\0&1\\ \end{bmatrix} $$

먼저 첫 번째 행에 2를 곱한다.

$$ \begin{bmatrix} 6&2\\1&2\\ \end{bmatrix} \begin{bmatrix} x_1&x_2\\y_1&y_2\\ \end{bmatrix} = \begin{bmatrix} 2&0\\0&1\\ \end{bmatrix} $$

행렬 1행, 2열에 요소를 0으로 만들기 위해 상단 행에서 하단 행을 뺀다.

$$ \begin{bmatrix} 5&0\\1&2\\ \end{bmatrix} \begin{bmatrix} x_1&x_2\\y_1&y_2\\ \end{bmatrix} = \begin{bmatrix} 2&-1\\0&1\\ \end{bmatrix} $$

두번째 행에 5를 곱한다.

$$ \begin{bmatrix} 5&0\\5&10\\ \end{bmatrix} \begin{bmatrix} x_1&x_2\\y_1&y_2\\ \end{bmatrix} = \begin{bmatrix} 2&-1\\0&5\\ \end{bmatrix} $$

행렬 2행, 1열에 요소를 0으로 만들기 위해 하단 행에서 상단 행을 뺀다.

$$ \begin{bmatrix} 5&0\\0&10\\ \end{bmatrix} \begin{bmatrix} x_1&x_2\\y_1&y_2\\ \end{bmatrix} = \begin{bmatrix} 2&-1\\-2&6\\ \end{bmatrix} $$

첫번째 행에 5를 나누고 두번째 행에 10을 나눈다.

$$ \begin{bmatrix} 1&0\\0&1\\ \end{bmatrix} \begin{bmatrix} x_1&x_2\\y_1&y_2\\ \end{bmatrix} = \begin{bmatrix} \frac2 5& -\frac 1 5\\-\frac 1 5& \frac 3 5\\ \end{bmatrix} $$

결국 구하는 역행렬은 다음과 같다.

$$ \begin{bmatrix} 3&1\\1&2\\ \end{bmatrix} ^{-1} = \begin{bmatrix} \frac2 5& -\frac 1 5\\-\frac 1 5& \frac 3 5\\ \end{bmatrix} $$

그러나, 역행렬은 항상 존재하지 않는데 이를 확인하는 방법은 절대값인 determinant이 0인지 확인하면 된다.

$$ A = \begin{bmatrix} a_{11}&a_{12}\\ a_{21}&a_{22}\\ \end{bmatrix} $$

$$ |A|=\det A = a_{11}a_{22} - a_{12}a_{21} \ne 0 $$

이 행렬식을 사용해서 역행렬을 구하는 공식을 만들 수있다.

$$ A^{-1} = \det A \begin{bmatrix} a_{22} &-a_{12} \\ -a_{21} & a_{11}\end{bmatrix} $$

3차 정방행렬의 절대값을 구해는 방법으로 사루스(Sarrus) 전개가 있다. 행렬 대각선 방향으로 곱하고 방향에 따라서 기호를 정한다.

$$ det \begin{pmatrix} a_{11} & a_{12} & a_{13}\\ a_{21} & a_{22} & a_{23}\\ a_{31} & a_{32} & a_{33}\\ \end{pmatrix} = a_{11}a_{22}a_{33}+a_{12}a_{23}a_{31}+a_{13}a_{21}a_{32}-a_{13}a_{22}a_{31}-a_{12}a_{21}a_{33}-a_{11}a_{23}a_{32} $$

Fig 1. 사루스 전개

4차 정방행렬에서부터는 별도 공식이 없고 3차 정방행렬의 패턴을 사용해서 구해야한다.

텐서

텐서(Tensor)는 벡터를 확장한 다자원 배열로 동일한 벡터들을 행렬로 표현한 형태이다. 텐서 자원별로 0차원은 스칼라, 1차원은 벡터, 2차원은 행렬, 3차원 이상은 텐서가 된다. 예를 들어 3차원 공간에 미소체적에 작용하는 변형력이 있다면, 미소 체적의 각 3 면에 작용하는 변형력을 모아서 텐서로 표현할 수 있다. 아래는 2 x 2 x 2 크기의 3차원 텐서 예이다.

$$ T = \begin{bmatrix} \begin{bmatrix} 1&2 \\ 3&4 \end{bmatrix} , \begin{bmatrix} 5&6 \\ 7&8 \end{bmatrix} \end{bmatrix} $$

4차원 이상 부터는 행렬로를 표현하기 힘들어 배열 형태로 텐서를 표기한다. 예를 들어 CNN에서 사용하는 이미지 표현하는 4차원 텐서 표현이다.

$$ T = (batch, height, width, channels) $$

예를 들어 (16,32,32,3)은 16개 이미지가 크기가 32 x 32이고 3개 채널로된 텐서를 의미한다.

출처

[1] 와쿠이 요시유키, 와쿠이 사다미, 처음 배우는 딥러닝 수학, 한빛미디어

[2] 이시카와 아키히코, 신상재 이진희, 인공지능을 위한 수학, 프리렉, 2019.09.16

[3] Shin Takahashi, Linear algebra 만화로 쉽게 배우는 선형대수, 성안당, 2016.08.25

반응형

'6.수학과 알고리즘' 카테고리의 다른 글

수학기초 4- 벡터  (0) 2025.02.18
수학기초 3 - 미분과 적분  (2) 2025.02.14
수학기초 2 - 수열  (0) 2025.02.11
수학기초 1 - 함수 종류  (0) 2025.02.04
CNN 이미지 식별 알고리즘  (0) 2024.03.11