선형대수학 Intro

직관적인 개념들을 수학적으로 엄밀하게 공식화(formalizing)할 때 흔히 쓰이는 접근법은, 일련의 객체(심볼)들을 정의하고 그 객체들을 조작할 수 있는 규칙들을 세우는 것이다. 우리는 이것을 대수(algebra)라고 부른다. 선형대수(Linear algebra)는 벡터(vector)와, 그 벡터들을 조작하는 특정 규칙들을 연구하는 학문이다. 우리 중 다수가 학창 시절에 배웠던 벡터는 ‘기하학적 벡터(geometric vectors)’라고 불리며, 보통 문자 위에 작은 화살표를 그려서(예: $\vec{x}$ , $\vec{y}$ ) 표기하곤 했다. 하지만 이 책에서는 벡터를 좀 더 일반적인 개념으로 다룰 것이며, 이를 나타내기 위해 굵은 글씨체(bold letter)를 사용할 것이다(예: $\boldsymbol{x}$ , $\boldsymbol{y}$ ).
$\quad$ 일반적으로 벡터란, 서로 더하거나(added together) 스칼라를 곱했을 때(multiplied by scalars) 여전히 같은 종류의 객체가 되는 특별한 대상들을 말한다. 추상적인 수학적 관점에서 본다면, 이 두 가지 성질(덧셈과 스칼라배)을 만족하는 객체라면 무엇이든 벡터로 간주할 수 있다.

  1. 기하학적 벡터 (Geometric vectors). 이 벡터의 예시는 고등학교 수학이나 물리를 통해 이미 익숙할 것이다. 기하학적 벡터(그림 2.1(a) 참조)는 ‘방향이 있는 선분(directed segments)’이며, 적어도 2차원 평면상에서는 그림으로 그려서 표현할 수 있다. 두 기하학적 벡터 $\vec{x}$ 와 $\vec{y}$ 는 서로 더할 수 있으며, 그 결과인 $\vec{x} + \vec{y} = \vec{z}$ 또한 기하학적 벡터가 된다. 뿐만 아니라, 임의의 실수 $\lambda \in \mathbb{R}$ 에 대하여 스칼라 $\lambda$ 를 벡터 $\vec{x}$ 에 곱한 $\lambda \vec{x}$ 역시 기하학적 벡터가 된다. 사실 이 결과는 원래 벡터를 $\lambda$ 배만큼 확대하거나 축소한(scaled) 것에 불과하다. 따라서 기하학적 벡터는 앞서 우리가 정의한 (추상적인) 벡터 개념의 훌륭한 사례(instance)가 된다. 벡터를 이처럼 기하학적으로 해석하면, 추상적인 수학 연산들을 ‘방향’과 ‘크기’라는 직관을 통해 훨씬 쉽게 이해하고 추론할 수 있다는 장점이 있다.
    figure2.1.png
  2. 다항식(Polynomials) 또한 벡터다. 그림 2.1(b)를 보자. 두 다항식은 서로 더할 수 있으며, 그 결과 또한 또 다른 다항식이 된다. 또한 다항식에 스칼라 $\lambda \in \mathbb{R}$ 를 곱해도 그 결과는 여전히 다항식이다. 따라서 다항식은 (다소 특이해 보일 수 있지만) 앞서 정의한 벡터의 사례에 해당한다. 다항식이 기하학적 벡터와는 매우 다르다는 점에 주목하라. 기하학적 벡터가 구체적인 ‘그림(drawings)’이라면, 다항식은 추상적인 개념이다. 하지만 앞서 설명한 (연산 규칙에 닫혀 있다는) 의미에서 보면 둘 다 벡터임이 틀림없다.
  3. 오디오 신호(Audio signals)는 벡터다. 오디오 신호는 일련의 숫자들(series of numbers)로 표현된다. 우리는 두 오디오 신호를 서로 더할 수 있으며, 그 합은 새로운 오디오 신호가 된다. 만약 오디오 신호를 스칼라배(scale) 한다면, 우리는 여전히 오디오 신호를 얻게 된다. 따라서, 오디오 신호 또한 벡터의 일종이다.
  4. $\mathbb{R}^n$ 의 원소들 ( $n$ 개 실수의 튜플)은 벡터다. $\mathbb{R}^n$ 은 앞서 본 다항식보다 더 추상적인 개념이지만, 이 책에서 우리가 집중적으로 다룰 핵심 개념이다. 예를 들어, 식 (2.1)과 같이 \(\boldsymbol{a} = \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix} \in \mathbb{R}^3 \tag{2.1}\)은 숫자 3개로 이루어진 튜플(triplet)의 예시이다. 두 벡터 $\boldsymbol{a}, \boldsymbol{b} \in \mathbb{R}^n$ 를 성분끼리(component-wise) 더하면 그 결과인 $\boldsymbol{a} + \boldsymbol{b} = \boldsymbol{c}$ 또한 $\mathbb{R}^n$ 에 속하는 벡터가 된다. 또한, 벡터 $\boldsymbol{a} \in \mathbb{R}^n$ 에 스칼라 $\lambda \in \mathbb{R}$ 를 곱하면 스케일링된 벡터 $\lambda \boldsymbol{a} \in \mathbb{R}^n$ 를 얻는다. 벡터를 $\mathbb{R}^n$ 의 원소로 생각하는 관점은, 이것이 컴퓨터상의 ‘실수 배열(array of real numbers)’과 자연스럽게 연결된다는 추가적인 장점이 있다. 많은 프로그래밍 언어들이 배열 연산을 지원하므로, 이를 통해 벡터 연산이 포함된 알고리즘을 아주 편리하게 구현할 수 있다.

