Vanishing and exploding gradients

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

David Cecchini

Data Scientist

การเทรนโมเดล RNN

เวอร์ชันที่คลี่ออกของโมเดล RNN แสดงขั้นตอน forward propagation จากคำอินพุตหนึ่งไปยังคำถัดไปจนถึงท้ายประโยค และขั้นตอน back-propagation ที่อัปเดตน้ำหนักตามเวลา

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

แสดงขั้นตอน forward propagation พร้อมนิยามทางคณิตศาสตร์ของตัวแปรที่เกี่ยวข้อง

ตัวอย่าง: $$a_2 = f(W_a, a_1, x_2)$$

$$= f(W_a, f(W_a, a_0, x_1), x_2)$$

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

แสดงขั้นตอน back-propagation พร้อมนิยามทางคณิตศาสตร์

จำไว้ว่า:

$$ a_T = f(W_a, a_{T-1}, x_T) $$

$a_T$ ขึ้นอยู่กับ $a_{T-1}$ ซึ่งขึ้นอยู่กับ $a_{T-2}$ และ $W_a$ และต่อเนื่องไปเรื่อยๆ !

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

BPTT (ต่อ)

การคำนวณอนุพันธ์ได้ผลลัพธ์ดังนี้

$$ \frac{\partial a_t}{\partial W_a} = (W_a)^{t-1}g(X) $$

  • $(W_a)^{t-1}$ อาจลู่เข้าสู่ 0

  • หรือลู่ออกสู่ $+\infty$!

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

แนวทางแก้ปัญหา gradient

มีแนวทางแก้ปัญหาที่เป็นที่รู้จักดังนี้:

Exploding gradients

  • Gradient clipping / scaling

Vanishing gradients

  • กำหนดค่าเริ่มต้นของเมทริกซ์ W ให้ดีขึ้น
  • ใช้ regularization
  • ใช้ ReLU แทน tanh / sigmoid / softmax
  • ใช้ LSTM หรือ GRU cells!
Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

มาฝึกกันเถอะ!

Recurrent Neural Networks (RNNs) สำหรับ Language Modeling ด้วย Keras

Preparing Video For Download...