검색
← 모듈 로드맵

선형대수 2: 고유값 · 고유벡터 · 특잇값 분해(SVD)

강의 · 준전문가 · KAITABASE 정리

고유값 · 고유벡터 · 대칭 행렬 분해 · SVD · 낮은 랭크 근사 · PCA를 2×2 손계산과 넘파이 검산으로 익히는 수업

먼저 알아야 할 것

행렬-벡터 곱행렬식 · 랭크분산 · 공분산

다루는 내용

행렬을 "어느 방향으로 얼마나 늘리는가"로 쪼개는 고유값 분해와, 아무 행렬이나 돌리기 · 늘리기 · 돌리기로 쪼개는 SVD를 다룹니다. 특성 방정식 · 대각합 · 행렬식 검산, 거듭제곱법, 평점 행렬의 랭크 2 근사와 근사 오차(에카르트-영 정리)를 직접 계산하고, 공분산 행렬의 고유벡터가 주성분임을 5개 점으로 확인해 PCA · 추천 · LoRA로 연결합니다.

해설

선형대수 2: 고유값 · 고유벡터 · 특잇값 분해(SVD)

행렬은 공간을 늘리고 돌리는 변환입니다. 고유값 분해는 "어느 방향으로 얼마나 늘리는가"를, 특잇값 분해(SVD)는 어떤 행렬이든 "돌리기 → 늘리기 → 돌리기"로 쪼개 보여 줍니다. 이 수업은 2 × 2 행렬로 고유값을 손으로 구하고, 거듭제곱법으로 확인하고, SVD로 평점 행렬을 낮은 랭크로 근사한 뒤, 공분산 행렬의 고유벡터가 곧 주성분(PCA)임을 5개 점으로 계산합니다.

항목내용
참고 자료Dive into Deep Learning 부록 'Eigendecompositions' · d2l.ai/chapter_appendix-mathematics-for-deep-learning/eigendecomposition.html, 『Mathematics for Machine Learning』 4장
트랙 · 수준수학 · 중급
이 수업의 범위고유값 · 고유벡터의 뜻, 특성 방정식, 대각합 · 행렬식과의 관계, 대칭 행렬의 고유값 분해, 양의 정부호, 거듭제곱법, SVD, 낮은 랭크 근사와 근사 오차, 공분산 행렬과 PCA, 설명된 분산 비율
먼저 알면 좋은 것선형대수 1의 행렬-벡터 곱 · 전치 · 행렬식 · 랭크, 분산의 뜻

들어가기 전에

한눈에 보기

  • 고유벡터 = "변환해도 방향이 안 바뀌는 벡터", 고유값 = "그 방향으로 늘어나는 배율"임을 압니다.
  • 2 × 2 행렬의 고유값을 특성 방정식으로 직접 구하고, 대각합 · 행렬식으로 검산합니다.
  • 대칭 행렬은 QΛQ⊤\mathbf{Q}\boldsymbol{\Lambda}\mathbf{Q}^\top로 분해된다는 것과 그 뜻을 압니다.
  • SVD A=UΣV⊤\mathbf{A} = \mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^\top로 아무 행렬이나 쪼개고, 큰 특잇값 몇 개로 행렬을 근사합니다.
  • PCA가 "공분산 행렬의 고유벡터 방향으로 데이터를 다시 보는 것"임을 숫자로 확인합니다.

1. 고유벡터와 고유값: 방향이 안 바뀌는 벡터

직관(해설용 비유): 고무판을 한쪽으로 잡아당기면 판 위의 화살표 대부분은 방향이 비틀어집니다. 그런데 당기는 방향과 나란한 화살표는 방향은 그대로이고 길이만 늘어납니다. 그 화살표가 고유벡터(eigenvector), 늘어난 배율이 고유값(eigenvalue)입니다.

Av=λv,v≠0\mathbf{A}\mathbf{v} = \lambda \mathbf{v}, \qquad \mathbf{v} \neq \mathbf{0}
기호뜻
A\mathbf{A}정사각 행렬 (n×nn \times n)
v\mathbf{v}고유벡터 — 변환 뒤에도 같은(또는 정반대) 방향
λ\lambda고유값 — 늘어나는 배율 (음수면 방향이 뒤집힘, 0이면 눌려 사라짐)