주의사항 (Note)
컴퓨터로 구현할 때, 사용하는 프로그래밍 언어의 배열 연산(array operations)이 실제 수학적인 벡터 연산(vector operations)과 정확히 일치하는지 반드시 확인해야 한다.

추천 학습 자료 (Resources)

  • Pavel Grinfeld의 선형대수 시리즈: http://tinyurl.com/nahclwm
  • Gilbert Strang의 선형대수 강의 (MIT): http://tinyurl.com/bdfbu8s5
  • 3Blue1Brown의 선형대수 시리즈 (Essence of Linear Algebra): http://tinyurl.com/h5g4kps

선형대수는 이러한 다양한 벡터 개념들 사이의 유사성(similarities)에 초점을 맞춘다. 우리는 그것들을 서로 더할 수도 있고 스칼라배를 할 수도 있다. 이 책에서는 주로 $\mathbb{R}^n$ 공간에 속한 벡터들을 다룰 것인데, 그 이유는 선형대수의 대부분의 알고리즘들이 $\mathbb{R}^n$ 을 기준으로 공식화되어 있기 때문이다. 우리는 8장에서 데이터를 $\mathbb{R}^n$ 의 벡터로 표현하는 구체적인 방법을 보게 될 것이다. 이 책은 유한 차원 벡터 공간(finite-dimensional vector spaces)에 집중하며, 이 경우 어떠한 종류의 벡터이든 $\mathbb{R}^n$ 과 1:1 대응(1:1 correspondence) 관계를 갖는다. 따라서 편의에 따라, 우리는 기하학적 벡터에 대한 직관을 활용하기도 하고, 배열 기반(array-based) 알고리즘을 고려하기도 할 것이다.

$\quad$ 수학에서 한 가지 중요한 아이디어는 닫혀 있음(closure)이라는 개념이다. 이는 다음과 같은 질문을 던진다: “내가 제안한 연산들을 수행했을 때, 그 결과로 나올 수 있는 모든 것들의 집합은 무엇인가?” 벡터의 경우로 바꿔 말하면 다음과 같다: “작은 벡터 집합에서 시작하여, 그것들을 서로 더하고 스칼라배를 함으로써 만들어낼 수 있는 모든 벡터의 집합은 무엇인가?” 이 질문의 결과가 바로 벡터 공간(vector space, 2.4절)이다. 벡터 공간의 개념과 그 성질은 머신러닝의 많은 부분을 지탱하는 기초가 된다.

닫혀 있음이란? 어떤 집합 안의 원소끼리 연산(더하기, 곱하기 등)을 했을 때, 그 결과가 여전히 그 집합 안에 머물러 있다면 그 집합은 해당 연산에 대해 닫혀 있다고 말한다. 예를 들어 정수끼리 더하면 무조건 정수가 나오므로 정수는 덧셈에 대해 닫혀있다. 하지만 정수끼리 나누면 1/2같은 분수가 나올 수 있으므로 나눗셈에 대해서는 닫혀 있지 않다.

$\quad$ 이 챕터는 주로 Drumm과 Weil(2001), Strang(2003), Hogben(2013), Liesen과 Mehrmann(2015)의 강의 노트와 저서, 그리고 Pavel Grinfeld의 선형대수 시리즈를 바탕으로 작성되었다. 그 외 훌륭한 자료로는 MIT의 Gilbert Strang 교수의 선형대수 강의와 3Blue1Brown의 선형대수 시리즈가 있다.
figure2.2.png그림 2.2: 이 챕터에서 소개하는 개념들의 관계와, 이들이 책의 다른 부분에서 어떻게 사용되는지를 보여주는 마인드맵이다.
$\quad$ 선형대수는 머신러닝과 일반 수학에서 중요한 역할을 담당한다. 이 챕터에서 소개된 개념들은 3장에서 기하학(geometry)이라는 아이디어를 포함하며 더욱 확장된다. 5장에서는 벡터 미적분(vector calculus)을 다룰 예정인데, 이를 위해서는 행렬 연산에 대한 원리적인 지식이 필수적이다. 10장에서는 주성분 분석(PCA)을 이용한 차원 축소(dimensionality reduction)를 위해 투영(projections, 3.8절에서 소개됨)을 사용할 것이다. 9장에서는 선형 회귀(linear regression)를 다루는데, 여기서 선형대수는 최소 제곱 문제(least-squares problems)를 해결하는 데 핵심적인 역할을 한다.