cyphen156

게임 수학 5장-1 : 선형성 본문

수학/게임수학

게임 수학 5장-1 : 선형성

cyphen156 2023. 8. 22. 14:09

이번 챕터에서 공부할 내용은 행렬입니다. 이산수학을 배운 사람이라면, 컴퓨터와 관련된 직종을 가는 분이라면 누구나 알고있을겁니다.

우선 행렬을 공부하기 전에 선형성이라는 것에 대해 알아야 합니다

선형성(Linearity)

선형이라는 것은 생각보다 엄청 중요합니다. 요새 뜨고 있는 인공지능에서도 메인은 선형성이고, 통계학에서도 선형성을 이용해 결과를 예측합니다.

선형성은 영어로 Line이라는 단어를 사용하기 때문에 직선그래프가 나오면 선형성을 만족 할 것 같이 보이지만, 사실 뜯어보면 그렇지 않습니다. 오히려 이전 장에서 배웠던 전단사 함수의 경우와 같이 입력 - 출력 사이의 결과가 1:1로 매칭되어야 한다는 Strate(직진)의 의미에 가깝습니다.

선형성에는 2가지 성질이 있습니다. 아래에 나올 두 가지 조건을 만족하지 못한다면 선형성을 갖을 수 없습니다. 바로 가산성과 1차 동차성입니다.

가산성(Additivity) : f(x + y) = f(x) + f(y)

가산성이라 함은 역으로 생각하면 알고리즘의 분할 정복 기법이라 생각할 수 있습니다. 하나의 큰 문제를 여러개의 작은 문제로 나누어 작은 단위부터 연산을 처리해 나가는 것을 분할 정복이라 합니다.

이러한 분할 정복 기법을 반대로 추론한다면 여러개의 작은 문제를 하나의 큰 문제로 합쳐서 한번에 연산했을 때도 동일한 결과가 나와야 한다는 것을 의미합니다. 

가령 f(x) = 2x라는 수식이 존재할 때 분배법칙이 성립되면

f(2) + f(3) = 4 + 6

=> f(2+3) = f(5) = 10이라는 동일한 결과가 도출됩니다.

하지만 f(x) = 2x + 5라는 수식이 존재할 때에는 같은 조건이었던 f(2) + f(3)이라는 문제의 정답은 9+11 = 20이지만

f(5) = 15라는 전혀 다른 결과가 도출됩니다. 이렇게 같은 1차식이지만 평행이동의 여부에 따라서 가산성이 성립할 수도,  성립하지 않을 수도 있습니다. 

f(2)+f(3)과 f(5) 사이의 결과에는 초록색 범위 만큼의 차이가 발생한다.

1차 동차성(Homogeneity of degree) : a * f(x) = f(ax)

1차 동차성은 가산성과 비슷하지만 서로 다른 수식에 같은 스칼라를 곱하면 결과는 같다는 것을 의미합니다.

앞의 예를 그대로 사용하면

f(x) = 2x, g(x) = 2x+5라는 수식이 존재할 때

입력을 2, a를 3이라고 준다면 

3 * f(2) = 3 * 4 = 12

=> f(2 * 3) = 2 * 6 = 12라는 동일한 결과가 도출되지만

3 * g(2) = 3 * 9 = 27

=> g(3*2) = 6 * 2 + 5 = 17

이라는 전혀 다른 결과가 도출됩니다.

그렇다면 2차 방정식 이상의 수식일 경우에는 어떨까요? 

f(x) = x²이라는 수식이 존재할 때

가산성을 검사해본다면

f(2) + f(3) = 4+9 = 15이지만

=> f(5) = 25이고, 

1차 동차성을 검사해본다면

3 * f(2) = 3 * 4 = 12이지만

=>f(2*3) = 6*6 = 36이라는 결과로 보아

평행이동을 하지 않았음에도 전혀 다른 결과가 출력되므로 가산성과 1차 동차성을 모두 만족하지 못하여 선형성을 갖지 못한다는 것을 알 수 있습니다.

이를 통해 선형성이라는 성질이 원점을 지나는 1차 함수의 형태를 갖아야지만 성립함을 알 수 있습니다. 즉, 역함수를 사용하면 출력값으로부터 입력값을 거꾸로 계산할 수 있어야 한다는 것입니다.

따라서 선형성을 이용해 벡터를 변환할 수 있고, 변환된 벡터를 역으로 선형변환의 원리를 이용해 변환 전의 벡터를 파악해 낼 수 있습니다. 

 

모든 예제 코드의 소스파일은 

GitHub - onlybooks/gamemath: <이득우의 게임 수학> 공식 깃허브 페이지

 

GitHub - onlybooks/gamemath: <이득우의 게임 수학> 공식 깃허브 페이지

<이득우의 게임 수학> 공식 깃허브 페이지. Contribute to onlybooks/gamemath development by creating an account on GitHub.

github.com

또한 제 개인 깃허브 레포지토리 에 있습니다.

Workspace/C++/GameMath at main · cyphen156/Workspace · GitHub

※ 이득우 교수님의 인프런 게임수학강의를 참고하여 작성되었습니다.