์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Linear Regression
- ์ค์คํธ๋ฆฌ์
- Machine learning
- ์ ํํ๊ท
- ์ด์ฐจ์ ์ง
- ์ ๋ฝ
- li-ion
- ๋ฏธ๋์์ ํด์ธ๊ตํ
- anaconda ๊ฐ์ํ๊ฒฝ
- fatigue fracture
- cost function
- ๋์23์ด
- set method
- ํน๋ณ ๋ฉ์๋
- Andrew ng
- ์๊ทน์ฌ
- Python
- set add
- ๊ตํํ์
- electrochemical models
- ๋ฏธ๋์์ ์ฅํ์
- 2022๋
- ์ฒญ์ถ ํ์ดํ
- Deeplearning
- special method
- ์ ๋ฝ ๊ตํํ์
- gradient descent
- m1 anaconda ์ค์น
- fluent python
- ๋ฅ๋ฌ๋
- Today
- Total
Done is Better Than Perfect
[๋ฅ๋ฌ๋] 5. ๋ฅ๋ฌ๋ ๋ชจ๋ธ ํ์ต์ ๋ฌธ์ ์ pt.2 : ๊ธฐ์ธ๊ธฐ ์์ค, ๊ฐ์ค์น ์ด๊ธฐํ ๋ฐฉ๋ฒ ๋ณธ๋ฌธ
[๋ฅ๋ฌ๋] 5. ๋ฅ๋ฌ๋ ๋ชจ๋ธ ํ์ต์ ๋ฌธ์ ์ pt.2 : ๊ธฐ์ธ๊ธฐ ์์ค, ๊ฐ์ค์น ์ด๊ธฐํ ๋ฐฉ๋ฒ
jimingee 2024. 6. 12. 17:45๋ฅ๋ฌ๋ ๋ชจ๋ธ ํ์ต์ ๋ฌธ์ ์ ์ผ๋ก ์๋์ 4๊ฐ์ง๊ฐ ์๋ค.
1. ํ์ต ์๋ ๋ฌธ์ ์ ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ
2. ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์
3. ์ด๊ธฐ๊ฐ ์ค์ ๋ฌธ์
4. ๊ณผ์ ํฉ ๋ฌธ์
์ด๋ฒ ์ฅ์์๋ 2. ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ , 3. ๊ฐ์ค์น ์ด๊ธฐํ ์ค์ ๋ฌธ์ ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ ๋ํด ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
2. ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ ์ ๋ฐฉ์ง ๊ธฐ๋ฒ
๊ธฐ์ธ๊ธฐ ์์ค (Vanishing Gradient)
- ๋ฐ์ ์์ธ : ๊ธฐ์ธ๊ธฐ๊ฐ 0์ธ ๊ฐ์ ์ ๋ฌํ๋ฉฐ ์ค๊ฐ ์ ๋ฌ๊ฐ์ด ์ฌ๋ผ์ง๋ ๋ฌธ์
- ๊ธฐ์ธ๊ธฐ๊ฐ ์์ค๋๋ ๋ฌธ์ ๊ฐ ๋ฐ๋ณต๋๋ฉฐ ํ์ต์ด ์ ์ด๋ฃจ์ด์ง์ง ์์
- ๊น์ ์ธต์ ๋ชจ๋ธ์์ ์ญ์ ํ ์์ ์ ๋ฌ๋๋ ์์ค ํจ์(loss function)์ gradient ๊ฐ์ ํ์ฑํ ํจ์์ธ sigmoid ํจ์์ 0์ ๊ฐ๊น์ด ๊ธฐ์ธ๊ธฐ ๊ฐ์ด ๊ณ์ํด์ ๊ณฑํด์ง๋ฉด์ ๊ฒฐ๊ตญ ๊ฐ์ค์น ์ ๋ฐ์ดํธ๊ฐ ์ ์๋๋ ๋ฌธ์
- ํด๊ฒฐ ๋ฐฉ๋ฒ :
- ReLU : ๊ธฐ์กด์ ํ์ฑํ ํจ์๋ก ์ฌ์ฉํ๋ sigmoid ํจ์ ๋์ ReLU ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํด๊ฒฐ
- Tanh : ๋ด๋ถ hidden layer์๋ ReLU๋ฅผ ์ ์ฉํ๊ณ , output layer์์๋ง Tanh ์ ์ฉ
- ReLU๊ฐ sigmoid ๋ณด๋ค ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ ์ ๊ฐํ ์ด์
- sigmoid ํจ์๋ ์ ๋ ฅ๊ฐ์ด ๋งค์ฐ ํฌ๊ฑฐ๋ ์๋ค๋ฉด ๊ธฐ์ธ๊ธฐ๋ 0์ ๊ฐ๊น์์ง
- ReLU ํจ์๋ ์์ ์ ๋ ฅ ๊ฐ์ ๋ํด ์ผ์ ํ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฏ๋ก ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์
[ hidden layer์ activation function์ด sigmoid์ธ ๋ชจ๋ธ VS relu์ธ ๋ชจ๋ธ ๋น๊ต]
import tensorflow as tf
import logging, os
logging.disable(logging.WARNING)
''' 1. hidden layer์ ํ์ฑํ ํจ์๊ฐ `relu`์ธ 10์ธต ์ด์์ ๋ชจ๋ธ '''
def make_model_relu():
model_relu = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
return model_relu
''' 2. hidden layer์ ํ์ฑํ ํจ์๊ฐ `sigmoid`์ธ 10์ธต ์ด์์ ๋ชจ๋ธ '''
def make_model_sig():
model_sig = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(32, activation='sigmoid'),
tf.keras.layers.Dense(10, activation='softmax')
])
return model_sig
''' 3. ๋ ๋ชจ๋ธ์ ๋ถ๋ฌ์จ ํ ํ์ต์ํค๊ณ ํ
์คํธ ๋ฐ์ดํฐ์ ๋ํด ํ๊ฐ '''
def main():
# MNIST ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ณ ์ ์ฒ๋ฆฌ
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
model_relu = make_model_relu() # hidden layer๋ค์ ํ์ฑํ ํจ์๋ก relu๋ฅผ ์ฐ๋ ๋ชจ๋ธ
model_sig = make_model_sig() # hidden layer๋ค์ ํ์ฑํ ํจ์๋ก sigmoid๋ฅผ ์ฐ๋ ๋ชจ๋ธ
# ๋ชจ๋ธ ์ต์ ํ
model_relu.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model_sig.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model_relu.summary()
model_sig.summary()
# ๋ชจ๋ธ ํ์ต
model_relu_history = model_relu.fit(x_train, y_train, epochs=5, verbose=0)
print('\n')
model_sig_history = model_sig.fit(x_train, y_train, epochs=5, verbose=0)
# ๋ชจ๋ธ ํ๊ฐ
scores_relu = model_relu.evaluate(x_test, y_test)
scores_sig = model_sig.evaluate(x_test, y_test)
print('\naccuracy_relu: ', scores_relu[-1])
print('accuracy_sig: ', scores_sig[-1])
return model_relu_history, model_sig_history
if __name__ == "__main__":
main()
[ ์ฝ๋ ์คํ ๊ฒฐ๊ณผ ]
- hidden layer์ ํ์ฑํ ํจ์๋ก ReLU๋ฅผ ์ ํํ ๋ชจ๋ธ์ ์ ํ๋๊ฐ ๋ ๋์.
- ๋ฐ๋ผ์, ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ ์์ ReLU ํจ์๋ฅผ ํ์ฑํ ํจ์๋ก ์ ํํ๋ ๊ฒ์ด ๋์ฑ ์ ํ๋๊ฐ ๋์
### output ###
accuracy_relu: 0.9632
accuracy_sig: 0.7123
3. ์ด๊ธฐ๊ฐ ์ค์ ๋ฌธ์ ์ ๋ฐฉ์ง ๊ธฐ๋ฒ
๊ฐ์ค์น ์ด๊ธฐํ (weight initialization)
- ํ์ฑํ ํจ์์ ์ ๋ ฅ ๊ฐ์ด ๋๋ฌด ์ปค์ง๊ฑฐ๋ ์์์ง์ง ์๊ฒ ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ด ํต์ฌ (๊ธฐ์ธ๊ธฐ ์์ค ๋ฐฉ์ง)
- ์ด๊ธฐํ ์ค์ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ :
- ํ์ค ์ ๊ท๋ถํฌ๋ฅผ ์ด์ฉํ ์ด๊ธฐํ (๋ถ์ฐ์ ์ค์ด๊ธฐ ์ํด ํ์คํธ์ฐจ๋ฅผ 0.01๋ก ํ๋ ์ ๊ท๋ถํฌ๋ก ์ด๊ธฐํ)
- Xavier ์ด๊ธฐํ ๋ฐฉ๋ฒ + sigmoid ํจ์ : ํ์ค ์ ๊ท ๋ถํฌ๋ฅผ ์ ๋ ฅ ๊ฐ์์ ์ ๊ณฑ๊ทผ์ผ๋ก ๋๋์ด ์ค. sigmoid์ ๊ฐ์ S์ ํจ์์ ๊ฒฝ์ฐ ์ถ๋ ฅ ๊ฐ๋ค์ด ์ ๊ท ๋ถํฌ ํํ๋ฅผ ๊ฐ์ ธ์ผ ์์ ์ ์ผ๋ก ํ์ต ๊ฐ๋ฅ
- Xavier ์ด๊ธฐํ ๋ฐฉ๋ฒ + ReLU ํจ์ : ReLU ํจ์์๋ Xavier ์ด๊ธฐํ๊ฐ ๋ถ์ ํฉ. ๋ ์ด์ด๋ฅผ ๊ฑฐ์ณ๊ฐ์๋ก ๊ฐ์ด 0์ ์๋ ด
- He ์ด๊ธฐํ ๋ฐฉ๋ฒ : ํ์ค์ ๊ท๋ถํฌ๋ฅผ ์ ๋ ฅ ๊ฐ์ ์ ๋ฐ์ ์ ๊ณฑ๊ทผ์ผ๋ก ๋๋์ด์ค. 10์ธต ๋ ์ด์ด์์๋ ํ๊ท ๊ณผ ํ์คํธ์ฐจ๊ฐ 0์ผ๋ก ์๋ ดํ์ง ์์.
- ์ ์ ํ ๊ฐ์ค์น ์ด๊ธฐํ ๋ฐฉ๋ฒ :
- Sigmoid, tanh์ ๊ฒฝ์ฐ, Xavier ์ด๊ธฐํ ๋ฐฉ๋ฒ์ด ํจ์จ์ .
- ReLU๊ณ์ ํ์ฑํ ํจ์ ์ฌ์ฉ ์, He ์ด๊ธฐํ ๋ฐฉ๋ฒ์ด ํจ์จ์
- ์ต๊ทผ ๋๋ถ๋ถ์ ๋ชจ๋ธ์์๋ He ์ด๊ธฐํ๋ฅผ ์ฃผ๋ก ์ ํ
[ 1. ํ์ค ์ ๊ท ๋ถํฌ๋ฅผ ์ด์ฉํ ๊ฐ์ค์น ์ด๊ธฐํ VS ํ์คํธ์ฐจ๋ฅผ 0.01๋ก ํ๋ ์ ๊ท๋ถํฌ๋ก ๊ฐ์ค์น ์ด๊ธฐํ ]
import numpy as np
from visual import *
np.random.seed(100)
def sigmoid(x):
result = 1 / (1 + np.exp(-x))
return result
def main():
# 100๊ฐ์ ๋
ธ๋๋ฅผ ๊ฐ์ง ๋ชจ๋ธ์ ๋ค์ด๊ฐ 1000๊ฐ์ ์
๋ ฅ ๋ฐ์ดํฐ
x_1 = np.random.randn(1000,100)
x_2 = np.random.randn(1000,100)
node_num = 100
hidden_layer_size = 5
activations_1 = {}
activations_2 = {}
for i in range(hidden_layer_size):
if i != 0:
x_1 = activations_1[i-1]
x_2 = activations_2[i-1]
# ๊ฐ์ค์น ์ ์
w_1 = np.random.randn(100,100)*1 + 0 # ํ์ค ์ ๊ท ๋ถํฌ - N(0,1)
w_2 = np.random.randn(100,100)*0.01 + 0 # ํ์คํธ์ฐจ๊ฐ 0.01์ธ ์ ๊ท๋ถํฌ - N(0,0.01)
a_1 = np.dot(x_1, w_1)
a_2 = np.dot(x_2, w_2)
## sigmoid ํต๊ณผ
z_1 = sigmoid(a_1)
z_2 = sigmoid(a_2)
activations_1[i] = z_1
activations_2[i] = z_2
Visual(activations_1,activations_2)
return activations_1, activations_2
if __name__ == "__main__":
main()
[ ์ฝ๋ ์คํ ๊ฒฐ๊ณผ - activation ๊ฒฐ๊ณผ์ ๋ถํฌ๋ ]
- ํ์ค ์ ๊ท ๋ถํฌ๋ก ๊ฐ์ค์น๋ฅผ ์ด๊ธฐํํ ๋ชจ๋ธ -> activation ๊ฒฐ๊ณผ๊ฐ์ด 0, 1 ๊ฐ์ผ๋ก ๋ชฐ๋ฆผ
- ํ์คํธ์ฐจ 0.01์ธ ์ ๊ท๋ถํฌ๋ก ๊ฐ์ค์น๋ฅผ ์ด๊ธฐํํ ๋ชจ๋ธ -> activation ๊ฒฐ๊ณผ๊ฐ์ด 0.5 ์ฃผ๋ณ์ผ๋ก ๋ชฐ๋ฆผ
- activation ๊ฐ์ด ์๊ทน๋จ(0๋๋ 1)์ผ๋ก ๋ชฐ๋ฆฌ๋ ํ์์ ์ข์ง ์์
- ํ์ฑํ ํจ์(์, sigmoid ํจ์)์ ๊ธฐ์ธ๊ธฐ๊ฐ 0์ ์๋ ด -> ํ์ต์ด ์ ์ด๋ฃจ์ด ์ง์ง ์์
[ 2. Xavier ๋ฐฉ๋ฒ์ ์ด์ฉํ ๊ฐ์ค์น ์ด๊ธฐํ - ํ์ฑํ ํจ์(sigmoid & relu)์ ๊ฒฐํฉํ์ ๋ ๋น๊ต]
- Xavier ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ ๋ ์ด์ด์ ๋ ธ๋๊ฐ n๊ฐ์ผ ๋ ํ์ค ํธ์ฐจ๊ฐ $ \frac{1}{ \sqrt{n}}$ ์ธ ๋ถํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ
- Xavier ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ ๋ ์ด์ด์ ๋ ธ๋๊ฐ ๋ง์์๋ก ๋ค์ ๋ ์ด์ด์ ๋ ธ๋์ ์ด๊น๊ฐ์ผ๋ก ์ฌ์ฉํ๋ ๊ฐ์ค์น๊ฐ ์ข๊ฒ ํผ์ง.
import numpy as np
from visual import *
np.random.seed(100)
def sigmoid(x):
result = 1 / (1 + np.exp(-x))
return result
def relu(x):
result = np.maximum(0,x)
return result
def main():
# 100๊ฐ์ ๋
ธ๋๋ฅผ ๊ฐ์ง ๋ชจ๋ธ์ ๋ค์ด๊ฐ 1000๊ฐ์ ์
๋ ฅ ๋ฐ์ดํฐ
x_sig = np.random.randn(1000,100)
x_relu = np.random.randn(1000,100)
node_num = 100
hidden_layer_size = 5
activations_sig = {}
activations_relu = {}
for i in range(hidden_layer_size):
if i != 0:
x_sig = activations_sig[i-1]
x_relu = activations_relu[i-1]
# Xavier ๊ฐ์ค์น ์ด๊ธฐํ - ํ์ค ํธ์ฐจ๊ฐ 1/root(n)์ธ ์ ๊ท๋ถํฌ
w_sig = np.random.randn(100,100)*(1/np.sqrt(node_num))+0
w_relu = np.random.randn(100,100)*(1/np.sqrt(node_num))+0
a_sig = np.dot(x_sig, w_sig)
a_relu = np.dot(x_relu, w_relu)
z_sig = sigmoid(a_sig) # sigmoid ํ์ฑํ ํจ์ ์ด์ฉ
z_relu = relu(a_relu) # relu ํ์ฑํ ํจ์ ์ด์ฉ
activations_sig[i] = z_sig
activations_relu[i] = z_relu
Visual(activations_sig, activations_relu)
return activations_sig, activations_relu
if __name__ == "__main__":
main()
[ ์ฝ๋ ์คํ ๊ฒฐ๊ณผ - activation ๊ฒฐ๊ณผ์ ๋ถํฌ๋ ]
- (์ผ์ชฝ : sigmoid + Xavier ์ด๊ธฐํ) activation ๊ฒฐ๊ณผ ๊ฐ์ด ์ด๋ ํ์ชฝ์ผ๋ก ๋ชฐ๋ฆฌ์ง ์๊ณ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋จ์ ํ์ธํ ์ ์์
- (์ค๋ฅธ์ชฝ : ReLU + Xavier ์ด๊ธฐํ) activation ๊ฒฐ๊ณผ ๊ฐ์ด ํ์ชฝ(0)์ผ๋ก ๋ชฐ๋ฆผ -> ReLU ํจ์์๋ Xavier ์ด๊ธฐํ๊ฐ ๋ถ์ ํฉ
[ 3. He ๋ฐฉ๋ฒ์ ์ด์ฉํ ๊ฐ์ค์น ์ด๊ธฐํ ]
- He ์ด๊ธฐํ ๋ฐฉ๋ฒ : ํ์ฑํ ํจ์๋ก ReLU๋ฅผ ์ธ ๋ ํ์ฑํ ๊ฒฐ๊ด๊ฐ๋ค์ด ํ์ชฝ์ผ๋ก ์น์ฐ์น๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ๋ฐฉ๋ฒ
- ์ ๋ ์ด์ด์ ๋ ธ๋๊ฐ n๊ฐ์ผ ๋ ํ์ค ํธ์ฐจ๊ฐ $ \frac{\sqrt{2}}{\sqrt{n}}$์ธ ๋ถํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ
- Xavier ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ํ์ค ํธ์ฐจ๊ฐ $ \frac{1}{\sqrt{n}}$.
- ReLU๋ ์์ ์์ญ์ ๋ํ ํจ์ซ๊ฐ์ด 0์ด๋ผ์ ๋ ๋๊ฒ ๋ถํฌ์ํค๊ธฐ ์ํด $ \sqrt{2} $๋ฐฐ์ ๊ณ์๊ฐ ํ์ํ๋ค๊ณ ์ดํดํ ์ ์์.
import numpy as np
from visual import *
np.random.seed(100)
def relu(x):
result = np.maximum(0,x)
return result
def main():
# 100๊ฐ์ ๋
ธ๋๋ฅผ ๊ฐ์ง ๋ชจ๋ธ์ ๋ค์ด๊ฐ 1000๊ฐ์ ์
๋ ฅ ๋ฐ์ดํฐ - ํ์ค์ ๊ท๋ถํฌ ๋ฐ๋ฆ
x_relu = np.random.randn(1000,100)
node_num = 100
hidden_layer_size = 5
activations_relu = {}
for i in range(hidden_layer_size):
if i != 0:
x_relu = activations_relu[i-1]
# He ๊ฐ์ค์น ์ด๊ธฐํ - ํ์ค ํธ์ฐจ๊ฐ root(2)/root(n)์ธ ์ ๊ท๋ถํฌ
w_relu = np.random.randn(100,100)*np.sqrt(2/node_num)+0
a_relu = np.dot(x_relu,w_relu)
z_relu = relu(a_relu)
activations_relu[i] = z_relu
Visual(activations_relu)
return activations_relu
if __name__ == "__main__":
main()
[ ์ฝ๋ ์คํ ๊ฒฐ๊ณผ - activation ๊ฒฐ๊ณผ์ ๋ถํฌ๋ ]
- ์์ 'ReLU + Xavier๊ฐ์ค์น ์ด๊ธฐํ ๋ฐฉ๋ฒ'๋ณด๋ค 'ReLU + He ๊ฐ์ค์น ์ด๊ธฐํ ๋ฐฉ๋ฒ'์ด activation ๊ฒฐ๊ณผ๊ฐ ๊ณ ๋ฅด๊ฒ ๋ถํฌ๋์ด ์์
'๐ค AI > Deep Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฅ๋ฌ๋] 7. CNN (0) | 2024.06.27 |
---|---|
[๋ฅ๋ฌ๋] 6. ๋ฅ๋ฌ๋ ๋ชจ๋ธ ํ์ต์ ๋ฌธ์ ์ pt.3 : ๊ณผ์ ํฉ (0) | 2024.06.22 |
[๋ฅ๋ฌ๋] 4. ๋ฅ๋ฌ๋ ๋ชจ๋ธ ํ์ต์ ๋ฌธ์ ์ pt.1 : ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ (0) | 2024.06.10 |
[๋ฅ๋ฌ๋] 3. ๋ฅ๋ฌ๋ ๋ชจ๋ธ ๊ตฌํ (์ ํ ํ๊ท, ๋น์ ํ ํ๊ท ๋ชจ๋ธ ๊ตฌํ) (0) | 2024.06.08 |
[๋ฅ๋ฌ๋] 2. Backpropagation์ ํ์ต (1) | 2024.06.07 |