1.1 벡터와 공간
"프로그래머를 위한 선형대수" 딥러닝 기준 정리.
1장 벡터, 행렬, 행렬식
1.1 벡터
벡터란 무엇인지 우선 제대로 알 필요가 있다.
대규모 수학채널 3Blue1Brown "벡터 1장, 선형대수학의 본질"에서는 물리학자의 벡터와 컴퓨터 사이언스의 벡터 그리고 수학자의 벡터의 정의는 다 차이가 있다.
https://www.youtube.com/watch?v=fNk_zzaMoSs&list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab&index=1
우리는 딥러닝을 하기 때문에 컴퓨터 사이언스의 벡터인 "좌표"로서 벡터를 받아들인다.
학창 시절때 배웠던 벡터는 왼쪽의 형태로 나타냈다. 각각 xyz축을 나타내는 형식으로 가로로 썼지만, 대학교에서는 오른쪽 처럼 세로로 쓴다.
하지만 세로로 쓴다고 각 좌표(여기서는 abc)의 의미가 바뀐것은 아니다. 여전히 각 성분들은 한 축의 좌표를 나타내고 있다. xyz축이라고 생각해도 되지만, 수업에 따라 x1,x2,x3라고 하는 곳도 있다. 대중적인 표현은 e1,e2,e3이지만, 후에 다루겠다.
왜 세로로 쓰는것이냐?라고 질문한다면, 책에서는 이렇게 말한다:
"'변수 x에 대해 함수 f()를 적용한다'라는 작업을 일반적으로 f(x)라고 씁니다. 이와 같은 어순으로 '벡터 x에 행렬 A(로 나타내지는 함수)를 적용하다'라는 작업을 행렬의 곱으로 Ax라 쓰기 위해서 입니다"(참고로 벡터는 소문자 볼드체로 쓴다, 이유는 간편해서인것 같다)
간단히 말하면, 계산에 대해 설명할때 벡터를 세로로 적는게, 설명하는 어감이 편하기 때문인것이다. 딱히 큰 의미는 없다.
그리고 어떤 선형대수를 공부하더라도 항상 보여주는 식들이 존재한다.
익숙한 공식들이다. 하지만 필자가 봤던 3곳의 강의, 4개의 서적에 모두 한결같이 강조하는 부분이다. "왜 이런 당연하고, 쉬운 기초적인것을 계속 강조하는것이지?"라는 의문이 들었는데, 아래에 배울 "선형공간/부분공간(linear space or subspace)"에 대해 감이 안잡히면서 다시금 보게 된 부분이다.
이를 강조하는 이유를 정확하게 알고 싶으면, 수학의 근간이 되는 "집합론"을 먼저 봐야 한다. 이는 "프로그래머를 위한 기초해석학" 혹은 "이상엽 math(유튜브: https://www.youtube.com/playlist?list=PL127T2Zu76FveA8TGXZU-PSSt7GTMhKp6)"를 봐야한다.
하지만 현재 집합론을 가는것은 비추천한다. 선형대수를 공부하면서 이를 "체감"하는데 막혔다면, 그때서 보는것을 추천한다.
필자는 해당 부분을 공부하면서, 느꼈던 점은, "공리"라고 적혀 있는 부분은 궁금해하면 안된다는 것이다.
1.1.3 기저 basis
공간이란?
딥러닝을 공부하면서, 가장 많이 접하는 부분은 n차원 공간이다. 이를 R^n이라고 표기한다. 여기서 R은 Real Number을 의미한다. "선형공간(linear space)", "부분공간(sub space)", "벡터 공간(vector space)"등 여러가지 표현이 있다. 논문에서는 R^n을 자주 사용하고, 외국인들은 부분공간(subspace)를 자주 사용한다. 한국에서는 그냥 n차원 이라고 호칭하는 경우가 더 많았던것 같다.
여기서 나타나는 기저(basis)는 간단히 말하면, "축"이라고 생각한다.
기저는 보통 e로 표현 하는 경우가 많다. 정확히 e는 단위벡터(길이가 1인 벡터)이다. 앞에 상수를 곱해서 여러가지 벡터를 표현하는 것이다. (벡터는 볼드체 소문자 라는 점을 상기하자)
ax + by +cz = 0 라는 공식을 본 기억이 많을 것이다. 이것을 그냥 알파벳을 바꾼것일 뿐이다(왜냐하면 통일성과, 간편성을 주고 싶기 때문이다)
v = x1*e1 + x2*e2 + x3*e3 라고 적으면, v는 3차원 벡터를 의미한다(축이 3개), 여기서 x1,x2,x3를 스칼라(scalar)라고 하고, 이렇게 x1*e1 벡터에 곱하는 행위를 스케일링(scaling)이라고 한다, 그냥 상수배 한다고 생각하면 된다 (수학에 이러한 용어가 많은 이유는 용도가 다르다는것을 표현하기 위해서이다).
데이터 분석가 입장에서는(정확히는 정형데이터 기준으로는) 컬럼이 기저에 해당하고, 딥러닝(비정형 데이터)에서는 input_size에 해당하는 것들이 기저(basis)에 해당한다고 볼 수 있다. 엄밀하게 선형대수 입장에서 보면, 기저는 이렇게 해석하면 안된다. 하지만 우리는 수학자가 되는것이 아니다.
이해가 잘 안간다면, 이러한 필자가 스스로 이해하기 위해 생성한 예문이 있다:
Q)내가 내일 일찍 일어날 수 있을지 없을지 예측하는 모델을 만들어라
카페인 섭취량(mg) | 운동시간(hour) | 약속의 유무 | 야근 유무 | 일찍 기상 | |
2024-09-01 | 150 | 1.0 | 있음(1) | 없음(0) | ? |
2024-09-02 | 120 | 0.9 | 없음(0) | 없음(0) | ? |
2024-09-03 | 180 | 1.7 | 없음(0) | 있음(0) | ? |
2024-09-04 | 90 | 1.5 | 있음(1) | 없음(0) | ? |
맨 오른쪽에 있는 "일찍 기상"을 우리가 예측해야 하는 부분이다, 그러면 앞에 "카페인 섭취량","운동시간","약속의 유무","야근 유무"라는 "4가지 조건"을 통해서 예측을 하는 것이다. (맨 왼쪽은 날짜여도, 그냥 숫자 1,2,3이어도 상관 없다. 그냥 "매 줄이 서로 다른 정보"라는 것이면 충분하다)
이 "조건"을 기저(basis)라고 생각해도 된다(물론 엄밀하게 맞지는 않다). 이 기저에 대한 지식은 확률 통계에서도 유용하게 쓰인다.