네이버 AI 중국산 표절 논란? 국대 AI 탈락 논란? 핀트가 좀 어긋난 논란 주저리...

 

이번에 국대 AI를 뽑는 과정 중에 네이버가 독창성인지 독자성인지 모를 기준으로 탈락했다고 한다.

 

안타깝지만, 경선 주제에 맞지 않는 무언가를 했으니 떨어졌겠지.

 

이 이야기에 대해 조금 알아보자. 그리고 사람들이 왜 그에 대해 분노 (주로 유튜브 댓글 등지에서) 하고 있는지, 그리고 어떤 핀트가 어긋난 분노를 하고 있는지에 대하여.

 

복잡한 게 읽기 싫다면 결론으로 내리면 된다.

 

 

 

1. 독자 개발 기준 미달? 우선은 AI의 구조부터

 

우선, 이 '독자 개발' 이라는 단어가 도대체 뭘 말하는지부터 알아보자.

 

지금 이 이슈에서 이야기하는 부분을 쉽게 이해하려면 아무래도 AI의 특징 중 몇개를 골라 설명해야 하는데, 최대한 쉽게 설명해보겠다.

 

일단, 아키텍쳐(구조).

 

현대 AI는 대부분 (크게 보았을 때) 비슷한 구조를 가지고 있는데, 가장 간단한 구조로 치환해서 설명하면 대충 이런 구조가 된다.

 

1 line model

 

왼쪽에서 입력을 받고, Node 1와 Node 2라는 알 수 없는 함수에 의해 값이 변환된 다음, 최종적으로 오른쪽 출력으로 나온다.

 

이걸 조금 복잡하게 늘리면,

 

 

이런 식으로 노드와 화살표 (값이 전달되는 방향) 을 더 구성하여 조금 더 복잡한 구조의 AI를 구성할 수 있는 거다.

 

그러니까, 아키텍쳐는 데이터의 흐름이 어떻게 진행될 지, 그 청사도를 미리 깔아둔다고 생각하면 좋다.

 

그러면, 네이버가 베꼈다는 '가중치'는 뭘까?

 

 

 

다시 위로 돌아가 이미지를 살펴보자.

 

1 line model

 

가장 간단한 예시를 다시 가져왔는데, 예를 들어 한국어를 넣고 영어로 변환하는 일을 이 AI가 한다고 가정해 보자.

 

그렇다면 각 노드가 하는 일을 이렇게 정의할 수 있을 거다.

 

 

1번 노드에서 한국어를 뜻으로 전환하고, 2번 노드는 그 뜻을 전달받아 그걸 다시 영어로 변환한다.

 

뭐, 실제 AI가 이렇게 일하진 않지만 (저 변환 과정에 엄청나게 많은 노드들이 보통 존재한다), 일단 축약해서 그렇다고 치고, 그렇다면 각 노드마다 무엇을 어떻게 변환해야 되는지 저장이 되어 있을 거다.

 

예를 들어,

 

나무 -> 줄기와 가지와 뿌리가 있고 가지에 잎이 달리며 때가 되면 꽃이 피는 여러해살이 식물

물고기 -> 물속에 살며 지느러미로 헤엄치고 아가미로 호흡하는 척추동물

숫자 -> 수를 나타내는 글자

 

대충 이런 식으로 뭔가 데이터가 들어왔을 때 어떻게 작용하는지에 대한 방식이 학습 과정을 통해 저장이 되는데, 이를 '가중치'라 부른다.

 

그렇다면 이 가중치를 네이버는 왜 베꼈을까?

 

아니, 베낀 것이 맞을까?

 

이 부분이 사람들이 가장 많이 분노하고 있는 부분이자, 오해하고 있는 부분이다.

 

 

 

 

2. 가중치를 표절한다는 말이 맞을까?

AI를 배우고, 또 관련 일을 하다 보면 참 많은 일...을 하게 되는데. 놀랍게도 그 중 대부분은 머리를 싸매거나 대기하는 시간이다.

 

왜냐하면 보통 학습을 돌려놓고 학습이 잘 돌아가는지 모니터링(...) 하는 시간이 제일 오래 걸리기 때문인데...

 

이를 보통 해결하기 위해, 양질의 데이터로 미리 일정 수준 학습 시켜놓은 모델들이 보통은 배포되고 있다.

 

예를 들어, 일개 개인이 어디 영국 도서관에 있는 모든 글을 수집해 글쓰는 AI를 학습시키는 건 엄청난 자원과 시간이 필요하겠지만, 이미 누군가가 좋은 컴퓨터로 해당 학습을 돌려 모델을 허깅페이스에 업로드해놓을 수 있다.

 

그럼 이제 누군가, 특히 학생들이 해당 모델을 보고, 어디까지 사용 가능한지 (보통 명시되어 있다)를 체크하고, 그 다음에 모델을 통채로 가져다 쓸 건지, 아니면 가중치만 가져다가 쓸 건지를 결정하면 된다.

 

그리고 (그걸 그대로 가져다 쓰면 당연히 0점이 나올 것이기 때문에) 해당 모델의 아키텍쳐 (아까 말한 구조) 를 발전시켜 추가 학습을 돌리거나, 새로운 데이터를 가져다가 있는 모델에 추가 학습을 시켜 전체적인 데이터가 아닌, 개인이 가지고 있는 자료와 목적에 맞춰 AI를 조정할 수 있다. (흔히들 파인튜닝이라 부르는 것이 이것이다)

 

그러므로, 사실상 가중치를 표절했다....라는 말은 맞지 않다.

 

그냥 가져다 쓸 수 있게 누군가가 올려둔 자료를 가져다가 쓴 것 뿐.

 

업무의 효율성과, 모델을 기초부터 다시 작성해야 하는 (시간과 자원을 엄청 먹는다) 수고를 위해서라도 보통은 그런 자료들을 가져다가 쓰는 것이 좋을 수밖에.

 

특히나 비젼 부문에서는 중국이 압도적인 강세를 보이는 분야인지라...

 

이에 대해 짧게 설명하면, AI의 질은 데이터 양과 모델 구조(아키텍쳐)에서 오는데, 구조는 둘째치더라도 중국은 어마무시한 양의 비젼 데이터를 가지고 있다. 왜냐면 전국민을 CCTV로... 음. 여기까지만 하겠다.

 

아무튼.

 

실제로 AI 공부를 하고 있는 내 입장에서는, 네이버는 분명 '독자 개발하세요' 라는 소리를 듣고,

 

"아, 아키텍쳐 새로 짜고... 가중치는 이거 써볼까? 어라? 뭐 더 학습시켜도 오히려 정확도가 안 오르고 내려가네? 그냥 쓰는게 제일 정확도가 높겠다."

 

하고 안일하게 생각했다가 뒤통수를 맞았을 확률이 높다는 거다.

 

실제로 독자 개발하는 수많은 AI들이 이미 pre-learning (전처리 학습인가, 전학습인가, 한국어론 잘 모른다. 아무튼 모델, 특히 수많은 데이터를 사용해야 하는 학습이 필요한 모델들의 학습을 미리 진행해서 모델로 만들어 둔 것) 을 이용해서 독자적인 변형을 만들고 있으므로 해당 사안에 대해 그리 크게 생각하지 않았을 가능성이 있지 않을까... 라고 생각한다는 것.

 

고로, 아예 처음부터 '독자 개발. 가중치 가져오지 마세요. 모델 구조 베끼지 마세요.' 라고 조건을 정확히 명시했으면 일어나지 않았을 일이라는 거다.

 

네이버건, 주최 측이건 둘 다 문제가 있는 셈.

 

 

 

3. 그렇다면 가져온 가중치에 문제는 없을까?

 

사실, 여기가 본론이라 해도 과언이 아니다.

 

사람들은 네이버가 뭘 베꼈는가에 대해서는 관심이 좀 없고, 그게 '중국' 것이라는 사실에 조금 더 분노한 것처럼 보인다... 가 내 첫 감상이었는데, 실제로 문제는 없을까?

 

 

 

뭐, 본론부터 말하자면, 없을 가능성이 높다.

 

백도어가 있지 않을까... 누가 감시하는 거 아니냐... 등등 말은 많은데, 애초에 모델에 그런 무언가가 들어가기 참 쉽지 않다는 것을 둘째 치더라도, 보통 그런 추가적인 '프로그램' 이 들어가 있다면 그냥 다운받는 즉시 보안부서나 기타 유사 부서들이 알아차렸을 거다.

 

다시 말하지만, 모델은 학습을 어떻게 하는지, 학습한 모델이 어떤지를 저장해놨을 뿐.

 

기타 기능들이 들어갈 구석이 없다.

 

진짜로, 전혀.

 

 

 

유일한 가능성이라고 하면, 중국에서 개발한 모델답게 특정 어구나 내용이 검열되도록 모델이 조정되었을 가능성...인데.

 

하지만, 딥시크 사례를 보면 알 수 있듯, 그걸 유저, 즉 사용자가 우회하는 경우가 왕왕 생긴다는 건, 마찬가지로 모델을 조금만 조정하면 해당 규제가 마치 없던 것처럼 학습시킬 수 있기에 딱히 문제가 되진 않을 거다.

 

간단하게 설명했지만, 조금 더 들어가면 추가 학습을 어떤 데이터로 시키느냐에 따라서 모델의 추론이나 행동 양상은 그만큼 쉽게쉽게 변화한다.

 

심지어 얼마나 변화할지도 개발자들이 조정할 수 있고...

 

 

 

4. 모델 구조 베끼는 건?

위에서 잠깐 이야기했는데, 모델의 성능은 모델 구조와 학습 데이터의 양과 질이 가장 크게 좌우한다.

 

그렇다면, 모델 구조를 베꼈다고 여겨지는 다른 몇몇 참가자들에겐 문제가 있어야 되는게 아닌가?

 

라는 말이 나오기도 했다.

 

솔직히, 엄밀히 따지자면, 동일 구조를 베꼈다면 문제가 있는게 맞긴 하다...

 

모델 구조가 동일한 AI 모델은 같은 데이터에 학습시켰을 때 동일한 학습을 보통 진행하게 되기 때문인데...

 

뭐 가중치를 초기화해서 다른 결과가 나오는 거 아니냐고 물어본다면, 아니라고 대답하겠다. 어디까지나 같은 데이터라는 가정 하에.

 

가중치 초기화 후 '다른' 결과의 모델값이 나왔다면, 보통 높은 확률로 그 모델의 제작자가 올린 최종 학습 모델보다 정확도가 떨어질 가능성이 높거든...

 

고로 해당 모델 구조에서 동일한 데이터쌍에서 나오는 최종 모델은 결과적으로 비슷할 수밖에 없다.

 

물론, 이번 경선에서 나온 유사 모델 구조들을 보면, 완전히 동일한 구조도 아니고, 결과적으로 다른 데이터를 이용해 학습시켰다는 것으로 독자성을 인정받긴 했다.

 

실제로 다른 데이터를 이용했다면 다른 최종 모델이 나오는 것도 맞고 말이다.

 

다만, 유일한 걱정이라면 특정 모델 구조를 가지고 데이터만 바꿔서 학습시키는 건 학부생 레벨에서도 쉬운 일이라는 것 (물론, 장비와 시간만 있다면).

 

독자적인 AI 모델을 만들 순 있지만, 모델 구조의 변화를 가져오지 않는 구조 베끼기 수준의 데이터 끼워갈기는 모델의 효율성을 높이는 데에는 딱히 도움이 되지 않는다는 것이다.

 

실제로 쓰는데에는 문제가 없겠지만, 기술력 증진과는 거리가 먼 이야기라는 것...

 

여러모로 목적과는 좀 갈래가 많이 갈라지지 않았나... 하는 생각이 든다.

 

 

 

 

 

 

 

 

 

결론

1. 네이버가 잘못한 건 맞지만 그건 주최측의 잘못도 있다. 독자 개발'이라는 조건을 조금 더 명확하게 내걸었어야 할 듯.

 

