작년 초 즈음에 구입했던 걸로 기억하는데 이제서야 읽었다. 


처음엔 단순히 역사나 경제, 정치, 사회, 윤리에 관련된 일련의 사건이나 지식들을 나열한 것으로만 알았는데 막상 읽어보니 전부 하나의 이야기였다. 역사적 사건들을 경제와 연결하여 해석하거나 경제적 지식들을 정치, 사회적 관점에서 해석하기도 했다. 마치 하나의 소설을 읽어나가듯이 재밌게 읽었던 것 같다. 


기억나는 것은 세계를 해석하는 관점을 단순화한 것이다. 우리 세계에 존재하는 이념이나 갈등, 역사적 흐름의 요인을 지배와 피지배계층간의 갈등에 따라 발생한 것으로 해석하였다. 선사시대에 평등했던 관계가 생산수단을 갖춤으로써 지배와 피지배 계층으로 나뉘며 이것이 역사적으론 왕과 노예, 영주 체제, 부르주아와 프롤레타리아, 산업혁명 이후엔 자본가와 노동자계급으로 바뀌어 지속되어 왔다. 그에 따른 정치적 이념들이 계속 등장해 왔다. 초기 자본주의, 후기 자본주의, 신자유주의, 공산주의 등의 이념들이 등장해 왔으며 이와 관련된 세계 경제대공황, 냉정체제 등의 역사적 사건들이 지속되어 왔다. 결국 이 모든 이념, 사건들이 지배하려는 자와 지배당하지 않으려는 자와의 끝없는 사투에 따라 발생한 것으로 해석된다. 


중요한 것은 지배자가 되려면 생산수단을, 피지배자가 되기 위해선 노동력을 갖추면 된다. 생산수단의 형태는 농지, 공장에서 현대에 와서는 자본의 형태로 변해왔고, 피지배자의 노동력은 육체적 노동력에서 현대에선 정신적 노동력으로 바뀌어 오고 있는 것 같다. 물론 현대에도 육체적 노동력이 존재하지만 기계의 발달로인해 앞으로 점점 더 지적 노동력으로 바뀌어 갈 것이다. 그러나 인공지능이 지금보다 훨씬 더 발달하면 지적 노동력도 좀 더 심화되거나 다른 형태로 바뀔 것으로 생각된다. 아니면 인간 자체가 필요없어지던지. 



사실 세계를 단순히 지배계층과 피지배계층간의 갈등만으로 해석하기엔 너무나 복잡하다. 그럼에도 불구하고 이렇게 복잡한 세계를 단순화하여 보다 거시적인 관점에서 세상을 바라보는 눈을 키운 것만으로도 책의 가치는 충분한 것 같다. 








서점에 갔다가 우연히 보게 된 책. 그러나 그 전에 페이스북에서 친구들이 좋아요를 눌러서 보게된 인생공부 페이지에서 알게 된 책이었다. 공부와 관련된 짤막한 동영상 강의 내용들이 꽤 괜찮은 내용들이어서 기억에 남았나보다. 


먼저 목차를 살펴보고 흥미로운 소제목들이 많아서 주저 않고 구입했다. 훌륭한 선택이었다. 

공부에 관련된 여러 가지 흥미로운 내용들을 많이 담고 있었다. 그 중에 기억나는 것 몇 가지는 "뇌의 가소성", "메타 인지", 그리고 "공부와 사회성의 관련" 정도 이다. 


그 가운데 가장 기억에 남는 것은 "뇌의 가소성"이다. 뇌의 가소성이란 뇌를 어떤 방향으로 계속 쓰느냐에 따라 결국 뇌가 그 방향으로 변한다는 것이다. 얼핏 들으면 당연한 말 같지만 객관적인 실험 결과와 1만 시간의 법칙의 재해석, 그리고 저명한 학자들의 연구결과를 근거로 "뇌의 가소성"을 논리적으로 설명하였다. 결국 말하고자 하는 것은 뇌는 후천적으로 변할 수 있다는 얘기다. 나는 공부하는 머리가 아니야 라고 믿는 순간 우리는 발전할 기회를 스스로 박탈하는 것이다. 


어떤 연구 결과에서 공부에서 선천적 재능이 차지하는 비율이 대략 96%에 달한다는 기사를 본 적이 있다. 그 연구가 정말 맞을 수도 있지만 필자는 거의 틀렸다고 본다. 물론 선천적 재능이 어느 정도 영향을 미칠 순 있으나 그것보다는 어떤 사건이나 계기, 환경적 요인이 많이 작용하는 것 같다. 사실 우리몸 자체가 유기체인데 마치 기계와 같이 설계한 대로 만들어지고 성장한다면, 운명 따위가 존재하는 것과 같은 것이라면 이 얼마나 슬픈 일인가. 뇌의 가소성을 이야기 한다는 것은 결국 우리 스스로 바뀔 수 있고 변할 수 있다는 마음가짐, 성장할 수 있는 가능성을 열어두는 것이다. 그리고 스스로에 대한 믿음의 정도가 우리가 뇌의 가소성을 활용하여 성장하고 성공할 수 있는 가능성을 높이는 일이다. "뇌의 가소성"이 던지는 진짜 메시지는 바로 우리 스스로에 대한 "믿음"이라 생각한다. 

