Các thuật toán tối ưu trong tensorflow để cập nhật trọng số trong những mô hình huấn luyện cho máy học. Để tìm hiểu cách sử dụng các thuật toán đó, chúng ta viết để chỉ hàm mất mát (cost or loss function), trong đó
đại diện tham số hoặc trọng số trong mô hình học nào đó.
1) Tối ưu theo kiểu Gradient descent
Trong kiểu tối ưu này, quy luật để tính toán lại trọng số là:
,
trong đó chỉ learning_rate.
Code trong python để chạy tối ưu này là:
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
2) Tối ưu theo kiểu Adagrad
Tham số đượ học theo công thức:
Tensorflow hỗ trợ tối ưu này bởi đoạn mã sau:
optimizer = tf.train.AdagradOptimizer(learning_rate=0.001, initial_accumulator_value=0.1).minimize(cost)
3) Tối ưu kiểu RMSprop
RMSprop là một sự cải thiện từ Rprop. Xem this link để thấy thấy cách thuật toán Rprop làm việc. Vì RMSprop được thiết kế theo kiểu huẩn luyện mini batch, vì vậy để chi tiết chúng ta thay ký hiệu với
. Kiểu mẫu của RMSprop là:
Tensorflow code cho RMSprop là:
optimizer = tf.train.RMSPropOptimizer(learning_rate=0.001, decay =0.9, momentum=0.0, epsilon=1e-10).minimize(cost)
4) Tối ưu kiểu Adadelta
Adadelta là tương tự như RMSprop. Lý do là cả hai giải bài toán fast learning-rate decay của Adagrad. Luật cập nhật trọng số là:
Mẫu code cho Adadelta trong python là:
optimizer = tf.train.AdadeltaOptimizer(learning_rate=0.001, rho=0.95, epsilon = 1e-08).minimize(cost)
trong đó rho, learning_rate, và epsilon đại diện , và
, tương ứng.
5) Adam optimizer
Adam (Adaptive Moment Estimator) có quy luật cập nhật trọng số là:
Python code cho tối ưu này là:
optimizer = tf.train.AdamOptimizer(learning_rate=0.001,beta1=0.9,beta2=0.999,epsilon=1e-08).minimize(cost)
6) Momentum optimizer and Nesterov algorithm
Quy luật cập nhật tối ưu Momentum bỏ qua thuật toán Nesterov là:
.
Với Nesterow accelerated gradient, quy luật cập nhật trọng số trở thành:
:
optimizer = tf.train.MomentumOptimizer.(learning_rate=0.001, momentum=0.9,use_nesterov=False).minimize(cost)