2. 가중치 베끼는 건 자주 있는 일이다. 그게 효율성으로만 따지면 최고라서... 막 지탄받을 일이냐 하면 아니라는 거다.

 

3. 중국걸 베꼈다고 해서 그에 관한 문제가 터지는 건 아닐 듯. 뭐 배포한 측의 저작 조건에 어긋나는 무언가를 네이버가 하지 않았다면...

 

4. 개인적으로는 모델 구조를 베낀 게 더 문제라고 생각하긴 한다. 같은 모델 구조를 같은 데이터에 학습시키면 보통 같은 결론이 나오거든.

 

5. 모델을 효율화하려면 모델 구조에 변화를 주어야 하는데, 그게 아니라 좀 아쉽다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(필자는 미국 아이비리그 중 한 곳에서 AI를 전공하는 대학원생이다. 당연하겠지만 공부 중이니 AI에 대해 전부 아는 건 아니다. 하지만 최대한 알고 있는 내용만으로 작성했으니 부족한 부분이 있다면 그냥 이해해라. 공부하느냐 바쁘다.)

고유는 유니크가 아니에요 (Eigen Vector & Eigen Value)

 

행렬을 열심히 배우고 있다면 언제고 한번은 듣게 되는 두 요소, 바로 eigenvalue와 eigenvector다.

 

한국어로는 고유 벡터, 고유값이라 불리는 거 같은데, '고유'라는 단어는 영어로 unique라고 번역되는 걸 알고 있는 사람이라면 이렇게 생각할거다.

 

'엥, unique value 가 아니네?'

 

그야 당연하다. unique의 정확한 번역은 고유한-이 아니라 유일한-이니까.

 

누가 했는지 모를 번역이 미래에 올 학생들의 머리를 거하게 후려친 셈이다.

 

왜 시작부터 한탄이냐고?

 

왜냐하면 그건 필자가 고유값을 처음 배울 때 '고유' 니까 하나만 있는 거겠지? 라고 생각했었기 때문이었다.

아주 자연스럽게 eigen이 뭐지 -> 고유? -> unique 면 하나만 있는 거네? 라는 생각에 흐름에 속절없이 휘말렸던 탓이겠지.

 

그래서 길고 지루했던 서론을 건너뛰고 본론으로 들어가면, '고유값', 그리고 '고유 벡터'는 아래 조건을 만족하는 값(스칼라)과 벡터를 말한다.

 

벡터 $A$가 있을 때,

 

$$ Av = \lambda v $$

 

를 만족하는 벡터 $\lambda$와 $v$를 각각 지칭하는 말이라는 거다.

 

그러면 저걸 어떻게 구할까.

 

이건 단순한 수식 계산에 불과하니 빠르게 가보자.

 

$$ Av = \lambda v $$

$$ Av - \lambda v = 0 $$

$$ (A - \lambda I) v = 0 $$

 

여기까지 보면 $v=0$ 이 답이구나! 라고 생각할 수 있는데 수학계에서는 그걸 'trivial'=진부한, 즉 재미가 없다고 표현한다.

 

답이 쉬우면 재미가 없는 미친놈들의 학문...이기 때문은 아니고, 수학적으로 별로 중요하지 않기 때문이다.

 

아무튼 그러면 $v$를 제외한 좌측 부분이 0이 되야 하는데, 이 부분에서 $(A - \lambda I)$ 가 특이 행렬이어야 한다는 조건이 생겨버린다.

 

왜냐고?

특이 행렬이 아닌 애들은 '역행렬'이 존재하기 때문이다.

 

즉, 특이 행렬이 아닌 $B = (A - \lambda I)$에 대해서는 다음이 성립한다.

 

$$ B v = 0 $$

$$ B^{-1}B v = B^{-1} \cdot 0 $$

$$ v = 0 $$

 

그렇다. 결국 이것도 재미가 없어지기 때문인 것이다...는 농담이고, 아무튼 $v$가 0 인 것을 피해야 뭔가 수학적으로 의미가 생기기 때문이다.

 

