1. 선형대수란?
본 내용은 유데미 강의 [Machine Learning 라이브러리 수학 기초]와 [혁펜하임의 "보이는" 선형대수학 (Linear Algebra)] 을 기반으로 작성하였습니다.
Jan 29, 2024
선형대수란?
대수학(algebra)이란, 일련의 공리들을 만족하는 수학적 구조들의 일반적인 성질을 연구하는 수학의 한 분야 이다. 즉, 대수학에서 numerric이 아닌, 문자로 일반화된 수학적 법칙을 다루는 학문 분야이다. 선형대수란, 지수 형태가 아닌 값들만을 다루는 분야이다.
대수학이란 수식에 대한 일반화된 법칙을 다루는 분야로 관련된 단어로는 ‘알고리즘’이 있다. 알고리즘이라는 것은 ‘어떤 문제를 해결하는 방식’이라는 일반적인 정의가 있으며, 컴퓨터 공학에서는 알고리즘을 특정 프로그래밍 문법이나 시스템에 기반하지 않은 general한 문제 해결 프로세스를 의미하고 보통 의사 코드(pseudo-code)로 표현된다.
알고리즘이나 대수학 모두 어떠한 상황(도메인)에서도 바뀌지 않는 일반화된 문제해결 법칙을 의미한다는 점에서 일맥상통한다고 할 수 있다. 실제로 어원도 같다.
선형대수를 이해할 때 일차방정식을 생각하면 쉽다. 일차방정식은 해가 1개이거나, 해가 아예 없거나, 혹은 해가 무한대일 수 있다. 해가 무한대인 경우는 일차방정식의 항등식을 생각하면 된다. 항등식이란 두 변수에 어떠한 값을 넣어도 항상 그 값이 같은 식을 의미한다. (A = B)
선형대수에서는 변수값에 영향을 주는 인자, 그러니까 위 식에서 a,b, c, m과 같은 수를 매개변수(parameter) 라고 하고, 변화하는 값을 변수(variable) 이라고 한다. 여기서 변수는 x1, x2, .. 그리고 y이다.
좀 더 직관적으로 이해하면 아래와 같다.
스칼라, 벡터, 매트릭스, 텐서 …
스칼라(Scalar)
스칼라는 0차원의 값으로 변수 하나, 값 한 개를 생각하면 된다.
위 식에서 x를 스칼라 값이라고 한다.
벡터(vector)
벡터는 1차원의 값이다. 즉, 스칼라가 연속적으로 있는 행렬을 의미한다.
벡터 내부의 스칼라 개수를 차원(dimension)이라고 한다. 일반적 의미에서의 점→선→면→입체→초입방체를 얘기할 때의 그 차원이다. 따라서 벡터로 공간 상 한 지점에 값을 표시하는 것이 가능하다.
행렬 (Matrics)
벡터를 쌓아 행,열의 2차원 평면으로 나타낸 것을 행렬이라고 한다. 행렬은 벡터가 중첩된 형태로 표현된다.
텐서(Tensor)
머신러닝 분야에서 도입한 개념이다. N차원만큼 벡터를 중첩시킨 것을 의미한다. 보통은 3차원 이상부터 ‘텐서’ 명칭을 붙인다.
파이토치, 텐서플로우
파이토치와 텐서플로우 모두 GPT를 활용해 텐서 연산을 지원하는 라이브러리이다. 텐서플로우가 텐서 연산 라이브러리의 거의 시초격이고, 그 다음에 파이토치가 나왔다. 그래서 커뮤니티도 텐서플로우 쪽이 좀 더 크긴 한데 요즘은 파이토치도 많이 쓴다. 두 라이브러리 모두 Numpy와의 호환성이 뛰어나다.
구현 자체는 텐서플로우의 경우 C++, 파이토치의 경우 파이썬으로 구현되었다. 그래서 그런지, 텐서플로우는 연산결과가 C++이고 이를 파이썬으로 다시 보여줘서 좀 지저분하게 나온다. 반대로 파이토치는 텐서플로우보다는 결과가 깔끔하게 나온다.
Share article