LSTM neden bu kadar etkilidir? Bilmen gereken bu beş sır

Tercüme | Zhang Daqian

Düzenle | Kongun Sonu

Gelişmiş bir tekrarlayan sinir ağı olan uzun kısa süreli bellek ağı (LSTM), yalnızca RNN'nin uzun mesafeli bağımlılıkla başa çıkamaması sorununu çözemez, aynı zamanda sinir ağlarında gradyan patlaması veya gradyan kaybolması gibi yaygın sorunları da çözebilir. Veriler çok etkilidir.

Etkinliğin arkasındaki temel nedenler nelerdir? Bu makale, size LSTM'nin beş sırrını göstermek için basit bir durumu birleştiriyor ve ayrıca LSTM'nin anahtarını çok etkili açıklıyor.

Gizli 1: LSTM, RNN'deki ciddi bellek sızıntıları nedeniyle icat edildi

Daha önce, Tekrarlayan Sinir Ağlarını (RNN) tanıttık ve bunları duyarlılık analizi için nasıl kullanacağımızı gösterdik.

RNN ile ilgili sorun uzak bellektir. Örneğin, "bulutlar ... içindedir" cümlesindeki bir sonraki "gökyüzü" kelimesini tahmin edebilirler, ancak cümledeki eksik kelimeyi tahmin edemezler: "O Fransa'da büyüdü. Sadece şimdi Çin'de Birkaç aydır. Akıcı konuşuyor ... "(" Fransa'da büyüdü. Şimdi sadece birkaç aydır Çin'de. Akıcı konuşuyor ... ")

Aralık uzadıkça, RNN bilgi bağlantısını öğrenemez hale gelir. Bu örnekte, son bilgiler, bir sonraki kelimenin bir dilin adı olabileceğini gösterir, ancak hangi dilin kapsamını daraltmak istiyorsak, uzun girişte "Fransa" yı aramamız gerekir. Doğal dilde yazılmış metinlerde, bu tür bir problemin ilgili bilgilerde ve bilgiye ihtiyaç duyulduğunda tamamen farklı olması muhtemeldir. Bu farklılık Almanca'da da yaygındır.

Neden RNN'nin uzun sıralı metinle büyük bir sorunu var? Tasarıma göre, RNN her zaman adımında iki girişi kabul edecektir: bir giriş vektörü (örneğin, giriş cümlesindeki bir kelime) ve bir gizli durum (örneğin, önceki kelimenin hafıza temsili).

RNN'nin bir sonraki zaman adımı, zaman adımının çıktısını oluşturmak için ikinci giriş vektörünü ve birinci gizli durumu kullanır. Bu nedenle, uzun dizideki semantiği yakalamak için, RNN'yi birden çok zaman adımında çalıştırmamız ve açılmış RNN'yi çok derin bir ağa dönüştürmemiz gerekir.

Referansı okuyun:

https://towardsdatascience.com/recurrent-neural-networks-explained-ffb9f94c5e09

Uzun diziler, RNN'lerin tek sorun yaratıcısı değildir. Herhangi bir çok derin sinir ağı gibi, RNN'de de gradyan kaybolma ve patlama sorunu vardır, bu nedenle eğitilmesi çok zaman alır. Bu sorunu hafifletmek için birçok teknik önerilmiştir, ancak sorunu tamamen ortadan kaldıramamıştır. Bu teknikler şunları içerir:

  • Parametreleri dikkatli bir şekilde başlatın

  • ReLU gibi doymamış aktivasyon işlevlerini kullanın

  • Toplu normalleştirme, gradyan kaybolması ve ağ hücrelerini atma gibi yöntemleri uygulayın

  • Geçen zaman kesmeyi kullanarak geri yayılım

Bu yöntemlerin hala sınırlamaları vardır. Ek olarak, uzun eğitim süresine ek olarak, uzun süredir devam eden RNN'ler de başka bir sorunla karşı karşıyadır: ilk girişin hafızası yavaş yavaş kaybolacaktır.

Bir süre sonra, RNN durum veri tabanında ilk girişin neredeyse hiçbir izi kalmaz. Örneğin, "Bu ürünü beğendim" ile başlayan uzun bir yorum üzerinde duygu analizi yapmak istiyorsak, ancak kalan yorumlar ürünü daha iyi hale getirebilecek birçok faktörü listeliyor ise, RNN yavaş yavaş ilk yorumu geçmeyi unutacaktır. Olumlu duygu ve yorumu tamamen olumsuz olarak yanlış yapar.

