맨위로가기

벡터화

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

1. 개요

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

더 읽어볼만한 페이지

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

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_n는 ''n''×''n'' 단위 행렬이다.[1]

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'' 행렬의 공간에서 아다마르 곱(성분별 곱)을 사용하여 '''C'''''n''2로 매핑하며, 여기서 아다마르 곱이 사용된다.

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

4. 내적과의 호환성

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

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

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

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

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

5. 1. 선형 합 표현

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



\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



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

그러면 '''X'''의 벡터화된 버전은 다음과 같이 표현할 수 있다.

\operatorname{vec}(\mathbf{X}) = \sum_{i=1}^n \mathbf{B}_i \mathbf{X} \mathbf{e}_i

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

또는, 선형 합은 크로네커 곱을 사용하여 표현할 수 있다.

\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)` 함수가 있다.[1]

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

8. 응용

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

참조

[1] 문서 The identity for row-major vectorization is \operatorname{vec}(ABC) = (A \otimes C^\mathrm{T})\operatorname{vec}(B).
[2] 논문 Typing Linear Algebra: A Biproduct-oriented Approach
[3] 웹사이트 ks: Kernel Smoothing https://cran.r-proje[...] 2018
[4] 웹사이트 The R package 'sn': The Skew-Normal and Related Distributions such as the Skew-t https://cran.r-proje[...] 2017
[5] 서적 Hands-on Matrix Algebra Using R: Active and Motivated Learning with Applications World Scientific
[6] 서적 Matrix differential calculus with applications in statistics and econometrics John Wiley
[7] 논문 Matrix differential calculus with applications in the multivariate linear model and its diagnostics 2022-03



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com