Bagaimana LSTM mencegah masalah gradien hilang?

35

LSTM diciptakan khusus untuk menghindari masalah gradien hilang. Seharusnya melakukan itu dengan Constant Error Carousel (CEC), yang pada diagram di bawah ini (dari Greff et al. ) Sesuai dengan loop di sekitar sel .

LSTM
(sumber: deeplearning4j.org )

Dan saya mengerti bahwa bagian itu dapat dilihat sebagai semacam fungsi identitas, sehingga turunannya satu dan gradien tetap konstan.

Yang tidak saya mengerti adalah bagaimana itu tidak hilang karena fungsi aktivasi lainnya? Input, output dan lupa gerbang menggunakan sigmoid, yang turunannya paling banyak 0,25, dan g dan h secara tradisional tanh . Bagaimana melakukan backpropagating melalui mereka yang tidak membuat gradien menghilang?

TheWalkingCube
sumber
2
LSTM adalah model jaringan saraf berulang yang sangat efisien dalam mengingat ketergantungan jangka panjang dan yang tidak rentan terhadap masalah gradien hilang. Saya tidak yakin penjelasan seperti apa yang Anda cari
TheWalkingCube
LSTM: Memori Jangka Pendek Panjang. (Ref: Hochreiter, S. dan Schmidhuber, J. (1997). Memori Jangka Pendek yang Panjang. Komputasi Saraf 9 (8): 1735-80 · Desember 1997)
horaceT
Gradien dalam LSTM menghilang, hanya lebih lambat dari pada vanilla RNNs, memungkinkan mereka untuk menangkap ketergantungan yang lebih jauh. Menghindari masalah hilangnya gradien masih merupakan bidang penelitian aktif.
Artem Sobolev
1
Ingin mendukung yang lebih lambat menghilang dengan referensi?
bayerj
terkait: quora.com/…
Pinocchio

Jawaban:

22

Gradien yang hilang paling baik dijelaskan dalam kasus satu dimensi. Multidimensi lebih rumit tetapi pada dasarnya analog. Anda dapat memeriksanya dalam makalah yang luar biasa ini [1]

Asumsikan kita memiliki status tersembunyi pada langkah waktu . Jika kita membuat hal-hal sederhana dan menghapus bias dan masukan, kita memiliki h t = σ ( w h t - 1 ) . Maka Anda bisa menunjukkan itu thtt

ht=σ(wht1).

The faktor ditandai dengan !!! adalah yang paling penting. Jika beratnya tidak sama dengan 1, ia akan meluruh menjadi nol secara eksponensial cepat dalamt-t, atau tumbuh secara eksponensial cepat.

htht=k=1ttwσ(whtk)=wtt!!!k=1ttσ(whtk)
tt

Dalam LSTMs, Anda memiliki negara sel . Derivatifnya ada dalam bentuk s t st Di sinivtadalah input ke gerbang lupa. Seperti yang Anda lihat, tidak ada faktor pembusukan yang cepat secara eksponensial. Akibatnya, setidaknya ada satu jalur di mana gradien tidak hilang. Untuk derivasi lengkap, lihat [2].

stst=k=1ttσ(vt+k).
vt

[1] Pascanu, Razvan, Tomas Mikolov, dan Yoshua Bengio. "Tentang kesulitan melatih jaringan saraf berulang." ICML (3) 28 (2013): 1310-1318.

[2] Bayer, Justin Simon. Representasi Belajar Urutan. Diss. München, Technische Universität München, Diss., 2015, 2015.

bayerj
sumber
3
Untuk lstm, bukankah h_t juga bergantung pada h_ {t-1}? Apa yang Anda maksud dalam makalah Anda ketika Anda mengatakan ds_t / d_s {t-1} "adalah satu-satunya bagian di mana gradien mengalir melalui waktu"?
user3243135
@ user3243135 h_t tergantung pada h_ {t-1}. Namun, anggaplah ds_t / d_s {t-1} disimpan, bahkan jika aliran gradien lain lenyap, seluruh aliran gradien tidak lenyap. Ini memecahkan hilangnya gradien.
soloice
Saya selalu berpikir bahwa masalah utama adalah istilah karena jika biasanya merupakan turunan dari sigmoid (atau sesuatu dengan turunan kurang dari 1) yang pasti menyebabkan gradien menghilang (misalnya sigmoids yang besarnya <1 dan turunannya adalah yaitu < 1 pasti). Bukankah itu sebabnya ReLU diterima di CNN? Ini adalah satu hal yang selalu membingungkan saya tentang perbedaan dalam bagaimana gradien hilang ditangani dalam model umpan maju vs Model Berulang. Adakah klarifikasi untuk ini?
ttσ(whtk)
σ(z)σ(x)=σ(z)(1σ(z))
Pinocchio
Gradien sigmoid juga bisa menjadi masalah, dengan asumsi distribusi input dengan varian besar dan / atau rata-rata jauh dari 0. Namun, bahkan jika Anda menggunakan ReLU, masalah utama tetap ada: mengalikan berulang kali dengan matriks bobot (biasanya kecil ) menyebabkan menghilang gradien, atau dalam beberapa kasus, di mana regularisasi belum memadai, meledak gradien.
Ataksia
3

Gambar blok LSTM dari Greff et al. (2015) menjelaskan varian yang penulis sebut vanilla LSTM . Ini sedikit berbeda dari definisi asli dari Hochreiter & Schmidhuber (1997). Definisi asli tidak termasuk gerbang lupa dan koneksi lubang intip.

Istilah Constant Error Carousel digunakan dalam makalah asli untuk menunjukkan koneksi berulang dari keadaan sel. Pertimbangkan definisi asli di mana keadaan sel diubah hanya dengan penambahan, ketika gerbang input terbuka. Gradien dari keadaan sel sehubungan dengan keadaan sel pada langkah waktu sebelumnya adalah nol.

Kesalahan mungkin masih masuk CEC melalui gerbang keluaran dan fungsi aktivasi. Fungsi aktivasi mengurangi besarnya kesalahan sedikit sebelum ditambahkan ke CEC. CEC adalah satu-satunya tempat di mana kesalahan dapat mengalir tidak berubah. Sekali lagi, ketika gerbang input terbuka, kesalahan keluar melalui gerbang input, fungsi aktivasi, dan transformasi affine, mengurangi besarnya kesalahan.

Dengan demikian kesalahan berkurang ketika dipropagasi ulang melalui lapisan LSTM, tetapi hanya ketika memasuki dan keluar dari CEC. Yang penting adalah bahwa itu tidak berubah dalam KTK tidak peduli seberapa jauh jaraknya. Ini memecahkan masalah dalam RNN dasar bahwa setiap langkah waktu menerapkan transformasi afin dan nonlinier, artinya semakin lama jarak waktu antara input dan output, semakin kecil kesalahan yang didapat.

Seppo Enarvi
sumber
2

http://www.felixgers.de/papers/phd.pdf Silakan merujuk ke bagian 2.2 dan 3.2.2 di mana bagian kesalahan terpotong dijelaskan. Mereka tidak menyebarkan kesalahan jika bocor keluar dari memori sel (yaitu jika ada gerbang input tertutup / diaktifkan), tetapi mereka memperbarui bobot gerbang berdasarkan kesalahan hanya untuk saat itu saja instan. Nanti itu dibuat nol selama propagasi kembali lebih jauh. Ini adalah jenis peretasan tetapi alasan untuk melakukannya adalah bahwa aliran kesalahan di sepanjang gerbang tetap membusuk dari waktu ke waktu.

Suresh
sumber
7
Bisakah Anda sedikit mengembangkan ini? Saat ini, jawabannya tidak akan memiliki nilai jika lokasi tautan berubah atau kertas diambil offline. Paling tidak itu akan membantu untuk memberikan kutipan penuh (referensi) yang akan memungkinkan kertas ditemukan lagi jika tautan berhenti bekerja, tetapi ringkasan pendek yang membuat jawaban ini mandiri akan menjadi yang terbaik.
Silverfish,
2

Saya ingin menambahkan beberapa detail ke jawaban yang diterima, karena saya pikir itu sedikit lebih bernuansa dan nuansa mungkin tidak jelas bagi seseorang yang pertama kali belajar tentang RNNs.

htht=k=1ttwσ(whtk)

stst=k=1ttσ(vt+k)

  • tt
  • jawabannya adalah ya , itulah sebabnya LSTM akan menderita lenyapnya gradien juga, tetapi tidak sebanyak vanilla RNN

wσ()σ()

Untuk LSTM, ada satu set bobot yang dapat dipelajari sehingga

σ()1
Misalkan vt+k=wxwxw

misalnya Dalam kasus 1D jika x=1 , w=10 vt+k=10 maka faktor peluruhan σ()=0,99995

(0,99995)t-t

Untuk vanilla RNN, tidak ada set bobot yang bisa dipelajari sehingga

wσ(whtk)1

misalnya Dalam kasus 1D, misalkan htk=1 . Fungsi wσ(w1) mencapai maksimum 0.224 pada w=1.5434

(0.224)tt

Kevin
sumber