SlideShare a Scribd company logo
1 of 41
Download to read offline
Math Tutorial I
Linear Algebra & Matrix Calculus
임성빈
Linear Algebra
이튜토리얼은Python NumPy 라이브러리를사용합니다
import numpy as np
import numpy.linalg as linalg
벡터(Vector)
x = (x , x , … , x )
벡터는기하적인공간의단위원소를표현합니다
벡터는각 성분의데이터타입이같아야합니다
벡터는행벡터(row vector)와열벡터(column vector)로구분합니다
Note : 성분x 자리에벡터나행렬또는함수가 들어와도된다
1 2 d
i
배열(array)
x = (x , x , … , x )
벡터를표현하는가장간단한방법
수학자들은이걸 d 차원튜플(tuple)이라부릅니다
파이썬커뮤니티에선1차원배열이라부릅니다
x = np.array([x1, ... ,xd]) # 배열
x.shape # (d, )
1 2 d
행벡터(row vector)
x =
x = np.array([[x1, ... , xd]]) # 2차원 배열
x = np.matrix([[x1, ... ,xd]]) # (1,d) 행렬
x.shape
[x , x , ⋯ , x1 2 d]
열벡터(column vector)
x =
x = np.array([[x1], ... ,[xd]]) # 2차원 배열
x = np.matrix([[x1], ... ,[xd]]) # (d,1) 행렬
x.shape
⎣
⎢
⎢
⎡x1
x2
⋮
xd
⎦
⎥
⎥
⎤
Note : NumPy 에서배열에np.matrix 를적용하면행벡터로변환합니다
u = np.array([x1, ... , xd]) # (d, ) 배열
v = np.matrix(u) # (d,1) 행렬
v == np.array([[x1, ... , xd]]) # True
벡터연산(Operation of vectors)
덧셈& 뺄셈
v + u = (v + u , ⋯ , v + u )
v − u = (v − u , ⋯ , v − u )
v+u, v-u
1 1 d d
1 1 d d
곱셈
스칼라곱 (Scalar product)
αv = (αv , ⋯ , αv )
alpha * v 또는 np.multiply(alpha,v)
성분곱 Elementwise multiplication (Hadamard product)
v ⊙ u = (v u , ⋯ , v u )
v * u 또는 np.multiply(v,u)
1 d
1 1 d d
내적(Inner product)
v ⋅ u = v u
np.inner(v,u)
i=1
∑
d
i i
행렬(Matrix)
X = = (x )
X 를(n × m) 행렬이라부릅니다
파이썬에선행렬을2차원배열로정의합니다
X = np.array([[x11,...,x1m],...,[xn1,...,xnm]])
X = np.matrix([[x11,...,x1m],...,[xn1,...,xnm]])
X.shape # (n,m) 행렬
⎣
⎢
⎢
⎢
⎢
⎢
⎢
⎡x11
x21
⋮
xn1
⋯
⋯
xij
⋯
x1m
x2m
⋮
xnm
⎦
⎥
⎥
⎥
⎥
⎥
⎥
⎤
ij n×m
행렬은각 성분이배열로이루어진배열로나타낼수있습니다
X = (x , ⋯ ,x ) =
x_i = np.array([x_i1, ... , x_im]) # i = 1,...,n
X = np.array([x_1, ... , x_n]) # (n,m) 행렬
Quiz : 각 성분이행렬로이루어진배열은무엇일까요?
1 n
⎣
⎢
⎢
⎡x1
x2
⋮
xn
⎦
⎥
⎥
⎤
텐서(Tensor)
X = (x )
텐서는수학에서벡터, 행렬을3차원이상으로일반화시킨개념
벡터는1차원텐서, 행렬은2차원텐서
텐서는각 성분이행렬로이루어진배열로나타낼수있습니다
XX = np.array([[[x111, .. , x11p], .. ,[x1m1, .. ,x1mp]],
... [[xn11, .. , xn1p], .. ,[xnm1, .. ,xnmp]]])
ijk (n×m×p)
왜텐서를쓰죠?
대부분의시공간 데이터는3차원이상구조로표현됩니다
영상은2차원행렬× RGB
시계열데이터는시간축포함
d ≥ 3 이상인공간에서미적분학을기술할때유용합니다
텐서에익숙해지면Back propagation 계산이쉬워집니다!
유사품으로행렬미적분학(Matrix calculus) 을많이씁니다.
텐서연산의예
행렬연산
행렬의덧셈뺄셈은벡터와같습니다
X + Y = (x + y )ij ij (n×m
행렬의곱셈은한가지를제외하고 벡터연산과 같습니다
스칼라곱
성분곱
내적
행렬의곱셈은한가지를제외하고 벡터연산과 같습니다
스칼라곱
성분곱
행렬곱
행렬곱 (Matrix multiplication)
X : (n × m ) 행렬, Y : (m × m) 행렬
XY = x y = (x ⋅y )
X = np.random.normal(0,1,(n,p)) # (n,p)행렬 생성
Y = np.random.normal(0,1,(p,m)) # (p,m)행렬 생성
np.matmul(X,Y) # (n,m)행렬
np.matmul(Y,X) # 에러
′ ′
(
k=1
∑
m′
ik kj)
(n×m)
i j
T
Transpose
행렬의각 성분들의행과 열을바꾸는걸 전치(Transpose)라합니다.
X = (x ) →  X = (x )
벡터도전치가 가능합니다
v = (v ) →  v = (v )
X = np.array([[x11,..,x1m],..,[xn1,..,xnm]]) # (n,m) 행렬
X_transpose = np.transpose(X) # (m,n) 행렬
X.T
ij (n×m)
T
ji (m×n)
i (d×1)
T
i 1×d
몇가지알아둬야할것들
1. v, u 가 벡터인경우
v u =u v
2. X, Y 가 행렬인경우
(X ) = X
(XY) =Y X
(X + Y) =X +Y
T T
T T
T T T
T T T
NumPy 에서행렬연산시주의할점
u = np.array([[1,2,3],[4,5,6]]) # (2,3) 행렬
v = np.array([[1,0,0],[0,1,0]])
u*v # 성분곱 (2,3) 행렬
np.matmul(u.T, v) # 행렬곱 (3,3) 행렬
np.matmul(u, v.T) # 행렬곱 (2,2) 행렬
u = np.matrix([[1,2,3],[4,5,6]])
v = np.matrix([[1,0,0],[4,5,6]])
np.multiply(u,v) # 성분곱 (2,3) 행렬
u.T * v # 행렬곱 (3,3) 행렬
u * v.T # 행렬곱 (2,2) 행렬
u*v # 에러
단위행렬과 역행렬
1. 단위행렬(Identity matrix)
I =
np.identity(n) # (n,n) 단위행렬
n
⎣
⎢
⎢
⎡1
0
⋮
0
0
1
⋮
0
⋯
⋯
⋮
⋯
0
0
⋮
1⎦
⎥
⎥
⎤
2. 역행렬(Inverse matrix)
XY =I = YX
이때Y =X 이라쓴다. 역행렬은유일하게 존재한다.
linalg.inv(X) # (n,n) 행렬
n
−1
역행렬의(잘알려진) 활용
선형연립방정식:
a x = b , i ∈ {1, ⋯ , n}
Ax = b
A 가 존재한다면위방정식의해는
x =A b
j=1
∑
n
ij j i
−1
−1
몇가지알아둬야할것들
1. X, Y 의역행렬이모두존재하는경우
(X ) = X
(X ) = (X )
(XY) =Y X
−1 −1
T −1 −1 T
−1 −1 −1
행렬식(Determinant)
X = (x , ⋯ ,x ) : (n × n) 행렬
det(X) = ∣X∣ = ∣x ∣
행렬식은모서리가 벡터x , ⋯ ,x 로이루어진n‑차원큐브의부피입니다
linalg.det(X)
1 n
ij
1 n
X = (x ,x ,x ) =1 2 3
⎣
⎡x11
x21
x31
x12
x22
x32
x13
x23
x33
⎦
⎤
det(X) ≠ 0 이면역행렬X 이존재합니다
det(X) = 0 이면역행렬X 이존재하지않습니다
그러나유사역행렬(Pseudo inverse matrix)은구할수있습니다
−1
−1
예제) 다음행렬의역행렬을구해보세요
A =
A = np.array([[1,2,3],[4,5,6],[7,8,9]])
linalg.det(A)
linalg.inv(A)
⎣
⎡1
4
7
2
5
8
3
6
9⎦
⎤
역행렬이존재하지않는데가끔 linalg.inv 가 동작할때가 있습니다
그때는행렬식의값이너무작지않은지또는역행렬이너무크지않은지
조건상수(condition number)를확인해야합니다
Norm
∥X∥ (1 ≤ p ≤ ∞)
Norm 은벡터, 행렬의크기 (≠ 부피)를나타내는양입니다
수치해석학에선Norm 의크기를통해오차를제어할수있습니다
p
∥X∥ = ∣x ∣
linalg.norm(X,1)
∥X∥ =
linalg.norm(X,2)
linalg.norm(X, 'fro')
∥X∥ = ∣x ∣
linalg.norm(X, np.inf)
1
1≤j≤m
max
i=1
∑
n
ij
H
⎷



