벡터화

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

벡터화는 행렬을 열 벡터로 변환하는 연산이다. 크로네커 곱, 아다마르 곱, 내적과의 호환성을 가지며, 행렬 곱셈을 선형 변환으로 표현하는 데 사용된다. 반벡터화는 대칭 행렬의 하삼각 부분만 벡터화하여 중복 정보를 줄이는 방법이다. MATLAB, GNU Octave, 줄리아, 파이썬 NumPy, R 등 다양한 프로그래밍 언어에서 벡터화를 위한 함수나 메서드를 제공한다. 벡터화는 행렬 미적분학, 무작위 벡터 및 행렬의 적률 계산, 머신 러닝 등 다양한 분야에 응용된다.

벡터화
📚 더 읽어볼만한 페이지
  • 빈 문단이 포함된 문서 - 광주고등법원
    광주고등법원은 1952년에 설치되어 광주광역시, 전라남도, 전북특별자치도, 제주특별자치도를 관할하며, 제주와 전주에 원외재판부를 두고 있다.
  • 빈 문단이 포함된 문서 - 1502년
    1502년은 율리우스력으로 수요일에 시작하는 평년으로, 이사벨 1세의 이슬람교 금지 칙령 발표, 콜럼버스의 중앙아메리카 해안 탐험, 바스쿠 다 가마의 인도 상관 설립, 크리미아 칸국의 킵차크 칸국 멸망, 비텐베르크 대학교 설립, 최초의 아프리카 노예들의 신대륙 도착 등의 주요 사건이 있었다.
  • 선형대수학 - 벡터 공간
    벡터 공간은 체 위의 가군으로 정의되는 대수적 구조로, 벡터 덧셈과 스칼라 곱셈 연산을 가지며 특정 공리들을 만족하고, 기저, 차원, 선형 사상 등의 개념을 통해 수학과 물리학 등 다양한 분야에서 활용된다.
  • 선형대수학 - 선형 결합
    선형 결합은 벡터 공간에서 벡터들의 스칼라 곱의 합으로 표현되는 식으로, 벡터 집합의 선형 독립성 판단 및 부분 공간 생성과 관련되며, 계수 제약을 통해 다양한 종류의 결합을 정의할 수 있고, 위상 벡터 공간이나 가군으로 일반화될 수 있다.
  • 행렬 - 스핀 (물리학)
    스핀은 양자역학적 각운동량으로, 양자화된 값을 가지며 자기 쌍극자 모멘트를 유발하여 다양한 분야에 응용되고 스핀트로닉스 기술 발전에 기여하지만, 전자의 스핀 기원은 아직 완전히 밝혀지지 않았다.
  • 행렬 - 파울리 행렬
    파울리 행렬은 양자역학에서 스핀을 나타내는 데 사용되는 에르미트 행렬이자 유니타리 행렬로, 행렬식은 -1이고 대각합은 0이며, 리 대수의 생성원이자 파울리 벡터로 정의되어 다양한 물리학 분야에서 활용된다.

2. 크로네커 곱과의 호환성

벡터화는 크로네커 곱과 함께 사용하여 행렬 곱셈을 행렬에 대한 선형 변환으로 표현한다. 예를 들어, \operatorname{ad}_A(X) = AX-XA (딸림 준동형, 복소수 항목을 갖는 리 대수 gl(n, C)})이면, \operatorname{vec}(\operatorname{ad}_A(X)) = (I_n\otimes A - A^\mathrm{T} \otimes I_n ) \text{vec}(X)이며, 여기서 I_nn×n 단위 행렬이다.

2.1. 주요 공식

다음은 크로네커 곱과 벡터화 연산 사이의 관계를 나타내는 주요 공식이다.

:\mbox{vec}(ABC) = (C^T \otimes A)\mbox{vec}(B)
:\mbox{vec}(ABC) = (I_n \otimes AB)\mbox{vec}(C) = (C^T B^T \otimes I_k)\mbox{vec}(A)
:\mbox{vec}(AB) = (I_m \otimes A)\mbox{vec}(B) = (B^T \otimes I_k)\mbox{vec}(A)

3. 아다마르 곱과의 호환성

벡터화는 대수적 준동형 사상으로, n × n 행렬의 공간에서 아다마르 곱(성분별 곱)을 사용하여 Cn2로 매핑하며, 여기서 아다마르 곱이 사용된다.

:\operatorname{vec}(A \circ B) = \operatorname{vec}(A) \circ \operatorname{vec}(B).

4. 내적과의 호환성

벡터화는 프로베니우스 내적(또는 힐베르트-슈미트 내적)과 다음과 같은 관계를 갖는다.