숫자로 해 보기(해설용): A=(2112)\mathbf{A} = \begin{pmatrix} 2 & 1 \\ 1 & 2 \end{pmatrix}에 두 벡터를 넣어 봅니다.

  • A(1,1)⊤=(3,3)⊤=3⋅(1,1)⊤\mathbf{A}(1, 1)^\top = (3, 3)^\top = 3 \cdot (1, 1)^\top → 고유값 3
  • A(1,−1)⊤=(1,−1)⊤=1⋅(1,−1)⊤\mathbf{A}(1, -1)^\top = (1, -1)^\top = 1 \cdot (1, -1)^\top → 고유값 1
  • A(1,0)⊤=(2,1)⊤\mathbf{A}(1, 0)^\top = (2, 1)^\top → 방향이 바뀜, 고유벡터 아님

이 행렬은 대각선 (1,1)(1, 1) 방향으로 3배 늘리고, 그와 수직인 (1,−1)(1, -1) 방향은 그대로 둡니다.

2. 고유값 구하기: 특성 방정식

단계

  1. Av=λv\mathbf{A}\mathbf{v} = \lambda\mathbf{v}를 (A−λI)v=0(\mathbf{A} - \lambda\mathbf{I})\mathbf{v} = \mathbf{0}으로 옮깁니다.
  2. 0\mathbf{0}이 아닌 v\mathbf{v}가 있으려면 A−λI\mathbf{A} - \lambda\mathbf{I}가 공간을 눌러야 하므로(역행렬이 없어야 하므로) 행렬식이 0이어야 합니다.
  3. det⁡(A−λI)=0\det(\mathbf{A} - \lambda\mathbf{I}) = 0 — 특성 방정식(characteristic equation) — 을 풀어 λ\lambda를 구합니다.
  4. 각 λ\lambda를 1단계 식에 넣어 v\mathbf{v}를 구합니다.

숫자로 해 보기(해설용): 위 A\mathbf{A}에서

det⁡(2−λ112−λ)=(2−λ)2−1=λ2−4λ+3=(λ−3)(λ−1)=0\det\begin{pmatrix} 2 - \lambda & 1 \\ 1 & 2 - \lambda \end{pmatrix} = (2 - \lambda)^2 - 1 = \lambda^2 - 4\lambda + 3 = (\lambda - 3)(\lambda - 1) = 0

이므로 λ=3,1\lambda = 3, 1입니다. λ=3\lambda = 3이면 (−111−1)v=0\begin{pmatrix} -1 & 1 \\ 1 & -1 \end{pmatrix}\mathbf{v} = \mathbf{0} → v1=v2v_1 = v_2, 즉 (1,1)(1, 1) 방향입니다.

검산 요령: 고유값의 합은 대각합(trace, 대각 원소의 합), 곱은 행렬식과 같습니다. 여기서 3+1=4=2+23 + 1 = 4 = 2 + 2, 3×1=3=2⋅2−1⋅13 \times 1 = 3 = 2 \cdot 2 - 1 \cdot 1 ✓.

3. 대칭 행렬의 고유값 분해

직관: 대칭 행렬(A=A⊤\mathbf{A} = \mathbf{A}^\top)은 특히 다루기 쉽습니다. 고유값이 모두 실수이고, 고유벡터들을 서로 수직으로 고를 수 있습니다. 그래서 변환을 "고유벡터 축으로 돌리기 → 축마다 늘리기 → 되돌리기"로 쪼갤 수 있습니다.

A=QΛQ⊤\mathbf{A} = \mathbf{Q}\boldsymbol{\Lambda}\mathbf{Q}^\top
기호뜻
Q\mathbf{Q}열이 길이 1인 고유벡터들인 직교 행렬 (Q⊤Q=I\mathbf{Q}^\top\mathbf{Q} = \mathbf{I})
Λ\boldsymbol{\Lambda}대각선에 고유값을 놓은 대각 행렬
Q⊤\mathbf{Q}^\top직교 행렬의 역행렬 — 전치만 하면 됨

숫자로 해 보기(해설용): 위 예에서 Q=12(111−1)\mathbf{Q} = \frac{1}{\sqrt{2}}\begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}, Λ=diag(3,1)\boldsymbol{\Lambda} = \mathrm{diag}(3, 1)이고, 곱해 보면 원래 A\mathbf{A}가 나옵니다. 넘파이 np.linalg.eigh도 고유값 1,31, 3과 같은 방향(부호만 다를 수 있음)의 고유벡터를 냅니다. 고유벡터는 방향만 정해지므로 −v-\mathbf{v}도 고유벡터입니다.

