JUST DO IT!

๋จธ์‹  ๋Ÿฌ๋‹์„ ์œ„ํ•œ ๊ธฐ์ดˆ ์„ ํ˜• ๋Œ€์ˆ˜ ์•Œ์•„๋ณด๊ธฐ - TIL230718 ๋ณธ๋ฌธ

TIL

๋จธ์‹  ๋Ÿฌ๋‹์„ ์œ„ํ•œ ๊ธฐ์ดˆ ์„ ํ˜• ๋Œ€์ˆ˜ ์•Œ์•„๋ณด๊ธฐ - TIL230718

sunhokimDev 2023. 7. 20. 18:28

๐Ÿ“š KDT WEEK 16 DAY 2 TIL

  • ๊ธฐ์ดˆ ์„ ํ˜• ๋Œ€์ˆ˜

 


ํ–‰๋ ฌ ํ‘œ๊ธฐ๋ฒ•

 

 

ํŒŒ์ด์ฌ์—์„œ numpy๋กœ ํ–‰๋ ฌ ์‚ฌ์šฉํ•˜๊ธฐ

 

import numpy as np
x = np.array([10.5, 5.2, 3.25, 7.0]) # ์ผ์ฐจ ๋ฐฐ์—ด

# ์ด์ฐจ์›ํ™”
x_2dims =  np.expand_dims(x, axis=1)

 

.shape๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ–‰๋ ฌ์˜ ํ˜•ํƒœ๋ฅผ ์•Œ ์ˆ˜์žˆ๊ณ , ํŒŒ์ด์ฌ์—์„œ ๋ฐฐ์—ด๋‹ค๋ฃจ๋“ฏ ์š”์†Œ๋ฅผ ๊บผ๋‚ด์“ฐ๋ฉด ๋œ๋‹ค.

 

ํ–‰๋ ฌ ๋‹ค๋ฃจ๊ธฐ 1

 

์ด์ฐจ๋ฐฐ์—ด๋กœ ์„ ์–ธํ•ด์„œ ์‚ฌ์šฉ๋„ ๊ฐ€๋Šฅํ•˜๊ณ , ํ•ด๋‹นํ•˜๋Š” ํ–‰์ด๋‚˜ ์—ด์˜ ๋ฐฐ์—ด์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.

 

A = np.array([
    [10,20,30],
    [40,50,60]
])

# column vector
j = 1
A[:, j]

# row vector
i = 1
A[i, :]

 

๊ฒฐ๊ณผ

ํ–‰๋ ฌ ๋‹ค๋ฃจ๊ธฐ 2

 

ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ

 

๋”ฅ๋Ÿฌ๋‹์—์„œ Neural Network์˜ ์ฃผ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์œผ๋กœ, ๋”ฅ๋Ÿฌ๋‹์„ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

ํ–‰๋ ฌ์˜ ๊ณฑ์…ˆ

 

1. ๋ฒกํ„ฐ x ๋ฒกํ„ฐ

 

1) ๋‚ด์ (inner product) 

ํ•˜๋‚˜์˜ ์‹ค์ˆ˜๊ฐ’์ด ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋ฆฌํ„ด

 

.dot ํ•จ์ˆ˜๋กœ ๋‚ด์  ๊ณ„์‚ฐ

 

2) ์™ธ์ (outer product)

 

ํ•˜๋‚˜์˜ ํ–‰๋ ฌ๊ฐ’์ด ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋ฆฌํ„ด

 

.matmul ํ•จ์ˆ˜๋กœ ์™ธ์  ๊ณ„์‚ฐ

 

์™ธ์ ์„ ์ด์šฉํ•˜๋ฉด ๋ชจ๋“  ์—ด์ด ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ ํ–‰๋ ฌ A๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

1์€ ๋ชจ๋“  ์›์†Œ๊ฐ€ 1์ธ ๋ฒกํ„ฐ์ด๋‹ค

 

๊ฐ ์—ด์˜ ๊ฐ’์ด ์„œ๋กœ ๊ฐ™๋‹ค.

 

2. ํ–‰๋ ฌ x ๋ฒกํ„ฐ

 

1) ์—ด๋ฒกํ„ฐ๋ฅผ ์˜ค๋ฅธ์ชฝ์— ๊ณฑํ•  ๋•Œ

 

 

2) ํ–‰๋ฒกํ„ฐ๋ฅผ ์™ผ์ชฝ์— ๊ณฑํ•  ๋•Œ

 

3. ํ–‰๋ ฌ x ํ–‰๋ ฌ

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค.

 

 

์ค‘์š” ์—ฐ์‚ฐ๊ณผ ์„ฑ์งˆ๋“ค

 

1) ๋„ค ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ํ–‰๋ ฌ

 

 

ํŒŒ์ด์ฌ์—์„œ๋Š” Numpy์˜ diagํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋Œ€๊ฐํ–‰๋ ฌ์„ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๋‹จ์œ„ํ–‰๋ ฌ ๋˜ํ•œ Numpy์˜ eye ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹จ์œ„ํ–‰๋ ฌ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2) ์ „์น˜(Transpose) : ํ–‰๋ ฌ ๋’ค์ง‘๊ธฐ

 

 

Numpy์˜ T ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ–‰๋ ฌ์„ ๋’ค์ง‘์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

3) ๋Œ€์นญ ํ–‰๋ ฌ

 

  • ์ •๋ฐฉํ–‰๋ ฌ A์™€ A์˜ ์ „์น˜ํ–‰๋ ฌ์ด ๋™์ผํ•  ๋•Œ : ๋Œ€์นญํ–‰๋ ฌ
  • ์ •๋ฐฉํ–‰๋ ฌ A์™€ ์Œ์˜ ๊ฐ’ A์˜ ์ „์น˜ํ–‰๋ ฌ์ด ๋™์ผํ•  ๋•Œ : ๋ฐ˜๋Œ€์นญํ–‰๋ ฌ

 

