# 1. 행렬과 벡터의 차이
벡터는 m×1이나 1×m으로 나타납니다. 행렬의 행이나 열 size가 1이면 그 행렬을 vector라고 부릅니다.
행렬은 m×n으로 나타낼 수 있습니다. 이는 m개의 행과 n개의 열로 이루어진 행렬입니다. 벡터를 원소로 가지는 2차원 배열로도 볼 수 있습니다. 의식해서 각 수를 개수라고 생각해야지, 안 그러면 헷갈립니다.
전 고등학교 과정에서 벡터만 배웠기 때문에 실수로 행렬과 벡터를 같은 개념으로 생각했습니다. 그러나 행렬과 벡터는 엄연히 다르게 사용되는 개념이기 때문에 혼동하지 않도록 주의해야 합니다.
행렬의 쓰임에 대한 정보는 링크한 포스트 참조(https://pasus.tistory.com/2)
# 2. 성분곱(Hadamard product, 아다마르 곱)
성분곱은 벡터와 행렬 모두에게 동일하게 적용할 수 있습니다.
m×n과 m×n 과 같이 모양이 같은 두 행렬/벡터에 대해서 성분곱이 가능합니다. 피연산 행렬/벡터의 동일 위치 원소끼리 곱하여 결과 행렬/벡터의 동일 위치에 넣어주면 됩니다.
이런 계산 방법을 element wise product라고도 합니다.
기호는 ⨀를 사용하며 계산 방법은 아래와 같습니다.
# 3. 행렬 곱(matrix multiplication) ≠ 벡터 곱(Vector Multiplication)
#1에서 행렬과 벡터는 같은 개념이 아닌 것을 분명히 했습니다. 그렇다면 행렬의 곱과 벡터의 곱 또한 같지 않다는 것을 예상할 수 있습니다.
행렬의 곱(matrix multiplication)은 외적 또는 내적과 같지 않습니다. 외적과 내적은 벡터의 곱(Vector Multiplication)에 해당합니다.
벡터에는 벡터의 곱(Vector Multiplication)인 외적과 내적이 있다면, 행렬에는 행렬곱(matrix multiplication)이 있습니다.
# 3-1.벡터의 곱(Vector Multiplication)
벡터의 곱에 대해 먼저 알아봅시다.
벡터의 곱에는 내적(inner product)과 외적이 있습니다. 아래의 자료로 비교해봅시다.(outer product와 cross product는 다른 개념인데, 자료에서는 이 둘을 동일하게 취급하고 있네요. 이 부분은 수정되어야 하는 게 맞는 것 같아서 지워두었습니다.)
1. 벡터의 외적
원래 두 개의 다른 수학적 개념이 있었는데 한국에서는 그 두 개념을 모두 외적이라고 번역해 버렸습니다. 때문에 두 개념을 잘 구분해야 합니다. 하나는 Cross product(벡터곱)이고 또 하나는 Outer product입니다.
Cross product
Cross product(벡터곱)가 흔하게 고등학교 때 배웠던 그 개념입니다.
두 벡터 a, b의 벡터곱 a×b=v는 벡터 값이며 그 크기(길이)인 |v|는 |a||b|sinθ이고 (θ는 a, b가 이루는 각의 크기) 방향은 a, b에 모두 수직입니다. 3차원으로 연결되겠죠. |v|는 평행사변형의 면적과 같습니다.
계산 과정은 두 벡터의 성분으로 구성된 행렬식(determinant)를 계산하면 됩니다.
(과정은 링크한 영상을 참고: https://www.youtube.com/watch?v=XDbBq6ImWi4)
(링크한 포스트 참고: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=spin898&logNo=221145110501)
Outer product
Outer product는 생소합니다. 이는 두 벡터 간의 텐서곱을 부르는 말입니다.
두 벡터의 outer product의 결과는 행렬입니다. 계산 방법은 아래와 같습니다.
이 개념에 대해서는 깊게 들어가야하기 때문에 생략하겠습니다.
2. 벡터의 내적
벡터의 내적은 inner product이고 dot product, scalar product, projection product)라고도 합니다. ·(dot)으로 연산을 표기하고 계산 결과가 스칼라 값입니다.
두 벡터 a, b의 시작점을 일치시키면, 둘의 사잇각 θ(0≦θ≦π)가 정의되며 a·b=|a||b|cosθ로 정의됩니다.(때문에 a·b=0이면 벡터 a와 벡터 b가 서로 직교한다는 것을 알 수 있습니다.) 기하학적으로 해석하면 b에 a를 정사영(투영)하는 것입니다.
성분으로 표시된 두 벡터 a, b의 내적은 아래와 같이 정의됩니다.
# 3-2. 행렬의 곱(matrix multiplication)
행렬의 곱인 matrix multiplication은 i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산합니다.
m×n 행렬 A와 r×p 행렬 B의 곱 C=AB는 m×p 행렬입니다. 이때 C가 정의되려면 r=n이어야 합니다. 즉, 앞 행렬의 column 개수와 뒤 행렬의 row 개수가 같아야 곱이 가능합니다.
계산 결과는 아래와 같습니다.
'Study > AI' 카테고리의 다른 글
[부스트코스 코칭스터디 AI Basic 1기] #1-1. 파이썬/AI 개발환경 준비하기 (0) | 2022.01.16 |
---|---|
[모두의 딥러닝](Pytorch) #2-3. 선형 회귀(Linear regression) 코딩으로 구현하기 (0) | 2022.01.16 |
[모두의 딥러닝](keras) #2-2. 선형 회귀(Linear regression) 코딩으로 구현하기 (4) | 2022.01.05 |
[모두의 딥러닝] #2-1. 선형 회귀(Linear regression) 이론 - 평균 제곱 오차(MSE), 경사 하강법(Gradient descent algorithm) (4) | 2021.12.31 |
[모두의 딥러닝] #1. 딥러닝 프로그램의 작업 환경 만들고 구조 알아보기 + 기초 수학 (2) | 2021.12.28 |