이 조건을 잘 풀어 해석하면 한 가지 조건이 더 생기는데, 바로 특이 행렬들은 Detergent, 즉 행렬식이 0이 되어야 한다는 것이다.

 

고로,

 

$$ \text{det} (A - \lambda I) = 0 $$

 

를 만족하는 $\lambda$ 값을 찾기만 하면 된다.

 

그렇게 찾은 고유값 (여러 개가 나올 수 있다...) 을 식에 대입해 $v$까지 찾아내면, 해당 고유값에 해당하는 고유 벡터가 나오게 된다.

 

이건 진짜 죽도록 여기저기 쓰이기 때문에 (공부를 이어나간다면) 필히 미럿속에 외우고 다니는 것이 좋다...

 

 

 

 

내적말고 외적 (Outer Product)

 

 

 

저번에 잠깐 내적의 성질에 대해서 이야기했는데, 이걸 조금 확장시키면 외적에서도 그럴싸한 아이디어를 뽑아낼 수 있다.

 

두 벡터 $V, U$ 가 있다고 가정하고 내적이 곱하기 전 좌측 벡터에 $^T$, 즉 transpose를 먹이는 거였다면 이번에는 반대, 즉 오른쪽에 그걸 먹여줘야 한다.

 

$$VU^T$$

 

대충 이런 느낌이다

 

길이가 $n$이라고 하면 내적은 길이가 얼마나 되던 스칼라 값, 즉 단순 값으로 줄어들지만, 얘는 갑자기 $n\times n$ Matrix, 행렬로 커지는 특성을 지니고 있다.

 

사실 행렬의 곱 배웠으면 당연한 말이지만...

 

아무튼 그래서 얘의 특성이 뭘까?

 

 

이걸 알려면 사실 ML이나 비슷한 쪽의 지식... 아니면 오다가다 대충 들은 느낌적인 무언가라도 알고 있으면 참 편한데, 얘는 '오른쪽 벡터와 유사하면 왼쪽 벡터를 뱉어내는' 성질을 가지고 있다.

 

아니 싯-파 그게 무슨 말이에요 라는 생각이 들었다면 걱정 마라. 아주 지극히 정상이다.

 

알기 쉽게 예시를 봐 보자.

 

 

대충 $u, v, ||u|| = ||v|| = 1, u \perp v$ 인 애가 있다고 가정을 해 보자.

 

그리고 우리의 외적그 적군할때 적 말고, $uv^T$ 가 있으면 얘에 무언가를 곱했을 때의 성질을 알아보자.

 

일단 한번 $u$ 부터 곱해볼까?

 

$$ (uv^T)u = u(v^Tu) = u\cdot 0 = 0 $$

 

우즉 두 벡터가 90도의 각도를 이루고 있기 때문에 내적의 값이 0, 그러므로 전체 곱이 0이 나온다.

 

그렇다면 $v$를 곱하면?

 

$$ (uv^T)v = u(v^Tv) = u \cdot 1 = u $$

 

좌변의 $u$가 그대로 나온다.

 

그러니까 외적을 대충 게이트, 아니면 함수 같은 걸로 보면 우측의 벡터와 유사할수록 좌측의 벡터를 돌려주는 성질을 지닌 것이다.

 

그래서 얘도 자주 쓰인다... 정말 안타까운 일이 아닐 수가 없다...

 

 

벡터는 도무지 없어지질 않는다. (내적, dot product)

vector, matrix.

 

이 두 가지 놈들은 공부 중에서 사라지는 일이 없는데...

 

아주, 아주 불행한 일이지만 해당 개념이 가져오는 수학적 편리함과 효율은 말도 못할 수준이기에 절대 앞으로도 사라질 일이 없을 거다.

 

고로 배워야겠지...

 

 

 

아무튼, 이번에는 행렬 중에서도 Vector-라고 이름 붙여진 애들. 대개 $m\times1$ 이나 $1\times m$ 으로 이루어진 애들을 살펴볼 거다. 그것도 2 차원에서만.

 

