기록을 남기자
작성일
2024. 7. 4. 21:30
작성자
ssun_bear
반응형

https://www.boostcourse.org/ai100/lecture/739176

 

인공지능 기초 다지기 (부스트캠프 AI Tech 7기 프리코스)

부스트코스 무료 강의

www.boostcourse.org

강의를 보고 정리한 내용이며, 모르는 내용을 위주로 정리하려 한다.

 

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절편을 따로 추가해 줘야함

반응형