728x90
1. Vectors
- 벡터는 숫자를 원소로 가지는 리스트(list) 또는 1차원 배열(array)입니다
- 수식 : 보통 열벡터로 처리 (column vector)
- 코드 : 보통 행벡터로 처리 (row vector)
- 벡터의 차원 : 벡터의 원소의 개수 (d)
- 공간에서 한 점을 나타냄
- 보통 기준점(원점)으로부터 상대적 위치를 표현
- 벡터에 숫자를 곱해주면(스칼라배) 길이만 변함
- 0보다 작으면 반대 방향이 됨
- 1보다 크면 길이가 늘어나고, 1보다 작으면 길이가 줄어듦
- 벡터끼리 같은 크기를 가지면 덧셈, 뺄셈을 계산할 수 있음 (same dimension)
< 아다마르 곱(hadamard product) = 성분곱 >
- 벡터끼리 같은 모양(same size, same dimension)을 가지면 성분곱을 계산할 수 있음
- 성분끼리의 곱셈으로 표현가능
- 각 원소를 곱한 값을 원소로 갖는 Vector를 반환
- [m X n] * [m X n] = [m X n] (상-상-상)
2. Products
1) 행렬의 성분곱 : 아다마르 곱(hadamard product) = 성분곱 > : *연산
- -벡터/행렬끼리 같은 모양을 가지면 성분곱을 계산할 수 있음
- 성분끼리의 곱셈으로 표현가능
- [m X n] * [m X n] = [m X n] (상-상-상)
- X * Y = (x_ij * y_ij) : 각 행렬의 원소끼리의 곱을 성분으로 갖는 행렬을 반환
2) 행렬의 곱셈 : @연산 / a.dot(b) : method / 붙여서 쓰기
- 결과 행렬의 사이즈를 미리 정하기
- 상 - 우 - 상 순서로 내적 결과를 손으로 작성
- i번째 행벡터와 j번째 열벡터 사이의 내적을 성분으로 가지는 행렬
- [m X n] * [n X p] = [m X p] (상-우-상)
- XY = sigma((k~) (x_ik * y_kj) )
3) 행렬의 내적 : np.inner(X,Y) / X @ Y.T or X.dot(Y.T)
- X o Y (내적) = XY^T(전치 후 행렬 곱) : X 열의 갯수 = Y^T 행의 갯수 = Y행의 갯수
- np.inner(X,Y) : X 행의 갯수 = Y 행의 갯수 (X을 기준으로 두고 Y에서 하나씩 상-상-상)
- 1st 수학적 내적, 2nd 컴퓨터적 내적
- numpy의 dot은 일반 행렬곱과 같음 : dot 연산 = @ 연산
- numpy의 np.inner는 i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산
- np.inner : 일반 행렬곱과 다르게 아다마르 성분곱을 사용
- vector 끼리 내적할 경우 scalar을 반환
3. Addition
- 벡터의 덧셈, 뺄셈 (-벡터를 더한다고 생각)
- 두 벡터의 덧셈은 다른 벡터로부터의 상대적 위치 이동을 표현
4. Norm of a vector
- 벡터의 norm은 원점에서부터의 거리를 말함 : 구성성분의 원소의 개수와 상관없이 구할 수 있음
- 임의의 차원 d에 대해 성립 (모든 차원에 대해 성립 = 성분 원소의 개수에 상관 X : x1, x2,..xd)
- L1 norm : 각 성분의 변화량의 절대값을 모두 더함 (sigma(i=1~d) (abs(xi) )
- 좌표평면에서 각 좌표축을 따라 움직인 거리들의 합
- Robust 학습, Lasso 회귀
- L2 norm : 피타고라스 정리를 이용해 유클리드 거리를 계산함 (root(sigma(i=1~d) ((xi)^2))
- Laplace 근사, Ridge 회귀
- norm의 종류에 따라 기하학적 성질이 달라짐
5. Distance between two vetors
- 두 벡터 사이의 거리를 구하기
- 두 점이 주어졌을 때 두 점 사이의 거리를 구하기
- 두 벡터 사이의 거리를 계산할 때 = 벡터의 뺄셈을 이용
- L1, L2 - norm을 이용함
6. Angle between two vectors
- 두 벡터 사이의 각을 구하기
- 2차원, 3차원... 임의의 d차원에서 사용가능
- L2 - norm에서만 사용가능
- 제 2 cos법칙에 의해 두 벡터 사이의 각도를 계산할 수 있음
- cos(theta) = <a,b> / ||a||*||b||
7. Inner product
- 내적을 어떻게 해석할까
- 내적은 정사영된 벡터(orthogonal projection)의 길이와 관련있음
- 기준 벡터의 크기 * 정사영한 벡터 크기
- 두 벡터 사이의 유사도를 측정하는데 사용가능
- proj(x) : 벡터 y로 정사영된 벡터 x의 그림자를 의미
- proj(x)의 길이 = ||x|| * cos(theta)가 됨
- 내적은 정사영의 길이를 벡터 y의 길이 ||y||만큼 조정한 값
728x90