관리 메뉴

bright jazz music

선형대수: 12. 선형변환(linear transformation) 본문

Math/선형대수

선형대수: 12. 선형변환(linear transformation)

bright jazz music 2022. 7. 30. 21:30

선형변환(linear transformation, )

  • 선형변환은 벡터를 변환한다.
  • 벡터에서 벡터로의 변환을 선형변환이라고 한다.
  • 선형변환은 선형대수학에서 선형 결합을 보존하는, 두 벡터 공간 사이의 함수이다.
  • 선형변환은 인공지능에서 뉴럴 네트워크로 정보를 전파시키는 데 사용한다.

참고: https://url.kr/g9v4td

 

아래의 예를 보자.

 

  • 행렬 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()                  #그래프 생성

 

검은선의 벡터a의 화살표. 오렌지선이 선형변환 후의 벡터인 b의 화살표

 

 

 

 

 

 

 

Comments