x
i=1
∑
n
j=1
∑
m
ij
2
∞
1≤i≤n
max
j=1
∑
m
ij
Ax = b
K(A) = ∥A∥∥A ∥ : 조건상수
x : 참값,   : 추정값
≤ ≤ K(A)
−1
x^
K(A)
1
∥b∥
∥A − b∥x^
∥ ∥x^
∥x − ∥x^
∥b∥
∥A − b∥x^
몇가지알아둬야할용어들
대각행렬(Diagonal matrix)
D = (d )
대칭행렬(Symmetric matrix)
a = a
ii (n×n)
ij ji
단위벡터(Unit vector)
∥v∥ = (v ⋅ v) = 1
직교행렬(Orthogonal matrix)
A =A
정규직교행렬(Orthonormal matrix) : 직교행렬& 각 성분이단위벡터
∥A ∥ = 1, 1 ≤ i ≤ n
1/2
T −1
i
행렬분해(Matrix Decomposition)
대각분해(Diagonal Decomposition)
A = UDU
특이벡터분해(SVD, Singular Vector Decomposition)
A = UDV
LU분해, Cholesky분해, QR분해, Polar분해, + 13
T
T
X = np.array([[x11,..,x1m],..,[xn1,..,xnm]]) # (n,m) 행렬
SVD = linalg.svd(X) # [(n,n)행렬, (n,m)행렬, (m,m)행렬]
SVD[0] # 정규직교행렬
np.matmul(SVD[0],SVD[0].T)
SVD[1] # 대각행렬 : array 로 출력
SVD[2] # 정규직교행렬
유사역행렬(Moore‑Penrose Pseudoinverse)
SVD 를이용한다
A = UDV
이때A의유사역행렬은
A = VD U
linalg.pinv(A)
T
+ + T