Araştırmacılar, RNN'nin bu problemlerini çözmek için araştırmalarında uzun süreli hafızaya sahip çeşitli hücre türlerini tanıttılar. Aslında, artık temel RNN'yi kullanmayan işlerin çoğu, sözde uzun kısa süreli bellek ağı (LSTM) aracılığıyla yapılır. LSTM, S. Hochreiter ve J. Schmidhuber tarafından icat edildi.

Gizli 2: LSTM'nin temel fikirlerinden biri "kapı" dır

Her LSTM hücresi neyin hatırlanacağını, neyin unutulacağını ve hafızayı güncellemek için geçidin nasıl kullanılacağını kontrol eder. Bu şekilde, LSTM ağı, gradyan patlaması veya gradyan kaybolması problemini ve daha önce bahsedilen diğer tüm problemleri çözer!

LSTM hücrelerinin mimarisi aşağıdaki şekilde gösterilmektedir:

Kaynak: Harvard Üniversitesi'nden Profesör P. Protopapas'ın ders notları (aşağıda aynısı, başka not yok)

h, kısa süreli bellek anlamına gelen gizli durumdur; C, uzun süreli bellek anlamına gelen hücre durumudur; x, girdi anlamına gelir.

Geçit yalnızca birkaç matris dönüşümü gerçekleştirebilir ve sigmoid işlevini ve tanh işlevini etkinleştirmek tüm RNN sorunlarını sihirli bir şekilde çözebilir.

Bir sonraki bölümde, bu hücrelerin hafızalarını nasıl unuttuklarını, hatırladıklarını ve güncellediklerini gözlemleyerek bu süreci inceleyeceğiz.

İlginç bir hikaye:

Bu tabloyu keşfetmek için ilginç bir plan oluşturalım. Diyelim ki patron sizsiniz ve çalışanlarınız zam istiyorlar. Katılır mısın O andaki ruh haliniz gibi birçok faktöre bağlıdır.

Aşağıda beyninizi LSTM hücreleri olarak görüyoruz, tabii ki akıllı beyninizi rencide etme niyetimiz yok.

Uzun vadeli C statünüz kararınızı etkileyecektir. Ortalama olarak, zamanın% 70'inde iyi bir ruh halindesiniz ve bütçenizin% 30'una sahipsiniz. Yani hücre durumunuz C =.

Son zamanlarda, her şey sizin için iyi gidiyor, iyi ruh halinizi% 100 iyileştirdi ve% 100 bir operasyonel bütçe ayırma imkanınız var. Bu, gizli durumunuzu h = 'ye dönüştürür.

Bugün üç şey oldu: Çocuğunuz okul sınavında iyi notlar aldı ve patronunuz size kötü bir değerlendirme yapmasına rağmen, işi tamamlamak için hala yeterli zamanınız olduğunu gördünüz. Bu nedenle, bugünün girdisi x =.

Bu değerlendirmeye dayanarak, çalışanlarınıza zam yapacak mısınız?

Gizli 3: LSTM "geçidi unut" kullanarak unutur

Yukarıdaki durumda, ilk adımınız bugün ne olduğunu (x girişi) ve son zamanlarda ne olduğunu (gizli durum h) bulmak olabilir, her ikisi de durumla ilgili uzun vadeli yargınızı etkileyecektir (hücre durumu C). "Unutma Geçidi" geçmişte depolanan bellek miktarını kontrol eder.

Çalışanın maaş artışı talebini aldıktan sonra, "kapıyı unut", değeri sonunda uzun süreli hafızanızı etkileyecek olan aşağıdaki f_t hesaplamasını çalıştıracaktır.

Aşağıdaki şekilde gösterilen ağırlıklar, açıklama amacıyla rastgele seçimlerdir. Değerleri genellikle ağ eğitimi sırasında hesaplanır. Sonuç, uzun süreli hafızanızı silmek (tamamen unutmak) ve bugünkü kararınızı etkilemesine izin vermemektir.

Gizli 4: LSTM "giriş geçidi" kullanmayı unutmayın

Daha sonra, duruma ilişkin uzun vadeli değerlendirmenizde son olaylardan (gizli durum h) ve bugünün olaylarından (giriş x) hangi bilgilerin kaydedilmesi gerektiğine karar vermelisiniz (durum C durumu). LSTM, neyin hatırlanacağına karar vermek için "Giriş Kapısı" nı kullanır.

Öncelikle, giriş geçidinin i_t değerini hesaplamanız gerekir.Sigmoid işlevi etkinleştirildiğinden, değer 0 ile 1 arasında kalır. Ardından, girişi -1 ile 1 arasında ölçeklendirmek için tanh etkinleştirme işlevine ihtiyacınız vardır; son olarak eklemeniz gerekir Bu iki sonuç, yeni hücre durumunu tahmin etmek için kullanılır.

