https://www.boostcourse.org/ai100/lecture/739176
강의를 보고 정리한 내용이며, 모르는 내용을 위주로 정리하려 한다.
1. 벡터와 행렬
- 1. 벡터
벡터는 숫자를 원소로 가지는 리스트, 배열이다.
벡터는 공간에서의 한점, 원점에서의 상대적 위치를 나타냄
벡터의 연산은 합, 차, 내적, 스칼라곱 등이 가능
벡터의 노름(norm)
노름(norm)은 원점에서 부터의 거리를 나타냄
L1-노름 : 각 성분의 변화량의 절대값을 모두 더함
L2-노름: 피타고라스 정리를 이용해 유클리드 거리를 계산함
노름의 종류에 따라 기하학적 성질이 달라지고 머신러닝에선 각 성질들이 필요할때가 상이하기에 둘다 사용한다.
두 벡터 사이의 거리와 각도를 노름을 활용하여 구할 수 있다.
거리: |x-y|
각도: cos a=(|x|^2+|y|^2-|x-y|^2)/2|x||y| -> arccos(cos(a)) = a (제 2 코사인 법칙 활용가능)
내적은 정사영된 길이와 관련이 있다
Proj(x) = |x| cosa
내적은 정사영의길이를 벡터 y의길이 |y|만큼 조정한 값이다
- 2. 행렬
행렬은 벡터를 원소로 가지는 2차원 배열
행(row)와 열(column)이라는 인덱스를 가진다.
행렬의 특정 행(열)을 고정하면 행(열)벡터라 부른다.
전치행렬 X^T: 행과 열의 인덱스가 바뀐 행렬을 말한다.
행렬을 이해하는 방법 (1)
벡터가 공간에서의 한 점이라면 행렬은 공간에서의 여러점을 나타낸다.
행렬의 연산: 덧셈, 뺄셈, 성분곱, 스칼라곱은 벡터와의 연산과 동일하다.
행렬의 곱셈: i 번째 행벡터와 j 번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산하는 방식으로 이뤄진다.
행렬의 내적: np.inner는 i번째 행벡터와 j번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산한다. (수학에서의 내적과 다름)
행렬을 이해하는 방법(2)
행렬은 벡터공간에서 사용되는 연산자로 이해. 행렬 곱을 통해 다른 차원의 공간으로 보낼 수 있다.
행렬 곱을 통해 패턴을 추출할 수 있고 데이터를 압축할 수도 있다.
역행렬 이해하기
A^(-1) 존재 조건: det(a) != 0 , 행=열 개수
numpy.linalg.inv로 구할 수 있다.
만약 역행렬 계산 할 수 없다면 유사 역행렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose) 역행렬 A+를 이용한다.
numpy.linalg.pinv 로 구할 수 있다.
연립방정식은 np.linalg.pinv를 이용하여 해를 구할 수 있다.
선형회귀식을 np.linalg.pinv를 이용하여 데이터를 선형 모델로 해석하면 구할 수 있다.
y절편을 따로 추가해줘야 하는 이유
sklearn을 사용할때는 자동으로 y절편( h(x)=ax+b라고 한다면 b에 해당하는 값)을 추정해주지만, Linalg는 회귀계수(회귀 선의 기울기)만 추정하기 때문에 y절편을 따로 추가해 줘야함
'Study > 부스트캠프 AI Tech 7기 프리코스' 카테고리의 다른 글
5. 딥러닝 기초 - 1. Pytorch 기본 (2) | 2024.07.05 |
---|---|
4. 기초튼튼, 수학 튼튼 - 5. CNN 첫걸음, 6. RNN 첫걸음 (0) | 2024.07.05 |
4. 기초튼튼, 수학튼튼 - 3. 통계학 맛보기, 4. 베이즈 통계학 맛보기 (1) | 2024.07.05 |
4. 기초튼튼, 수학튼튼 - 1. 딥러닝 학습 방법, 2. 확률론 맛보기 (1) | 2024.07.05 |
3. 기초 수학 첫걸음 - 2. 경사하강법 (0) | 2024.07.05 |