양의 정부호(positive definite): 고유값이 모두 양수인 대칭 행렬입니다. 모든 x≠0\mathbf{x} \neq \mathbf{0}에 대해 x⊤Ax>0\mathbf{x}^\top\mathbf{A}\mathbf{x} > 0이고, 그릇 모양의 이차 함수를 만듭니다. 손실 함수의 곡률(헤세 행렬)이 양의 정부호이면 그 점은 극소점입니다 — 최적화 기초에서 볼록성과 연결됩니다.

왜 이렇게 쪼개나: 분해해 두면 행렬의 거듭제곱이 쉬워집니다. Ak=QΛkQ⊤\mathbf{A}^k = \mathbf{Q}\boldsymbol{\Lambda}^k\mathbf{Q}^\top이라, 같은 변환을 여러 번 하면 가장 큰 고유값 방향이 압도하게 됩니다. RNN에서 같은 가중치를 수십 번 곱하면 기울기가 폭발하거나 사라지는 이유도 이것입니다(고유값이 1보다 크면 폭발, 작으면 소멸).

4. 거듭제곱법: 가장 큰 고유값을 반복으로 찾기

직관: 아무 벡터나 골라 A\mathbf{A}를 계속 곱하고 길이를 1로 맞추면, 3절의 이유로 가장 큰 고유값의 고유벡터 쪽으로 끌려갑니다.

숫자로 해 보기(해설용, 넘파이로 실행): x0=(1,0)\mathbf{x}_0 = (1, 0)에서 시작해 x←Ax/∥Ax∥\mathbf{x} \leftarrow \mathbf{A}\mathbf{x} / \|\mathbf{A}\mathbf{x}\|를 반복하고, x⊤Ax\mathbf{x}^\top\mathbf{A}\mathbf{x}로 고유값을 추정합니다.

반복x\mathbf{x}고유값 추정
1(0.894, 0.447)2.800
2(0.781, 0.625)2.976
3(0.733, 0.680)2.997
5(0.710, 0.704)3.000

(1,1)/2≈(0.707,0.707)(1, 1)/\sqrt{2} \approx (0.707, 0.707)과 고유값 3으로 빠르게 다가갑니다. 수렴 속도는 두 고유값의 비 1/31/3에 달려 있어, 비가 1에 가까우면 느립니다. 아주 큰 행렬에서 가장 큰 고유값 몇 개만 필요할 때 이런 반복 방법이 쓰입니다.

5. 특잇값 분해(SVD): 어떤 행렬이든 쪼개기

직관: 고유값 분해는 정사각 행렬에만, 깔끔한 분해는 대칭 행렬에만 됩니다. 데이터 행렬은 보통 직사각형(예제 수 ≠ 특성 수)입니다. 특잇값 분해(Singular Value Decomposition, SVD)는 모든 행렬을 "돌리기 → 축마다 늘리기 → 돌리기"로 쪼갭니다.

A=UΣV⊤,A∈Rm×n\mathbf{A} = \mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^\top, \qquad \mathbf{A} \in \mathbb{R}^{m \times n}
기호뜻
V\mathbf{V} (n×nn \times n)입력 공간의 직교 축 — 오른쪽 특이벡터
Σ\boldsymbol{\Sigma} (m×nm \times n)대각선에 특잇값 σ1≥σ2≥⋯≥0\sigma_1 \ge \sigma_2 \ge \dots \ge 0
U\mathbf{U} (m×mm \times m)출력 공간의 직교 축 — 왼쪽 특이벡터

고유값과의 관계: A⊤A=VΣ⊤ΣV⊤\mathbf{A}^\top\mathbf{A} = \mathbf{V}\boldsymbol{\Sigma}^\top\boldsymbol{\Sigma}\mathbf{V}^\top이므로, A⊤A\mathbf{A}^\top\mathbf{A}의 고유값이 특잇값의 제곱이고 고유벡터가 V\mathbf{V}의 열입니다.

