devlog.

선형대수 실무 개념 과제: ML 현장에서 마주치는 문제들

·10분 읽기·

이 글은 선형대수 1~4장 에서 다룬 개념들을 머신러닝 실무 시나리오에 적용하는 연습 문제 모음입니다. 수식 계산보다 개념의 적용과 해석에 초점을 맞춥니다.


Part 1. 데이터와 행렬#

문제 1-1. 데이터 행렬의 랭크 해석#

어떤 데이터셋에 1,000개의 샘플과 50개의 피처(feature)가 있습니다. 이 데이터를 행렬 XX로 표현했을 때 XX의 랭크가 30이라면 무슨 의미인가요?

정답 보기

랭크 30은 선형 독립인 피처가 실질적으로 30개 라는 의미입니다.

  • 50개의 피처 중 20개는 나머지 피처들의 선형 조합으로 표현 가능 → 중복 정보
  • 이 데이터가 실제로 담고 있는 정보의 차원은 50이 아닌 30

실무 시사점: PCA를 적용하면 50차원 → 30차원으로 줄여도 정보 손실이 없습니다. 실제로는 상위 몇 개 주성분만으로 대부분의 분산을 설명할 수 있어 30보다 더 줄일 수 있습니다.


문제 1-2. 다중공선성(Multicollinearity) 문제#

선형 회귀 모델을 학습할 때, 피처 x3=2x1+x2x_3 = 2x_1 + x_2 인 관계가 있다면 행렬 XTXX^T X 는 어떤 성질을 가질까요? 이것이 모델 학습에 어떤 영향을 미치나요?

정답 보기

x3=2x1+x2x_3 = 2x_1 + x_2 이므로 데이터 행렬의 열들이 선형 종속입니다.

따라서 XTXX^T X특이 행렬(singular) 이 되어:

det(XTX)=0(XTX)1 존재하지 않음\det(X^T X) = 0 \Rightarrow (X^T X)^{-1} \text{ 존재하지 않음}

선형 회귀의 closed-form 해 w^=(XTX)1XTy\hat{w} = (X^T X)^{-1} X^T y 를 구할 수 없게 됩니다.

해결책:

  • 중복 피처 제거
  • L2 정규화(Ridge): (XTX+λI)1(X^T X + \lambda I)^{-1} — 항상 역행렬이 존재
  • PCA로 독립 성분만 추출

문제 1-3. 배치 정규화와 행렬 연산#

딥러닝에서 배치 정규화(Batch Normalization)는 각 배치의 데이터를 평균 0, 분산 1로 변환합니다. 이 과정을 행렬 연산으로 표현하면?

정답 보기

배치 행렬 XX (행 = 샘플, 열 = 피처)에 대해:

1단계 — 평균 중심화:

Xcentered=X1μTX_{\text{centered}} = X - \mathbf{1}\mu^T

여기서 μ\mu 는 각 피처의 평균 벡터, 1\mathbf{1} 은 ones 벡터

2단계 — 표준편차로 나누기:

Xnorm=XcenteredσX_{\text{norm}} = X_{\text{centered}} \oslash \sigma

이것이 PCA의 데이터 중심화 단계와 동일한 연산입니다. 선형대수적으로는 데이터를 공분산 행렬의 고유벡터 방향으로 정렬하는 준비 단계입니다.


Part 2. 모델 학습과 최적화#

문제 2-1. 행렬식과 모델 수렴#

신경망 학습 중 가중치 행렬의 행렬식이 계속 0에 가까워진다면 어떤 문제가 발생하나요?

정답 보기

가중치 행렬 WWdet(W)0\det(W) \to 0 은 행렬이 특이 행렬에 가까워지는 것을 의미합니다.

발생하는 문제들:

  1. 그래디언트 소실(Vanishing Gradient): 역전파 시 행렬 곱으로 그래디언트가 전파되는데, 특이에 가까운 행렬을 곱하면 그래디언트가 0으로 수렴
  2. 표현력 손실: 랭크가 낮아져 신경망이 표현할 수 있는 공간이 좁아짐
  3. 역행렬 불안정: W1W^{-1} 계산이 수치적으로 불안정해짐

해결책: 배치 정규화, 잔차 연결(ResNet), 적절한 가중치 초기화(Xavier, He 초기화)


문제 2-2. 선형 변환으로 보는 레이어#

신경망의 한 레이어 y=Wx+by = Wx + b 에서 가중치 행렬 WW4×34 \times 3 이라면 이 레이어는 어떤 변환을 수행하나요? 역변환이 가능한가요?

정답 보기

WW4×34 \times 3 (4행 3열)이면:

  • 입력 차원: 3 (3차원 벡터 xx)
  • 출력 차원: 4 (4차원 벡터 yy)

이 레이어는 3차원 공간 → 4차원 공간으로의 선형 변환입니다.

역변환 불가: WW 가 정방행렬이 아니므로 역행렬이 존재하지 않습니다. 다만 의사역행렬(pseudoinverse) W+=(WTW)1WTW^+ = (W^T W)^{-1} W^T 를 사용해 근사 역변환은 가능합니다.

