안정민 2024. 5. 19. 02:04

1. 행렬

-행렬(matrix)는 행벡터를 원소로 가지는 2차원 배열이다

-벡터는 숫자를 원소로 가지는 1차원 배열의 정의를 가지느 수학적 용어였음

-행렬은 볼드체로 표시

-행렬은 행(row)과 열(column)이라는 인덱스를 가지게 된다, 인덱스 순서는 행-> 열 순서임

-행렬의 특정 행을 고정하면 행벡터라고 부르고, 특정 열을 고정하면 열벡터라고 한다.

-행렬의 전치행렬(transpose matrix)은 행과 열의 인덱스가 바뀐 행렬을 이야기한다.

-벡터가 공간에서 한 점을 의미한다면, 행렬은 여러 점들을 나타낸다.

-행렬의 행 벡터 x(i)는 i번째 데이터를 의미한다.

-행렬은 벡터를 원소로 가지는 2차원 배열이므로, 행렬끼리 같은 모양을 가지면 덧셈과 뺄셈을 계산할 수 있

 -numpy를 활용하면 구현 가능

-성분곱은 벡터와 같음, 각 인덱스 위치끼리 곱하면 된다, 스칼라곱도 벡터의 스칼라곱 연산과 차이가 없음

 

-행렬곱셈이 벡터와 가지는 차이점은 내적 계산에서 나타난다

-행렬 곱셈은 i번째 행벡터와 j 번째 열벡터 사이의 내적을 성분으로 가지는 행렬을 계산한다.

-x의 행벡터와 y의 열벡터의 개수가 같아야 연산이 가능함

 

*****

-행렬도 내적이 있을까?

-넘파이의 np.inner는 i번째 행벡터와 j 번째 행벡터 사이의 내적을 성분으로 가지는 행렬을 계산한다.

-수학에서 말하는 내적과 다르므로 주의!

 

****

-행렬은 벡터 공간에서사용되는 연산자(operator)로 이해되기도 한다.

 -즉, 데이터 저장이 아니라 두 다른 데이터들을 연결시키는 연산자로 이해

-행렬곱을 통해 벡터를 다른차원의 공간으로 보낼 수 있게 되는 것이다. (mapping의 개념)

-행렬곱을 통해 패턴을 추출하고 데이터를 압출할 수도 있다

-모든 선형 변환(linear transform)은 행렬곱으로 계산할 수 있다. -> 행렬곱을 이해해야 기계학습에서의 선형 회귀 이해!

 

-어떤 행렬 A의 연산을 거꾸로 되돌리는 행렬을 역행렬(inverse matrix)이라 부르고, A-1이라고 표기한다.

-역행렬은 행과 열 숫자가 같고, 행렬식(determinant)이 0이 아닌 경우에만 계산할 수 있다.

-원해의 행렬과 역행렬이 항등행렬이 되는 곱셈 순서는 중요하지 않다

-numpy.linalg.inv 함수를 활용해서 역행렬을 구할 수 있다. -> numpy.linalg.inv(A)

-함수 활용시 행과 열의 숫자가 같지 않다면 에러가 나오게 된다.

 -만일 역행렬을 계산할 수 없다면 (행과 열의 숫자가 같지 않음) 유사역행렬(pseudo-inverse) 또는 무어-펜로즈 역행렬 A+을 이용한다

 -주어진 행렬에서 행의 수가 더 많은가, 열의 수가 더 많은가에 따라서 유사역행렬을 구하는 방법이 조금 다르다는 것을 명심해야한다.

 -numpy.linalg.pinv 함수를 활용해서 구할 수 있게 된다.

-만약 행이 열보다 더 많은 경우라면, 유사역행렬은 원래 행렬보다 더 먼저 곱해줘야만 항등 행렬이 성립하게 된다

-곱셈이 바뀌게 되면 다른 결과가 나옴

 

 

 

 

 

 


 

본 포스트의 학습 내용은 부스트클래스 <AI 엔지니어 기초 다지기 : 부스트캠프 AI Tech 준비과정> 강의 내용을 바탕으로 작성되었습니다.