Processing math: 100%

선형 대수학 | Chapter 4. 행렬, 파트 1 : 행렬과 행렬의 기본 연산

728x90

 

4.1 Numpy에서 행렬 생성과 시각화

행렬 ( 표기  : A 또는 M )

▶ 특수 행렬

- 난수 행렬

: 가우스(정규)와 같은 분포로부터 무작위로 추출된 숫자를 가진 행렬

# 난수 생성 함수
A = np.random.randn(4, 6) # 행 수, 열 수

 

- 정방 행렬과 비정방 행렬 ( 표기 : RNN )

: 행 수와 열 수가 같은 행렬 

: 행 수가 열 수보다 더 많으면 높다고 표현, 열 수가 행 수보다 더 많으면 넓다고 표현

 

- 대각 행렬

: 행렬의 대각은 왼쪽 위에서 시작해 오른쪽 아래로 내려가는 원소들을 말함

: 대각 행렬은 모든 비대각 원소가 0, 대각 원소는 0 또는 그 외의 값을 가질 수 있는 유일한 값

# 대각 행렬 함수
A = np.diag(행렬) # 대각 원소를 벡터로 반환
B = np.diag(벡터) # 대각 원소에 해당 벡터 원소가 있는 행렬 반환

 

- 삼각 행렬

: 주 대각선의 위 또는 아래가 모두 0인 행렬

: 대각선 위에 0이 아닌 원소가 있으면 상삼각 행렬

: 대각선 아래에 0이 아닌 원소가 있으면 하삼각 행렬

# 삼각 행렬 함수
A = np.triu() # 상삼각 행렬
B = np.tril() # 하삼각 행렬

 

- 단위 행렬 ( 표기 :  I5 )

: 모든 대각 원소가 1인 정방 대각 행렬

: 행렬 또는 벡터에 단위 행렬을 곱하면 동일한 행렬 또는 벡터가 나온다는 점에서 숫자 1과 동등.

# 단위 행렬
A = np.eye()

 

- 영 행렬 ( 표기 : 0 )

: 모든 원소가 0인 행렬

# 영 행렬 함수
A = np.zeros()

 

4.2 행렬 수학 : 덧셈, 스칼라 곱셈, 아다마르곱

 행렬의 덧셈과 뺄셈

: 두 행렬을 더하거나 뺄 때는 대응되는 원소끼리 가능. 즉, 크기가 같은 두 행렬 사이에서만 성립함.

 

행렬 이동

: 정방 행렬에 스칼라를 더하는 방식 

: 대각 원소에 상수를 더하는 것 (대각이 아닌 요소는 변하지 않음) 

: A+γI

A = np.array([], [], ..) # 배열
s = 6  # 스칼라

# 행렬 이동
A + s*np.eye(len(A))

# 행렬 이동이 아님!
A + s

 

: 데이터 과학 분야에서는 행렬의 수치적 안정성을 높이고, 이동의 효과를 보면서 행렬을 가능한 많은 정보를 보존하기 위해 상대적으로 적은 양을 이동함.

: 행렬의 이동을 이용한 주요 응용 2가지 : 1) 행렬의 고윳값을 찾는 메커니즘 2) 모델을 데이터에 적합시킬 때 행렬을 정규화하는 메커니즘

 

스칼라 곱셈

γ[abcd]=[γaγbγcγd]

 

아다마르 곱 ( 표기  : AB )

[2345][2a3b4c5d]
# 아다마르 곱 함수
A = np.random.randn(3, 4)
B = np.random.randn(3, 4)

# 아다마르 곱
A * B
np.multiply(A, B)

# 아다마르 곱이 아님!
A @ B

 

4.3 (표준) 행렬 곱셈 ( 표기 : AB )

한 행렬의 행과 다른 행렬의 열 사이 스칼라 곱셈의 조직적 집합

>> 두 행렬의 크기가 서로 짝이 맞을 때 두 행렬을 곱할 수 있음.

 

 행렬 곱셈

M  x N ↔ N x K

행렬 곱셈은 왼쪽 행렬의 열 수가 오른쪽 행렬의 행 수와 같을 때 유효 (N으로 동일)

그 이유는 곱셈 행렬의 (i,j)번째 원소가 행렬의 i번째 행과 오른쪽 행렬의 j번째 열 사이의 내적이기 때문.

+ 일반적인 교환 법칙을 따르지 않음.

곱셈 행렬의 크기는 왼쪽 행렬의 열 수와 오른쪽 행렬의 열 수로 정의됨. (M x K)

 

행렬 곱셈 예제

[2345][abcd]=[(2a+3c)(2b+3d)(4a+5c)(4b+5d)]

: 행렬 곱셈의 결과는 왼쪽 행렬의 행과 오른쪽 행렬의 열 사이의 모든 쌍에 대한 선형 관계를 저장하는 행렬이 됨.

 

행렬-벡터 곱셈

: 행 벡터만 행렬의 왼쪽에 곱할 수 있음 → vTA

: 열 벡터만 행렬의 오른쪽에 곱할 수 있음 → Av

: 행렬-벡터 곱셈의 결과는 항상 벡터임. 결과 벡터의 방향은 곱하는 벡터의 방향에 따라 결정됨.

 

 행렬-벡터 곱셈의 해석 (선형 가중 결합, 기하학적 변환)

: 행렬-벡터 곱셈이 해당 벡터를 회전하고 확장할 수 있는 역할을 함.

: 행렬은 이러한 변환을 담는 그릇임.

 

4.4 행렬 연산 : 전치

단순히 행과 열을 바꾸는 것

# 행렬 전치 매서드 및 함수
A = np.array([ [...], [...] ])
A_T1 = A.T  # 메서드
A_T2 = np.transpose(A)  # 함수

 

 내적과 외적 표기법

[ 내적 ]   ㅡ ㅣ

: 크기가 M x 1인 두 열 벡터에서 하나만 전치하면 1 x M과 M x 1인 두 개의 '행렬'이 존재하게 됨. 

'내부' 차원은 일치하고 '외부' 차원을 통해 곱셈의 결과가 1 x 1 스칼라가 됨을 알 수 있음. 이것이 내적을 aTb로 표시하는 이유임.

[ 외적 ]   ㅣ ㅡ

: 크기가 M x 1과 1 x N인 열벡터와 행벡터를 곱하면 '내부' 차원은 일치하고, 결과의 크기는 M x N이 됨.

 

4.5 행렬 연산 : LIVE EVIL (연산 순서)

여러 행렬의 곱의 전치는 각 행렬을 전치하고 역순으로 곱한 것과 같음

L,I,V,E는 모두 행렬임.

(LIVE)T=ETVTITLT

 

4.6 대칭 행렬

대응되는 행과 열이 같은 행렬

즉, 행과 열을 바꿔도 행렬에는 아무런 변화가 없음.

AT=A

대칭 행렬은 자신의 전치 행렬과 같음.

[aefgebhifhcjgijd]

 

▶ 비대칭 행렬로부터 대칭 행렬 생성하기

어떤 행렬이든 자신의 전치를 곱하면 정방 대칭 행렬이 생성됨.

ATAAAT 모두 정방 대칭 행렬임.

[ 정방 ]

만약 A가 M x N이라면 ATA는 (N x M)(M x N)임. 그러면 행렬의 크기는 N x N으로 정방 행렬이 됨.

[ 대칭 ]

대칭 행렬의 정의는 한 행렬과 전치 행렬이 동일하다는 것.

(ATA)T=ATATT=ATA 

결과 행렬인 ATA 은 통계 모델의 특잇값 분해의 핵심임. 

 

 

728x90

댓글