MML | Mathmatics for Machine Learning - 1. Intro, 2. Linear Algebra 정리

하얀날개·2024년 6월 24일

언제까지 미룰 수 없는 수학공부. 미대 출신의 고군분투기가 시작된다. 고등학교 때 미적분을 찍먹만 했기 때문에 완전한 이해는 기대하지않고 일단 탑다운 방식으로 머신러닝에 쓰이는 수학개념에는 무엇이 있는지 알아본다에 의의를 두고자 이번 스터디를 신청하게 되었다.

1장 요약

요약:

"Mathematics for Machine Learning"의 1장은 책의 서론으로, 이후 장들에서 다룰 필수적인 수학 개념들에 대한 기초적인 개요를 제공한다. 이 장의 주요 초점은 머신러닝 분야에서 수학의 중요성을 강조하고, 앞으로의 수학적 여정을 준비시키는 것이다.

이 장은 수학이 머신러닝 알고리즘을 이해하고 개발하는 데 얼마나 중요한지를 논의하면서 시작된다. 수학 개념에 대한 탄탄한 이해가 머신러닝 모델을 분석하고 해석하는 데 필수적임을 강조한다.(알아... 안다고!!) 저자들은 특히 머신러닝과 관련이 깊은 수학의 주요 영역, 즉 선형대수, 미적분, 확률, 통계 등을 소개한다.

또한 이 장은 책의 구조와 저자들이 채택한 교육적 접근 방식을 소개한다. 저자들은 다양한 수학적 배경을 가진 독자들이 쉽게 이해할 수 있도록 수학 개념을 접근 가능하게 제시하려고 한다. 이 장에는 머신러닝의 실용적인 응용에 대한 간략한 개요도 포함되어 있어, 수학 이론이 실제 문제 해결에 어떻게 적용되는지를 보여준다.

이 장에서 다루는 주요 주제는 다음과 같다:

  • 머신러닝에서 수학의 역할
  • 선형대수, 미적분, 확률, 통계 등 필수적인 수학 영역 개요
  • 책의 구조와 접근 방식
  • 머신러닝의 실용적인 응용

감상:

"Mathematics for Machine Learning"의 첫 번째 장을 읽으며, 수학이 머신러닝 분야에서 얼마나 중요한 역할을 하는지 명확히 이해할 수 있었다. 저자들은 수학적 배경이 부족한 독자들도 쉽게 접근할 수 있도록 기초를 잘 다져준다.

이 장에서 가장 인상 깊었던 부분은 복잡한 수학 개념을 풀어내고, 이를 머신러닝 응용과 직접 연결시킴으로써 내용을 접근 가능하고 흥미롭게 만드는 저자들의 방식이었다. 이러한 접근 방식은 나같이 수학적 엄격함에 겁먹을 수 있는 독자들에게 특히 공감을 불러일으켰다.

주요 수학 영역에 대한 개요는 독자들이 배울 내용과 그 중요성을 명확히 이해하도록 돕는 데 큰 가치를 제공한다. 또한 실용적인 응용에 대한 강조는 이론적 지식이 실제로 어떻게 강력한 해결책으로 이어질 수 있는지를 보여줌으로써 동기부여를 제공한다.

전체적으로, 1장은 이후에 다룰 수학적 개념에 대한 자세한 탐구를 위해 효과적으로 무대를 설정하며, 머신러닝의 수학적 배경을 깊이 이해하고자 하는 사람들에게 좋은 출발점이 되어주고 있다.

2장 Linear Algebra 요약

요약:

2장은 머신러닝의 핵심 개념을 이해하고 구현하는 데 필수적인 선형대수의 기본 개념을 다룬다. 이 장에서는 벡터와 행렬을 중심으로 다양한 연산과 이론을 설명하며, 이들이 머신러닝에서 어떻게 활용되는지를 구체적으로 보여준다.

  1. 벡터와 벡터 공간

벡터:

•	벡터는 크기와 방향을 가진 객체로, 일반적으로 유한 차원의 실수 공간에서 다뤄진다.
•	( \mathbf{v} = \begin{bmatrix} v_1 \ v_2 \ \vdots \ v_n \end{bmatrix} )

벡터 연산:

•	덧셈: 두 벡터 (\mathbf{u})와 (\mathbf{v})의 덧셈은 성분별로 수행된다.
u+v=[u1u2un]+[v1v2vn]=[u1+v1u2+v2un+vn]\mathbf{u} + \mathbf{v} = \begin{bmatrix} u_1 \\ u_2 \\ \vdots \\ u_n \end{bmatrix} + \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} = \begin{bmatrix} u_1 + v_1 \\ u_2 + v_2 \\ \vdots \\ u_n + v_n \end{bmatrix}
•	스칼라 곱셈: 벡터 (\mathbf{v})에 스칼라 (a)를 곱하면 모든 성분에 (a)를 곱한다.
av=a[v1v2vn]=[av1av2avn]a \mathbf{v} = a \begin{bmatrix} v_1 \\ v_2 \\ \vdots \\ v_n \end{bmatrix} = \begin{bmatrix} a v_1 \\ a v_2 \\ \vdots \\ a v_n \end{bmatrix}

벡터 공간과 기저:

•	벡터 공간은 벡터의 집합으로, 벡터 덧셈과 스칼라 곱셈 연산에 대해 닫혀 있다.
•	기저: 벡터 공간의 기저는 그 공간의 모든 벡터를 선형 결합으로 표현할 수 있는 선형 독립 벡터들의 집합이다.
•	( \mathbf{v}_1, \mathbf{v}_2, \ldots, \mathbf{v}_k )가 기저라면, 임의의 벡터 (\mathbf{v})는 다음과 같이 표현된다:
v=c1v1+c2v2++ckvk\mathbf{v} = c_1 \mathbf{v}_1 + c_2 \mathbf{v}_2 + \cdots + c_k \mathbf{v}_k

선형 독립성과 차원:

•	벡터 집합이 선형 독립이면, 그 벡터들 중 어떤 벡터도 다른 벡터들의 선형 결합으로 표현될 수 없다.
•	벡터 공간의 차원은 그 공간의 기저를 이루는 벡터의 수이다.
  1. 행렬과 행렬 연산

행렬:

•	행렬은 숫자나 변수들의 직사각형 배열로, 보통 대문자 (A, B, C) 등으로 표기한다.
•	( A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \ a_{21} & a_{22} & \cdots & a_{2n} \ \vdots & \vdots & \ddots & \vdots \ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} )

행렬 연산:

•	덧셈: 같은 크기의 두 행렬 (A)와 (B)는 성분별로 더한다.
A+B=[aij]+[bij]=[aij+bij]A + B = \begin{bmatrix} a_{ij} \end{bmatrix} + \begin{bmatrix} b_{ij} \end{bmatrix} = \begin{bmatrix} a_{ij} + b_{ij} \end{bmatrix}
•	곱셈: 행렬 (A)와 (B)의 곱은 (A)의 행과 (B)의 열의 내적으로 계산된다.
(AB)ij=k=1naikbkj(AB){ij} = \sum{k=1}^n a_{ik} b_{kj}
•	전치: 행렬 (A)의 전치는 행과 열을 바꾼 행렬이다.
AT=[a11a21am1a12a22am2a1na2namn]A^T = \begin{bmatrix} a_{11} & a_{21} & \cdots & a_{m1} \\ a_{12} & a_{22} & \cdots & a_{m2} \\ \vdots & \vdots & \ddots & \vdots \\ a_{1n} & a_{2n} & \cdots & a_{mn} \end{bmatrix}

역행렬:

•	행렬 (A)의 역행렬 (A^{-1})은 (AA^{-1} = A^{-1}A = I)를 만족하는 행렬이다.
•	역행렬은 다음과 같은 공식으로 계산할 수 있다 (단, 행렬이 정사각 행렬이고 역행렬이 존재할 경우).
A1=1det(A)adj(A)A^{-1} = \frac{1}{\det(A)} \text{adj}(A)

여기서 (\det(A))는 행렬 (A)의 행렬식, (\text{adj}(A))는 여인자 행렬이다.

특수한 행렬:

•	단위행렬 (Identity Matrix, (I)): 주대각선의 모든 원소가 1이고, 나머지가 0인 행렬이다.
•	대칭행렬 (Symmetric Matrix): (A = A^T)인 행렬이다.
  1. 행렬 분해

LU 분해:

•	행렬 (A)를 하삼각 행렬 (L)과 상삼각 행렬 (U)로 분해하는 방법이다.
A=LUA = LU

QR 분해:

•	행렬 (A)를 직교 행렬 (Q)와 상삼각 행렬 (R)로 분해하는 방법이다.
A=QRA = QR

고유값과 고유벡터:

•	행렬 (A)의 고유값 (\lambda)와 고유벡터 (\mathbf{v})는 (A\mathbf{v} = \lambda \mathbf{v})를 만족합니다.
•	고유값 방정식: (\det(A - \lambda I) = 0)

