학습 목표: ai기술을 이해하기 위해 바탕이 되는 수학적 지식을 습득한다.
목차
-
Matrix Decomposition
- 1.1 Determinant & trace
- 1.2 Eigenvector & Eigenvalue
- 1.3 Decomposition
-
Convex Optimization
- 2.1 Gradient Algorithms
- 2.2 Stochastic Gradient Descent (SGD)
- 2.3 KKT Condition
-
Principal Component Analysis (PCA)
- 3.1 Motivation
- 3.2 algorithm
- 3.3 Process & proof
1. Matrix Decomposition(행렬 분해)
1.1 Determinant and trace
행렬이 다음과 같이 존재할 때,
A=(acbd)
determinant
det(A) = ∣∣∣∣∣acbd∣∣∣∣∣=(ad−bc)로 계산된다.
특징
- det(AB)=det(A)×det(B)
- det(A)= det(AT)
- det(A−1)= 1/det(A)
Trace
정의: 정사각 행렬에서 대각선 성분들의 합을 의미한다.
tr(A)=i=1∑naii
특징
- tr(A+B)=tr(A)+tr(B)
- tr(αA) = \alpha tr(A)$
- tr(In)=n
1.2 Eigenvalues and Eigenvector
특정 벡터 x와 실수값 λ에 대하여 다음과 같이 나타낼 수 있을 때,
Ax=λx(1)
x는 A의 eigenvector이며, λ는 A의 eigenvalue라 한다.
det(A−λIn)=0를 계산해 eigenvalue λ를 구한 뒤, 식(1)에 대입하여 eigenvector를 얻을 수 있다.
determinant와 trace와의 관계
det(A)=i=1∏nλi
tr(A)=i=1∑nλi
1.3 Decomposition
1. Cholesky Decomposition
행렬 A가 symmetric하고 positive definite한 경우, A=LLT로 나타낼 수 있다.
(L은 lower-triangular matrix with positive diagonals)
대각선 위 성분값이 0인 행렬, L을 A행렬의 Cholesky factor라 부른다.
A=LLT로 나타내면 determinant 계산이 쉬워진다.
det(A)=det(L)×det(LT)=det(L)2
det(A)=∏iLii2(det(L)=∏iLii)
2. Eigen Value Decomposition (EVD)
Diagonal matrix
대각선 성분을 제외한 나머지 성분값이 0인 행렬
D=⎝⎜⎜⎛d1⋮0⋯⋯0⋮dn⎠⎟⎟⎞
- 특징
Dk=⎝⎜⎜⎛d1k⋮0⋯⋯0⋮dnk⎠⎟⎟⎞,D−1=⎝⎜⎜⎛1/d1⋮0⋯⋯0⋮1/dn⎠⎟⎟⎞,det(D)=d1d2⋯dn
위와 같은 특징으로 계산상의 편의성이 있고
행렬 A에 대해 D=P−1AP로 변환할 수 있는 경우, A는 diagonalizable하다. (이때, P는 invertible)
또한 orthogonal P인 경우(PP⊤=I), D=P−1AP=P⊤AP 이며 A는 orthogonally diagonalizable하다.
Ak=PDkP−1
det(A)=det(P)det(D)det(P−1)=det(D)=∏idii
A가 symmetric ⇔ A는 orthogonally diagonalizable
Spectral Theorem (A=PDP⊤)
A가 symmetric한 경우,
(a) eigenvalues 모두 실수값
(b) eigenvectors 는 서로 perpendicular
(c) orthogonal eigenbasis
따라서 P는 eigenvectors로 두면, D는 eigenvalues가 되고 AP=PD 로 나타낼 수 있다.
Singular Value Decomposition (SVD)
- A가 square, non-symmetric한 경우
- A가 non-square non-symmetric한 경우
A∈Rm×n,S=A⊤A∈Rn×n S:symmetric & positive semidefinite
A=U∑V⊤(U∈Rm×m,V∈Rn×n,∑:m×nmatrix,∑ii=σi>0)
2. Convex Optimization
머신러닝이나 딥러닝에서 학습시 최적화된 파라미터를 찾는 과정은 optimization problem으로 생각할 수 있으므로 최적화 이론에 대해 알아둘 필요가 있다.
특히,최적화하려는 문제가 convex optimization이라면 최소화하려는 목적함수를 항상 global하게 찾을 수 있다.
2.1 Gradient Algorithms
- goal
minimizef(x)f(x):Rn→R,f∈C1
- Gradient-type algorithms
xk+1=xk+γkdk,k=0,1,2,…
∇f(x)⋅d<0 인 d를 선택한 경우, xα=x+αd(α>0)→f(xα)<f(x) 만족
γ is step size
d를 gradient의 반대 방향으로 설정하면 간단하게 만족
- Steepest gradient descent
dk=−∇f(xk)⊤.
- 학습량에 따라
- Batch gradient descent ( the entire n )
- Mini-batch gradient descent ( k < n data )
- Stochastic gradient descent ( k < n data with unbiased gradient estimation)
- 업데이트 방식에 따라
- Momentum
- NAG
- Adagrad
- RMSprop
- Adam
2.2 Stochastic Gradient Descent (SGD)
머신러닝에서 학습시 실제값과 예측값 사이 차이를 Loss라고 하며 이를 줄이는 것이 목적이다.
다음은 Optimization 문제에서 constraint가 없는 경우 파라미터의 업데이트 과정이다.
-
Loss function L(θ)=∑i=1nLn(θ)
-
Gradient update
θk+1=θk−γk∇L(θk)⊤=θk−γkn=1∑N∇Ln(θk)⊤
-
Batch gradient descent : ∑n=1N∇Ln(θk)⊤ 모든 데이터를 한 번에 업데이트
-
Mini-batch gradient descent : ∑n∈KN∇Ln(θk)⊤ 특정 subset으로 나누어 업데이트 ( K < N )
-
Stochastic gradient descent : subset K에서 무작위로 선택하여 업데이트
n=1∑N∇Ln(θk)⊤=E[n∈K∑∇Ln(θk)⊤]
-
step size setting
- too small → slow update
- too big → overshoot, zig-zag, fail to converge
with "Momentum"
xk+1=xk−γi∇f(xk)⊤+αΔxkα∈[0,1]
Δxk=xk−xk−1
- memory term : αΔxk,α 는 얼마나 과거를 유지할 것인지 조절하는 파라미터
만약 constraint가 있는 경우에는 어떻게 gradient를 구할 수 있을까?
constrained optimization problem 형태를 살펴보면
minimizesubjecttof(x)gi(x)≤0,i=1,2,…,mhj(x)=0,i=1,2,…,p
이다.
inequality와 equality constraint를 만족하는 x에 대하여 f(x)를 최소화하는 문제이다.
이를 푸는 방법으로 Lagrange multipliers가 있다.
아이디어는 목적함수의 f(x)에 constraint를 weighted sum한 새로운 함수 D(λ,ν)를 설정하여 계산하는 것이다.
-
Lagrangian: L(x,λ,ν)=f(x)+∑λigi(x)+∑νjhj(x)
-
Lagrange multipliers: λ=(λi:i=1,…,m)⪰0,ν=(ν1,…,νp)
-
Lagrange dual function: D(λ,ν)=xinfL(x,λ,ν)
라그랑지안을 다시 살펴보면 L과 f(x)에서 뒤에 추가된 항은 0보다 작거나 같다.
dual function 장점은 D(λ,ν)=d∗≤p∗ ( p∗는 f(x)의 최적의 해 )를 만족한다는 것이다. ( Best lower bound )
2.3 KKT Condition
gi(x∗)≤0,hi(x∗)=0,λi∗⪰0λi∗gi(x∗)=0∇f(x)+∑λi∗∇gi(x∗)+∑νj∗∇hj(x∗)=0
마지막 줄의 조건을 만족한다면 KKT condition을 만족한다하며 이 경우, \
primal-dual optimal에서 동일한 최적 값을 얻는 필요 충분 조건이 된다. (p∗=d∗)
3. Principal Component Analysis (PCA)
3.1 Motibation
고차원으로 구성된 데이터는 분석하기 어려운 경우가 많다.
또한 어떤 성분은 분석에 필요없을 정도로 불필요한 경우도 있다. (Redundant-비슷한 값)
따라서 선형 결합으로 분산이 큰 방향의 축들만 사용하여 차원을 줄이고 불필요한 성분 축을 제거하는 방법이 필요하다.
3.2 PCA Algorithm
- Centering: feature의 평균을 빼서 데이터의 평균이 원점에 오도록 조정
- Standardization: 각 특성의 표준편차로 나누어 서로 다른 특성의 스케일을 조정
(1 & 2는 각 피쳐별로 normalization한것과 같다.)
- Eigenvalue/vector: 데이터 공분산(Covariance) 행렬의 큰 M개의 eigenvalue와 eigenvector를 계산 (M은 전체 N 차원에서 축소시킬 차원의 수)
- Projection: eigenvectors로 사영
- 1과 2과정을 역으로 풀어준다. (원 데이터 크기(scale)로 맞춘다.)
Data Covariance Matrix
N: number of samples,
D: number of measurements (features)
iid dataset X={x1,x2,…,xN}, mean=0
X=(x1,…,xN)=⎝⎜⎜⎜⎜⎛x1,1x2,1xD,1x1,2x2,2xD,2……⋮…x1,Nx2,NxD,N⎠⎟⎟⎟⎟⎞∈RD×N
- covariance matrix
S=N1XX⊤=N1n=1∑Nxnxn⊤∈RD×D
Low Dimensional Representation
zn=B⊤xn∈RM, projection matrix B=(b1,b2,…,bM)∈RD×M
x~n=Bzn (B are orthonormal BB⊤=I,B⊤=B−1)
데이터 피쳐의 D차원은 projection matrix를 거쳐 M차원으로 축소된다. (M<D)
z는 차원 축소된 project 데이터
x~는 z에 대해서 reconstruction 데이터
3.3 PCA Process & proof
우리의 목표는 데이터가 고차원(D) 피쳐를 가질때, 저차원(M) 피쳐 subspace로 매핑하는 것이다. 기본이 되는 아이디어는 3.1과 같이 분산이 큰 축을 사용하는 것이다.
3.2에서 공분산 행렬의 eigenvalue가 큰 M개의 eigenvector들을 사용하여 차원 축소를 진행하는데 그 이유에 대해서 살펴보자.
의 z1 variance를 구하면
V1=var[z1]=N1n=1∑Nz1n2,z1n=b1⊤xnV1=N1n=1∑N(b1⊤xn)2=N1n=1∑Nb1⊤xnxn⊤b1=b1⊤(N1n=1∑Nxnxn⊤)b1=b1⊤Sb1
공분산 행렬 S가 튀어나오고 이제 variance를 maximization하는 B를 구하면 된다.
optimazation problem을 풀어보자.
Maximizeb1⊤Sb1subjectto∣∣b1∣∣2=1
Lagrange multiplier를 사용하면
Sb1=λ1b1,b1⊤b1=1→λ1:eigenvalue,b1:eigenvectorofSV1=b1⊤Sb1=λ1b1⊤b1=λ1
variance가 큰 축을 순서대로 M개 선택하는 것은 공분산 행렬의 eigenvalue가 큰 eigenvector 선택하는 것임을 알 수 있다.
정리
-
빅데이터를 다룰 때, 행렬을 통한 계산으로 학습하거나 문제를 풀게 되는데 기본이 되는 행렬의 특징을 살펴보았다.
-
머신러닝 및 딥러닝에서 잘 학습된 파라미터를 찾을 때, Loss function의 gradient를 사용한다. 이는 목적함수를 최소화하는 Optimization problem으로 생각할 수 있으며 Convex한 방법으로 기술할 수 있다면 최적의 해를 찾을 수 있다. ( Optimization problem은 non-convex한 경우에도 Lagrange dual function으로 풀 수 있다.)
-
PCA는 데이터의 특성 차원이 큰 경우 선형 변환을 통해 핵심이 되는 축만 선택하여 특성 차원을 줄이는 방법이다. 이때, 공분산 행렬의 eigenvalue가 큰 eigenvector가 핵심 축이 된다.