티스토리 뷰
1. 벡터와 행렬
: 기계학습에서는 입력된 샘플을 특징 벡터로 표현한다. 벡터는 다음과 같이 로마자 소문자로 표기한다.
$$x_1=\begin{bmatrix}5.1\\3.5\\1.4\\0.2\end{bmatrix}
x_2=\begin{bmatrix}4.9\\3.0\\1.4\\0.2\end{bmatrix}
... where \ x_1, x_2 \in R^4$$
이 벡터를 4차원의 벡터라고 이야기하며 다시말해 4차원 실수 공간상의 한 점이 된다.
행렬은 이런 벡터를 여러개 담을 수 있고, 굵은 글씨의 대문자로 표현한다.
$$X = \begin{bmatrix}5.1 & 3.5 & 1.4 & 0.2\\ 4.9 & 3.0 & 1.4 & 0.2\\ \vdots & \vdots & \vdots & \vdots \\ 5.9&3.0&5.4&2.3\end{bmatrix} , where \ X \in R^{150*4}$$
가로를 행(row) 세로를 열(column)이라고 한다. i번째 행 j번째 열의 데이터를 이야기하려면 다음과 같이 표기한다.
$$x_{ij}$$
기계 학습에서 훈련집합을 담은 행렬을 설계행렬(design matrix)이라고 한다.
전치(transpose)를 통해 위에서 나타낸 X를 다음과 같이 나타낼 수 있다.
$$ X = \begin{bmatrix}x_1^T \\x_2^T\\ \vdots \\x_{150}^T \end{bmatrix} $$
알아둬야 할 행렬들의 특수 구조는 정사각행렬, 대각행렬, 단위행렬, 대칭행렬, 상삼각행렬, 하삼각행렬 등이 있다.
행렬 연산
행렬간 덧셈 , 뺄셈 : 두 행렬의 크기가 완전히 동일한 경우에만 덧셈, 뺄셈이 가능
행렬과 스칼라 곱셈 : 행렬의 각 요소에 스칼라값을 곱하면 된다.
행렬과 행렬의 곱셈 : n*m 행렬은 반드시 m*p 크기의 행렬과 곱해야 한다. 이때 결과 행렬은 n*p 행렬이 된다.
행렬은 결합법칙과 분배법칙은 성립하지만 교환법칙은 성립하지 않는다.
벡터와 벡터의 곱을 벡터간 내적(dot product)라고 하며 scalar 값 하나가 나온다. 이때 두 벡터가 가까울수록 내적값은 커지며 두 벡터가 수직이면 내적값은 0이된다.
텐서
벡터를 여러개 담을수있는 구조가 행렬이라면 행렬을 여러개 담을 수 있는 3차원 구조부터는 n차원 텐서라고 부른다.
2. 놈과 유사도
유사도 측정은 기계학습에서 상당히 중요한 연산들중 하나이다. 유사도를 사용하면 비슷한 성질의 샘플끼리 묶어 하나의 군집을 이루거나 분류 작업을 할 수 있다.
놈(norm)
스칼라값은 크기를 갖는다. 32는 20보다 크고, 12만큼 크다.
그러면 벡터도 크기를 갖는가? 벡터의 크기를 정의할 때 사용하는게 놈(norm)이다.
벡터의 크기를 나타내는 놈은 2차놈부터 무한차원의 놈으로 나타낼 수 있으며, 이를 p차놈이라 이야기하며 Lp놈이라한다.
예를들어 x = (3, -4, 1)일때 x의 L2놈은 다음과 같다.
$$\| x \| _2 = \sqrt{3^2 +(-4)^2 + 1^2} = 5.099$$
이를 일반화하면 다음과 같고
$$p차 \ norm: \|x\|_p = \sum_{i=1,d} (|x|_i^p)^{\frac{1}{p}} $$
최대놈은 따로 다음으로 정의한다.
$$최대\ norm: \| x \| _ \infty = max(|x_1|,|x_2|,...|x_d|)$$
길이가 1인 벡터를 단위벡터(unit vector)라고 한다.
단위벡터는 기계학습에서 종종사용된다. 어떤 임의 벡터 x를 단위벡터로 만들고싶으면 2차놈(벡터의 길이=크기)로 각 요소를 나눠주면된다.
예를들어 x = (3, -4, 1)일때 해당 벡터의 길이는 5.099라고 하였으므로, 각 요소를 5.099로 나눠주면 x의 단위벡터는 (0.588, -784, 0.196)이 된다.
이를 일반화 하면 단위벡터는 다음과 같다.
$$단위벡터:\frac{x}{ \| x \| _2}$$
행렬의 놈(프로베니우스 놈)
행렬 역시 놈으로 나타낼 수 있으나, 기계학습에서는 주로 프로베니우스 놈만을 이야기한다.
프로베니우스 놈은 모든 행렬 요소들의 제곱합의 제곱근이다. 예를들어 다음과 같고
$$A = \begin{bmatrix}2 & 1 \\6 & 4 \end{bmatrix} ,\ \| A \| _F = \sqrt{2^2 +1^2 +6^2 + 4^2} = 7.550$$
일반화하여 식으로 나타내면
$$프로베니우스\ 놈: \| A \| _F=(\sum_{i=1,n}\sum_{j=1,m}a_{ij}^2)^\frac{1}{2}$$
유사도
일반적으로, 두 벡터의 유사도 비교를 위해 벡터의 내적을 이용할수도 있다. 그러나 단순 내적만으로는 두 벡터의 유사도 비교에 충분하지 못하다. 따라서 방금 이야기한 단위벡터를 이용하여 두 벡터간의 유사도를 비교하면 더 정확한 유사도를 확인할 수 있는데 이것을 코사인 유사도(cosine similiarity)라고 한다.
$$cosine\ similarity(a,b) = \frac{a}{ \| a \|} . \frac{b}{ \| b \| }=cos( \theta )$$
이것을 코사인 유사도라 부르는 이유는 두 벡터가 이루는 각 θ의 코사인 값으로 두 벡터의 유사도가 정의되기 때문이다.
'Background > Math' 카테고리의 다른 글
[오일석 기계학습] 2.2 수학 - 확률과 통계 - 곱 규칙과 전확률 규칙 (0) | 2023.04.03 |
---|---|
[오일석 기계학습] 2.1 수학 - 선형대수(2) (0) | 2023.03.31 |
1x1 Convolution은 무엇을 위해서 하는가? (0) | 2023.03.14 |
롤의 정리, 평균값의 정리, 코시 평균값 정리, 로피탈 정리 [증명과정 없음 주의] (1) | 2023.02.02 |
부끄럽기 짝이 없는 미적분 복습공간 (0) | 2023.02.01 |
- Total
- Today
- Yesterday
- manimtutorial
- 베이즈정리
- 이왜안
- 기계학습
- 백준
- eigenvector
- MLE
- ai신약개발
- eigenvalue
- variational autoencoder
- Manimlibrary
- 오일석기계학습
- 최대우도추정
- 3B1B따라잡기
- MatrixAlgebra
- 인공지능
- vae
- kld
- 선형대수
- 파이썬
- 3b1b
- elementry matrix
- manim library
- 제한볼츠만머신
- marginal likelihood
- manim
- kl divergence
- Matrix algebra
- ai인공지능
- MorganCircularfingerprint
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |