Hiểu các đơn vị LSTM so với các tế bào


32

Tôi đã học LSTM được một thời gian. Tôi hiểu ở mức độ cao làm thế nào mọi thứ hoạt động. Tuy nhiên, việc triển khai chúng bằng cách sử dụng Tensorflow tôi nhận thấy rằng BasicLSTMCell yêu cầu một số tham số đơn vị (tức là num_units).

Từ này giải thích rất kỹ lưỡng của LSTMs, tôi đã thu thập được rằng một đơn đơn vị LSTM là một trong những điều sau đây

Đơn vị LSTM

mà thực sự là một đơn vị GRU.

Tôi cho rằng tham số num_unitscủa BasicLSTMCelllà đề cập đến bao nhiêu trong số này chúng tôi muốn để treo lên với nhau trong một lớp.

Điều đó đặt ra câu hỏi - "tế bào" trong bối cảnh này là gì? Là một "tế bào" tương đương với một lớp trong mạng thần kinh chuyển tiếp thức ăn thông thường?


Tôi vẫn còn bối rối, tôi đã đọc colah.github.io/posts/2015-08-Under Hiểu-LSTMs và tôi hiểu điều đó rất rõ. Làm thế nào để thuật ngữ tế bào áp dụng đối với bài viết đó? Có vẻ như một tế bào LSTM trong bài viết là một vectơ như trong Tensorflow, phải không?
Pinocchio

Câu trả lời:


17

Thuật ngữ không may là không nhất quán. num_unitstrong TensorFlow là số trạng thái ẩn, tức là thứ nguyên của trong các phương trình bạn đã đưa ra.ht

Ngoài ra, từ https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/api_docs/python/fiances_and_groupes/shard9/tf.nn.rnn_cell.RNNCell.md :

Định nghĩa của ô trong gói này khác với định nghĩa được sử dụng trong tài liệu. Trong tài liệu, ô đề cập đến một đối tượng có đầu ra vô hướng. Định nghĩa trong gói này đề cập đến một mảng ngang của các đơn vị như vậy.

"Lớp LSTM" có lẽ rõ ràng hơn, ví dụ :

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
    […]

À tôi hiểu rồi, vậy thì "ô" là một num_unitmảng ngang có kích thước của các ô LSTM được liên kết với nhau. Có ý nghĩa. Vì vậy, sau đó nó sẽ tương tự như một lớp ẩn trong một mạng chuyển tiếp thức ăn tiêu chuẩn sau đó?

* Đơn vị nhà nước LSTM

@rec Điều đó đúng
Franck Dernoncourt

1
Ví dụ @Sycorax, nếu đầu vào của mạng nơ ron là một khoảng thời gian với 10 bước thời gian, thì chiều ngang có 10 phần tử.
Franck Dernoncourt

1
Tôi vẫn còn bối rối, tôi đã đọc colah.github.io/posts/2015-08-Under Hiểu-LSTMs và tôi hiểu điều đó rất rõ. Làm thế nào để thuật ngữ tế bào áp dụng đối với bài viết đó? Có vẻ như một tế bào LSTM trong bài viết là một vectơ như trong Tensorflow, phải không?
Pinocchio

4

Hầu hết các sơ đồ LSTM / RNN chỉ hiển thị các ô ẩn nhưng không bao giờ là đơn vị của các ô đó. Do đó, sự nhầm lẫn. Mỗi lớp ẩn có các ô ẩn, bao nhiêu số bước thời gian. Và hơn nữa, mỗi ô ẩn được tạo thành từ nhiều đơn vị ẩn, như trong sơ đồ bên dưới. Do đó, thứ nguyên của ma trận lớp ẩn trong RNN là (số bước thời gian, số đơn vị ẩn).

nhập mô tả hình ảnh ở đây


4

Mặc dù vấn đề này gần giống như tôi đã trả lời trong câu trả lời này , tôi muốn minh họa vấn đề này, điều này cũng làm tôi bối rối một chút hôm nay trong mô hình seq2seq (nhờ câu trả lời của @Franck Dernoncourt), trong biểu đồ. Trong sơ đồ mã hóa đơn giản này:

nhập mô tả hình ảnh ở đây

htôi


Tôi tin num_units = nvào con số này
notilas

-1

Theo tôi, ô có nghĩa là một nút như ô ẩn còn được gọi là nút ẩn, đối với mô hình LSTM đa lớp, số lượng ô có thể được tính bằng time_steps * num_layers và num_units bằng với time_steps


-1

Các đơn vị đó trong Keras là thứ nguyên của không gian đầu ra, bằng với độ dài của độ trễ (time_step) mà mạng đang định kỳ.

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

https://keras.io/layers/reciverse/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.