그리고 그 믿음을 받쳐줄 수 있도록 목표를 설정하고 스스로 동기부여를 하며 적절한 환경과 전략을 만드는 일 등은 "믿음"이후에 우리 스스로 풀어야 할 숙제들이다. 



이야기 하고 싶은 말이 너무 많지만 이 정도만 하자.. 여하튼 좋은 책이다. 


이번 강의에서 배울 내용은 바로 해가 존재하지 않는 선형연립방정식의 해를 구하는 방법이다. 이는 바로 다음 강의에서 배울 투영 행렬(Projection matrix)을 배우기 위함이다. 투영 행렬에 대해 본격적으로 공부해보기 전에 먼저 준비 운동을 해보자. 투영 행렬에 대한 이해를 돕기 위해서 말이다. 

 

 

1. 해가 존재하지 않는 선형연립방정식 Ax=b (Solving Ax=b when there is no solution)

 

 

우리는 지금 까지 부분 공간(subspaces)등을 다뤄오면서 주로 null space에 관한 식 Ax=0에 대해서 공부해왔다. 투영 행렬에 대한 준비운동으로 우변에 어떤 값이 존재하는 식 Ax=b에 대해서 다시 한 번 생각해보자. 

 

우리는 지난 강의 Lecture 8에서 어떤 시스템의 선형방정식인 Ax=b 를 만족시키는 해 x를 구할 때, b가 행렬 A의 column space상에 존재한다면 이 선형시스템은 가해 조건(solvability condition)을 만족하며 해를 구할 수 있다고 배웠다(b를 붙인 Augmented matrix를 만든 뒤 함께 소거하여 후방대입). 그러나 만약 b가 가해 조건을 만족하지 않는다면? 즉 b가 A의 column space상에 존재하지 않는다면 어떻게 될까? 가해 조건을 만족하지 않아 해가 존재하지 않는 경우 말이다. 이러한 경우에도 해를 구할 수 있을까? 

 

질문이 약간 이상해보일 수 있다. 해가 존재하지 않는데 해를 구한다고? 말이 안되는 것 처럼 보이겠지만 사실 해를 구할 수 있다. 좀 더 정확히 이야기 하자면 애초에 해가 없기 때문에 아주 정확한 해(exact solution)는 구할 수 없지만 가장 근사한 해를 구하는 것이다. 특히 행렬 A의 미지수(unknown)보다 방정식(equation)이 더 많은 경우(m>n), rank는 m보다는 당연히 작고 최소 n이 된다. 이 경우 column 벡터의 차원이 rank보다 작기때문에 우변의 벡터 b에 상응하는 해가 없을 가능성이 훨씬 높을 것이다. 이를 overdetermined라 한다. 미지수와 방정식의 수가 같은 경우(m=n)를 determined, 방정식이 미지수보다 적을 경우(m<n) underdetermined라 한다. 그 형태는 아래와 같다. 

 

 

 

 

Overdetermined는 방정식이 미지수보다 많은 경우이며 일반적으로 해가 존재하지 않는다. 해가 존재하는 경우가 있다면 우변의 b벡터가 A의 column space에 존재할 때 해(solution) x가 존재한다. 실제로 식 (1)의 overdetermined행렬에 우변 벡터 b를 붙여 Augmented matrix를 만든 다음 소거(elimination)를 통해 row reduced echelon form을 만들면 row4는 영벡터인데, b4의 원소는 0이 아닌 상수가 나온다. 애초에 식 자체가 성립이 안되기 때문에 해가 존재하지 않는다. 

Determined는 미지수와 방정식의 수가 같은 경우이며, full rank일 경우 유일한 해(unique solution)를 갖는다. 

Underdetermined는 미지수가 방정식보다 많은 경우이다. 이 경우엔 무수히 많은 해가 존재한다. 

위와 관련해서는 나중에 행렬식(determinant)을 공부할 때 다시 살펴보도록 하자. 

 

 