숫자로 해 보기(해설용): M=(3045)\mathbf{M} = \begin{pmatrix} 3 & 0 \\ 4 & 5 \end{pmatrix}이면 M⊤M=(25202025)\mathbf{M}^\top\mathbf{M} = \begin{pmatrix} 25 & 20 \\ 20 & 25 \end{pmatrix}이고, 2절과 같은 방법으로 고유값은 25±2025 \pm 20, 즉 45,545, 5입니다. 따라서 특잇값은 45=35≈6.708\sqrt{45} = 3\sqrt{5} \approx 6.708, 5≈2.236\sqrt{5} \approx 2.236입니다. 넘파이 np.linalg.svd의 결과와 같습니다.

6. 낮은 랭크 근사: 큰 특잇값만 남기기

직관: SVD는 행렬을 "랭크 1짜리 조각들의 합"으로 펼칩니다. 특잇값이 큰 조각이 행렬의 큰 줄기, 작은 조각은 세부 · 잡음입니다. 큰 조각 kk개만 남기면 가장 좋은 랭크 kk 근사가 됩니다(에카르트-영 정리, Eckart–Young theorem).

A=∑i=1rσiuivi⊤,Ak=∑i=1kσiuivi⊤,∥A−Ak∥F=σk+12+⋯+σr2\mathbf{A} = \sum_{i=1}^{r} \sigma_i \mathbf{u}_i \mathbf{v}_i^\top, \qquad \mathbf{A}_k = \sum_{i=1}^{k} \sigma_i \mathbf{u}_i \mathbf{v}_i^\top, \qquad \|\mathbf{A} - \mathbf{A}_k\|_F = \sqrt{\sigma_{k+1}^2 + \dots + \sigma_r^2}

∥⋅∥F\|\cdot\|_F는 프로베니우스 노름(모든 원소 제곱합의 제곱근)입니다.

숫자로 해 보기(해설용, 넘파이로 실행): 사용자 4명 × 영화 3편 평점 행렬입니다. 앞의 두 사람은 영화 1 · 2를, 뒤의 두 사람은 영화 3을 좋아합니다.

R=(551451115124)\mathbf{R} = \begin{pmatrix} 5 & 5 & 1 \\ 4 & 5 & 1 \\ 1 & 1 & 5 \\ 1 & 2 & 4 \end{pmatrix}
항목값
특잇값 σ1,σ2,σ3\sigma_1, \sigma_2, \sigma_310.491, 5.514, 0.733
제곱 비율(에너지)78.1%, 21.6%, 0.4%
랭크 1 근사 오차 ∥R−R1∥F\Vert\mathbf{R} - \mathbf{R}_1\Vert_F5.563 =σ22+σ32= \sqrt{\sigma_2^2 + \sigma_3^2}
랭크 2 근사 오차 ∥R−R2∥F\Vert\mathbf{R} - \mathbf{R}_2\Vert_F0.733 =σ3= \sigma_3

랭크 2 근사의 첫 행은 (4.72,5.26,0.98)(4.72, 5.26, 0.98)로 원래 (5,5,1)(5, 5, 1)과 가깝습니다. 두 개의 "취향 축"(액션 쪽 · 로맨스 쪽 같은 숨은 요인)만으로 평점 거의 전부를 설명한 셈입니다. 이것이 추천 시스템의 행렬 분해, 그리고 큰 모델의 가중치 변화를 낮은 랭크로 표현하는 LoRA의 직관입니다.

왜 유용한가: 저장 공간이 m×nm \times n에서 k(m+n+1)k(m + n + 1)로 줄고, 작은 특잇값(잡음)을 버리므로 오히려 일반화가 좋아지기도 합니다. 이미지 압축, 잠재 의미 분석(LSA), 추천에 두루 쓰입니다.

7. PCA는 공분산 행렬의 고유값 분해

직관: 점들이 비스듬한 타원 모양으로 퍼져 있으면, 가장 길게 퍼진 방향이 데이터의 "주된 변화"입니다. 주성분 분석(Principal Component Analysis, PCA)은 그 방향을 찾아 좌표축을 새로 잡습니다. 그 방향이 바로 공분산 행렬의 가장 큰 고유값의 고유벡터입니다.

