[Machine Learning] ์ ๊ฒฝ๋ง ๊ธฐ์ด 1
๐ง๐ป๐ป์ฉ์ด ์ ๋ฆฌ
ํฉ์ฑํจ์ - composite function
ํฉ์ฑํจ์์ ๋ํจ์ - derivative
์ฐ์ - chain
์ ๊ฒฝ๋ง์ ๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๋ ๋ฐ ํ์ํ ๊ธฐ์ด์ ์ธ ๋ฉํ ๋ชจ๋ธ์ ์ค๋ช ํ ์ ์๋ค.
์ ๊ฒฝ๋ง์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์ฑ ์์
- ์์
- ์ฝ๋
- ๋ค์ด์ด๊ทธ๋จ
ํจ์
- ํ๋์ค์ ์ฒ ํ์ ๋ฅด๋ค ๋ฐ์นด๋ฅดํธ๊ฐ ์ฒ์ ์ ์ํ ๋ฐฉ๋ฒ. ์ขํ์ ๋ํ๋ด๊ธฐ.
1. ์์
2. ๋ค์ด์ด๊ทธ๋จ
ํจ์ ๋ํ๋ด๊ธฐ ๋ฐฉ๋ฒ 1)
ํจ์ ๋ํ๋ด๊ธฐ ๋ฐฉ๋ฒ 2)
3. ์ฝ๋
python์ Numpy ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์ ๊ฒฝ๋ง์์ ๋ค๋ฃฐ ๋ฐ์ดํฐ๋ ๋ชจ๋ ๋ค์ฐจ์ ๋ฐฐ์ด์ ๋ด๊ธด๋ค.
import numpy as np
print("ํ์ด์ฌ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ ์ฐ์ฐ")
a = [1, 2, 3]
b = [4, 5, 6]
print("a+b:", a+b)
try:
print(a*b)
except TypeError:
print("a*b ํ์ด์ฌ ๋ฆฌ์คํธ์ ๋ํด a*b์ ๊ฐ์ ์ฐ์ฐ์ ํ ์ ์์")
print()
print("๋ํ์ด ๋ฐฐ์ด์ ์ฌ์ฉํ ์ฐ์ฐ")
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print("a+b:",a+b)
print("a*b:",a*b)
ndarray class๋ฅผ ํตํด ์ฌ๋ฌ ๊ฐ์ง ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
import numpy as np
a = [[1, 2],[3, 4]]
print("a:")
a = np.array(a)
print(a)
print('a.sum(axis=0):', a.sum(axis=0))
print('a.sum(axis=1):', a.sum(axis=1))
a = np.array([[1,2,3],[4,5,6]])
b = np.array([10,20,30])
print("a+b:")
print(a+b)
๋ํ์ด๋ฅผ ์ฌ์ฉํด ๊ฐ๋จํ ํจ์๋ฅผ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํ ์ ์๋ค.
def square(x:ndarray) -> ndarray:
'''
์ธ์๋ก ๋ฐ์ ndarray ๋ฐฐ์ด์ ๊ฐ ์์๊ฐ์ ์ ๊ณฑํ๋ค.
'''
return np.power(x,2)
def leaky_relu(x:ndarray) -> ndarray:
'''
ndarray ๋ฐฐ์ด์ ๊ฐ ์์์ 'Leaky ReLU' ํจ์๋ฅผ ์ ์ฉํ๋ค.
'''
return np.maximum(0.2 * x, x)
๋ํจ์
-> ํจ์ซ๊ฐ์ ๋ณํ์จ
1. ์์
2. ๋ค์ด์ด๊ทธ๋จ
3. ์ฝ๋
from typing import Callable
def deriv(func : Callable[[ndarray], ndarray],
input_:ndarray,
delta: float = 0.001) -> ndarray:
'''
๋ฐฐ์ด input์ ๊ฐ ์์์ ๋ํด ํจ์ func์ ๋ํจ์ซ๊ฐ ๊ณ์ฐ
'''
return (func(input_ + delta) - func(input_ - delta)) / (2 * delta)
ํฉ์ฑํจ์
-> ํจ์๊ฐ ๋ค๋ฅธ ํจ์๋ฅผ ์๋๋ค.
1. ๋ค์ด์ด๊ทธ๋จ
2. ์์
3. ์ฝ๋
from typing import List
# ndarray๋ฅผ ์ธ์๋ก ๋ฐ๊ณ ndarray๋ฅผ ๋ฐํํ๋ ํจ์
Array_Function = Callable[[ndarray], ndarray]
# Chain์ ํจ์์ ๋ฆฌ์คํธ๋ค.
Chain = List[Array_Function]
def chain_length_2(chain: Chain,
a: ndarray) -> ndarray:
'''
๋ ํจ์๋ฅผ ์ฐ์(chain)์ ์ผ๋ก ํ๊ฐ
'''
assert len(chain) == 2, \
"์ธ์ chain์ ๊ธธ์ด๋ 2์ฌ์ผ ํจ"
f1 = chain[0]
f2 = chain[1]
return f2(f1(x))
์ถ์ฒ : ํด๋น ํฌ์คํ ์ [Deep Learning from Scratch] ์ฒ์ ์์ํ๋ ๋ฅ๋ฌ๋์ ์ฑ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค.
'Artificial Intelligence > Deep Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Training Neural Networks] part 2 (0) | 2023.01.24 |
---|---|
[Deep Neural Network] part 1 - 2 (0) | 2023.01.22 |
[Deep Neural Network] part 1 - 1 (0) | 2023.01.22 |
more clever function (0) | 2021.12.19 |
Supervised learning examples && more clever (0) | 2021.12.16 |