어쨋든 해가 없는 경우인 overdetermined에 대한 이해를 돕기 위해 예를 들어 설명을 하겠다. 인공위성의 위치를 추정하는 식이라고 생각해보자. 위치 측정값에 대한 위한 수백, 수천개의 방정식을 얻었다고 가정해보자. 이렇게 되면 미지수(unknown)보다 측정 값에 대한 방정식이 훨씬 많은 경우가 되어 overdetermined형식이 된다. 따라서 해가 존재 하지 않게 되는데, 가장 간단하게는 미지수의 수 만큼의 방정식만 남기고 나머지는 없애는 것이다. 그러나 어떤 방정식(측정값)이 좋은 것이고 어떤 것이 나쁜 데이터인지 정확히 판단하기는 어렵다. 대부분의 데이터에는 잡음(noise)이 있지만 또한 시스템의 해 x에 대한 정보도 담겨있다. 어떤 방정식을 없애야 하는지에 대한 기준은 명확하지 않다. 따라서 우리는 이 모든 데이터에 대한 방정식을 고려한 최적의 해(best solution)를 구해야 할 것이다. 곧이어 배우겠지만 이것이 최소자승법(Least square method)이며 투영행렬(projection matrix)과도 관련이 있다

 

다시 overdetermined행렬의 소거를 생각해보자. 이때의 행렬의 형태는 직사각형(Rectangular)형태일 것이고 바로 위에서 언급한 것처럼 소거했을 때 pivot row아래의 row들, 즉 row4는 [0 0 0]=[1]와 같이 말이 안되는 식이 될 것이다. 소거(Elimination)에 실패한 것이다. 소거의 결과는 우리에 해가 존재하는지, 혹은 존재하지 않는지에 대한 것을 말해준다. overdetermined인 경우에는 소거가 해가 존재하지 않는다고 말해준다. 그럼 어떻게 해야 할까? 지금부터가 중요하다. 우선 아래의 행렬을 이해하는 것이 굉장히 중요하다. 

 

 

 

식 (4)의 행렬은 우리의 문제를 이해하는데 핵심적인 역할을 하는 행렬이다. 위 행렬은 어떤 행렬일까? 

여기서 한 가지 가정은 행렬 A는 m by n크기이며 m이 n보다 더 큰, 즉 m>n 의 overdetermined형태이다. 이러한 A행렬의 전치(transpose)를 A앞에 곱해주었다. 어떻게 될까? 바로 정사각행렬(square matrix)이 된다. 원래 행렬 A는 m x n이고, A의 transpose행렬은 행과 열이 뒤바뀐 n x m이다. A의 transpose행렬을 앞에 곱해주면 (n x m) * (m x n) = (n x n)이 되어 정사각행렬이 되는 것이다. 

 

 

 

식 (4)의 또 다른 특성은 어떤 것이 있을까? 바로 대칭(symmetric)이다. 대칭 행렬(symmetric matrix)의 특성은 전치를 해도 원래 자기 자신과 똑같은 특성을 가지고 있다. 한 번 증명해보자. 

 

 

전치를 해도 원래의 행렬 곱과 똑같아지는 것을 알 수 있다. 

 

자 이제 가장 중요한 것을 확인해보자. 식 (4)는 역행렬이 존재하는가(invertible)? 식 (4)는 역행렬이 존재한다. 단 조건은 Full rank여야 한다는 것이다. 우리는 식 (5)를 통해 식 (4)가 정사각행렬이 됨을 알았다. 역행렬(Inverse matrix)의 조건은 정방행렬이면서 full rank여야 한다. 따라서 full rank라는 조건만 충족된다면 식 (4)는 역행렬이 존재한다. 사실 full rank가 되기 위한 조건은 원래 행렬의 column이 독립(independent)하면 된다. 

 

이렇게 하여 우리는 overdetermined형태의 행렬 A의 앞에 A의 transpose를 곱해준 형태인 식 (4)의 중요한 특성 3가지를 알아보았다. 특성 3 가지를 다시 정리해보면 아래와 같다. 

 

  • Square Matrix
  • Symmetric Matrix
  • Invertible (if Full rank)

 

우리가 지금까지 식 (4)에 대한 주요 특성들을 알아본 이유는 결국 어떤 문제를 해결하기 위함이다. 맨 처음 언급한 것과 같이 우리는 Ax=b에서 방정식이 미지수보다 더 많은 형태(m>n)인 overdetermined에 대한 형태에 관한 문제를 풀고자한다. 그러나 overdetermined형태의 식은 앞서 언급한 것과 같이 방정식이 미지수보다 더 많기 때문에 해가 존재하지 않는다. 그렇다면 여기서 끝내야 할까? 아니다. 식을 정확하게 만족시키는 해를 구할 순 없어도 모든 식을 최대한 만족시키는 해(best solution)를 구하면 된다. 아래 식을 다시 보자. 

 

 

식 (7)의 행렬 A는 정방행렬(square matrix)이 아니기 때문에 역행렬을 구할 수 없다. 따라서 해를 구할 수 없다. 그러나 최적의 해는 구할 수 있다. 바로 식의 양변에 A의 전치(transpose)를 곱해주는 것이다. 

 

 

