Post

[KT Aivle 3기 AI] 20일차. 딥러닝 (2) 히든레이어

KT Aivle School 3기 AI 20일차

  • 강사 : 김건영 강사님
  • 주제 : 딥러닝 공부를 위한 기본 토대 쌓기
  • 내용 :
    • 어제 공부한 Sequential API에서 히든 레이어를 추가하는 방법
    • 히든 레이어와 노드는 무슨 역할을 하는가
    • MNIST 실습

히든 레이어

  • 입력층과 출력층 사이에 있는 layer를 말한다.
  • Dense(n, activation='relu')로 구현을 할 수 있다.
  • n개 만큼의 노드가 생성된다고 할 수 있다?

히든 레이어와 노드는 무슨 역할을 하는가?

연결된 것으로부터 기존에 없던 새로운 Feature를 추출/재표현 하는 것 = Feature Representation(Feature Learning)

  1. layer가 쌓일 수록 Low Level → High Level의 기존에 없던 특징을 새롭게 뽑아내는 것
  2. 노드의 수는 해당 Level에서 연결된 것으로부터 새롭게 추출하려는 Feature의 수

학습이 잘 되었다(새로운 레이어로 성능이 좋아졌다)라는 말은 연결된 것으로부터 기존에 없던 새로운 Feature를 잘 추출해냈다 = Feature Representation(Feature Learning) : 딥러닝 핵심 개념 중 하나!

Machine Learning vs Deep Learning

  • Machine Learning : Feature Extraction을 사람이 직접 해줘야 함
  • Deep Learning : Feature Extraction을 컴퓨터가 찾아냄

    다양한 형태의 데이터(이미지, 텍스트, 음성, …)를 다루려면 Deep Learning을 공부해야 한다.

MNIST

  • MNIST ANN 코드실습
  • 딥러닝의 ‘Hello Wolrd’인 MNIST 데이터로 실습을 진행
  • 전처리로 Min-Max Scaling : 픽셀 값 [0 ~ 255] → [0~1]
  • Early Stopping : epoch 제한 해제
    • monitor : 관측 대상 (default : val_loss)
    • patience : 성능이 개선되지 않을 때 몇 번 참을래?
    • min_delta : Threshold
    • restore_best_weights : 가장 성능이 좋았던(monitor 기준) epoch의 가중치 적용 (default : False)
  • .fit(validation_split = 0.2) : training set에서부터 알아서 분배해서 가져간다.

Early Stopping과 fit 부분만 간단하게 살펴보기

1
2
3
4
5
6
7
8
9
10
from tensorflow.keras.callbacks import EarlyStopping

es = EarlyStopping(monitor='val_loss',            # 관측 대상
                   min_delta=0,                   # 학습 성능 Threshold
                   patience=5,                    # 성능 개선되지 않더라도 몇 번 참을래?
                   verbose=1,                     
                   restore_best_weights=True)     # 가장 성능이 좋았던 epochs의 가중치를 쓸래 (Default=False)

model.fit(train_x, train_y, validation_split=0.2, 
          callbacks=[es], verbose=1, epochs=50)
This post is licensed under CC BY 4.0 by the author.

[KT Aivle 3기 AI] 19일차. 딥러닝 (1) 딥러닝 기초

[KT Aivle 3기 AI] 21일차. 딥러닝 (3) MNIST, CIFAR 10 실습