Math/선형대수
선형대수: 12. 선형변환(linear transformation)
bright jazz music
2022. 7. 30. 21:30
선형변환(linear transformation, )
- 선형변환은 벡터를 변환한다.
- 벡터에서 벡터로의 변환을 선형변환이라고 한다.
- 선형변환은 선형대수학에서 선형 결합을 보존하는, 두 벡터 공간 사이의 함수이다.
- 선형변환은 인공지능에서 뉴럴 네트워크로 정보를 전파시키는 데 사용한다.
아래의 예를 보자.
- 행렬 A가 있다.
LaTeX | 수식 |
$A=\begin{pmatrix} 2 & -1 \\ 2 & -2 \end{pmatrix}$ | ![]() |
- a라는 세로 벡터가 있다.
LaTeX | 수식 |
$A=\begin{pmatrix} 2 & -1 \\ 2 & -2 \end{pmatrix}$ | ![]() |
- 행렬 A를 세로 벡터a에 곱해서 새로운 세로 백터 b로 변환할 수 있다.
LaTeX | 수식 |
$\vec b = A\vec a = \begin{pmatrix} 2 & -1 \\ 2 & -2 \end{pmatrix}\begin{pmatrix} 2 \\ 3 \end{pmatrix} = \begin{pmatrix} 1 \\ -2 \end{pmatrix}$ | ![]() |
- 벡터 a 는 행렬 A에 의해 벡터 b로 변환되었다. 새로운 벡터로 변환된 것이다.
- 이를 선형변환이라고 한다.
실습
#벡터의 선형변환 실시
import numpy as np
import matplotlib.pyplot as plt
a = np.array([2, 3]) #변환 전의 벡터
A = np.array([[2, -1],
[2, -2]]) #벡터 a에 곱할 행렬
b = np.dot(A, a) #선형변환. (행렬 A를 벡터 a에 곱해준다)
print("변환 전의 벡터(a):", a)
print("변환 후의 벡터(b):", b)
#화살표 그리기
#함수 선언
def arrow(start, size, color):
plt.quiver(start[0], start[1],
size[0], size[1],
angles="xy", scale_units="xy", scale=1,
color=color)
s = np.array([0, 0]) #원점
arrow(s, a, color="black") #선형변환 전의 벡터 a의 화살표. (0, 0)에서 시작
arrow(s, b, color="orange") #선형변환 후의 벡터 a의 화살표. (0, 0)에서 시작
#그래프 표시
plt.xlim([-3, 3]) #x의 표시 범위
plt.ylim(-3, 3) #y의 표시 범위
plt.xlabel("x", size=14) #레전드
plt.ylabel("y", size=14) #레전드
plt.grid() #격자
plt.gca().set_aspect("equal") #가로세로비 동일
plt.show() #그래프 생성