การกำหนดเลเยอร์ของโมเดล Teacher Forcing
ในแบบฝึกหัดนี้ เราจะกำหนดโมเดลการแปลภาษาเวอร์ชันใหม่ที่ดียิ่งขึ้น ทราบไหมว่าโมเดลอย่าง Google Machine Translator ก็ใช้เทคนิค Teacher Forcing นี้ในการเทรนโมเดลด้วย
อย่างที่ได้เห็นไปแล้ว โมเดลก่อนหน้าของเราต้องปรับเปลี่ยนเล็กน้อยเพื่อรองรับ Teacher Forcing ในแบบฝึกหัดนี้ เราจะทำการเปลี่ยนแปลงที่จำเป็นจากโมเดลเดิม โดยมีพารามิเตอร์ของภาษาที่เตรียมไว้ให้แล้ว ได้แก่ en_len และ fr_len (ความยาวของประโยคภาษาอังกฤษ/ฝรั่งเศสหลังการ padding), en_vocab และ fr_vocab (ขนาด Vocabulary ของชุดข้อมูลภาษาอังกฤษ/ฝรั่งเศส) และ hsize (ขนาดของ hidden layer ในเลเยอร์ GRU) โปรดจำไว้ว่า Decoder จะรับลำดับภาษาฝรั่งเศสที่มีจำนวนสมาชิกน้อยกว่า fr_len อยู่หนึ่งตัว และเราใช้คำนำหน้า en สำหรับสิ่งที่เกี่ยวกับ Encoder และ de สำหรับสิ่งที่เกี่ยวกับ Decoder
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Machine Translation ด้วย Keras
คำแนะนำการฝึกหัด
- นำเข้า submodule
layersจากtensorflow.keras - ดึงค่า output และ state ของ Encoder แล้วกำหนดให้กับ
en_outและen_stateตามลำดับ - กำหนดเลเยอร์
Inputของ Decoder ให้รับลำดับที่มีความยาวfr_len-1ซึ่งประกอบด้วยคำภาษาฝรั่งเศสในรูปแบบ onehot encoding - กำหนดเลเยอร์
Denseแบบ softmax ที่ครอบด้วยTimeDistributedโดยมีfr_vocabโหนด
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the layers submodule from keras
import ____.____.____ as layers
en_inputs = layers.Input(shape=(en_len, en_vocab))
en_gru = layers.GRU(hsize, return_state=True)
# Get the encoder output and state
____, ____ = en_gru(____)
# Define the decoder input layer
de_inputs = layers.____(shape=(____, ____))
de_gru = layers.GRU(hsize, return_sequences=True)
de_out = de_gru(de_inputs, initial_state=en_state)
# Define a TimeDistributed Dense softmax layer with fr_vocab nodes
de_dense = layers.____(____.____(____, activation=____))
de_pred = de_dense(de_out)