๋Œ€์นญํ–‰๋ ฌ์€ ์ฃผ๋Œ€๊ฐ์„ ์„ ๊ธฐ์ค€์œผ๋กœ ์œ„ ์•„๋ž˜๊ฐ€ ์„œ๋กœ ๋Œ€์นญ์ธ ๋ชจ์Šต์„ ๋ˆ๋‹ค.

A์™€ A์˜ ์ „์น˜ํ–‰๋ ฌ์„ ํ–‰๋ ฌ๊ณฑํ•˜๋ฉด ๋Œ€์นญํ–‰๋ ฌ์˜ ํ˜•ํƒœ๋ฅผ ๋‚˜ํƒ€๋‚œ๋‹ค.

 

A์™€ A์˜ ์ „์น˜ํ–‰๋ ฌ์„ ๊ณฑํ–ˆ๋”๋‹ˆ ์ฃผ๋Œ€๊ฐ์„ ์„ ๊ธฐ์ค€์œผ๋กœ ์„œ๋กœ ๋Œ€์นญ์ธ ๋ชจ์Šต์„ ๋ณด์—ฌ์ค€๋‹ค.

 

4) ๋Œ€๊ฐํ•ฉ (Trace)

 

์ •๋ฐฉํ–‰๋ ฌ A์˜ ๋Œ€๊ฐํ•ฉ(์ฃผ๋Œ€๊ฐ์„  ์›์†Œ์˜ ํ•ฉ)์€ tr(A)๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

 

 

5) ์—ญํ–‰๋ ฌ(Inverse)

  • A์˜ ์—ญํ–‰๋ ฌ์ด ์กด์žฌํ•˜๋ฉด, A๋Š” invertible ๋˜๋Š” non-singular ํ•˜๋‹ค๊ณ  ๋งํ•œ๋‹ค.
  • A์˜ ์—ญํ–‰๋ ฌ์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด, ์„ ํ˜• ์ข…์†(Linearly dependent)(์–ด๋– ํ•œ ๋ฒกํ„ฐ๊ฐ€ ๋‚˜๋จธ์ง€ ๋ฒกํ„ฐ์˜ ์„ ํ˜•์กฐํ•ฉ)์ด๋‹ค.

 

6) ํ–‰๋ ฌ์‹ (Determinant)

 

A๊ฐ€ ์ •๋ฐฉํ–‰๋ ฌ์ผ๋•Œ, A์˜ ํ–‰๋ ฌ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„ํ•œ๋‹ค.

numpy.linalg์˜ .det ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ๊ตฌํ•ด์ง„๋‹ค.

 

ํ–‰๋ ฌ์‹์ด ์ค‘์š”ํ•œ ์ ์€, ํ–‰๋ ฌ์‹์˜ ์ ˆ๋Œ€๊ฐ’์ด ํ–‰๋ ฌ ๊ณต๊ฐ„ ์ƒ์˜ ๋ชจ๋“  ์  ์ง‘ํ•ฉ S์˜ ๋ถ€ํ”ผ์™€ ์ผ์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

A๊ฐ€ ์—ญํ–‰๋ ฌ์ด ์กด์žฌํ•˜์ง€์•Š๋Š” Singular์ด๋ฉด, ์„ ํ˜• ์ข…์†์ด๋ฏ€๋กœ ๋ฒกํ„ฐ๊ฐ€ ์ผ๋ ฌ๋กœ ๋‚˜์—ดํ•œ ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค > ํ–‰๋ ฌ์‹์ด 0

 

์ด์ฐจ ํ˜•์‹(Quardratic Forms)

๋จธ์‹  ๋Ÿฌ๋‹์—์„œ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ์‹์ด๋‹ค.

์ •๋ฐฉํ–‰๋ ฌ A์™€ ๋ฒกํ„ฐ x๋ผ๊ณ  ํ•  ๋•Œ, ์ด์ฐจ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

์ด์ฐจํ˜•์‹์˜ ์‹

 

๊ณ ์œ ๊ฐ’(Eigenvalues)๊ณผ ๊ณ ์œ ๋ฒกํ„ฐ(Eigenvectors)

 

 

Numpy.linalg์˜ eig ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‰ฝ๊ฒŒ ๊ตฌํ•ด์ง„๋‹ค. (linalg.eig(A) => ( ๊ณ ์œ ๊ฐ’, ๊ณ ์œ ๋ฒกํ„ฐ ) ๋ฆฌํ„ด)

 

ํ–‰๋ ฌ๋ฏธ๋ถ„ (Matrix Calculus)

 

ํ–‰๋ ฌ ๋ฏธ๋ถ„

 

 

์ตœ์†Œ์ œ๊ณฑ๋ฒ•(Least Squares)

Ax = b๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋ฒกํ„ฐ x๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, Ax๊ฐ€ b์— ์ตœ๋Œ€ํ•œ ๊ฐ€๊นŒ์›Œ์ง€๋Š” x๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•

ํ–‰๋ ฌ ๋ฏธ๋ถ„์„ ํ†ตํ•ด ํ’€๋ฉด,

 

์ตœ์†Œ์ œ๊ณฑ๋ฒ•์˜ x ์‹

 

 

 

์†”์งํžˆ ํ•˜๋ฃจ๋งŒ์— ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์–ด๋ ค์› ๋‹คใ