특이값 분해 (SVD):

•	임의의 행렬 (A)를 세 개의 행렬 (U), (\Sigma), (V^T)로 분해하는 방법입니다.
A=UΣVTA = U \Sigma V^T

여기서 (U)와 V는 직교 행렬이고, \Sigma는 대각 행렬이다.

  1. 응용 (계속)

선형 회귀 (Linear Regression):

•	목표: 독립 변수 (\mathbf{X})와 종속 변수 (\mathbf{y}) 사이의 선형 관계를 찾는 것.
•	해법: (\mathbf{X}\beta = \mathbf{y}) 형태의 방정식에서 (\beta)를 찾는 것.
•	(\beta)는 최소자승법(Ordinary Least Squares, OLS)을 통해 구할 수 있으며, 수식으로는 다음과 같습니다:
β=(XTX)1XTy\beta = (\mathbf{X}^T \mathbf{X})^{-1} \mathbf{X}^T \mathbf{y}

주성분 분석 (Principal Component Analysis, PCA):

•	목표: 데이터의 차원을 축소하면서 가장 중요한 정보를 보존하는 것.
•	방법:
1.	데이터 행렬 (\mathbf{X})의 공분산 행렬을 계산.
2.	공분산 행렬의 고유값과 고유벡터를 계산.
3.	고유값이 큰 순서대로 상위 (k)개의 고유벡터를 선택하여 새로운 기저로 삼음.
4.	원래 데이터를 이 새로운 기저에 사영하여 차원 축소된 데이터를 얻음.

2장 학습 내용 및 고찰:

2장을 공부하면서 벡터와 행렬의 기본 개념부터 시작하여 점차 복잡한 개념으로 나아가는 구조가 매우 유익했다. 특히, 벡터 공간과 기저의 개념은 선형대수의 다른 모든 개념의 기반이 되는 중요한 부분이었고, 이를 통해 벡터와 행렬의 연산이 어떻게 작동하는지를 명확히 이해할 수 있었다.

행렬 분해 부분에서는 특히 LU 분해와 QR 분해가 인상적이었다. 이 분해 기법들은 행렬의 복잡한 연산을 보다 효율적으로 수행할 수 있도록 도와주며, 이를 통해 고유값과 고유벡터, 특이값 분해 등의 고급 개념을 이해하는 데 큰 도움이 되었다.

머신러닝에서 선형대수가 중요한 이유는 주로 데이터의 변환과 차원 축소에 있다. 예를 들어, 주성분 분석(PCA)을 통해 데이터의 주요 특징을 추출하고 차원을 축소하여 더 효율적인 모델을 만들 수 있다. 이러한 이론적 이해는 실제 머신러닝 모델을 구현하고 최적화하는 데 큰 도움이 된다.

고민 및 질문과 답변:

질문 1: 벡터 공간의 기저를 구하는 방법은 무엇인가요?

•	답변: 벡터 공간의 기저는 그 공간을 생성하는 선형 독립 벡터 집합입니다. 기저를 구하기 위해서는 주어진 벡터들이 선형 독립인지 확인하고, 그 벡터들로 공간 전체를 표현할 수 있는지 확인해야 합니다. 일반적으로 행렬의 행렬식을 이용하여 선형 독립성을 판단하고, 기저를 구성합니다.

질문 2: 특이값 분해(SVD)가 무엇이며, 머신러닝에서 어떻게 활용되나요?

•	답변: 특이값 분해(SVD)는 임의의 행렬을 세 개의 행렬의 곱으로 분해하는 방법입니다: A = U\Sigma V^T. 여기서 U와 V는 직교 행렬이고, \Sigma는 대각 행렬입니다. SVD는 차원 축소, 노이즈 제거, 데이터 압축 등 다양한 머신러닝 응용에 사용됩니다. 예를 들어, PCA는 SVD를 이용하여 데이터의 주요 성분을 추출하는 방법 중 하나입니다.

질문 3: LU 분해와 QR 분해의 차이점은 무엇인가요?

•	답변: LU 분해는 행렬을 Lower (L)와 Upper (U) 삼각 행렬로 분해하는 방법입니다. 주로 행렬의 역행렬을 구하거나 선형 방정식을 푸는 데 사용됩니다. QR 분해는 행렬을 직교 행렬(Q)과 상삼각 행렬(R)로 분해하는 방법입니다. QR 분해는 특히 최소 제곱 문제를 푸는 데 유용하며, 행렬의 고유값을 구하는 알고리즘의 기초가 됩니다.

0개의 댓글