앞서 말한 것과 같이 선형대수(Linear algebra)는 선형 방정식(Linear equations)으로 표현되는 어떤 시스템을 풀기 위한 방법론이다. 

 

이를 어떻게 푼다는 것일까? 

 

그 전에 먼저 다음을 살펴보자. 

우선 n개의 선형 방정식들과(linear equations) n개의 미지수(unknowns)가 있는 일반 적이면서 nice한 경우를 가정해 보자. 

식은 아래와 같을 것이다. 

 

 

두 개의 식(1)과 (2), 그리고 두 개의 미지수 x, y가 있다. 이 두 개의 식을 행렬(Matrix)로 표현할 수 있다. 이를 위해선 다음의 3개 요소가 필요하다. 

 

계수 행렬(coefficient matrix)

미지수 벡터(unknown vector)

우변 벡터(right-hand side vector)

 

여기서 계수(coefficient)란 각 미지수 앞에 곱해진 수를 의미한다. 단순히 방정식의 등호 앞의 계수들만 뽑아서 나열하면 된다. 아주 간단하다. (※ 이때 식은 =0의 일반형이어야 한다)

 

어쨋든 이를 행렬로 표현하면 아래와 같다. 

 

 

 

 

왼쪽부터 순서대로 계수행렬(A), 미지수 벡터(x), 우변 벡터(b)이다. 이를 간단히 아래의 식으로 표현할 수 있다.

(여기서 미지수 벡터 x의 차원은 미지수의 개수이다)

 

 

자 지금까지 우리는 어떤 시스템의 선형연립방정식을 행렬로 표현하는 방법을 공부했다. 위 행렬을 중/고등학교때 공부했던 행렬의 계산식대로 곱해보면 처음의 방정식 형태가 나온다는 것을 쉽게 알 수 있을 것이다.

 

 

이제 여기서 우리가 알아야 할 것은 이 시스템에서 다음이 의미하는 것들이다.  

 

- Row picture

- *Column picture

- Matrix form

 

 

Row picture란 쉽게 말해 Row방향의 방정식을 하나씩 보는 것이다. 예를 들면 위 식에서 2x-y=0의 하나의 방정식을 놓고 봤을 때, 이 방정식이 공간상에서 어떻게 표현되는지, 무엇을 의미하는지 아는 것이다.  

 

Column picture는 위 행렬에서 계수 행렬에서 column방향의 벡터들을 보고 이것의 의미가 무엇인지, 그리고 공간상에서는 어떻게 표현 되는지를 이해하는 것이다. 

 

마지막 Matrix form은 이러한 Row와 Column picture들로 이루어진 Matrix에 대해 그 의미를 이해하는 것이다. 위 식에서 A에 해당한다. 

자 그럼 이제 이 내용들을 시각화 하여 이해 해보도록 하자. 

 

우선 주어진 식은 다음과 같다. 아래의 식이 이 시스템을 행렬 형태로(Matrix form)보는 것이기 때문에 Matrix form부분은 설명을 생략한다. 

 

 

1. Row picture

 

앞서 말한 것과 같이 Row picture란 한 번에 하나의 row방향의 방정식을 따져 보는 것을 의미한다. 즉 아래 수식에서 (1)번식, (2)번식 각각을 의미한다. 

선형대수에서 이러한 row방향의 하나의 방정식은 좌표 공간상에서 직선으로 표현된다. 즉 2x-y=0을 만족시키는 모든 x와 y의 점들을 찍으면 결국 좌표 공간 상에서 하나의 직선으로 표현되는 것이다. 

이를 실제로 구현하려면, y=의 꼴로 이항하여 식을 먼저 정리하면 좋다. 정리하면 아래와 같다.

 

 

MATLAB으로 실제로 구현해보자. 코드는 아래와 같다. 

 

 

 

코드 실행 결과는 아래와 같다. 

 

 

 

 

 

