728x90

 

행렬(Matrix)에 대해 알아보자.


 

1. 행렬이란?


벡터를 원소로 가지는 2차원 배열을 말하며 행(row)과 열(column)이라는 인덱스를 가진다.

또한 행렬은 여러 점들을 나타내며 벡터와 동일하게 같은 모양을 가지면 덧셈, 뺄셈, 성분곱이 가능하다.

  
  import numpy as np

  X = np.array([[1,2,3],
               [4,5,6],
               [7,8,9]])

  print(X)
  print(X.shape)
  

 

 

2. 전치행렬(Transpose Matrix)이란?


행과 열의 인덱스가 바뀐 행렬을 말한다. 연산시 많이 사용된다.

  
  import numpy as np

  X = np.array([[1,2,3],
               [4,5,6],
               [7,8,9]])	
               
  print(X.T)
    

출력 결과

 

 

3. 행렬 곱셈 이란?


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

이 경우 X의 열의 개수와 Y의 행의 개수가 같아야 한다.

  
  X = np.array([[1,2,3],
                [4,5,0],
                [9,-1,-5]])

  Y = np.array([[0,1],
               [2,3],
               [-5,-10]])

  Z = np.array([[1,1,1],
               [2,2,2]])

  # numpy 행렬 곱셈은 @ 연산 사용
  print('행렬 곱셈\n',X@Y) # X의 열의 개수와 Y의 행의 수가 같아야함
  print()
  print('numpy의 행렬 곱셈\n',np.inner(X,Z))  # 두 행의 크기가 같아야함
  

행렬 곱셈과 numpy의 행렬 곱셈(np.inner)은 다르다. 주의!

 

 

4. 또 다른 방법으로 행렬 이해하기


행렬은 벡터 공간에서 사용되는 연산자(operator) 역할을 한다.

행렬곱을 통해 다음과 같은 작업을 할 수 있다.

  • 벡터를 다른 차원의 공간으로 보낼 수 있다.
  • 데이터가 주어졌을 때 행렬곱을 통해 패턴을 추출하고 데이터를 압축할 수 있다.
  • 모든 선형변환(Linear Transform)은 행렬곱으로 계산할 수 있다.

 

 

5. 역행렬(Inverse Matrix) 이란?


역행렬은 어떤 행렬A의 연산을 거꾸로 되돌리는 행렬을 말한다.

행과 열의 개수가 같고 행렬식(determinant)가 0이 아닌 경우에만 계산이 가능하다.

  
  X = np.array([[13,2,1],
               [1,1,1],
                [0,2,-5]])

  print(np.linalg.inv(X))
  print()
  print( X @ np.linalg.inv(X))  # 항등 행렬
  

* 항등 행렬이란 인위의 행렬으로 벡터를 곱했을 때 자기 자신이 나오는 행렬을 말한다.

 

 

6. 유사역행렬과 무어-펜로즈역행렬


역행렬을 계산할 수 없다면 유사역행렬 또는 무어-펜로즈 역행렬을 사용한다.

이는 n차원 벡터Z를 m차원 벡터X로 되돌릴 수 있다.

  
  X = np.array([[15,2,1],
               [1,-10,1],
                [0,3,-5]])

  print(np.linalg.pinv(X))
  print()
  print( X @ np.linalg.pinv(X))  # 항등 행렬
  

 

 

 

 

 

 

출처 : 부스트코스 인공지능(AI) 기초 다지기

 

[AI Tech Pre-course] 인공지능(AI) 기초 다지기

부스트코스 무료 강의

www.boostcourse.org

 

 

 

728x90

'Python > 인공지능' 카테고리의 다른 글

[인공지능 기초] 경사하강법 2  (2) 2021.06.07
[인공지능 기초] 경사하강법  (2) 2021.06.05
[인공지능 기초] Vector 란?  (2) 2021.06.01
댓글
250x250
최근에 올라온 글
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Total
Today
Yesterday