단계

  1. 열마다 평균을 빼 데이터를 가운데로 옮깁니다: X~=X−xˉ\tilde{\mathbf{X}} = \mathbf{X} - \bar{\mathbf{x}}
  2. 공분산 행렬 C=1n−1X~⊤X~\mathbf{C} = \frac{1}{n-1}\tilde{\mathbf{X}}^\top\tilde{\mathbf{X}}을 만듭니다 (대칭 행렬).
  3. C\mathbf{C}를 고유값 분해합니다. 고유값 = 그 방향의 분산, 고유벡터 = 주성분 방향.
  4. 큰 고유값 kk개의 고유벡터에 데이터를 투영해 kk차원으로 줄입니다.

(실무에서는 X~\tilde{\mathbf{X}}에 바로 SVD를 해 같은 결과를 얻습니다. X~=UΣV⊤\tilde{\mathbf{X}} = \mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^\top이면 V\mathbf{V}의 열이 주성분이고 고유값은 σi2/(n−1)\sigma_i^2/(n-1)입니다.)

숫자로 해 보기(해설용, 넘파이로 실행): 점 5개 (2,1),(3,2),(4,4),(5,4),(6,6)(2,1), (3,2), (4,4), (5,4), (6,6).

  1. 평균 (4,3.4)(4, 3.4)를 뺍니다.
  2. 공분산 C=(2.53.03.03.8)\mathbf{C} = \begin{pmatrix} 2.5 & 3.0 \\ 3.0 & 3.8 \end{pmatrix}
  3. 고유값 6.2206.220, 0.0800.080 / 첫 주성분 방향 ≈(0.628,0.778)\approx (0.628, 0.778)
  4. 설명된 분산 비율(explained variance ratio): 6.220/6.300≈98.7%6.220 / 6.300 \approx 98.7\%

2차원 점들이 거의 한 직선 위에 있어서, 1차원(첫 주성분 좌표 −3.12,−1.72,0.47,1.09,3.28-3.12, -1.72, 0.47, 1.09, 3.28)만으로 퍼짐의 98.7%를 담을 수 있습니다. scikit-learn PCA의 explained_variance_ratio_도 같은 값을 냅니다. 실제 쓰임과 t-SNE · UMAP 비교는 차원 축소에서 봅니다.

mermaid
flowchart LR
  A[행렬 A] --> B{정사각 · 대칭인가?}
  B -- 예 --> C[고유값 분해 A = QΛQᵀ]
  B -- 아니요 --> D[SVD A = UΣVᵀ]
  C --> E[고유값 = 축별 배율 · 분산]
  D --> F[특잇값 큰 순으로 정렬]
  F --> G[상위 k개만 남김: 낮은 랭크 근사]
  E --> H[공분산의 고유벡터 = 주성분]
  G --> I[추천 · 압축 · LoRA]
  H --> J[PCA 차원 축소]

연습 문제

1. A=(4123)\mathbf{A} = \begin{pmatrix} 4 & 1 \\ 2 & 3 \end{pmatrix}의 고유값은? 대각합 · 행렬식으로 검산하세요.

풀이: det⁡(A−λI)=(4−λ)(3−λ)−2=λ2−7λ+10=(λ−5)(λ−2)\det(\mathbf{A} - \lambda\mathbf{I}) = (4 - \lambda)(3 - \lambda) - 2 = \lambda^2 - 7\lambda + 10 = (\lambda - 5)(\lambda - 2) → λ=5,2\lambda = 5, 2. 합 7=4+37 = 4 + 3, 곱 10=12−210 = 12 - 2 ✓.

2. 위 행렬에서 λ=5\lambda = 5의 고유벡터 방향은?

풀이: (A−5I)v=(−112−2)v=0(\mathbf{A} - 5\mathbf{I})\mathbf{v} = \begin{pmatrix} -1 & 1 \\ 2 & -2 \end{pmatrix}\mathbf{v} = \mathbf{0} → v1=v2v_1 = v_2, (1,1)(1, 1) 방향입니다. 확인: A(1,1)⊤=(5,5)⊤\mathbf{A}(1,1)^\top = (5, 5)^\top.

3. 특잇값이 (10,3,1)(10, 3, 1)인 행렬의 최선 랭크 1 근사 오차(프로베니우스 노름)와 랭크 1이 담는 에너지 비율은?

풀이: 오차 32+12=10≈3.162\sqrt{3^2 + 1^2} = \sqrt{10} \approx 3.162, 비율 100/(100+9+1)=100/110≈90.9%100 / (100 + 9 + 1) = 100/110 \approx 90.9\%입니다.

