[Machine Learning] ์ ๊ฒฝ๋ง ๊ธฐ์ด 2
2023. 2. 6. 02:10
๐ง๐ป๐ป์ฉ์ด ์ ๋ฆฌ
์ฐ์๋ฒ์น - Chain rule
์ฐ์๋ฒ์น์ ๋ํ ์์์ ๋ค์๊ณผ ๊ฐ๋ค.
์์
์ฝ๋
def sigmoid(x: ndarray) -> ndarray:
'''
์
๋ ฅ์ผ๋ก ๋ฐ์ ndarray์ ๊ฐ ์์์ ๋ํ sigmoid ํจ์ซ๊ฐ์ ๊ณ์ฐํ๋ค.
'''
return 1 / (1 + np.exp(-x))
def chain_deriv_2(chain:Chain,
input_range: ndarray) -> ndarray:
'''
๋ ํจ์๋ก ๊ตฌ์ฑ๋ ํฉ์ฑํจ์์ ๋ํจ์๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด ์ฐ์๋ฒ์น์ ์ฌ์ฉํจ
(f2(f1(x)))` = f2`(f1(x)) * f1`(x)
'''
assert len(chain) == 2, \
"์ธ์ chain์ ๊ธธ์ด๋ 2์ฌ์ผ ํจ"
assert input_range.ndim == 1, \
"input_range๋ 1์ฐจ์ ndarray์ฌ์ผ ํจ"
f1 = chain[0]
f2 = chain[1]
# df1/dx
f1_of_x = f1(input_range)
#df1/du
df1dx = deriv(f1, input_range)
#df2/du(f1(x))
df2du = deriv(f2, f1(input_range))
# ๊ฐ ์ ๋ผ๋ฆฌ ๊ฐ์ ๊ณฑํจ
return df1dx * df2du
def plot_chain(ax,
chain: Chain,
input_range: ndarray) -> None:
'''
2๊ฐ ์ด์์ ndarray -> ndarray ๋งคํ์ผ๋ก ๊ตฌ์ฑ๋ ํฉ์ฑํจ์์
๊ทธ๋ํ๋ฅผ input_range ๊ตฌ๊ฐ์ ๋ํด ์๋ํจ.
ax: ์๋์ ์ฌ์ฉํ matplotlib์ ์๋ธํ๋กฏ
'''
assert input_range.ndim == 1, \
"input_range๋ 1์ฐจ์ ndarray์ฌ์ผ ํจ"
output_range = chain_length_2(chain, input_range)
ax.plot(input_range, output_range)
def plot_chain_deriv(ax,
chain: Chain,
input_range: ndarray) -> ndarray:
'''
์ฐ์๋ฒ์น์ ์ด์ฉํด ํฉ์ฑํจ์์ ๋ํจ์๋ฅผ ๊ณ์ฐํ๊ณ ๊ทธ๋ํ๋ฅผ ์๋ํจ.
ax: ์๋์ ์ฌ์ฉํ matplotlib์ ์๋ธํ๋กฏ
'''
output_range = chain_deriv_2(chain, input_range)
ax.plot(input_range, output_range)
fig, ax = plt.subplots(1, 2, sharey=True, figsize=(16, 8)) # 2 Rows, 1 Col
chain_1 = [square, sigmoid]
chain_2 = [sigmoid, square]
PLOT_RANGE = np.arange(-3, 3, 0.01)
plot_chain(ax[0], chain_1, PLOT_RANGE)
plot_chain_deriv(ax[0], chain_1, PLOT_RANGE)
ax[0].legend(["$f(x)$", "$\\frac{df}{dx}$"])
ax[0].set_title("$f(x) = sigmoid(square(x))$์ ํจ์์ ๋ํจ์")
plot_chain(ax[1], chain_2, PLOT_RANGE)
plot_chain_deriv(ax[1], chain_2, PLOT_RANGE)
ax[1].legend(["$f(x)$", "$\\frac{df}{dx}$"])
ax[1].set_title("$f(x) = square(sigmoid(x))$์ ํจ์์ ๋ํจ์")
์ ์ฝ๋๋ก ์์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ผ ์ ์๋ค.
'Artificial Intelligence > Deep Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Supervised Learning] ์ง๋ ํ์ต (0) | 2023.02.08 |
---|---|
[Machine Learning] ์ ๊ฒฝ๋ง ๊ธฐ์ด 3 (0) | 2023.02.08 |
[XAI] ์ค๋ช ๊ฐ๋ฅํ AI (Explainable AI) (0) | 2023.01.26 |
[Convolutional Neural Networks and Image Classification] Part 3 (0) | 2023.01.24 |
[Training Neural Networks] part 2 (0) | 2023.01.24 |