: tr(A* B) = vec(A)* vec(B)

여기서 위 첨수 켤레 전치를 나타낸다.

5. 선형 합으로서의 벡터화

행렬 벡터화 연산은 선형 합으로 표현될 수 있다. m × n영어 행렬 X를 벡터화하는 과정에서, Xei를 곱하면 i번째 열을 추출하고, Bi를 곱하면 최종 벡터에서 원하는 위치에 배치할 수 있다.

5.1. 선형 합 표현

X를 행렬이라고 하고, ein 차원 공간에 대한 i번째 표준 기저 벡터라고 하자. 즉, \mathbf{e}_i=\left[0,\dots,0,1,0,\dots,0\right]^\mathrm{T}이다. Bi를 다음과 같이 정의된 블록 행렬이라고 하자.

\mathbf{B}_i = \begin{bmatrix}
\mathbf{0} \\
\vdots \\
\mathbf{0} \\
\mathbf{I}_m \\
\mathbf{0} \\
\vdots \\
\mathbf{0}
\end{bmatrix}
= \mathbf{e}_i \otimes \mathbf{I}_m


Bi는 크기의 n개 블록 행렬로 구성되며, 열 단위로 쌓여 있으며, 이 행렬들은 i번째 행렬을 제외하고 모두 0으로 구성되어 있으며, i번째 행렬은 단위 행렬 Im이다.

그러면 X의 벡터화된 버전은 다음과 같이 표현할 수 있다.
\operatorname{vec}(\mathbf{X}) = \sum_{i=1}^n \mathbf{B}_i \mathbf{X} \mathbf{e}_i

Xei를 곱하면 i번째 열이 추출되고, Bi를 곱하면 최종 벡터에서 원하는 위치에 배치된다.

또는, 선형 합은 크로네커 곱을 사용하여 표현할 수 있다.
\operatorname{vec}(\mathbf{X}) = \sum_{i=1}^n \mathbf{e}_i \otimes \mathbf{X} \mathbf{e}_i

6. 반벡터화

대칭 행렬의 경우, 벡터화보다 반벡터화가 더 유용할 때가 있다. 반벡터화는 행렬의 하삼각 부분만을 사용하여 벡터를 생성하므로, 중복되는 정보를 줄일 수 있다.

6.1. 정의

대칭 행렬 A의 경우, 벡터 vec(A)는 행렬이 대칭성과 하삼각 부분, 즉 주대각선을 포함하여 개의 항목에 의해 완전히 결정되므로 엄격히 필요한 것보다 더 많은 정보를 포함한다. 이러한 행렬의 경우, 때때로 반-벡터화가 벡터화보다 더 유용하다. 대칭 행렬 A의 반-벡터화 vech(A)는 A의 하삼각 부분만 벡터화하여 얻은 열 벡터이다.

\operatorname{vech}(A) = [A_{1,1}, \ldots, A_{n,1}, A_{2,2}, \ldots, A_{n,2}, \ldots, A_{n-1,n-1}, A_{n,n-1}, A_{n,n}]^\mathrm{T}.

예를 들어, 2×2 행렬 A = \begin{bmatrix} a & b \\ b & d \end{bmatrix}의 경우, 반-벡터화는 \operatorname{vech}(A) = \begin{bmatrix} a \\ b \\ d \end{bmatrix}이다.

행렬의 반-벡터화를 벡터화로, 또는 그 반대로 변환하는 고유한 행렬이 존재하며, 각각 중복 행렬과 제거 행렬이라고 한다.

7. 프로그래밍 언어에서의 벡터화

행렬을 구현하는 프로그래밍 언어는 벡터화를 위한 쉬운 수단을 제공한다.

7.1. 주요 언어별 지원

MATLAB/GNU Octave에서 행렬 `A`는 `A(:)`로 벡터화할 수 있다. GNU Octave는 `vec(A)`와 `vech(A)`를 사용하여 전체 벡터화 및 반(半) 벡터화를 허용한다. 줄리아에도 `vec(A)` 함수가 있다.

파이썬 NumPy 배열은 `flatten` 메서드를 구현하고, R에서는 `c()` 또는 `as.vector()` 함수를 통해 원하는 효과를 얻을 수 있다. R에서 'ks' 패키지의 `vec()` 함수는 벡터화를 허용하고, 'ks' 및 'sn' 패키지 모두에 구현된 `vech()` 함수는 반(半) 벡터화를 허용한다.

8. 응용

벡터화는 행렬 미적분학과 무작위 벡터 및 행렬의 적률, 점근선, 자코비 행렬 및 헤세 행렬을 설정하는 데 사용된다. 또한 지역 민감도 및 통계적 진단에도 사용된다.