벡터를 간단하게 설명하면 이렇다.

 

$ v = \begin{bmatrix} a & b \end{bmatrix} $ 라는 벡터가 있다고 해 보자.

 

얘는 쉽게 설명하면, 2D 공간에서 $x$ 좌표가 $a$, $y$ 좌표가 $b$인 점을 말한다.

 

그냥 원점에서 그 점으로 화살표를 그리면? 그게 보통 그래프에서 벡터를 나타낼 때 알아보기 쉽게 쓰는 방법이 되는 거다.

 

뭐 사실 여기까지 왔으면 벡터니 뭐니 모를 일이 없을 거고, 이걸 설명한 이유는 얘들이 가끔 내적이니 외적이니 하는 연산을 서로서로 하고 자빠졌는데, 그게 기하학적으로 이런저런 의미부여가 되기 때문이다.

 

 

자, 바로 본론으로 들어가서, 두 벡터가 있다고 가정을 해 보자.

 

$$ V = \begin{bmatrix} v_x \\ v_y \end{bmatrix}, U = \begin{bmatrix} u_x \\ u_y \end{bmatrix} $$

 

이걸 곱하려면 한쪽이 어떻게든 변해야 하는데, 앞쪽에 있는 놈에게 $^T$, 즉 트랜스폼을 시켜버리는 걸 내적, Inner Product 라고 한다. 가끔 Dot Product라는 말도 쓰는데, 엄밀히 따지면 다르지만 어차피 보통 혼용해서 쓰니 그게 그거라고 생각하면 된다.

 

아무튼 그렇게 내적을 시켜보면?

 

$$ V^TU = \begin{bmatrix} v_x & v_y \end{bmatrix} \begin{bmatrix} u_x \\ u_y \end{bmatrix} = v_xu_x + v_yu_y $$

 

딱히 놀랍진 않지만 항이 하나로 줄어들면서 결과적으로는 스칼라 값, 즉 그냥 단순 상수 하나가 되어버린다.

 

근데 계산으론 이렇게 단순한 놈이 참 여러가지 의미를 지니고 있는데...

 

 

 

유사도 (Similarity):

두 벡터를 내적한다는 건, 두 벡터의 유사성을 체크한다는 의미와 같다-라는 주장이다.

 

주장이라고 하기도 우스운게, 일단 사실이기도 하고, 대충 현대 수학/공학/등등 아무튼 여러 학문들이 이걸 기초로 하고 있으니 그냥 팩트라고 봐도 좋다.

 

근데 문제는 저걸 머리로 한 번에 받아들이기가 참 힘들다는 거고...

 

 

이걸 좀 알아먹으려면 한 가지 공식이 필요한데, 그게 바로

 

$$ v \cdot u = ||v|| ||u|| \cos \theta $$

이 공식이다.

 

애초에 그냥 $v, u$의 스칼라 값이 1이라고 생각하고 논리를 진행해 보자 (이거 안해도 어차피 양변 곱하는 거랑 똑같다... wlog인 거다)

 

그러면 $ v \cdot u = \cos \theta $ 라는 단순화된 공식이 남는데, 이는 두 벡터를 Dot Product 시켜버리면 두 벡터간의 각도, 즉 각도상으로 얼마나 유사한지를 판단할 수 있는 근거가 된다는 거다.

 

예시를 보자.

 

$$ A = \begin{bmatrix} 1 \\ 0 \end{bmatrix}, b = \begin{bmatrix} 0 \\ 1 \end{bmatrix}, c = \begin{bmatrix} -1 \\ 0 \end{bmatrix} $$


$$ A\cdot A = 1\times1 + 0\times0 = 1 $$

$$ A\cdot B = 1\times0 + 0\times1 = 0 $$

$$ A\cdot C = 1\times -1 + 0 \times 0 = -1 $$

 

각각 같은 방향 / 90도 / 정 반대 의 벡터와 내적을 해버렸다.

 

