理解模型最佳化

Python 深度學習入門

Dan Becker

Data Scientist and contributor to Keras and TensorFlow libraries

為何最佳化困難

  • 同時最佳化成千上萬個參數,關係複雜
  • 參數更新未必能實質提升模型
  • 若學習率過低更新過小;過高則更新過大
Python 深度學習入門

隨機梯度下降

def get_new_model(input_shape = input_shape):
    model = Sequential()
    model.add(Dense(100, activation='relu', input_shape = input_shape))
    model.add(Dense(100, activation='relu'))
    model.add(Dense(2, activation='softmax'))
    return(model)

lr_to_test = [.000001, 0.01, 1]

# Loop over learning rates
for lr in lr_to_test:
   model = get_new_model()
   my_optimizer = SGD(lr=lr)
   model.compile(optimizer = my_optimizer, loss = 'categorical_crossentropy')
   model.fit(predictors, target)
Python 深度學習入門

神經元死亡問題

ch4_1.012.png

Python 深度學習入門

梯度消失

ch4_1.014.png

Python 深度學習入門

梯度消失

  • 多層的斜率極小時發生(例如落在 tanh 曲線平坦區)
  • 在深層網路中,反向傳播的更新接近 0
Python 深度學習入門

一起來練習吧!

Python 深度學習入門

Preparing Video For Download...