เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ฟังก์ชัน loss แบบกำหนดเอง

ที่ผ่านมา เราใช้ mean squared error เป็น loss function ซึ่งทำงานได้ดี แต่สำหรับการพยากรณ์ราคาหุ้น การสร้าง loss function แบบกำหนดเองอาจมีประโยชน์มากกว่า เพราะช่วยให้โมเดลเรียนรู้ในแบบที่เราต้องการได้อย่างเฉพาะเจาะจง

ตัวอย่างเช่น เราจะสร้าง loss function แบบกำหนดเองที่กำหนดบทลงโทษหนักเป็นพิเศษ เมื่อโมเดลพยากรณ์ทิศทางการเคลื่อนไหวของราคาผิดทิศ วิธีนี้จะช่วยให้โครงข่ายประสาทเทียมเรียนรู้ที่จะพยากรณ์ทิศทางราคาได้ถูกต้องมากขึ้น

ในการทำเช่นนี้ เราต้องเขียนฟังก์ชันที่รับอาร์กิวเมนต์ (y_true, y_predicted) และใช้ฟังก์ชันจาก backend keras (ผ่าน tensorflow) เพื่อหากรณีที่ค่าจริงกับค่าพยากรณ์มีเครื่องหมายไม่ตรงกัน แล้วกำหนดบทลงโทษในกรณีเหล่านั้น

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Machine Learning สำหรับการเงินด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • กำหนดอาร์กิวเมนต์ของฟังก์ชัน sign_penalty() ให้เป็น y_true และ y_pred
  • คูณค่า squared error (tf.square(y_true - y_pred)) ด้วย penalty เมื่อเครื่องหมายของ y_true และ y_pred ต่างกัน
  • ส่งคืนค่าเฉลี่ยของตัวแปร loss จากฟังก์ชัน ซึ่งก็คือ mean squared error (พร้อมบทลงโทษสำหรับกรณีที่เครื่องหมายของค่าจริงและค่าพยากรณ์ตรงข้ามกัน)

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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)
แก้ไขและรันโค้ด