양변에 똑같은 행렬을 곱해줬기 때문에 식은 성립한다. 이때 식의 해(solution)에 해당하는 x에 hat(^)이 붙었다. x hat이 의미하는 것은 최적해(optimal or best solution)이다. 식을 정확히 만족시키는 해(solution)는 아니지만, A에 존재하는 모든 방정식(row, b)을 최대한 만족시키는 해를 의미하는 것이다. 식 (8)은 굉장히 중요하다. 

 

거의 다 왔다. 이제 중요한 것은 식 (8)의 실제 해를 구하는 것이다. 

은 앞서 살펴봤듯이 full rank이기만 하면 역행렬이 존재한다고 했다. 따라서 이것의 역행렬을 구하여 양변에 곱해주면 최종적인 해를 구할 수 있을 것이다. 

 

 

 

이렇게 하여 해가 존재하지 않는 Ax=b에 대한 최적해(best solution)를 구할 수 있다. 다음 섹션에서 실제 예를 들어서 계산해보도록 하자. 

 

 

 

2. Examples of Ax=b (overdetermined case)

 

- Best solution for overdetermined equation

 

섹션 1에서 가장 처음 봤던 식 (1)의 overdetermined 식의 해를 구해보도록 하자. 식 (1)을 다시 써보면

 

 

 

 

위의 식을 (9)와 같이 정리해보자. 

 

 

 

식 (1)의 예제를 식 (9)의 방법을 통해 최적해(best solution) $\hat{\boldsymbol{x}}$(x hat)를 계산하였다. 계산된 결과를 원래의 식과 비교해 봤을 때 약간의 차이가 있지만 그 정도가 크지 않은 것을 알 수 있다. 

 

결국 우리는 미지수(unknown)보다 방정식(equation)이 많아서 원래 해가 존재하지 않는 overdetermined case의 선형연립방정식에 대한 최적해를 구할 수 있었다. 비록 딱 들어맞는 정확한 해는 아니지만, 각 방정식의 정보를 최대한 반영하여 각 방정식과의 오차(error)의 합을 최대한 줄이는 쪽으로 해를 계산할 수 있었다. 

 

아래는 식 (10)을 MATLAB으로 구현한 코드이다. 

 

 

 

- when the solution exists in overdetermined equation

 

아무리 overdetermined 방정식이라도 해가 존재할 경우가 있다. 바로 우변의 벡터 b가 행렬 A의 column space에 존재할 때이다. 즉 A의 column 벡터들의 선형 조합(Linear combination)으로 b를 만들 수 있을 때를 말한다. 중간과정은 생략하고 결과만 보면 아래와 같다. 

 

b가 A의 column space에 존재할 경우 값이 정확하게 일치하는 것을 볼 수 있다. 

아래는 식 (11)의 MATLAB 코드

 

 

 

- Not invertible case

 

마지막으로 아예 최적해(best solution)조차 구할 수 없는 경우가 있다. 바로 행렬 A의 column이 dependent할 때 이다. Overdetermined system(m>n)에서 그나마 최적해라도 구하려면 행렬의 rank가 최소한 n과 같아야한다. 그러나 rank가 n보다 작을 경우엔 이 조차 불가능하다. 식(1)의 행렬을 아래와 같이 바꿔보자. 

 

 

행렬 A의 col3은 col1+col2와 같다. 따라서 column vector는 종속(dependent)이다. A의 앞에 A의 transpose를 곱해보자. 

 

 

연산 결과도 마찬가지로 col1+col2=col3인 것을 볼 수 있다. Full rank가 아니므로 역행렬이 존재하지 않는다. 따라서 행렬 A의 column이 dependent하면 최적해조차 구하는 것이 불가능하다. 결론적으로 ATA가 역행렬을 가지기 위해선 반드시 A의 column이 독립(independent)이어야 한다. 

사실 Full rank가 아닌 행렬, 즉 rank-deficient overdetermined matrix에 대한 역행렬을 구하는 방법들이 있긴하다. 그러나 본 포스팅의 범위에서 벗어나므로 생략하도록 하겠다. 관심이 있다면 다음 링크 참조 Moore–Penrose pseudoinverse

 

아래는 식 (13)의 MATLAB 코드

 

 

 

 

3. 마치며

 

이번 포스팅에선 해가 존재하지 않는 선형연립방정식에 대한 최적해(best solution)를 구하는 방법에 대해서 알아보았다. 이번 포스팅의 내용을 잘 이해야지만 이후에 배울 투영 행렬(Projection matrix)와 최소자승법(Least square method)을 공부하는데에 무리가 없을 것이다. 잘 이해하고 넘어가도록 하자. Overdetermined system에 대해 좀 더 관심이 있다면 overdetermined-wiki를 참고하기 바란다. 그래프와 함께 잘 설명이 되어 있다. 

 

+ Recent posts