Sonuçlar, son ve güncel bilgilere göre% 100 iyi durumda olduğunuzu ve çalışanlara zam verme olasılığının yüksek olduğunu gösteriyor. Bu, çalışanlarınız için çok umut verici.

Gizli 5: LSTM, uzun süreli belleği korumak için "hücre durumunu" kullanır

Artık son olayların durumunuzu nasıl etkileyeceğini biliyorsunuz. Daha sonra, yeni teoriye dayalı olarak duruma ilişkin uzun vadeli yargınızı güncellemenin zamanı geldi.

Yeni değerler göründüğünde, LSTM belleğini nasıl güncelleyeceğine karar vermek için tekrar geçitleri kullanır. Geçidin yeni değeri mevcut belleğe eklenecektir. Bu ekleme işlemi, gradyan patlaması veya basit RNN'nin gradyan kaybolması sorununu çözer.

LSTM, çarpmak yerine ekleyerek yeni durumu hesaplar. Sonuç C_t, durumun yeni bir uzun vadeli kararı (hücre durumu) olarak saklanır.

Değer, genel olarak% 100 iyi bir ruh halinize sahip olduğunuz ve her zaman paranızın olması% 100 şansınız olduğu anlamına gelir! Sen kusursuz bir patronsun!

Bu bilgilere dayanarak, durumunuzun kısa vadeli değerlendirmesini güncelleyebilirsiniz: h_t (sonraki gizli durum). Değer, bir sonraki adımda çalışanın maaşını% 90 artırma şansınız olduğu anlamına gelir! Tebrikler!

1. Geçitli döngü birimi

LSTM hücrelerinin bir varyantı, kapılı tekrarlayan birim veya kısaca GRU olarak adlandırılır. GRU, Kyunghyun Cho ve arkadaşları tarafından 2014 tarihli bir makalede önerilmiştir.

GRU, LSTM hücrelerinin basitleştirilmiş bir versiyonudur ve LSTM'den biraz daha hızlıdır ve performans LSTM ile karşılaştırılabilir gibi görünmektedir, bu yüzden giderek daha popüler hale gelmektedir.

Yukarıda gösterildiği gibi, bu iki durum vektörü tek bir vektörde birleştirilir. Tek bir kapı denetleyicisi "kapıyı unut" ve "giriş kapısını" kontrol eder. Kapı denetleyicisi 1 çıkarsa, giriş kapısı açıktır ve kapının kapanması unutulur. Çıktı 0 ise, tersi doğrudur. Diğer bir deyişle, hafızanın saklanması gerektiğinde, önce onun saklama konumu silinir.

Yukarıdaki şekilde çıkış kapısı yoktur ve her adımda tam bir durum vektörü çıkarılır. Ancak, önceki durumun hangi bölümünün ana katmana sunulacağını kontrol eden yeni bir kapı kontrolörü eklendi.

2. LSTM hücrelerini yığınlayın

Birden fazla LSTM hücresini hizalayarak, aşağıdaki şekilde 4 kelimelik bir cümle gibi dizi verilerinin girişini işleyebiliriz.

LSTM birimleri genellikle hiyerarşik olarak düzenlenir, bu nedenle her birimin çıktısı diğer birimlerin girdisidir. Bu örnekte, her biri 4 hücreli iki katmanımız var. Bu şekilde, ağ daha zengin hale gelir ve daha fazla bağımlılık yakalar.

3. Çift Yönlü LSTM

RNN, LSTM ve GRU, sayısal dizileri analiz etmek için kullanılır. Bazen sırayı ters sırada analiz etmek mantıklıdır.

Örneğin "Patron çalışana daha çok çalışması gerektiğini söyledi" cümlesinde, başında "o" görünmesine rağmen cümlenin sonunda adı geçen çalışana atıfta bulunuyor.

Bu nedenle, analiz dizisinin sırasının tersine çevrilmesi veya ileri ve geri birleştirilmesi gerekir. Aşağıdaki şekil bu iki yönlü mimariyi açıklamaktadır:

Aşağıdaki şekil, çift yönlü LSTM'yi daha fazla göstermektedir. Alt ağ sırayı orijinal sırayla alırken, üst ağ aynı girişi ters sırada alır. İki ağ mutlaka aynı olmak zorunda değildir. Önemli olan, çıktılarının nihai tahminde birleştirilmesidir.

Daha fazla sır bilmek ister misiniz?