그러니까 각각 다른 값이 나오는데, 이건 말하자면 벡터 두 개를 내적해 나온 결과값만 보고, 실제로 벡터의 형상을 2D나 상위 차원 (3, 4 아니면 더 많은 차원들) 에 그려놓지 않고도 두 벡터가 얼마나 '같은 방향'을 가리키는지 짐작해 볼 수 있다는 거다.

 

공식쪽으로 들어가면 간단하게 설명해 주는데,

 

만약 결과값이 양수면 관련성 높음.

만약 결과값이 0이라면 무관함. << 얘는 좀 중요한게, 각도가 90도일때만 0이 나온다.

만약 결과값이 음수면 관련성 낮음.

 

이렇게 파악할 수 있다.

 

 

그리고 이렇게 '유사성'을 수학적으로, 벡터로 표현할 수 있게 되면서 정말 많은 분야에서 현실에 있는 유사성을 컴퓨터에 집어넣을 때 써먹는 단골 요소로 등장하게 된다...

 

모르면 진도가 안 나가니 대충이라도 알아두도록 하자 ㅠ

 

 

Pseudo Inverse, 의사 역행렬

 

행렬, matrix를 배우다 보면 역행렬이라는 게 등장한다

 

$$ M^{-1} $$

 

이렇게 표시하는 녀석인데, 대충

 

$$ MM^{-1} = I,\ M^{-1}M = I $$

 

를 만족하는 녀석이라고 알고 있으면 된다.

 

근데 여기서 문제가 생긴다.

 

특정 행렬의 역을 취하고 싶은데, 그게 안 되는 행렬들이 존재한다는 것이다.

 

역이 존재하려면 여러가지 조건들이 필요한데, 대표적으로는

  1.  정방, 그러니까 $n\times n$ 행렬일 것.
  2.  특이 행렬 (Singular Matrix) 이 아닐 것.
  3.  행렬식 (Detergent) 가 0 이 아닐 것.

들이 있다. (대충 웬만하면 역행렬이 없다는 거 아닌가? 라고 생각했으면 그게 맞다.)

 

아무튼 행렬의 역이 필요한 상황에서 조건이 맞지 않는다면? 몰?루 해버릴 수는 없으니 만들어진 게 Pseudo Inverse, 즉 의사 역행렬이다.

 

 

특히나 이게 많이 쓰이는 곳이 방정식인데... 

 

$$ M\textbf{x} = b $$

 

에서 $M, b$ 가 주어지고 $\textbf{x}$ 를 찾고 싶다고 하면 이렇게 된다.

 

$$ M\textbf{x} = b $$
$$ M^{-1}M\textbf{x} = M^{-1} b $$
$$ \textbf{x} = M^{-1} b $$

 

역행렬을 찾기만 하면 답이 나오는 느낌이라 보면 된다.

 

 

근데 행렬의 역이 그냥 안 취해진다면?

 

이렇게 하면 된다. ($A$를 역행렬이 존재하지 않는 행렬이라 가정하자)


$$ A\textbf{x} = b $$
$$ A^TA\textbf{x} = A^Tb $$

 

여기서 $A^TA$ 는 $n\times n$ 행렬이 되어 역행렬이 존재한다. 그러므로


$$ (A^TA)\textbf{x} = A^Tb $$
$$ (A^TA)^{-1}(A^TA)\textbf{x} = (A^TA)^{-1} A^Tb $$
$$ \textbf{x} = (A^TA)^{-1} A^Tb $$

 

이렇게 하면 $\textbf{x}$ 를 구할 수 있다.

 

 

 

물론 저게 항상 참이기만 한 건 아니다. 1번 조건을 만족시켰으니 대부분의 경우 (적어도 내가 진도 나간 부분...)까지는 역이 취해지겠지만, 특이 행렬이거나 어쩌거나 한 이유로 역이 안 취해질 수도 있기 때문.

 

이걸 general case로 엮어서 뭐 $A*$를 만들고 어쩌고 하면 된다는데, 아직 필요 없는 부분은 안 배울랜다... 힘들다...

 

 

 

 

 

◀ PREV 1234···6 NEXT ▶