njs03332 / ml_study

3 stars 0 forks source link

2023/01/11 ~ 2023/01/20 #54

Open givitallugot opened 1 year ago

givitallugot commented 1 year ago

2023/01/20 (금) pm 10:30 이후

  1. 11.1.4 ~ 11.2 (11.2.1 전까지)
  2. 11.2.1
  3. 11.2.2 ~ 11.2.3

image

njs03332 commented 1 year ago

11.2.1 케라스를 사용한 전이 학습

for layer in model_B_on_A.layers[:-1]:
    layer.trainable = False

model_B_on_A.compile(loss="binary_crossentropy", optimizer="sgd", metrics=["accuracy"])
history = model_B_on_A.fit(X_train_B, y_train_B, epochs=4, validation_data=(X_valid_B, y_valid_B))

for layer in model_B_on_A.layers[:-1]:
    layer.trainable = True

optimizer = keras.optimizers.SGD(lr=1e-4)  # 기본 학습률은 1e-2
model_B_on_A.compile(loss="binary_crossentropy", optimizer=optimizer, metrics=["accuracy"])
history = model_B_on_A.fit(X_train_B, y_train_B, epochs=16, validation_data=(X_valid_B, y_valid_B))
danbi5228 commented 1 year ago

11.1.4 그레이디언트 클리핑

# 그레이디언트 벡터의 모든 원소를 -1에서 1 사이로 클리핑
# --> 손실의 모든 편미분값을 -1에서 1 사이로 잘라냄

optimizer = keras.optimizers.SGD(clipvalue=1.0)
model.compile(loss="mse", optimizer=optimizer)

11.2 사전훈련된 층 재사용하기

재사용할 적절한 은닉층 갯수 찾기

  1. 재사용하는 층을 모두 동결 (가중치가 바뀌지 않도록 훈련되지 않는 가중치로 만들기)
  2. 모델 훈련 및 성능 평가
  3. 맨 위에 있는 한 두개의 은닉층의 동결을 해제하고 역전파를 통해 가중치 조정 후 성능 향상 확인
  4. 훈련데이터가 많을수록 많은 층의 동결을 해제할 수 있음 (재사용층의 동결 해제시 학습률을 줄이면 가중치를 세밀하게 튜닝하는데 도움)
  5. 성능이 좋지 않고 훈련 데이터가 적다면 상위 은닉층(들)을 제거하고 남은 은닉층 동결. 2부터 반복
    • 훈련데이터가 아주 많다면 은닉층 제거 대신 다른 것으로 바꾸거나 더 많은 은닉층을 추가할 수도 있음
givitallugot commented 1 year ago

11.2.2 비지도 사전훈련

11.2.3 보조 작업에서 사전훈련