Hàm loss tùy chỉnh
Cho đến giờ, chúng ta dùng mean squared error làm hàm loss. Cách này ổn, nhưng với bài toán dự đoán giá cổ phiếu, đôi khi hữu ích khi tự triển khai một hàm loss tùy chỉnh. Hàm loss tùy chỉnh có thể giúp cải thiện hiệu năng mô hình theo những cách bạn chọn. Ví dụ, chúng ta sẽ tạo một hàm loss phạt nặng khi dự đoán sai chiều biến động giá. Điều này sẽ giúp mạng học được ít nhất là dự đoán đúng hướng biến động giá.
Để làm điều đó, bạn cần viết một hàm nhận các đối số (y_true, y_predicted). Chúng ta cũng sẽ dùng chức năng từ backend keras (sử dụng tensorflow) để tìm các trường hợp mà giá trị thật và dự đoán khác dấu, rồi áp dụng phạt cho các trường hợp đó.
Bài tập này là một phần của khóa học
Machine Learning cho Tài chính bằng Python
Hướng dẫn bài tập
- Đặt đối số của hàm
sign_penalty()lày_truevày_pred. - Nhân sai số bình phương (
tf.square(y_true - y_pred)) vớipenaltykhi dấu củay_truevày_predkhác nhau. - Trả về giá trị trung bình của biến
losstừ hàm — đây là mean squared error (kèm mức phạt khi dấu của giá trị thực và dự đoán đối nghịch).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
import keras.losses
import tensorflow as tf
# Create loss function
def sign_penalty(____, ____):
penalty = 100.
loss = tf.where(tf.less(y_true * y_pred, 0), \
____ * tf.square(y_true - y_pred), \
tf.square(y_true - y_pred))
return tf.reduce_mean(____, axis=-1)
keras.losses.sign_penalty = sign_penalty # enable use of loss with keras
print(keras.losses.sign_penalty)