ทำความเข้าใจกับหน่วย LSTM เทียบกับเซลล์


32

ฉันเรียน LSTM มาระยะหนึ่งแล้ว ฉันเข้าใจในระดับสูงว่าทุกอย่างทำงานอย่างไร อย่างไรก็ตามจะใช้พวกเขาโดยใช้ Tensorflow ฉันสังเกตเห็นว่าBasicLSTMCellต้องการพารามิเตอร์จำนวนหน่วย (เช่นnum_units)

จากนี้คำอธิบายอย่างละเอียดมาก LSTMs ผมได้รวบรวมที่เดียวหน่วย LSTMเป็นหนึ่งดังต่อไปนี้

หน่วย LSTM

ซึ่งเป็นหน่วย GRU

ฉันสันนิษฐานว่าพารามิเตอร์num_unitsของการBasicLSTMCellอ้างอิงถึงจำนวนเหล่านี้เราต้องการเชื่อมต่อซึ่งกันและกันในชั้น

ที่ทิ้งคำถาม - "เซลล์" ในบริบทนี้คืออะไร? "เซลล์" เทียบเท่ากับเลเยอร์ในเครือข่ายประสาทส่งต่อปกติหรือไม่


ฉันยังสับสนอยู่ฉันอ่านcolah.github.io/posts/2015-08-เข้าใจง่าย - LSTMsและฉันเข้าใจดี คำว่าเซลล์ใช้กับบทความนั้นอย่างไร ดูเหมือนว่าเซลล์ LSTM ในบทความนั้นเป็นเวกเตอร์เหมือนกับใน Tensorflow ใช่ไหม
Pinocchio

คำตอบ:


17

น่าเสียดายที่คำศัพท์ไม่สอดคล้องกัน num_unitsใน TensorFlow คือจำนวนสถานะที่ซ่อนอยู่นั่นคือขนาดของในสมการที่คุณให้ht

นอกจากนี้จากhttps://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/api_docs/python/functions_and_classes/shard9/tf.nn.rnn_cell.RNNCell.md :

คำจำกัดความของเซลล์ในแพ็คเกจนี้แตกต่างจากคำจำกัดความที่ใช้ในวรรณคดี ในวรรณคดีเซลล์หมายถึงวัตถุที่มีผลลัพธ์สเกลาร์เดียว คำจำกัดความในแพ็คเกจนี้หมายถึงอาร์เรย์แนวนอนของหน่วยดังกล่าว

"เลเยอร์ LSTM" น่าจะชัดเจนกว่าตัวอย่าง :

def lstm_layer(tparams, state_below, options, prefix='lstm', mask=None):
    nsteps = state_below.shape[0]
    if state_below.ndim == 3:
        n_samples = state_below.shape[1]
    else:
        n_samples = 1

    assert mask is not None
    […]

อาฉันเห็นแล้วดังนั้น "เซลล์" เป็นnum_unitอาร์เรย์แนวนอนขนาดใหญ่ของเซลล์ LSTM ที่เชื่อมต่อกัน มีเหตุผล. ดังนั้นมันจะคล้ายกับเลเยอร์ที่ซ่อนอยู่ในเครือข่าย feed-forward มาตรฐานหรือไม่

* หน่วยสถานะ LSTM

@rec ถูกต้องแล้ว
Franck Dernoncourt

1
@Sycorax ตัวอย่างเช่นหากการป้อนข้อมูลของเครือข่ายประสาทเทียมเป็นไทม์สพร้อม 10 ขั้นตอนเวลามิติในแนวนอนมี 10 องค์ประกอบ
Franck Dernoncourt

1
ฉันยังสับสนอยู่ฉันอ่านcolah.github.io/posts/2015-08-เข้าใจง่าย - LSTMsและฉันเข้าใจดี คำว่าเซลล์ใช้กับบทความนั้นอย่างไร ดูเหมือนว่าเซลล์ LSTM ในบทความนั้นเป็นเวกเตอร์เหมือนกับใน Tensorflow ใช่ไหม
Pinocchio

4

ไดอะแกรม LSTM / RNN ส่วนใหญ่เพียงแสดงเซลล์ที่ซ่อนอยู่ แต่ไม่เคยหน่วยของเซลล์เหล่านั้น ดังนั้นความสับสน เลเยอร์ที่ซ่อนอยู่แต่ละเซลล์จะมีเซลล์ที่ซ่อนอยู่ให้มากที่สุดเท่าที่จำนวนครั้งของขั้นตอน และยิ่งกว่านั้นแต่ละเซลล์ที่ซ่อนอยู่นั้นประกอบด้วยหน่วยที่ซ่อนอยู่หลายแห่งเช่นในแผนภาพด้านล่าง ดังนั้นขนาดของเมทริกซ์เลเยอร์ที่ซ่อนอยู่ใน RNN คือ (จำนวนของขั้นตอนเวลาจำนวนหน่วยที่ซ่อนอยู่)

ป้อนคำอธิบายรูปภาพที่นี่


4

แม้ว่าปัญหาจะเกือบเหมือนที่ฉันตอบในคำตอบนี้ฉันต้องการแสดงให้เห็นถึงปัญหานี้ซึ่งทำให้ฉันสับสนเล็กน้อยในวันนี้ในโมเดล seq2seq (ขอบคุณ @Franck Dernoncourt คำตอบ) ในกราฟ ในแผนภาพเข้ารหัสอย่างง่ายนี้:

ป้อนคำอธิบายรูปภาพที่นี่

hi


ฉันเชื่อnum_units = nในรูปนี้
notilas

-1

ในความคิดของฉันเซลล์หมายถึงโหนดเช่นเซลล์ที่ซ่อนอยู่ซึ่งเรียกว่าโหนดที่ซ่อนอยู่สำหรับโมเดล LSTM หลายชั้นจำนวนเซลล์สามารถคำนวณได้โดย time_steps * num_layers และ num_units เท่ากับ time_steps


-1

หน่วยใน Keras นั้นคือมิติของพื้นที่ส่งออกซึ่งเท่ากับความยาวของการหน่วงเวลา (time_step) ที่เครือข่ายเกิดซ้ำ

keras.layers.LSTM(units, activation='tanh', ....)

https://keras.io/layers/recurrent/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.