https://www.youtube.com/watch?v=4Pm-htIGVMQ&list=PLiPvV5TNogxIS4bHQVW4pMkj4CHA8COdX&index=3
먼저 행렬에 대해서 정의를 해보자.
행렬은 배열들의 집합이라고 생각하면 된다.
아래 그림에서,
- 좌측은 차원이 4 x 2 차원인 행렬을 의미하고,
- 우측은 차원이 2 x 3 차원인 행렬을 의미한다.
행렬의 원소는 꼴로 표현하며, 이는 행 그리고 열에 있는 원소를 의미한다.
그렇다면 벡터는 무엇일까.
벡터는 차원이 n x 1인 행렬을 의미한다. (즉, 칼럼의 종류가 하나인 행렬을 의미한다.)
행렬의 합 연산은 아래 그림과 같다.
직관적으로 같은 위치의 원소들끼리 합해주면 된다.
다만, 행렬의 합 연산을 위해서는 행렬 간의 차원이 같아야한다는 전제 조건이 필요하다. (만약, 서로 다른 차원의 행렬끼리 합 연산을 할 경우 error가 발생할 것이다.)
행렬의 스칼라 곱은 아래 그림과 같다.
이것도 직관적으로 각 행렬의 원소마다 스칼라 값만큼 곱해주면 된다.
따라서, 행렬의 (스칼라) 사칙연산은 아래 그림처럼 직관적으로 풀이할 수 있다.
그렇다면 행렬간의 곱 연산은 어떻게 구할 수 있을까.
우선 행렬간의 곱 연산을 위해서는 좌측 행렬 의 칼럼 수와 우측 행렬 의 로우 수가 같아야 한다.
그 이유는 좌측 행렬의 행과 우측 행렬의 열 간의 곱 연산을 해야하기 때문이다.
예를 들어, 다음과 같은 수식을 생각해보자.
그리고 이를 행렬로 표현하면, 와 같다.
따라서, 앞 행렬의 행과 뒤 행렬의 열을 각각 곱해서 더해줌으로써 곱 연산 결과를 구할 수가 있다.
다음은 행렬곱의 예시다.
그렇다면 이를 예측 함수 에 적용해보자. 좌측에는 입력데이터셋 vector가 있고, 우측에는 예측 함수 가 정의되어 있다.
는 이고, 은 라는 걸 알 수 있다. 따라서 이를 벡터로 표현하면 가 된다.
그리고 입력값 에 대해서도 행렬로 표현하면 로 표현할 수 있다. 여기서 은 에 해당하는 값이다.
이제 두 행렬곱을 진행하면 예측값 벡터를 구할 수 있을 것이다.
다만 위 과정에서 한 가지 의문점이 들었다. 왜 변수에 해당하는 Data Matrix를 앞에 두고, 파라미터 벡터를 뒤에 두고 행렬곱을 진행했을까? 이전까지는 변수에 해당하는 부분(x, y, z)을 뒤로 두고 계수에 해당하는 부분을 앞에 뒀었는데 반대로 하니 의문이 들었다.
그래서 계수 행렬을 앞으로, 변수 행렬을 뒤로 두고 해보았다.
- 그리고 행렬을 작성하면서 깨달았다. 이전의 예시에서는 방정식에 대한 각 변수의 값을 구할 때 변수의 값이 고정되어 있었지만(x, y, z 처럼), 위 예시에서는 오히려 파라미터()가 고정되어 있고, 입력값이 변한다는 것을 알았다.
- 따라서 값이 고정되는 파라미터 행렬을 뒤로 하고, 값이 변하는 입력값 행렬을 앞으로 하는 것이었다.
- 또한, 바로 위처럼 행렬곱을 할 경우, 이는 벡터가 아니라는 점도 깨달았다. 오히려 칼럼의 차원만 늘리는 꼴이었다. 그리고 이는 의미상으로도 잘못된 것임을 깨달았다.
- 추가로, Transpose를 진행하면 그림에 나오는 정상적인 행렬식으로 돌아가는 것도 볼 수 있었다.
그렇다면 행렬곱을 좀더 빠르고 직관적으로 하는 방법은 어떤 게 있을까.
아래 그림처럼 뒤 행렬의 열들을 따로 분리하여 앞 행렬과 따로 계산한 후 나중에 합쳐주면 빠르고 직관적으로 결과를 구할 수가 있다.
예시는 다음과 같다.
- 먼저 뒤 행렬의 열을 따로 분리해서 앞 행렬과 곱 연산을 수행한다.
- 그러고 나서 각 결과를 합쳐준다.
이를 활용해서 다양한 파라미터를 갖는 예측 함수 에도 적용하여 각각의 예측값을 도출하는 데도 직관적으로 빠르게 수행할 수 있다.
다음은 행렬 곱연산에서는 교환법칙이 성립하지 않음을 보여주는 그림이다.
물론 교환법칙은 성립하지 않지만 아래와 같이, 곱의 순서는 바꿔줘도 괜찮다.
즉, 행렬 곱연산에서 결합법칙은 성립한다.
다음은 단위 행렬(Identity Matrix)에 대한 그림이다.
- 단위 행렬의 크기는 n x n이다.
- 단위 행렬의 대각 성분의 값은 1이며, 나머지 성분들의 값은 0이다.
- 어떤 행렬 에 단위 행렬 와 곱연산을 할 경우, 그 값은 그냥 이다.
즉, 단위 행렬 의 값은 그냥 로 봐도 무방하다.
다음은 역행렬(Inverse Matrix)에 대한 그림이다.
- 크기 m x m을 갖는 행렬 가 있다고 해보자.
- 의 역행렬 의 크기는 마찬가지로 m x m일 것이다.
- 그리고 역행렬 은 다음 조건을 만족해야 한다.
- 그리고 중요한 점이 모든 행렬이 다 역행렬을 갖고 있지 않다.
이 경우, 이러한 행렬을 singular 행렬이라고 한다.
다음은 행렬의 전치(Transpose)를 나타내는 그림이다.
- 크기 m x n의 행렬 의 전치 행렬 의 크기는 n x m이다.
- 전치 행렬 는 행렬 의 행을 열로 가져가고, 행렬 의 열을 행으로 가져간다.
- 즉, 이다.