Az önce bahsettiğimiz gibi, LSTM hücreleri önemli girdileri (giriş kapısının rolü) tanımayı öğrenebilir, girdiyi uzun vadeli bir durumda saklayabilir, gerektiğinde korumayı öğrenebilir (geçidin rolünü unutabilir) ve gerektiğinde Onu çıkarmayı öğrenin.

LSTM, makine öğrenimi paradigmasını değiştirdi ve artık Google, Amazon ve Facebook gibi dünyanın en değerli listelenen şirketleri aracılığıyla milyarlarca kullanıcıya hizmet sunabilir.

2015 ortasından bu yana, LSTM 4 milyardan fazla Android telefonun konuşma tanıma özelliğini büyük ölçüde geliştirdi.

Kasım 2016'dan beri LSTM, Google Translate'e uygulanıyor ve makine çevirisi büyük ölçüde iyileştiriliyor.

Facebook her gün 4 milyardan fazla LSTM tabanlı çeviri yapmaktadır.

2016'dan bu yana, yaklaşık 2 milyar iPhone, LSTM'ye dayalı Siri ile donatıldı.

Amazon'un Alexa yanıtlaması da LSTM'ye dayanmaktadır.

LSTM ve GRU hakkında daha fazla bilgi edinmek istiyorsanız, Michael Nguyen'in hazırladığı animasyonlu talimatlarla bu makaleyi okuyabilirsiniz:

https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

Sıfırdan LSTM modelleri oluşturmayı sevenler için bu makale faydalı olabilir:

https://towardsdatascience.com/illustrated-guide-to-lstms-and-gru-s-a-step-by-step-explanation-44e9eb85bf21

Aşağıda, Python uygulamasını kullanarak LSTM ağını uygulamak için bir yöntem sunacağım.

1. Duyarlılık analizi: bir kıyaslama

https://towardsdatascience.com/sentiment-analysis-a-benchmark-903279cab44a

Dikkat tabanlı sekans-sekans modeli ve Transformer, LSTM'yi geride bıraktı ve kısa süre önce Google'ın makine çevirisi ve OpenAI'nin metin oluşturmasında harika sonuçlar elde etti.

2. NLU görev dikkat mekanizması için pratik kılavuz

https://towardsdatascience.com/practical-guide-to-attention-mechanism-for-nlu-tasks-ccc47be8d500

Github kütüphanesinde bulunabilen metin sınıflandırmasını tam olarak uygulamak için BERT, FastText, TextCNN, Transformer, Se2seq, vb. Kullanın:

https://github.com/brightmart/text_classification

Veya bu öğreticiyi BERT'de kontrol edebilirsiniz:

https://towardsdatascience.com/bert-for-dummies-step-by-step-tutorial-fb90890ffe03

Canlı önizleme...

Gözetimsiz makine çevirisi yapmak için bir araç olarak vizyonu kullanan DeepMind'ın büyük hareketi, etkisi mükemmel
önceki
güncel! Tsinghua ve birkaç yetkili kuruluş, tüm ağdaki en yeni koroner pnömoni veri kaynağını yayınladı
Sonraki
CVPR 2020 Oral | İkili Şube Ağı BBN: Uzun Kuyruk Dağıtımı ile Gerçek Dünya Görevlerinin Üstesinden Gelmek
ICLR 2020 | Reformer, verimli bir Transformatör
Shan Shiguang: Yapay zeka metodolojisinin güncellenmesi gerekiyor Salgından sonra yapay zeka nasıl gelişecek?
Today Paper | DeepCap; metin sınıflandırması; frekans etki alanı grafik dikkat ağı; 3D insan poz tahmini vb.
Canlı | Yang Qiang, WeBank Yapay Zeka Başkanı: Neden federal öğrenmeye ihtiyacımız var?
Süpüren robotun "gözlerinin" evrimsel tarihi
Canlı | Microsoft Super Mahjong AI Suphx Ar-Ge ekibi teknik ayrıntıları derinlemesine açıklıyor
Today Paper | ScrabbleGAN; UnrealText; izleme modeli; G2L-Net, vb.
Today Paper | Güçlendirmeli Öğrenme; Yeniden Yapılandırılabilir GAN'lar; BachGAN; Zaman Serisi Sınıflandırması, vb.
Today Paper | COVID-19; Derin İlgi Ağı; COVIDX-NET; Sahne Metni Geçişi, vb.
NLP'nin en iyi konferansları birbiri ardına ertelendi, COLING bunu Mart ayında ertelemeyi tercih etti ve ayrıca çevrimdışı konferanslar düzenledi
Evde kalırken egzersiz yapmak istersen ne yapmalı? Neden bu koşu bandını denemiyorsunuz | Titanium Geek
To Top