주어진 식은 x와 y로 구성된 선형 일차식이기 때문에 그 형태는 무조건 직선이 된다. 

이러한 형태의 식을 그리기 위해선 간단히 해를 만족하는 두 개의 점만 구하면 된다. 

 

첫 번째 식 2x-y=0의 경우 x=0일때 y=0이어야 하므로 [0,0]을 한 점으로 잡을 수 있고 x=1일 때 y=2여야 해를 만족하므로 [1,2]가 두 번째 해를 만족하는 점이 된다. 위 그래프에 실제로 대입해보면 맞는 것을 확인할 수 있다. 

 

두 번째 식 -x+2y=3인 경우 x=1일 때 y=2여야 한다. 따라서 [1,2]가 한 점. y=0일 때 x=-3이므로 [-3, 0] 이 한 점이다. 

 

 

위 그림에서 우리는 두 선이 만나는 지점이 있다는 걸 알 수 있다. 우리는 앞의 내용을 통해 두 직선의 교점이 [1,2] 라는 것을 알 수 있다. 만약 교점이 없다면, 이 시스템의 해는 존재하지 않는다. 

 

결국 선형대수의 행렬에서 Row picture는 Row 방향의 개개의 방정식들이고 이러한 Row 방향의 방정식들은 2x2행렬에선 직선(line)으로 표현된다. (3x3는 plane으로 표현됨)

결국 2x2행렬에서 Row picture의 해는 해당 직선들이 만나는 교점이라는 것을 알 수 있다. 

 

 행렬에서 각 Row에 해당하는 방정식을 한 번에 하나씩 보는 것이 Row picture이고, 
각 Row방정식들의 교점을 찾는 것이 목표이고 그 교점이 그 시스템의 다. 

 

 

 

2. Column picture

 

다음은 Column picture에 대해 알아보자. 

말 그대로 행렬에서 column part를 보는 것이다. 즉 다시 말하면 행렬에서 x부분과 y부분으로 각각 보는 것이다. 

방정식을 다시 보자. 

 

 

여기서 x column이란 x에만 곱해지는 계수들 즉, [2, -1]이고, y column은 마찬가지로 [-1, 2]이다. b column은 [0, 3]이 된다. 위 식을 column식으로 표현하면 아래와 같다. 

 

 

 

(5)는 (4)를 좀 더 일반적으로 표현한 것이다. 

위 식을 좀 더 자세히 살펴보자. Row picture와는 달리 계수행렬(coefficient matrix)에서 동일한 변수가 곱해지는 계수들을 묶어서 정리한 것이다. 이렇게 정리한 결과는 계수행렬에서 column vector들과 각 변수의 곱의 조합으로 표현되어진다. 

 

다시 말하면.. 

 

좌변에서 [2 -1]벡터에 어떤 상수 x가 곱해진 것과 [-1 2]벡터에 어떤 상수 y가 곱해진 것을 더했을 때 우변의 벡터 결과가 나오는 것이다. 




(※ bold체는 벡터를 의미)



우리는 이를 선형 결합(Linear Combination)이라 부르며, 이러한 형태의 연산은 선형대수에서 가장 근본적이며 핵심적인 연산이다. 
여기서는 column의 선형 결합(Linear combination of columns)라 할 수 있다. 
결국 이 식이 우리에게 묻고자 하는 것은 주어진 벡터들에 어떤 상수 x와 y가 곱해져야 우변의 벡터 값이 나오는가? 이다. 즉 우항의 벡터를 만족시키기 위한 적절한 선형 결합은 무엇인가? 이것이 곧 이고 핵심이다. 

 

자 그렇다면 이러한 column 벡터의 선형 결합이 공간상에서 어떻게 표현되는지 알아보자.  

계수 행렬의 각 column은 공간상에서 벡터로 표현된다. 

 

위의 식 (4)에서 x에 곱해진 벡터 v1과 y에 곱해진 v2, 그리고 u=b를 각각 그려보자. 아래와 같이 될 것이다. 

 

 

 

 

