[인공지능 수학 - 미적분]4강 : 행렬연산과 선형조합

7 minute read

행렬연산과 선형조합

행렬 표기법과 관련 용어

행렬(matrix)은 직사각형 구조에 숫자들을 담아 놓은 구조이다. 각 숫자들의 행렬의 요소(entry)라 부른다.

다음은 3개의 행(row)와 2개의 열(column)으로 이루어진 3*2 행렬이다.
$ \begin{bmatrix} 3 & 1\cr 1 & -2\cr 2 & -4 \end{bmatrix} $

다음과 같이 하나의 행 혹은 하나의 열을 가지는 특별한 행렬을 각각 행벡터(row vector), 열벡터(column vector)라 한다.
$ \begin{bmatrix} 2 & 1 & 0 -3 \end{bmatrix} $ $ \begin{bmatrix} 1\cr 3 \end{bmatrix} $

극단적으로 1*1 행렬의 경우, 스칼라(scalar)라고 한다.
$ \begin{bmatrix} 4 \end{bmatrix} $

$m*n$ 행렬은 다음과 같이 $m * n$개의 숫자가 직사각형 구조에 채워진 형태로 표기할 수 있다. $ A = \begin{bmatrix} a_{11} & a_{12} & \ldots & a_{1n} \cr a_{21} & a_{22} & \ldots & a_{2n} \cr \vdots & \vdots & \ddots & \vdots \cr a_{m1} & a_{m2} & \ldots & a_{mn} \cr \end{bmatrix} $

주요 표기법

  • 행렬 A의 각 (i, j)요소는 $a_{ij}$로 나타낸다.
  • 행렬 A를 간략히 표기할 때는 $A = [a_{ij}]$로 나타낸다.
  • 행렬 A의 크기가 중요할 경우는 $A = [a_{ij}]_{m*n}$로 나타낸다.

Transpose Matrix(전치행렬)

$m * n$행렬 A에 대한 transpose matrix(전치행렬) $A^T$는 A의 행을 열로, A의 열을 행으로 가지는 $n*m$ 행렬이다. 즉, $A^T_{ij} = A_{ji}$를 만족한다.
$ A = \begin{bmatrix} 1 & 2\cr 3 & 4\cr 5 & 6 \end{bmatrix} $
$ A^T = \begin{bmatrix} 1 & 3 & 5\cr 2 & 4 & 6 \end{bmatrix} $

벡터 표기법

벡터는 아래의 x와 같이 볼드체 소문자로 표기한다. 선형대수에서는 보통 벡터라고 하면 열벡터를 기본으로 한다.
$ X = \begin{bmatrix} x_1\cr x_2\cr …\cr x_n \end{bmatrix} $
주요 표기법

  • 벡터라고 하면 일반적으로 열벡터(column vector)를 말한다.
  • n-벡터는 n개의 스칼라(scalar)로 구성된 열벡터를 말한다.

Zero Matrices(영행렬)

행렬의 모든 요소가 0이면, 해당 행렬을 영행렬(zero matrix)라 하고 O로 표기한다.
$A + O = O + A = A$
숫자 세계에서의 0과 같은 취급을 하며, 교환법칙 등 또한 성립한다.
영행렬은 숫자의 0과 같은 존재로 행렬합에 대한 항등원 역할을 한다.
행렬의 합 : 두 행렬 A와 B는 행과 열의 개수가 모두 같을 때 성립하며, 각 (i, j)-요소의 합으로 정의된다.

$n*n$ 행렬 : Square Matrix(정방행렬)

행과 열의 개수가 모두 n인 정사각형(square)모양의 행렬을 n차 square matrix(정방행렬)이라 한다.
$ A = \begin{bmatrix} a_{11} & a_{12} & \ldots & a_{1n} \cr a_{21} & a_{22} & \ldots & a_{2n} \cr \vdots & \vdots & \ddots & \vdots \cr a_{n1} & a_{n2} & \ldots & a_{nn} \cr \end{bmatrix} $
특히, $a_{ii} (i = 1, 2, …, n)$를 행렬 $A_n$의 main diagonal(주대각선)이라 한다.

Identity Matrices(항등행렬)

주대각선(main diagonal)이 1이고 나머지 요소는 모두 0인 n차 정방행렬(square matrix)을 항등행렬(identify matrix)이라 한다.
$ I_n = \begin{bmatrix} 1 & 0 & \ldots & 0 \cr 0 & 1 & \ldots & 0 \cr \vdots & \vdots & \ddots & \vdots \cr 0 & 0 & \ldots & 1 \cr \end{bmatrix} $
항등행렬은 숫자의 1과 같은 존재로 행렬곱에 대한 항등원 역할을 한다.

[중요] 행렬의 곱

$m * r$ 행렬 $A=[a_{ij}]$ 와 $r * n$행렬 $B=[b_{ij}]$가 있을 때, 두 행렬의 곱 AB는 $m * n$ 행렬 $C=[c_{ij}]$를 정의한다.
여기서 두 행렬의 곱 AB로 정의된 행렬 C의 각 (i, j)-요소는 다음과 같이 정의된다.(A의 행 * B의 열) 즉 내적의 값을 나열한 것이다.
$c_{ij} = a_{i1} + a_{i2}b_{2j} + … + a_{ir}b_{rj}$
행렬의 곱에서 반드시 숙지해야할 사항

  • 행렬 C의 각 요소 $c_{ij}$는 ‘곱의 왼쪽 행렬 A의 i번째 행벡터’와 ‘곱의 오른쪽 행렬 B의 j번째 열벡터’의 내적(inner product)이다.
    • 따라서, 두 행렬의 곱 AB에 대해 A의 열 개수와 B의 행 개수는 일치해야 한다.
    • 일반적으로 AB != BA이다. 왜냐하면 행과 열을 뽑아오는 방법이 다르기 때문이다. 교환법칙이 성립하지 않는다.
  • 행렬의 곱은 병렬처리(parallel processing)로 가속할 수 있다. 즉 독립적으로 계산될 수 있다.

스칼라, 벡터, 행렬, 그리고 텐서: 계층적 구조 이해하기

스칼라 -> 벡터 -> 행렬

스칼라는 숫자 하나로 구성되어 있다.
$7$

이 스칼라를 벡터로 표현하면 아래와 같이 1개의 구성요소로 이루어진 1-벡터가 된다.
$[7]$

이 스칼라를 행렬로 표현하면 아래와 같이 1개의 구성요소로 이루어진 1*1 행렬이 된다.
$[7_{11}]$

벡터 -> 행렬

벡터는 여러 숫자가 일열로 늘어선 구조이다.
$ \begin{bmatrix} 1\cr 2\cr 3\cr 4 \end{bmatrix} $
이 벡터를 행렬로 표현하면 여러 모양의 행렬로 표현할 수 있다.

  • 4*1 행렬
  • 2*2 행렬
  • 2*2 행렬의 전치행렬
  • 1*4 행렬 표현하고자 하는 행렬의 모양은 응용문제에 따라 결정!

행렬 -> 벡터

행렬은 사각형 구조에 여러 숫자가 행과 열로 늘어선 구조이다.
$ \begin{bmatrix} 1 & 2 & 3\cr 4 & 5 & 6 \end{bmatrix}_{2*3} $
이 행렬은 다음과 같이 6-벡터로 표현할 수 있다.
$ \begin{bmatrix} 1\cr 2\cr 3\cr 4\cr 5\cr 6 \end{bmatrix} $
$ \begin{bmatrix} 1\cr 4\cr 2\cr 5\cr 3\cr 6 \end{bmatrix} $
행렬을 벡터로 변환할 때, 행부터 혹은 열부터 읽을 것인지는 응용문제에 따라 결정!

