머신러닝에서 가장 활발하게 행렬이 사용되는 분야는 바로 GAN(생성적 적대 신경망)이다.

Text를 Input으로 받아 들여 Image를 생성하는 분야에서도 활발히 적용 가능하다.

Vector는 성분 원소가 튜플 형태로 묶인 꼴을 하고 있다.


경로를 약간 틀어서 지그재그로 가더라도 해당 경로의 길이 합은 언제나 이다.

만약 헬리콥터라면 일직선으로 갈 수 있으므로 피타고라스 정리에 의해 의 거리로 갈 수 있다.


Norm의 default 값은 L2 norm이고, 벡터의 크기를 나타내기도 한다.


Vector는 Sum과 Subtract 연산이 모두 가능하다.


Vecters 간의 Distance를 재는 방법은 총 세 가지가 있다.
그 중에서도 머신러닝에서는 를 많이 사용한다고 한다.

Vector에 scalar 값을 곱하는 것 또한 가능하다.


Dot product는 선형대수에서 가장 중요한 개념이다.


한 가지 추가적인 특징은 L2 norm이 한 벡터를 self-dot product한 결과의 square root 값이라는 것이다.
즉, 같은 방향의 벡터 성분을 각각 제곱하여 모두 더한 식과 동일하다.

기하학적으로 angle과 dot product의 관계는 매우 중요하다.

같은 방향인 두 벡터의 dot product는 해당 벡터 크기의 제곱이고, 수직한 방향인 두 벡터의 dot product는 0이다.

일반적으로 dot product란 하나의 벡터()를 다른 하나의 벡터()에 projection(정사영) 내려 형성한 새로운 벡터()와의 성분곱이다.

Dot product가 positive라면 (6, 2) 벡터와 예각을 이루는 벡터와의 성분곱이며, negative라면 (6, 2) 벡터와 둔각을 이루는 벡터와의 성분곱이다.


Dot product에 변수가 포함되어 있는 경우를 비교해보자.


이제 이 equations를 하나로 합치는 작업을 진행할 것이다.
아래 그림의 오른쪽 형태를 보면 각 열의 정보가 사과, 바나나, 체리에 해당하는 정보를 담고 있다는 것을 알 수 있다.



행렬을 표현하는 또 다른 방법인 linear transformations에 대해 알아보자.




네 개의 점을 이으면 사각형의 한 평면과 평행 사변형의 한 면이 만들어진다.


여기서 조금 더 나아가 (-2, 3)의 벡터를 왼쪽과 오른쪽의 평면에서 표현해보자.
기존 basis가 담긴 평면 상에서는 (-2, 3)의 벡터를 (왼쪽으로 2칸, 위쪽으로 3칸) 움직여서 표현할 수 있다.
오른쪽의 변형된 공간에서 또한 마찬가지로, 비틀어진 공간 상의 basis로 (왼쪽으로 2칸, 위쪽으로 3칸) 움직이는 것은 동일하다.

이번에는 2x2 matrix가 과일 개수를 나타낸 행렬, 초록색 벡터가 각 과일의 가격이라고 하자.


여기서 우리는 네 개의 점을 굳이 모두 표현할 필요 없이, (1, 0)과 (0, 1) 벡터만 있어도 2차원 평면 전체를 표현할 수 있다.
바로 이 점을 basis라 부를 것이며, 구체적인 정의는 해당 공간을 전체적으로 표현할 수 있는 가장 최소한의 벡터 집합이라 생각하면 된다.
아래와 같이 왼쪽 공간 상에 존재하는 초록색 벡터에 2x2 matrix를 씌워 주황색 벡터가 존재하는 공간으로 표현했다면 그림과 같이 벡터가 변형된다.

Linear transformation 2개를 결합해보자.

다음 결과는 (3, 1), (2, 1)의 주황색 벡터들을 또 다른 파란색 matrix로 선형 변환하여 (5, 2), (0, 4)의 연두색 벡터들로 표현한 것을 나타낸다.


이러한 과정은 사실상 두 번의 linear transform을 한 번의 transform으로 치환하여 나타낼 수 있다.

가장 왼쪽에 존재하는 basis 벡터들이 어떤 벡터들로 변환되었는지를 살펴보자.

두 층으로 나뉘어있던 matrix의 곱은 최종 벡터를 선형 변환시키는 하나의 matrix가 된다.

Matrix Multiplying은 각 항들의 dot product로 구해낼 수 있다.


Identity matrix란 행렬 곱으로 선형 변환하여도 원래와 같은 값이 나오도록 만드는 matrix의 형태다.

네 점을 꼭짓점으로 하는 평면을 결정지어도 원래의 벡터와 변환된 벡터 모두 같은 점을 가리키며, 평면의 모양 또한 동일하다.

그렇다면 이번엔 linear transform을 두 번 진행 시켜서 다시 원래의 공간으로 되돌리고 싶다면 어떻게 할까?

즉, 두 matrix의 multiplying으로 Identity matrix를 만드는 방법을 사용하면 된다.
Dot product를 진행하여 해당 방정식을 풀면 (a, b, c, d)의 한 쌍이 나올 것이다.
다시 말해, first(뒤쪽) matrix가 second(앞쪽) matrix의 inverse matrix가 되면 곱해서 I(1)을 만들 수 있는 원리다.

정석대로 풀면 아래와 같은 결과로 (a, b, c, d) 항을 얻을 수 있다.

영상에서는 나오지 않았지만 공식은 다음과 같다.
또 다른 예제를 풀어보자.
아래의 첫 번째 문제는 inverse가 존재하는 matrix고, 두 번째 문제는 inverse를 찾을 수 없는 matrix다.
이는 deteminant를 0으로 만드는지에 대한 여부로 판단이 가능하다.


한 matrix의 Inverse matrix가 존재하는지에 대한 여부는 Singularity와도 연관성이 있다.

Neural networks에서 쓰이는 linear transform에 대해 정리해보자.

"Lottery"의 등장 횟수와 "Win" 등장 횟수에 곱해지는 가중치를 얼마로 두어야 최소 제한 조건을 가지며, 이 두 값의 합이 얼마의 threshold를 일때 최종적으로 Spam임을 반환하는가?
표를 보고 조금만 생각해보면 둘 중 하나의 값이 최소 1이상이고, 평균 내었을 때 threshold가 1.5임을 알 수 있다.
각 단어의 횟수 * "Lottery"와 "Win"의 가중치 points를 1로 두면 각 단어의 등장 횟수 * 1(weight) = 계산값(linear transformed)을 이용할 수 있다.

Graphical하게 각 점들을 찍어보면, 아래와 같은 하나의 직선으로 Spam or Not-spam이 결정된다는 것을 알 수 있다.

모델의 가중치 벡터가 (1, 1)이고 input이 (2, 1)일 때와 (0, 1)일 때를 각각 dot product 해보면, 1.5보다 더 큰지 작은지를 판단할 수 있다.
이게 지도학습 머신러닝에서 하는 linear transform 과정이다.
Input에 맞는 Label을 제시하여, 데이터 분포를 잘 구별할 수 있는 가중치 행렬(여기서는 1차원 벡터)를 찾고, 얼마의 threshold로 정하는게 좋을지까지 완성하는 과정인 것!





이러한 선형 분류기 모델은 AND 연산자를 판단하는 데에도 적용된다.


이러한 모델을 perceptron이라 부른다.