다시 말하자면 이 선형식에서 우리의 목표는 벡터 v1v2에 얼마의 상수 x, y를 각각 곱하여 벡터 b를 만드는 것이다. ((5)번식 참조)

 

그렇다면 이 식을 만족시키는 해 x, y는 어떤 값일까? 

 

결론부터 말하자면 해는 [1 2]이다. 눈치 챘겠지만 이 해는 Row picture에서의 해와 같다.  

해를 대입하여 식을 다시 쓰면 아래와 같다. 주어진 식을 만족하는 것을 확인할 수 있다. 

 

 

자 그럼 이제 이를 공간상에서 표현해 보자. 결과 그림은 아래와 같이 될 것이다. 

$1 \; \overrightarrow{\boldsymbol{v_1}}$은 파란색 벡터이고, 이 벡터에 2배 만큼을 곱한 $2 \; \overrightarrow{\boldsymbol{v_2}}$를 더해준다. 이 벡터는 아래 그림에서 자홍색 파선으로 표현된 벡터다. 

자 이렇게 v1과 v2의 선형 결합을 한 결과 벡터가 어느 곳을 가르키고 있는가? 바로 $ \overrightarrow{\boldsymbol{b}}$벡터의 끝점과 일치하는 것을 볼 수 있다. 

   

 

 

 

위 그림을 통해 우리는 행렬의 column picture에서 각 column의 선형결합(Linear combination)이 공간상에서 어떻게 표현되는지를 눈으로 확인할 수 있었다. 

위 그래프를 그리기 위한 MATLAB코드는 아래와 같다. 

 

 

 

 결과적으로 우항의 벡터 b를 만족시키기 위한 좌항의 적절한 선형 결합을 찾는 것이 Column picture에서의 목표이다. 
또한 Row picture든 Column picture든 어차피 똑같은 시스템 A를 보는 것이기 때문에 결국 해는 같다. 
문제를 직선이나 평면 등의 방정식으로 볼 것인지, 아니면 벡터들의 선형 결합으로 볼 것인지가 Row와 Column picture의 차이다.

 

 

다음 시간에는 2차원이 아닌 3차원에서 Row와 Column picture를 확인해보고 이에 대한 좀 더 깊은 이해를 해 보도록 하자. 

 

앞으로 포스팅 할 선형대수(Linear Algebra)에 관한 내용은 MIT의 gilbert strang교수님의 강의를 기반으로 한다. 구글에 검색해보면 길교수님의 강의를 쉽게 찾을 수 있다. 


본격적인 공부에 앞서 선형대수란 놈에 대해서 알아보자.


선형대수란 무엇일까? 



선형대수(Linear algebra)는 선형 방정식을 풀기 위한 방법론이다.  


언뜻 이해하기어려워 보이지만 좀 더 풀어서 써보면...

선형 방정식(linear equation)이 있는데, (2x+3y=0 와 같은...)

여기서 우리는 우측의 해(0)를 만족시키는 x와 y를 찾아내는 것이다. 


방정식(equation)이 하나이고 미지수(unknown) 역시 하나라면 답은 굉장히 쉬울 것이다.

3x+1 = 7, (미지수 x의 값은?)


그러나 2x+3y=0과 같이 식이 하나, 미지수가 두 개인 경우엔 (미지수 x, y)

해를 만족시키는 x와 y를 이 하나의 식만 가지고는 찾아내기가 힘들다. 

일일이 값을 대입해보거나 직관으로 풀어야 하는데 이는 굉장히 비 효율적이다. 


그런데 위와 같은 식이 하나가 더 있다면 어떨까?

같은 차원의 방정식이 하나 더 존재한다면, 우리는 두 방정식의 관계를 이용해 해를 쉽게 찾아낼 수 있는 것이다. 

이것이 우리가 선형대수를 공부하는 목적이다. 