텐서

텐서(tensor)는 스칼라, 벡터, 행렬을 아우르는 개념이다. 숫자가 늘어설 수 있는 방향이 k개면 k-텐서로 부른다.

  • 0-텐서 : 스칼라 (숫자가 늘어설 수 있는 방향이 없다)
  • 1-텐서 : 벡터 (숫자가 늘어설 수 있는 방향이 한 방향이다)
  • 2-텐서 : 행렬 (숫자가 늘어설 수 있는 방향이 두 방향이다)
  • 4-텐서 : 동영상 만일 아래의 T의 각 요소 $P_{ij}$가 벡터라면, T는 3-텐서로 볼 수 있다.
    $ T = \begin{bmatrix} P_{11} & P_{12} & P_{13} & P_{14} \cr P_{21} & P_{22} & P_{23} & P_{24} \cr P_{31} & P_{32} & P_{33} & P_{34} \cr P_{41} & P_{42} & P_{43} & P_{44} \cr \end{bmatrix} $
    3-텐서의 대표적인 예는 컬러영상이다. $P_{ij}$가 3-벡터이면 RGB영상을, 4-벡터이면 RGBA영상을 나타낸다.

분할행렬(Partitioned Matrix) : 선형대수에서 가장 중요한 개념!!

행렬을 조각(partition) 단위로 분할하여 생각해도 무방하다. 이런 관점에서 본다면, 행렬은 부분행렬(submatrix)로 이루어진 직사각형 구조로 확장해서 생각할 수 있다. 이렇게 행렬을 구조적으로 보는 방법을 분할행렬(partitioned matrix)또는 블록행렬(block matrix)이라 한다.
Alt Text
이렇게 행렬을 조각조각 분할(행벡터 단위로, 열벡터 단위로, …)해서 계산해도 무방하다!!
행렬은 행벡터의 모임 / 열벡터의 모임으로 나타낼 수 있다!
보통 열벡터의 모임으로 많이 쓰인다.

분할행렬로 행렬의 곱 이해하기

두 행렬의 곱 AB = C를 아래와 같이 matrix-column vector products로 볼 수 있다.
$ AB = A * \begin{bmatrix} b_1 & b_2 & \ldots & b_n \end{bmatrix} = \begin{bmatrix} Ab_1 & Ab_2 & \ldots & Ab_n \end{bmatrix} = C $
예를 들면, $A_{23}B_{32} = C_{22}$을 다음과 같이 구조적으로 해석할 수 있다.
$ \begin{bmatrix} \alpha & \alpha & \alpha\cr \alpha & \alpha & \alpha \end{bmatrix} $ * $ \begin{bmatrix} \alpha & \alpha\cr \alpha & \alpha\cr \alpha & \alpha \end{bmatrix} $ = $ \begin{bmatrix} \alpha & \alpha\cr \alpha & \alpha \end{bmatrix} $
$ A*\begin{bmatrix} b_1 & b_2 \end{bmatrix} $ = $ \begin{bmatrix} Ab_1 & Ab_2 \end{bmatrix} $

두 행렬의 곱 AB = C를 아래와 같이 row vector-matrix products로도 볼 수 있다.
$ AB = \begin{bmatrix} a_1\cr a_2\cr \dots\cr a_m \end{bmatrix} $ *B = $ \begin{bmatrix} a_1B\cr a_2B\cr \dots\cr a_mB \end{bmatrix} = C $
예를 들면, $A_{23}B_{32} = C_{22}$을 다음과 같이 구조적으로 해석할 수 있다.
$ \begin{bmatrix} \alpha & \alpha & \alpha\cr \alpha & \alpha & \alpha \end{bmatrix} $ * $ \begin{bmatrix} \alpha & \alpha\cr \alpha & \alpha\cr \alpha & \alpha \end{bmatrix} $ = $ \begin{bmatrix} \alpha & \alpha\cr \alpha & \alpha \end{bmatrix} $
$ \begin{bmatrix} a_1\cr a_2 \end{bmatrix} *B = \begin{bmatrix} a_1B\cr a_2B \end{bmatrix} $

