본문 바로가기

AI/선형대수17

행렬의 조건수 (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.
[PCA–4] PCA 예제: Eigenfaces Extended Yale Face Database B 라는 얼굴 사진을 잔뜩 모아 놓은 사이트가 있다. http://vision.ucsd.edu/~iskwak/ExtYaleDatabase/ExtYaleB.html 38명의 사람 얼굴을 9개의 자세 및 64개의 서로 다른 조명 조건에서 촬영한 사진으로 구성 되어있는데 Cropped Images에 있는 사진들은 높이가 192 픽셀 너비가 168픽셀로 된 흑백 사진이다. 이 얼굴 사진들은 연구 목적으로 자유롭게 사용할 수 있다. PCA 알고리즘을 얼굴 사진 라이브러리에 적용하여 이른바 eigenfaces라는 축소 차원 좌표축을 구하고 사진 데이터를 eigenfaces로 표현하고 또 복원해 보도록 하자. 먼저 36명의 정면 얼굴 사진만을 추출하여 스냅샷 행렬을 .. 2021. 2. 24.
[PCA–3] 주성분 분석 (PCA) 특징 n차원 공간 상의 m개 데이터 \(\mathbf{x}^{(1)}, \mathbf{x}^{(2)}, ..., \mathbf{x}^{(m)} \in \mathbb{R}^n\) 에 대한 주성분 분석(PCA) 알고리즘을 정리하면 다음과 같다. (1) 데이터셋의 샘플 평균을 계산한다. \[ \mathbf{\mu} = \frac{1}{m} \sum_{i=1}^m \mathbf{x}^{(i)} \] (2) 모든 데이터셋을 다음과 같이 치환한다. \[ \mathbf{y}^{(i)}= \mathbf{x}^{(i)} - \mathbf{\mu} \] (3) 데이터셋의 스냅샷(snapshot) 행렬을 만든다. \[ Y = \begin{bmatrix} \mathbf{y}^{(1)} & \mathbf{y}^{(2) } & \cd.. 2021. 2. 20.
[PCA–2] 주성분 분석 (PCA) 알고리즘 유도 \(m\)개의 n차원 데이터 \(\mathbf{x}^{(1)}, \mathbf{x}^{(2)}, ..., \mathbf{x}^{(m)} \in \mathbb{R}^n\) 이 주어졌다고 하자. 이 데이터를 d차원 공간에 투사해서 차원(dimension)을 축소하는 것이 목적이다. 그렇다면 n차원의 부분 공간인 d차원 (\(d \lt n\))에서 직교 좌표축의 방향을 어떻게 결정해야 데이터의 정보 손실을 최소화할 수 있을까. 다음 그림은 2차원 데이터의 예를 도시한 것이다. 우선 새로운 좌표축의 원점을 \(m\)개 데이터의 평균점 \(\mathbf{\mu}\)에 위치시키도록 하자. \[ \mathbf{\mu} = \frac{1}{m} \sum_{i=1}^m \mathbf{x}^{(i)} \] 그리고 모든 데.. 2021. 2. 19.
[PCA–1] 주성분 분석 (PCA) 다음과 같이 2차원 공간(평면)상에 표현된 데이터 \(\mathbf{x}^{(i)}, \ i=1,...,m\) 이 있다. 데이터를 연결해 보니 데이터가 모두 직선상에 있다는 것을 알게 됐다고 하자. 이 직선으로 표현된 축(성분)을 \(z_1\)으로 한다면 애초에 \(x_1\)과 \(x_2\)의 두 축(성분)으로 이루어진 2차원 공간상의 데이터를 \(z_1\)축으로 이루어진 1차원 공간상에 표현할 수 있었을 것이다. 이와 같이 고차원 데이터를 저차원 데이터로 표현하는 것을 차원 축소(dimensionality reduction)라고 한다. 만약 데이터가 일직선 상에 있지 않고 약간 어긋나 있다면 어떨까. 그렇다고 하더라도 데이터가 나타내는 정보의 일부분을 잃는 것을 감수할 수 있다면 원래의 데이터 \(\m.. 2021. 2. 18.
놈 (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.