그럼 여기서 선형은 뭐고 대수는 또 뭐지? 와 같은 의문이 들 수 있다. 

정말 간단히 설명하자면...

선형이란 입력에 a라는 영향을 주면 그에 따른 출력 값도 기존에 출력값에서 a라는 영향을 받은 만큼의 결과 값이 나오는 시스템이다. 

즉 다시말하면.. 



어떤 시스템에서 입력값에 영향을 준 만큼 결과 값도 그만큼 영향을 받아서 나오는,

다시 말해 예측이 가능한 시스템이라는 것이다. 



쉬운 예로 직선의 방정식 y=ax를 살펴보면 이해가 쉬울 것이다. 이 방정식의 경우 x에 어떠한 수를 곱해도 y는 a만큼 곱해준 수 만큼 결과 값이 나올 것이다. 

이를 식으로 표현하면 아래와 같다. 



또한 선형성은 아래의 식으로도 정의할 수 있다. 




간단한 직선의 방정식을 통해 위 정의를 검증해 보자. 


(1)번을 살펴보면

 y=3x 라는 식이 있다고 했을 때 x=2인 경우 y는 6이다. 

여기서 x앞의 계수 3을 없애고 x의 결과 값인(y=x) y에 3을 곱해주면 결과 값은 당!연!히! 같아진다. 


(2)번을 살펴보면

x1=3, x2=4, a=6인 경우를 생각해 보자.

y=a(x1+x2) = a(x1)+a(x2)

6(3+4) = 6(3) + 6(4)

= 42


이것이 선형성(linearity)이다. 위에서 정의한 대로 입력 부분의 계수 값에 따라서 결과값이 그대로 예측이 가능하다. 






그렇다면 대수라는건 무엇인가?

대수(代數)라는 말 그대로 "숫자를 대신하는"것(문자)을 의미한다. 

숫자를 대신하는 대수(代數)를 이용하여 방정식을 풀고 해를 구하는 것을 우리는 대수학(代數學)이라고 한다. 

직선의 방정식 y=3x에서 대수는 x, y를 의미하며 3은 대수에 붙은 계수(係數)로써 선형대수에서는 이 계수들이 매우 중요한 의미를 갖는다. 우리는 앞으로 이 계수들을 활용해서 연립방정식의 해를 구하게 될 것이다. 




결국 선형 대수라는 것은 

선형성(linearity)을 가지는 대수(algebra)로 이루어진 방정식들의 해를 구하는 방법론, 혹은 학문이다.


현재 대학원에 박사과정으로 재학중이며 전공 및 관심분야는 Computer Vision, Machine Learning, Robotics등 입니다. 

본 블로그의 개설 목적은 저의 전공을 공부 하면서 부족하다고 느낀 부분을 정리를 통해서 스스로 채우고 이를 많은 사람들과 함께 공유하기 위함 입니다. 

"가장 좋은 공부법은 남을 가르치는 것이다"라는 말이 있듯이 누군가를 가르치는 행위가 결국 자신에게 최고의 공부법이라는 것에 저도 동의하는 바입니다. 말로써 가르치면 더 좋겠지만, 우선 블로그를 통해 정리를 해 나갈 생각입니다. 

학교에서도 이런 저런 고등 수업들을 많이 들었지만, 막상 수업을 듣고 실제 프로젝트를 하면서 느꼈던 점은 기초를 탄탄히 해두지 않으면 언젠가는 그 한계가 드러난다는 것입니다. 학부때 그저 학점을 따기 위한 공부가 아닌, 진짜 공부를 했더라면 더 좋았을 텐데 하는 생각을 자주 합니다. 그래서 우선 기초 과목에 대한 포스팅을 위주로 할 생각입니다. 선형 대수(Linear Algebra)를 시작으로 확률 통계(Probability & Statistics)를 차례로 다룰 예정이며, 어디까지 다룰지는 아직 잘 모르겠습니다. 

