본문 바로가기

AI 수학/선형대수17

플롭 (Flop) 선형대수 수치 알고리즘의 복잡성을 표현하는 방법 중의 하나로 알고리즘을 수행하는 데 필요한 부동소수점 연산의 총 횟수를 사용한다. 부동소수점 연산 (floating point operation)을 간단히 플롭(flop)이라고 하는데, flop은 두 개의 부동소수점 숫자의 덧셈, 뺄셈, 곱셈 또는 나눗셈 등을 한 번 수행하는 것으로 정의한다. 컴퓨터의 성능을 수치로 나타내는 단위로서 사용되는 FLOPS도 있다. 이 때의 FLOPS는 FLoating point Operations Per Second의 약자로 해당 컴퓨터가 처리할 수 있는 초당 얼마나 많은 연산을 처리하는 지를 나타내는 단위다. 여기서는 부동소수점 연산(flop)의 횟수(count) 라는 의미의 flops에 대해서 설명한다. 플롭의 횟수, 즉.. 2023. 11. 9.
심플렉틱 행렬 (Symplectic Matrix) 심플렉틱 행렬(symplectic matrix)은 다음식을 만족하는 정사각형 행렬 \( M \in \mathbb{R}^{2n \times 2n}\) 으로 정의한다. \[ M^T JM=J \tag{1} \] 여기서 \[ J= \begin{bmatrix} 0 & I_n \\ -I_n & 0 \end{bmatrix} \] 이고 \(I_n\) 은 \(n \times n\) 단위행렬이다. 심플렉틱 행렬은 다음과 같은 몇가지 특징을 갖는다. 첫째 심플렉틱 행렬의 행렬식(determinant)은 항상 \(1\) 이다. 증명은 다음과 같다. 식 (1)에서 \[ \begin{align} \det ⁡J = 1 &= \det⁡(M^T ) \det⁡ J \det⁡ M \tag{2} \\ \\ &=(\det ⁡M )^2 \en.. 2023. 7. 1.
좌(왼쪽) 고유벡터 (left eigenvector) 고유벡터에도 좌파와 우파가 있다. 일반적으로 고유벡터라고 하면 우(오른쪽) 고유벡터(right eigenvector)를 의미한다. 그러면 좌(왼쪽) 고유벡터(left eigenvector)란 무엇이고 우(오른쪽) 고유벡터와는 어떤 관계가 있을까. 정방행렬 \(A \in \mathbb{R}^{n \times n}\) 의 우(오른쪽) 고유값(eigenvalue) \(\lambda\) 와 고유벡터 \(\mathbf{v}\) 는 다음과 같이 정의된다 (https://pasus.tistory.com/8). \[ A \mathbf{v} = \lambda \mathbf{v}, \ \ \ \mathbf{v} \ne 0 \tag{1} \] 반면 정방행렬 \(A\) 의 좌(왼쪽) 고유값 \(\kappa\) 와 고유벡터 \.. 2023. 2. 10.
Frobenius Norm 최소화 문제 행렬 \(A \in \mathbb{R}^{n_1 \times n_2} \), \(B \in \mathbb{R}^{n_3 \times n_4}\), \(Y \in \mathbb{R}^{n_1 \times n_4}\) 가 주어졌을 때, 다음과 같은 프로베니우스 놈(Frobenius norm)을 최소화하는 행렬 \(X \in \mathbb{R}^{n_2 \times n_3}\) 를 구하는 문제를 프로베니우스 놈 최소화 문제라고 한다. \[ X_{opt}= \arg \min_{X} \lVert AXB-Y \rVert_F \tag{1} \] 참고로 어떤 행렬 \(M\) 의 프로베니우스 놈 \( \lVert M \rVert _F\) 는 다음과 같이 정의된다. \[ \lVert M \rVert _F= \sqrt{ t.. 2022. 11. 3.
행렬의 조건수 (Condition Number) 어떤 함수 \(y=f(x)\)의 조건수(condition number)는 함수의 입력인 \(x\)의 작은 변화울에 대해 함수의 출력인 \(y\)의 변화율이 얼마인지를 나타내는 수로서, 함수의 민감도를 측정하는 지표이다. 행렬의 조건수도 일반 함수의 조건수 정의를 이용하여 유도할 수 있다. 다음과 같이 행렬 \(A \in \mathbb{R}^{n \times n}\)와 어떤 벡터 \( \mathbf{b} \in \mathbb{R}^n\)에 관한 방정식이 있다고 하자. \[ A \mathbf{x}= \mathbf{b} \] 여기서 벡터 \(\mathbf{b}\)가 어떤 작은 오차로 인하여 \(\mathbf{b}+\Delta \mathbf{b}\)로 변화했다면 이 방정식의 해 \(\mathbf{x}\)도 \(.. 2021. 3. 2.
놈 (norm) norm을 한글로 표기할 때 ‘놈’이라고 하기도 하고 ‘노름’이라고 하기도 하는데, 둘 다 좋은 뜻은 아니지만 ‘놈’이 조금 나은 것 같다. 사람에게도 이놈, 저놈, 그놈이 있듯이 norm에도 여러 놈이 있다. 😊 벡터 \( \mathbf{x} \in R^n \) 의 놈은 다음 4가지 성질을 만족하면서 벡터에서 실수 값을 연결하는 함수로 정의하고, \( \| \mathbf{x} \| \)로 표기한다. 1. \( \| \mathbf{x} \| \)은 음수가 아닌 실수값이다. 즉, \( \| \mathbf{x} \| \ge 0 \) 2. \( \mathbf{x}=0 \) 일 때만 \( \| \mathbf{x} \| =0 \) 이다. 3. 스칼라 \( \alpha \)에 대해서 \( \|\alpha \math.. 2020. 10. 24.
내적 (Inner Product) 두 개의 벡터 사이의 덧셈은 각각의 구성 성분을 더하는 것으로 정의한다. 그렇다면 곱셈 연산은 어떻게 정의할까. 곱셈 연산으로 두 가지 방식이 있다. 바로 dot product와 cross product 연산이다. 두 벡터 \( \mathbf{a}= \begin{bmatrix} a_1 & a_2 & \cdots & a_n \end{bmatrix}^T \)와 \( \mathbf{b}= \begin{bmatrix} b_1 & b_2 & \cdots & b_n \end{bmatrix}^T \)가 있을 때, 두 벡터의 dot product 또는 내적(inner product)은 다음과 같이 정의한다. \[ \mathbf{a} \cdot \mathbf{b} = a_1 b_1 + a_2 b_2 + \cdots + .. 2020. 10. 21.
유사 역행렬 (Pseudo Inverse Matrix) 역행렬은 full rank인 \( n \times n \) 정방 행렬(square matrix)에서만 정의된다. 정방 행렬이 아닌 다른 모양의 행렬에서는 역행렬 대신에 유사 역행렬(pseudo inverse matrix)을 정의할 수 있다. 어떤 \( m \times n \) 실수 행렬 \( A \)에 대해서 다음과 같이 4가지 조건을 만족하는 행렬 \( A^+ \)를 무어-펜로즈(Moore-Penrose) 유사 역행렬이라고 한다. 1. \( A A^+ A = A \) 2. \( A^+ A A^+ = A^+ \) 3. \( (A A^+)^T = A A^+ \) 4. \( (A^+ A)^T = A^+ A \) 특이값 분해(svd)를 이용하면 무어-펜로즈 유사 역행렬을 쉽게 계산할 수 있다. 특이값 분해란 .. 2020. 10. 19.
특이값 분해(SVD)의 응용: 이미지 압축 특이값 분해는 다음과 같이 어떤 \( m \times n \) 실수 행렬(real matrix) \( A \)를 3개의 행렬의 곱으로 분해한 것이다. \[ A = U \Sigma V^T \tag{1} \] 이 식을 풀어 쓰면 다음과 같다. \[ A = \sigma _1 \mathbf{u}_1 \mathbf{v}_1^T + \sigma _2 \mathbf{u}_2 \mathbf{v}_2^T + \cdots + \sigma _r \mathbf{u}_r \mathbf{v}_r^T \tag{2} \] 여기서 \( \sigma _i \)는 특이값으로서 그 숫자는 행렬 \( A \)의 랭크(rank)와 같다. 특이값은 큰 값에서 작은 값의 순서로 정렬시킨 것이다. \[ \sigma _1 \ge \sigma _2 \.. 2020. 7. 25.
특이값 분해(SVD)의 증명 어떤 \( m \times n \) 실수 행렬(real matrix) \( A \)와 그 전치 행렬 \( A^T \)의 행렬곱 \( AA^T \)와 \( A^T A \)는 대칭행렬이며 준정정 행렬(positive semi-definite matrix)이다. 먼저 대칭행렬인지 확인해 보자. 행렬곱을 전치한 다음에 원래 행렬과 같은 지 확인하면 된다. \[ (AA^T )^T=AA^T, \ \ \ (A^T A)^T=A^T A \] 그렇다면 \( AA^T \)이 준정정 행렬인지 확인해 보자. 어떤 벡터 \( \mathbf{x} \)에 대해서 다음 부등식을 만족하는지 확인하면 된다. \[ \begin{align} \mathbf{x} ^T (AA^T ) \mathbf{x} &= (A^T \mathbf{x} )^T .. 2020. 7. 23.