미래연구소 14기 수원캠퍼스 11주차 (2020.09.17)

Saulabi·2021년 11월 23일
0

미래연구소

목록 보기
11/12

미래연구소

저번 주는 튜터님들께 프로젝트의 방향과 조언을 듣는 튜터링 시간을 가졌는데

이번 주는 강의와 실습으로 이루어졌다.

이번 11주차 내용은

  • Hyperparameter Tuning
  • Learning Rate Decay
  • Early Stopping
  • Transfer Learning
  • Normalization Layers

Hyperparameter Tuning

learning rate scheduler

  • 딥러닝 모델을 학습할 때 learning rate를 감소시켜 Local minima를 탈출해서 더 낮은 loss로 수렴하기 위해 자주 사용된다.
  • callback 함수를 이용해 LearningRateScheduler를 import 합니다.
from tensorflow.keras.callbacks import LearningRateScheduler

def my_schedule(epoch, learning_rate=lr):
    if epoch < 5:
        return lr
    else:
        return float(lr * tf.math.exp(0.1 * (5- epoch)))

lrschedule = LearningRateScheduler(my_schedule)

model = create_model()

model.fit(x, y,  epochs = 20, validation_split = 1/6, callbacks = [lrschedule], batch_size=512)

Early Stopping

  • 마찬가지로 callback 함수로부터 import 한다.
from tensorflow.keras.callbacks import EarlyStopping

es = EarlyStopping(monitor='val_loss', patience=2)

model = create_model()

history = model.fit(x, y,  epochs = 20, validation_split = 1/6,callbacks = [es], batch_size= 512)
  • monitor : early stopping을 결정하는 기준
  • min_delta : 이거보다 변화가 작으면 멈춘다.
  • patience : 이 숫자의 epoch만큼 변하지 개선(감소)되지 않으면 멈춘다.

(2로 설정 시 , 2연속 val_loss가 증가하면 train 중지)

Modle Save

  • HDF5 파일

: Hierarchical Data Format의 약자

: data를 구조적으로 관리해 과학자들이 주로 사용

: 공용 파일이어서 어느 언어로든지 읽을 수 있다.

  1. modle 전체를 저장하면 나중에 predict만 하는 것도 가능
  • 저장
model.save('my_model.h5')

)

  • 불러오기
from tensorflow.keras.models import load_model

new_model = load_model('my_model.h5')

)

  1. model의 architecture 저장
  • 저장
# json
json_string = model.to_json()

# yaml
yaml_string = model.to_yaml()

()

  • 불러오기
import json, yaml

# model reconstruction from JSON:
from tensorflow.keras.models import model_from_json
model_json = model_from_json(json_string)

# model reconstruction from YAML:
from tensorflow.keras.models import model_from_yaml
model_yaml = yaml.load(yaml_string, Loader=yaml.FullLoader)
  1. weight만 저장
  • 저장
model.save_weights('my_model_weights.h5')

)

  • 불러오기

)

model.load_weights('my_model_weights.h5')
  • 이유

: 나중에 bias를 초기화해서 다르게 만들 수도 있어서 ( bias 저장은 큰 의미가 없다 )

Normalization Layers

  • 정규화의 목표는 값 범위의 차이를 왜곡시키지 않고 데이터 세트를 공통 스케일로 변경하는 것.
  • 데이터 처리에 있어 각 특성의 스케일을 조정 = Feature scaling
  • 흔히 쓰이는 Min-Max-scaler ( 데이터를 0~1로 스케일 조정 )

Batch-Normalization

  • Gradient Vanishing 이 일어나지 않도록 하는 아이디어 중 하나.
  • training 과정 자체를 안정화하여 학습 속도를 가속화 하는 방법
  1. mini-batch의 평균 ,분산, 표준편차

  2. normalization

  3. 스케일 조정 및 분포 조정

문제점

  1. small batch size

  2. RNN의 반복 연결

대안책

  1. weight normalization

  2. layer normalization

  3. instance normalization

  4. groupe normalization

  5. batch renormalization

  6. batch instance normalization

  7. switchabel normalization

  8. spectral normalization

이외...

  • streaming normalization
  • cosine normalization

Transfer learning

  1. 사전 학습된 모델을 사용해서 학습

  2. 이미 학습된 모델이므로 시간을 아낌

  3. 훈련하고자 하는 데이터셋이 기존에 훈련된 데이터셋과 유사할수록 더 좋은 효과를 기대

  • 사용규칙

small : Convolution layer 고정, Classifier만 학습

medium : Convolution layer의 일부, Classifier 학습

large : 전체 모델을 새로 학습

  • 대표적인 CNN 모델들...

LeNet5

AlexNet

VGG16

GoogLeNet ( Inception V3 )

ResNet

......

0개의 댓글