More Related Content

What's hot

안.전.제.일. 강화학습!
안.전.제.일. 강화학습!안.전.제.일. 강화학습!
안.전.제.일. 강화학습!Dongmin Lee
 
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011Preferred Networks
 
기본 회전 공식
기본 회전 공식 기본 회전 공식
기본 회전 공식 cancan21st
 
有向グラフに対する 非線形ラプラシアンと ネットワーク解析
有向グラフに対する 非線形ラプラシアンと ネットワーク解析有向グラフに対する 非線形ラプラシアンと ネットワーク解析
有向グラフに対する 非線形ラプラシアンと ネットワーク解析Yuichi Yoshida
 
はじパタ8章 svm
はじパタ8章 svmはじパタ8章 svm
はじパタ8章 svmtetsuro ito
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기NAVER Engineering
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門Eita Sugimoto
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016Taehoon Kim
 
A summary on “On choosing and bounding probability metrics”
A summary on “On choosing and bounding probability metrics”A summary on “On choosing and bounding probability metrics”
A summary on “On choosing and bounding probability metrics”Kota Matsui
 
Diversity is all you need(DIAYN) : Learning Skills without a Reward Function
Diversity is all you need(DIAYN) : Learning Skills without a Reward FunctionDiversity is all you need(DIAYN) : Learning Skills without a Reward Function
Diversity is all you need(DIAYN) : Learning Skills without a Reward FunctionYeChan(Paul) Kim
 
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナドYoshihiro Mizoguchi
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?nishio
 