선형조합(Linear Combination): Ax는 A의 열벡터에 대한 선형조합

행렬을 구조적으로 보기

행렬은 열벡터의 리스트이다.
$ A = \begin{bmatrix} a_{11} & a_{12} & \ldots & a_{1n} \cr a_{21} & a_{22} & \ldots & a_{2n} \cr \vdots & \vdots & \ddots & \vdots \cr a_{m1} & a_{m2} & \ldots & a_{mn} \cr \end{bmatrix} = \begin{bmatrix} a_1 & a_2 & \dots & a_n \end{bmatrix} $ 여기서 $a_i$는 행렬 A의 i-번째 열벡터이다. 특히 각 열벡터는 m-벡터이기 때문에, $m*n$행렬은 m-벡터가 n개 있다고 해석!

행렬@벡터 연산을 구조적으로 보기

Ax는 행렬 A가 가지고 있는 열벡터의 선형조합이다.
$ Ax = \begin{bmatrix} a_{11} & a_{12} & \ldots & a_{1n} \cr a_{21} & a_{22} & \ldots & a_{2n} \cr \vdots & \vdots & \ddots & \vdots \cr a_{m1} & a_{m2} & \ldots & a_{mn} \cr \end{bmatrix} * \begin{bmatrix} x_1\cr x_2\cr \dots\cr x_n \end{bmatrix} $ = $ \begin{bmatrix} a_1 & a_2 & \dots & a_n \end{bmatrix} $ * $ \begin{bmatrix} x_1\cr x_2\cr \dots\cr x_n \end{bmatrix} $ $ = x_1a_1 + x_2a_2 + \dots + x_na_n $ 선형대수에서는 이처럼 벡터들에 대한 가중치 합을 선형조합(linear combination)이라 부른다.
Ax의 결과는 행렬 A가 가지고 있는 열벡터의 선형조합으로만 한계가 지어진다.

[중요] 선형시스템 Ax = b를 선형조합 관점에서 바라보기

$ Ax = \begin{bmatrix} 1 & 3 & 2 \cr 1 & 2 & -3 \cr 2 & 1 & -2 \cr \end{bmatrix} * \begin{bmatrix} x_1\cr x_2\cr x_3\cr \end{bmatrix} = \begin{bmatrix} 1\cr -9\cr -3\cr \end{bmatrix} $

(좌항)선형조합으로 해석한 Ax
$x_1$ * $ \begin{bmatrix} -1\cr 1\cr 2\cr \end{bmatrix}+ $ $x_2$ * $ \begin{bmatrix} 3\cr 2\cr 1\cr \end{bmatrix}+ $ $x_3$ * $ \begin{bmatrix} 2\cr -3\cr -2\cr \end{bmatrix} $
(우항) b
$ \begin{bmatrix} 1\cr -9\cr -3\cr \end{bmatrix} $
(정리) 선형시스템 Ax=b를 선형조합 관점에서 바라보기
행렬 A의 열벡터를 가중치합으로 선형조합할 때 벡터 b를 만들 수 있는 가중치 조합이 존재한다면, 선형시스템 Ax=b의 해는 존재한다. 그 해는 가중치 $x_i$들로 구성된 x이다.

Column Space(열공간)

행렬 A의 열벡터들에 대한 가능한 모든 선형조합의 결과를 모아 집합으로 구성할 수 있을 것이다. 이를 집합을 column space(열공간)이라 하고 다음과 같이 표기한다.
$col(A)$

Consistent Linear System
선형시스템 Ax=b가 해를 가지면 다음을 만족한다.
$b \in col(A)$

Consistent Linear System
선형시스템 Ax=b가 r가 없으면 다음을 만족한다.
$b \notin col(A)$