머신러닝 선형대수 - [2] 벡터 및 행렬의 덧셈과 곱셈
1. 벡터, 행렬의 덧셈
벡터, 행렬에서의 덧셈
- 벡터, 행렬에서의 덧셈은 더 하려는 두 수의 shape(size)가 같아야 한다.
- 같은 위치에 있는 원소끼리 덧셈을 하며 되며, 이를 요소별(element-wise) 연산이라고 한다.
- 뺄셈도 유사하게 정의된다.
- \( C = A + B \)
브로드 캐스팅
- 딥러닝에서 덜 전통적인 표기법을 사용하기도 한다. 행렬과 벡터의 덧셈을 허용하며, \( C = A + B \)으로 표기하며 \( C_{i,j} = A_{i,j} + b_{j} \)에서 각각 연산이 이루어진다.
- 즉, vector \(\mathbf{b}\)는 행렬의 각 행에 더해진다.
- 이 약칭은 덧셈을 수행하기 전에 각 행에 b를 복사한 행렬을 정의할 필요가 없다.
- 이렇게 b를 여러 위치에 암시적으로 복사하는 것을 브로드캐스팅이라고 한다.
2. 벡터, 행렬의 스칼라 덧셈 및 곱
스칼라와 행렬을 더하거나 곱하는 것이 가능하다. 이 연산도 각 element마다 수행되는 element-wise 연산이다.
- Deep learing 서적에서는 이를 밑의 예시처럼 행렬에 스칼라 덧셈과 곱셈이 가능하다는 것을 예시로 들었다.
- \( D = a \cdot B + c \)
- where \( D_{i,j} = a \cdot B_{i,j} + c \)
이것은 실제 값을 가진 예시이며 다음과 같이 수식으로 나타낼 수 있다.
\[2 \begin{bmatrix} 3 \\ 2 \\ 1 \end{bmatrix} = \begin{bmatrix} 6 \\ 4 \\ 2 \end{bmatrix} , \quad 2 \begin{bmatrix} 1 \quad 6 \\ 3 \quad 4 \\ 5 \quad 2 \end{bmatrix} = \begin{bmatrix} 2 \quad 12 \\ 6 \quad 8 \\ 10 \quad 4 \end{bmatrix}\]3. 행렬과 벡터의 곱셈(multiplication)
행렬에서 가장 중요한 연산 중 하나는 두 행렬의 곱이다.
- 행렬의 표준곱(standard product)은 내적(Inner product), 외적(Outer product)으로 나뉜다.
- 행렬과 행렬의 곱셈은 다음처럼 나타낼 수 있다. (벡터도 행렬로 나타낼 수 있으므로 똑같이 취급한다.)
\[C = AB\]
product 연산은 다음처럼 정의한다.
- 내적과 외적의 계산 방식은 똑같기에 다음과 같이 정의 가능한 것이다.
행렬곱의 조건과 결과
- 우선 행렬의 곱은 첫 번째 행렬의 colum의 수와 두 번째 행렬의 row의 수가 똑같아야 곱셈이 성립한다.
- 결과값은 첫 번째 행렬의 row와 두 번째 행렬의 colum을 곱한 형태가 나온다.
내적과 외적의 간단한 의미
내적과 외적의 의미는 다음 글에서 제대로 알아볼 것이지만, 간단하게 의미를 잡자면 이와 같다.
- 내적: 벡터들로 스칼라를 만들어 내는 것이다.
- 외적: 얇은 벡터로 덩치가 큰 형태의 값을 만드는 것이다.
행렬곱의 계산
행렬곱 예시
\[\begin{bmatrix} 1 \quad 6 \\ 3 \quad 4 \\ 5 \quad 2 \\ \end{bmatrix} \begin{bmatrix} 1 & -1 \\ 2 & 1 \\ \end{bmatrix} = \begin{bmatrix} 13 & 5 \\ 11 & 1 \\ 9 & -3 \\ \end{bmatrix}\]내적 (Inner product, Dot product)
\[\begin{bmatrix} 3 & 2 & 1 \end{bmatrix} \begin{bmatrix} 1 \\ 3 \\ 5 \end{bmatrix} = \begin{bmatrix} 14 \end{bmatrix}\]외적 (Outer Product)
\[\begin{bmatrix} 1 \\ 3 \\ 5 \end{bmatrix} \begin{bmatrix} 1 & 2 \end{bmatrix} = \begin{bmatrix} 1 & 2 \\ 3 & 6\\ 5 & 10 \end{bmatrix}\]행렬의 곱셈은 교환법칙이 성립하지 않는다.(not commutative)
\( AB \not = {BA} \) : 행렬 곱은 교환법칙이 성립하지 않는다.
- 예를 들어 \(A \in \Bbb{R}^{2 \times 3 }\) 와 \(B \in \Bbb{R}^{3 \times 5 }\)가 있으면, AB는 정의되어있지만 BA는 정의되어 있지도 않다.
- 이 경우에는 행렬의 사이즈가 맞지 않기에 \(BA\)는 애초에 곱연산이 되지 않는다.
- 만약 \(A\)와 \(B\)가 \(A \in \Bbb{R}^{2 \times 3 }\) 와 \(B \in \Bbb{R}^{3 \times 2 }\)해당 사이즈로 주어져서 \(BA\)가 정의되면 어떻게 될까?
- 이 또한 행렬곱의 결과가 \(AB \in \Bbb{R}^{2 \times 2 }\)와 \(BA \in \Bbb{R}^{3 \times 3 }\)으로 나오기에, \( AB \not = {BA} \)이며, 교환법칙이 성립하지 않는다.
- \( AB \)와 \( BA \)결과의 크기가 동일하면 어떻게 될까?
- e.g., \(A \in \Bbb{R}^{2 \times 2 }\)와 \(B \in \Bbb{R}^{2 \times 2 }\)로 행렬이 주어져도 여전히 \( AB \not = {BA} \)이다. 계산해보면 다음과 같다.
일반적으로 row vector와 column vector의 순서문제 때문에 교환법칙은 성립하지 않는다.
행렬의 property 정리
- 분배법칙(Distributive) 만족: \( A(B+C) = AB + AC \)
- 결합법칙(Associative) 만족: \( A(BC) = (AB)C \)
- 전치법칙(Property of transpose) 만족: \( (AB)^T = B^{T}A^{T} \)
- 교환법칙(Commutatibe) 불만족: \( AB \not={BA} \)
- 그러나 벡터 곱에서 교환법칙은 만족한다. \( x^Ty = y^Tx\)
4. element-wise product
위에서 보았던 두 행렬의 stnadard product는 단순한 개별 요소의 곱이 아니었다. 표준 곱과는 다르게 개별 요소의 곱만을 수행하는 연산이 있는데 이를 element-wise product 또는 Hadmard product라고 하며, \(A \odot B \)와 같이 나타낸다.
5. 벡터의 곱에서 교환법칙
행렬 곱의 교환 법칙은 만족하지 않지만, 벡터 곱에서 교환 법칙은 만족한다.
\[x = \begin{bmatrix} 1\\ 2\\ 3\\ \end{bmatrix} , \quad y = \begin{bmatrix} 4\\ 5\\ 6\\ \end{bmatrix}\] \[x^T = \begin{bmatrix} 1 & 2 & 3 \end{bmatrix} , \quad y^T = \begin{bmatrix} 4 & 5 & 6 \end{bmatrix}\]위 처럼 값이 주어져있고, 계산을 해보면 스칼라값이 동일하게 나오는 것을 확인할 수 있다.
\[x^{T}y , \quad \begin{bmatrix} 1 & 2 & 3 \end{bmatrix} \begin{bmatrix} 4\\ 5\\ 6\\ \end{bmatrix} = 32\] \[y^{T}x , \quad \begin{bmatrix} 4 & 5 & 6 \end{bmatrix} \begin{bmatrix} 1\\ 2\\ 3\\ \end{bmatrix} = 32\]
출처
데이터 사이언스 스쿨 수학자료
학교 강의 자료
Bengio, et.al. - Deep Learning
주재걸 - 인공지능을 위한 선형 대수