数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由Hiromi Ishii
 
「統計的学習理論」第1章
「統計的学習理論」第1章「統計的学習理論」第1章
「統計的学習理論」第1章Kota Matsui
 
強化学習@PyData.Tokyo
強化学習@PyData.Tokyo強化学習@PyData.Tokyo
強化学習@PyData.TokyoNaoto Yoshida
 
強化学習その3
強化学習その3強化学習その3
強化学習その3nishio
 
すごい配列楽しく学ぼう
すごい配列楽しく学ぼうすごい配列楽しく学ぼう
すごい配列楽しく学ぼうxenophobia__
 
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)Motoya Wakiyama
 

What's hot (20)

안.전.제.일. 강화학습!
안.전.제.일. 강화학습!안.전.제.일. 강화학습!
안.전.제.일. 강화학습!
 
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
オンライン凸最適化と線形識別モデル学習の最前線_IBIS2011
 
기본 회전 공식
기본 회전 공식 기본 회전 공식
기본 회전 공식
 
有向グラフに対する 非線形ラプラシアンと ネットワーク解析
有向グラフに対する 非線形ラプラシアンと ネットワーク解析有向グラフに対する 非線形ラプラシアンと ネットワーク解析
有向グラフに対する 非線形ラプラシアンと ネットワーク解析
 
はじパタ8章 svm
はじパタ8章 svmはじパタ8章 svm
はじパタ8章 svm
 
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
1시간만에 GAN(Generative Adversarial Network) 완전 정복하기
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門
 
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
지적 대화를 위한 깊고 넓은 딥러닝 PyCon APAC 2016
 
A summary on “On choosing and bounding probability metrics”
A summary on “On choosing and bounding probability metrics”A summary on “On choosing and bounding probability metrics”
A summary on “On choosing and bounding probability metrics”
 
Diversity is all you need(DIAYN) : Learning Skills without a Reward Function
Diversity is all you need(DIAYN) : Learning Skills without a Reward FunctionDiversity is all you need(DIAYN) : Learning Skills without a Reward Function
Diversity is all you need(DIAYN) : Learning Skills without a Reward Function
 
圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド圏論のモナドとHaskellのモナド
圏論のモナドとHaskellのモナド
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
線形?非線形?
線形?非線形?線形?非線形?
線形?非線形?
 
数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由
 
「統計的学習理論」第1章
「統計的学習理論」第1章「統計的学習理論」第1章
「統計的学習理論」第1章
 
強化学習@PyData.Tokyo
強化学習@PyData.Tokyo強化学習@PyData.Tokyo
強化学習@PyData.Tokyo
 
強化学習その3
強化学習その3強化学習その3
強化学習その3
 
変分法
変分法変分法
変分法
 
すごい配列楽しく学ぼう
すごい配列楽しく学ぼうすごい配列楽しく学ぼう
すごい配列楽しく学ぼう
 
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
 

Similar to Linear algebra

Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)Jeonghun Yoon
 
01_ML 기초_선형회귀_Linear Regression
01_ML 기초_선형회귀_Linear Regression01_ML 기초_선형회귀_Linear Regression
01_ML 기초_선형회귀_Linear RegressionAHRA CHO
 
유니티 고급 과정 -2-
유니티 고급 과정 -2-유니티 고급 과정 -2-
유니티 고급 과정 -2-Kiyoung Moon
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regressionHaesun Park
 
Python Machine Learning - ML04 Artificial Neural Network(인공신경망)
Python Machine Learning - ML04 Artificial Neural Network(인공신경망)Python Machine Learning - ML04 Artificial Neural Network(인공신경망)
Python Machine Learning - ML04 Artificial Neural Network(인공신경망)건환 손
 
Eigendecomposition and pca
Eigendecomposition and pcaEigendecomposition and pca
Eigendecomposition and pcaJinhwan Suk
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNNSANG WON PARK
 
Adversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationAdversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationHyunKyu Jeon
 
