본문 바로가기
AI-driven Methodology/ANN

[ANN] 심층 신경망 (Deep Neural Network)

by goatlab 2022. 10. 11.
728x90
반응형
SMALL

심층 신경망 (Deep Neural Network)

 

 

심층 신경망은 MLP에서 은닉층의 개수를 증가시킨 것이다. 신경망은 깊이가 깊어질수록, 은닉층의 노드 수가 많으면 많을수록 계산이 복잡해진다.

 

Dropout

 

 

신경망 모델의 과대적합을 예방하기 위한 정규화 기법으로, 학습 중에 무작위로 선택된 뉴런을 무시하는 방법이다. 탈락된 뉴런이 일시적으로 제거되고 모든 가중치 업데이트가 역방향 path에서 적용되지 않게 된다. 20~50% 정도를 dropout rate로 사용한다. 너무 낮은 값은 dropout 영향이 미비해지고, 너무 높은 값은 과소 적합 학습을 일으킨다.

 

example

 

from tensorflow import keras

# 인공신경망 설계
model = keras.Sequential([
    keras.layers.Dense(20000),
    keras.layers.Dense(2048, activation="relu"),
    keras.layers.Dropout(rate=0.5),
    keras.layers.Dense(256, activation="relu"),
    keras.layers.Dropout(rate=0.5),
    keras.layers.Dense(4, activation='softmax')
])

# 인공신경망 컴파일
model.compile(optimizer="adam", metrics=["accuracy"],
              loss="sparse_categorical_crossentropy")

# 인공신경망 학습
print("\n\n************ TRAINING START ************ ")
early_stop = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
history = model.fit(dr.train_X, dr.train_Y, epochs=EPOCHS,
                    validation_data=(dr.test_X, dr.test_Y),
                    callbacks=[early_stop])

# 학습 결과 그래프 출력
data_reader.draw_graph(history)

model.evaluate(dr.test_X, dr.test_Y)
[0.8373669981956482, 0.9931153059005737]
728x90
반응형
LIST