회사에서 연구직으로 일하는 친구들의 얘기를 들어보자면 요즘엔 워낙 오픈소스나 라이브러리들이 잘 나와있기 때문에 이미 나온 것들을 잘 가져다 쓰기만 하면 업무에 큰 지장이 없다고 합니다. 특히 요즘 유행하는 딥러닝(Deep Learning)이 그러한데, 텐서플로우를 포함한 Caffe 등 각종 도구나 라이브러리들이 너무나 잘 나와있습니다. 

하지만 제 생각은 조금 다릅니다. 처음 프로토 타입 정도를 만들 때는 오픈 소스를 활용해도 어느 정도 성능이 나오겠지만 그 한계는 분명히 있다고 생각합니다. 해당 오픈소스가 완벽하다는 보장은 없으며 현재 내가 하고 있는 프로젝트에 딱 맞는다는 보장은 더더욱 없습니다. 더구나 프로젝트의 요구사항이 바뀌었을 때 유연하게 대처하기 어렵다는 측면도 있습니다. 그리고 개인적으로는 무엇보다도 오픈소스만 가져다쓰면 재미가 없습니다. 

물론 모든 부분을 직접 구현할수는 없겠지만 적어도 핵심적인 부분은 내가 잘 알고 직접 구현해야 하는 것이 좋다는 생각입니다. 그래서 기초가 더욱 중요하다고 생각합니다. 기초가 탄탄하면 기존의 이론들 뿐만 아니라 어떠한 새로운 이론이 나온다고 해도 이를 이해하기가 훨씬 수월합니다. 그 어떤 새로운 이론들도 해당 분야의 기본 지식, 철학에서 자유롭지 못하기 때문입니다. 

또 한가지 이유를 들자면 우리 나라의 학습 교재 및 강의입니다. 그간 공부를 하면서 원서로 공부한 과목도 있었고 한글책, 혹은 번역본으로 공부한 과목도 있었습니다. 그러나 대부분의 경우, 특히 공학 교재중에 번역본이 원래 내용을 제대로 전달하는 책을 한 번도 본적이 없었던 것 같습니다. 수학을 비롯해 각종 최신 이론 등은 거의 대부분 서양에서 발전해왔습니다. 따라서 그들이 쓴 책이 원래의 내용을 전달하는데에 있어 훨씬 정확하고 구체적인 것은 어쩔 수 없습니다. 그래서 원서로 공부하는 것이 좋은데, 문제는 우리는 한국인 이라는 겁니다. 아주 어렸을 때부터 영어권 국가에서 나고 자란 사람이 아닌 이상 한국어가 모국어(mother tongue) 입니다. 아무리 영어공부를 열심히 한다 한들, 한국에 살면서 영어가 모국어가 될 수는 없습니다. 모국어가 한국어인 사람이 아무리 영어를 유창하게 한다고 해도 실제로 진짜 화가나면 한국어로 욕을 하고 머릿속에서 생각하는 어떤 동작이나 표현은 한국어로 한다고 합니다. 단지 한국어로 생각한 단어나 표현을 영어로 스위칭(switching)하는 속도가 보통 사람들보다 훨씬 빠르다는 것 뿐입니다. 따라서 원래의 의미나 내용을 한국어로 잘 전달하는 교재를 보거나 강의를 듣는 것이 한국어가 모국어인 사람들에게는 가장 좋다고 생각합니다. 하지만 그러한 것을 찾기 힘들기 때문에 저라도 시도를 해볼까 합니다. 저도 공부할 겸 ^^


나중에는 고등 학문들도 다루겠지만 먼저 기초 과목에 대해서 다룰 예정입니다. 저처럼 기초를 충분히 쌓지 못한 상태에서 대학원에 진학했거나 직장에서 연구 등의 관련 업무를 수행해야하는 분들에게 조금이나마 도움이 되었으면 하는 바람입니다. 

+ Recent posts