제4강 명제와 논리-정보
제4강 명제와 논리-정보제4강 명제와 논리-정보
제4강 명제와 논리-정보csungwoo
 
Flow based generative models
Flow based generative modelsFlow based generative models
Flow based generative models수철 박
 
패턴인식-베이즈결정이론기반 분류기 part1
패턴인식-베이즈결정이론기반 분류기 part1패턴인식-베이즈결정이론기반 분류기 part1
패턴인식-베이즈결정이론기반 분류기 part1jdo
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Jungkyu Lee
 
01.r 기초 확률분포
01.r 기초   확률분포01.r 기초   확률분포
01.r 기초 확률분포Yoonwhan Lee
 
Linear algebra.pptx
Linear algebra.pptxLinear algebra.pptx
Linear algebra.pptxGeonWooYoo1
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기Yong Joon Moon
 
RUCK 2017 베이즈 모형의 꽃 - 계층 모형
RUCK 2017 베이즈 모형의 꽃 - 계층 모형RUCK 2017 베이즈 모형의 꽃 - 계층 모형
RUCK 2017 베이즈 모형의 꽃 - 계층 모형r-kor
 
패턴 인식 2 classifiers based on bayes decision theory part 1
패턴 인식 2 classifiers based on bayes decision theory part 1패턴 인식 2 classifiers based on bayes decision theory part 1
패턴 인식 2 classifiers based on bayes decision theory part 1jdo
 

Similar to Linear algebra (20)

Neural network (perceptron)
Neural network (perceptron)Neural network (perceptron)
Neural network (perceptron)
 
01_ML 기초_선형회귀_Linear Regression
01_ML 기초_선형회귀_Linear Regression01_ML 기초_선형회귀_Linear Regression
01_ML 기초_선형회귀_Linear Regression
 
유니티 고급 과정 -2-
유니티 고급 과정 -2-유니티 고급 과정 -2-
유니티 고급 과정 -2-
 
2.linear regression and logistic regression
2.linear regression and logistic regression2.linear regression and logistic regression
2.linear regression and logistic regression
 
Python Machine Learning - ML04 Artificial Neural Network(인공신경망)
Python Machine Learning - ML04 Artificial Neural Network(인공신경망)Python Machine Learning - ML04 Artificial Neural Network(인공신경망)
Python Machine Learning - ML04 Artificial Neural Network(인공신경망)
 
Eigendecomposition and pca
Eigendecomposition and pcaEigendecomposition and pca
Eigendecomposition and pca
 
Gmm to vgmm
Gmm to vgmmGmm to vgmm
Gmm to vgmm
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNN
 
Adversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine TranslationAdversarial Attack in Neural Machine Translation
Adversarial Attack in Neural Machine Translation
 
제4강 명제와 논리-정보
제4강 명제와 논리-정보제4강 명제와 논리-정보
제4강 명제와 논리-정보
 
Flow based generative models
Flow based generative modelsFlow based generative models
Flow based generative models
 
패턴인식-베이즈결정이론기반 분류기 part1
패턴인식-베이즈결정이론기반 분류기 part1패턴인식-베이즈결정이론기반 분류기 part1
패턴인식-베이즈결정이론기반 분류기 part1
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어
 
01.r 기초 확률분포
01.r 기초   확률분포01.r 기초   확률분포
01.r 기초 확률분포
 
Linear algebra.pptx
Linear algebra.pptxLinear algebra.pptx
Linear algebra.pptx
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기
 
07. PCA
07. PCA07. PCA
07. PCA
 
RUCK 2017 베이즈 모형의 꽃 - 계층 모형
RUCK 2017 베이즈 모형의 꽃 - 계층 모형RUCK 2017 베이즈 모형의 꽃 - 계층 모형
RUCK 2017 베이즈 모형의 꽃 - 계층 모형
 
패턴 인식 2 classifiers based on bayes decision theory part 1
패턴 인식 2 classifiers based on bayes decision theory part 1패턴 인식 2 classifiers based on bayes decision theory part 1
패턴 인식 2 classifiers based on bayes decision theory part 1
 
06. graph mining
06. graph mining06. graph mining
06. graph mining
 

Linear algebra