4. 공분산 행렬의 고유값이 (4,1)(4, 1)이면 첫 주성분의 설명된 분산 비율은?

풀이: 4/5=80%4 / 5 = 80\%입니다.

스스로 점검

  1. 고유벡터는 왜 "방향"만 정해지고 길이는 자유인가요?
    • 답: Av=λv\mathbf{A}\mathbf{v} = \lambda\mathbf{v}이면 A(cv)=λ(cv)\mathbf{A}(c\mathbf{v}) = \lambda(c\mathbf{v})도 성립하기 때문입니다. 그래서 보통 길이를 1로 맞춰 씁니다.
  2. 고유값 분해 대신 SVD를 쓰는 경우는?
    • 답: 행렬이 정사각이 아니거나 대칭이 아닐 때입니다. 데이터 행렬(예제 × 특성)처럼 직사각형 행렬도 SVD는 항상 됩니다.
  3. PCA에서 첫 주성분이 "가장 정보가 많은 방향"인 이유는?
    • 답: 공분산 행렬의 가장 큰 고유값이 그 방향으로의 분산이고, 데이터가 가장 넓게 퍼진 방향이 점들을 가장 잘 구별하기 때문입니다.

용어 정리

용어쉬운 뜻
고유벡터(eigenvector)변환해도 방향이 안 바뀌는 벡터
고유값(eigenvalue)그 방향으로 늘어나는 배율
특성 방정식(characteristic equation)det⁡(A−λI)=0\det(\mathbf{A} - \lambda\mathbf{I}) = 0, 고유값을 구하는 식
대각합(trace)대각 원소의 합 = 고유값의 합
직교 행렬(orthogonal matrix)열들이 서로 수직이고 길이 1, 역행렬 = 전치
고유값 분해(eigendecomposition)QΛQ⊤\mathbf{Q}\boldsymbol{\Lambda}\mathbf{Q}^\top로 쪼개기
양의 정부호(positive definite)고유값이 모두 양수인 대칭 행렬
거듭제곱법(power iteration)곱하기를 반복해 가장 큰 고유벡터 찾기
특잇값 분해(SVD)아무 행렬을 UΣV⊤\mathbf{U}\boldsymbol{\Sigma}\mathbf{V}^\top로 쪼개기
특잇값(singular value)Σ\boldsymbol{\Sigma}의 대각 원소, 축별 늘림 배율
낮은 랭크 근사(low-rank approximation)큰 특잇값 몇 개로 행렬을 근사
공분산 행렬(covariance matrix)특성끼리 함께 변하는 정도를 모은 대칭 행렬
주성분 분석(PCA)분산이 큰 방향으로 축을 다시 잡아 차원을 줄이는 방법
설명된 분산 비율한 주성분이 전체 분산에서 차지하는 비율

더 깊이 보려면

D2L 부록의 'Eigendecompositions'는 고유값 찾기, 행렬 분해, 대칭 행렬의 분해, 게르슈고린 원 정리, 그리고 행렬을 반복해 곱할 때 고유값이 왜 신경망의 기울기 폭발 · 소멸과 연결되는지를 다룹니다. 『Mathematics for Machine Learning』 4장(Matrix Decompositions)은 행렬식 · 대각합, 고유값 분해, 촐레스키 분해, SVD, 행렬 근사를 증명과 함께, 10장은 PCA를 자세히 설명합니다.

다음에 볼 것

라이선스

이 글은 원문 번역이 아니라 KAITABASE가 직접 쓴 해설이며, 숫자 예는 모두 설명용으로 만들고 넘파이로 다시 계산해 확인했습니다. 참고 자료 D2L은 CC BY-SA 4.0으로 공개되어 있고, 『Mathematics for Machine Learning』은 저자들이 무료 PDF를 제공하는 저작권 보호 도서입니다.

출처

AI 원리부터 이해하기 · 수학 모듈

수학 모듈 학습

이 글은 수학 모듈의 학습 자료입니다. 전체 9개 자료 중 2번째입니다.

AI 기초 과정은 현재 진도 저장을 지원하지 않습니다.

출처·원문

원문 보기

요약만

본문 자체 작성 · 참고 자료 D2L(CC BY-SA 4.0)