직관: 3차원 데이터를 4차원으로 끌어올리는 것은 임베딩(embedding)과 유사합니다. 오토인코더의 인코더/디코더가 이런 비정방 변환을 사용합니다.


문제 2-3. SVD와 모델 압축#

행렬 WW 를 특이값 분해(SVD)하면 W=UΣVTW = U\Sigma V^T 로 쓸 수 있습니다. 상위 kk 개의 특이값만 남긴 W^\hat{W} 를 사용하는 것이 모델 압축에 어떻게 도움이 되나요?

정답 보기

SVD는 행렬을 정보 중요도 순서로 분해합니다. 큰 특이값 = 많은 정보를 담은 방향.

원래 행렬: W=i=1rσiuiviTW = \sum_{i=1}^{r} \sigma_i \vec{u}_i \vec{v}_i^T

kk개만 유지: W^=i=1kσiuiviT\hat{W} = \sum_{i=1}^{k} \sigma_i \vec{u}_i \vec{v}_i^T

압축 효과:

  • 원본 저장: m×nm \times n 개 파라미터
  • 압축 저장: k(m+n+1)k(m + n + 1) 개 파라미터
  • kmin(m,n)k \ll \min(m, n) 이면 큰 압축률

실무 적용: LoRA(Low-Rank Adaptation)가 이 원리를 사용해 LLM을 효율적으로 파인튜닝합니다. 큰 가중치 행렬을 두 개의 저랭크 행렬로 근사합니다.


Part 3. 차원 축소와 임베딩#

문제 3-1. PCA vs 피처 선택#

100개의 피처를 10개로 줄여야 합니다. PCA를 쓰는 것과 상위 10개 피처를 그냥 선택하는 것의 차이는?

정답 보기
방법피처 선택PCA
결과원본 피처 10개 유지새로운 10개 주성분 생성
해석성높음 (원래 피처 의미 유지)낮음 (주성분은 원래 피처의 선형 결합)
정보 보존선택된 90개 피처 정보 손실분산 기준 최대 정보 보존
다중공선성여전히 존재할 수 있음주성분끼리 완전 직교 (독립)

선택 기준:

  • 해석이 중요하다면 → 피처 선택
  • 정보 보존이 중요하다면 → PCA
  • 다중공선성이 문제라면 → PCA가 해결책

문제 3-2. 고유값으로 설명 분산 계산#

공분산 행렬의 고유값이 [8.5,5.2,3.1,1.8,0.9,][8.5, 5.2, 3.1, 1.8, 0.9, \ldots] 일 때, 첫 2개 주성분이 전체 분산의 몇 %를 설명하나요? (전체 합 = 25)

정답 보기

설명 분산 비율=λ1+λ2iλi=8.5+5.225=13.725=54.8%\text{설명 분산 비율} = \frac{\lambda_1 + \lambda_2}{\sum_i \lambda_i} = \frac{8.5 + 5.2}{25} = \frac{13.7}{25} = 54.8\%

해석: 첫 2개 주성분만으로 전체 데이터 분산의 약 55%를 설명합니다.

실무 판단 기준:

  • 일반적으로 80~95% 이상의 설명 분산을 유지하는 주성분 수를 선택
  • Scree Plot(고유값을 큰 순으로 그린 그래프)에서 기울기가 급격히 꺾이는 지점(elbow)을 선택

문제 3-3. 벡터 유사도와 추천 시스템#

사용자 AA 의 영화 선호 벡터가 a=(3,1,4,1,5)\vec{a} = (3, 1, 4, 1, 5), 사용자 BB 의 벡터가 b=(1,5,2,6,1)\vec{b} = (1, 5, 2, 6, 1) 일 때, 두 사용자는 비슷한 취향인가요? 어떤 지표를 쓰나요?

정답 보기

코사인 유사도 를 사용합니다 (점곱 / L2-노름의 곱):

cosθ=aba2b2\cos\theta = \frac{\vec{a} \cdot \vec{b}}{\|\vec{a}\|_2 \|\vec{b}\|_2}

ab=3+5+8+6+5=27\vec{a} \cdot \vec{b} = 3 + 5 + 8 + 6 + 5 = 27

a2=9+1+16+1+25=527.21\|\vec{a}\|_2 = \sqrt{9+1+16+1+25} = \sqrt{52} \approx 7.21

b2=1+25+4+36+1=678.19\|\vec{b}\|_2 = \sqrt{1+25+4+36+1} = \sqrt{67} \approx 8.19

cosθ=277.21×8.190.457\cos\theta = \frac{27}{7.21 \times 8.19} \approx 0.457

코사인 유사도가 0.46으로 낮은 편입니다. 두 사용자의 취향은 크게 다릅니다 (A는 액션·SF 선호, B는 로맨스·드라마 선호 패턴).

실무: 협업 필터링(Collaborative Filtering) 추천 시스템이 이 원리를 사용합니다.


Part 4. 신경망과 행렬#

문제 4-1. 행렬 곱셈으로 보는 포워드 패스#

2층 신경망의 포워드 패스를 행렬 곱으로 표현해보세요.

  • 입력: xR3x \in \mathbb{R}^3
  • 1층 가중치: W1R4×3W_1 \in \mathbb{R}^{4 \times 3}, 편향: b1R4b_1 \in \mathbb{R}^4
  • 2층 가중치: W2R2×4W_2 \in \mathbb{R}^{2 \times 4}, 편향: b2R2b_2 \in \mathbb{R}^2
  • 활성화 함수: σ\sigma (ReLU)
정답 보기

h1=σ(W1x+b1)(4×3)(3×1)+(4×1)=(4×1)h_1 = \sigma(W_1 x + b_1) \quad (4 \times 3)(3 \times 1) + (4 \times 1) = (4 \times 1)

y=W2h1+b2(2×4)(4×1)+(2×1)=(2×1)y = W_2 h_1 + b_2 \quad (2 \times 4)(4 \times 1) + (2 \times 1) = (2 \times 1)

전체 배치로 처리할 때 (nn개 샘플):

H1=σ(XW1T+1b1T)(n×3)(3×4)=(n×4)H_1 = \sigma(X W_1^T + \mathbf{1}b_1^T) \quad (n \times 3)(3 \times 4) = (n \times 4)

Y=H1W2T+1b2T(n×4)(4×2)=(n×2)Y = H_1 W_2^T + \mathbf{1}b_2^T \quad (n \times 4)(4 \times 2) = (n \times 2)

이처럼 신경망의 포워드 패스 전체가 행렬 곱셈의 연속으로 표현됩니다. GPU는 이 대규모 행렬 곱을 병렬 처리합니다.


문제 4-2. 역전파와 연쇄 법칙#

손실 LL 에 대한 W1W_1 의 그래디언트 LW1\frac{\partial L}{\partial W_1} 를 구하는 과정을 선형대수 관점에서 설명하세요.

정답 보기

역전파는 연쇄 법칙의 행렬 버전입니다.

LW1=Lh1h1W1\frac{\partial L}{\partial W_1} = \frac{\partial L}{\partial h_1} \cdot \frac{\partial h_1}{\partial W_1}

각 단계:

  1. 출력층에서 그래디언트 계산: δ2=Ly\delta_2 = \frac{\partial L}{\partial y}

  2. 1층으로 역전파: δ1=(W2Tδ2)σ(z1)\delta_1 = (W_2^T \delta_2) \odot \sigma'(z_1)

    • W2TW_2^T: 전치 행렬을 곱해 차원을 맞춤
    • \odot: 원소별 곱 (Hadamard product)
  3. W1W_1 의 그래디언트: LW1=δ1xT\frac{\partial L}{\partial W_1} = \delta_1 x^T

핵심: 역전파에서 전치 행렬이 등장하는 이유는 포워드 패스의 선형 변환을 역방향으로 추적하기 때문입니다. 선형 변환의 역방향 = 전치 행렬 곱.



퀴즈: 개념 종합#

Q1. 다음 중 역행렬이 존재하는 행렬은?

A=[2412],B=[3112],C=[0000]A = \begin{bmatrix} 2 & 4 \\ 1 & 2 \end{bmatrix}, \quad B = \begin{bmatrix} 3 & 1 \\ 1 & 2 \end{bmatrix}, \quad C = \begin{bmatrix} 0 & 0 \\ 0 & 0 \end{bmatrix}

정답 보기
  • det(A)=44=0\det(A) = 4 - 4 = 0특이, 역행렬 없음
  • det(B)=61=50\det(B) = 6 - 1 = 5 \neq 0비특이, 역행렬 존재
  • det(C)=0\det(C) = 0특이, 역행렬 없음

정답: B


Q2. 머신러닝에서 L2 정규화(Ridge)가 다중공선성 문제를 해결하는 선형대수적 이유는?

정답 보기

다중공선성이 있으면 XTXX^T X 가 특이 행렬이 되어 역행렬이 존재하지 않습니다.

L2 정규화는 대각 원소에 λ\lambda 를 더합니다:

(XTX+λI)1(X^T X + \lambda I)^{-1}

단위 행렬 II 를 더하면 모든 고유값에 λ\lambda 가 추가됩니다:

λi(XTX+λI)=λi(XTX)+λλ>0\lambda_i(X^T X + \lambda I) = \lambda_i(X^T X) + \lambda \geq \lambda > 0

따라서 행렬식이 항상 0보다 크고 역행렬이 항상 존재하게 됩니다.


Q3. PCA에서 고유벡터들이 서로 직교(orthogonal)하는 이유는?

정답 보기

공분산 행렬 Σ\Sigma대칭 행렬입니다 (Σ=ΣT\Sigma = \Sigma^T).

대칭 행렬의 성질:

  • 서로 다른 고유값에 대응하는 고유벡터는 항상 직교합니다
  • 이를 스펙트럼 정리(Spectral Theorem) 라고 합니다

직교하는 주성분들은 서로 독립적인 방향을 가리키므로, 각 주성분이 겹치지 않는 독립적인 정보를 담게 됩니다. 이것이 PCA가 다중공선성을 자동으로 제거하는 이유입니다.

관련 포스트