Harika bir soru!
tl; dr: Hücre durumu ve gizli durum iki farklı şeydir, ancak gizli durum hücre durumuna bağlıdır ve gerçekten de aynı boyuta sahiptirler.
Daha uzun açıklama
İkisi arasındaki fark aşağıdaki şemadan görülebilir (aynı blogun bir parçası):
Hücre durumu batıdan doğuya tepeden geçen kalın çizgidir. Tüm yeşil bloğa 'hücre' denir.
Önceki zaman adımındaki gizli durum, geçerli zaman adımındaki girişin bir parçası olarak ele alınır.
Ancak, tam bir adım atmadan ikisi arasındaki bağımlılığı görmek biraz daha zor. Bunu başka bir bakış açısı sağlamak için yapacağım, ancak blogdan büyük ölçüde etkilendi. Benim gösterimim aynı olacak ve açıklamamda blogdaki resimleri kullanacağım.
Operasyonların sırasını blogda sunulduklarından biraz farklı düşünmeyi seviyorum. Şahsen, giriş kapısından başlamak gibi. Aşağıda bu bakış açısını sunacağım, ancak blogun bir LSTM hesaplaması kurmanın en iyi yolu olabileceğini ve bu açıklamanın tamamen kavramsal olduğunu unutmayın.
İşte olanlar:
Giriş kapısı
txtht−1
xt=[1,2,3]ht=[4,5,6]
xtht−1[1,2,3,4,5,6]
WiWi⋅[xt,ht−1]+biWibi
Altı boyutlu bir girişten (birleştirilmiş giriş vektörünün uzunluğu) hangi durumların güncelleneceğine dair üç boyutlu bir karara gideceğimizi varsayalım. Bu, 3x6 ağırlık matrisine ve 3x1 bias vektörüne ihtiyacımız olduğu anlamına gelir. Bunlara bazı değerler verelim:
Wi=⎡⎣⎢123123123123123123⎤⎦⎥
bi=⎡⎣⎢111⎤⎦⎥
Hesaplama şöyle olacaktır:
⎡⎣⎢123123123123123123⎤⎦⎥⋅⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢123456⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥+⎡⎣⎢111⎤⎦⎥=⎡⎣⎢224262⎤⎦⎥
it=σ(Wi⋅[xt,ht−1]+bi)
σ(x)=11+exp(−x)x
σ(⎡⎣⎢224262⎤⎦⎥)=[11+exp(−22),11+exp(−42),11+exp(−62)]=[1,1,1]
İngilizce olarak bu, tüm eyaletlerimizi güncelleyeceğimiz anlamına gelir.
Giriş kapısı ikinci bir kısma sahiptir:
Ct~=tanh(WC[xt,ht−1]+bC)
Bu bölümün amacı, eğer yaparsak, durumu nasıl güncelleyeceğimizi hesaplamaktır. Bu aşamadaki yeni girdiden hücre durumuna katkıdır. Hesaplama, yukarıda gösterilenle aynı prosedürü izler, ancak sigmoid ünitesi yerine tanh ünitesi ile.
Ct~it
itCt~
Ardından, sorunuzun en önemli noktası olan unutma kapısı geliyor.
Unutma kapısı
Unutma kapısının amacı, artık ilgili olmayan önceden öğrenilmiş bilgileri kaldırmaktır. Blogda verilen örnek dil tabanlıdır, ancak kayan bir pencere de düşünebiliriz. Bir hastalık salgını sırasında bir bölgedeki bulaşıcı bireylerin sayısı gibi doğal olarak tamsayılarla temsil edilen bir zaman serisini modelliyorsanız, belki de hastalık bir bölgede öldüğünde, hastalığın nasıl ilerleyeceğini düşünerek.
Giriş katmanı gibi, unut katmanı da önceki zaman adımındaki gizli durumu ve geçerli zaman adımındaki yeni girişi alır ve bunları birleştirir. Mesele, neyi unutup neyi hatırlayacağınıza stokastik olarak karar vermektir. Önceki hesaplamada, 1'lerin hepsinin sigmoid katman çıktısını gösterdim, ancak gerçekte 0.999'a daha yakındı ve yuvarlandım.
Hesaplama, giriş katmanında yaptığımız gibi görünüyor:
ft=σ(Wf[xt,ht−1]+bf)
Bu bize 0 ile 1 arasında değerler içeren 3 boyutlu bir vektör verecektir.
[0.5,0.8,0.9]
Daha sonra, bu üç bilgiden hangisinin unutulacağı bu değerlere dayanarak stochast karar veriyoruz. Bunu yapmanın bir yolu, birörnek (0, 1) dağılımından bir sayı üretmektir ve bu sayı birimin 'açma' (1, 2 ve 3 üniteleri için 0,5, 0,8 ve 0,9) olasılığından düşükse sırasıyla), o birimi açıyoruz. Bu durumda, bu bilgiyi unuttuğumuz anlamına gelir.
Hızlı not: giriş katmanı ve unut katmanı bağımsızdır. Bahis yapan biri olsaydım, bu paralellik için iyi bir yer olurdu.
Hücre durumunu güncelleme
Şimdi hücre durumunu güncellemek için gereken her şeye sahibiz. Giriş ve unutma kapılarındaki bilgilerin bir kombinasyonunu alıyoruz:
Ct=ft∘Ct−1+it∘Ct~
∘
Kenara: Hadamard ürünü
x1=[1,2,3]x2=[3,2,1]
x1∘x2=[(1⋅3),(2⋅2),(3⋅1)]=[3,4,3]
Kenara çekil.
Bu şekilde, hücre durumuna (girdi) ne eklemek istediğimizi hücre durumundan uzaklaştırmak istediğimiz (unut) ile birleştiririz. Sonuç, yeni hücre durumudur.
Çıkış kapısı
Bu bize yeni gizli durumu verecektir. Esasen çıkış kapısının amacı, sonraki hücre durumunu güncellerken modelin bir sonraki bölümünün hangi bilgileri dikkate almasını istediğimize karar vermektir. Blogdaki örnek yine dildir: isim çoğulsa, sonraki adımdaki fiil çekimleri değişecektir. Bir hastalık modelinde, belirli bir alandaki bireylerin duyarlılığı başka bir alandan farklıysa, bir enfeksiyon alma olasılığı değişebilir.
Çıktı katmanı aynı girişi tekrar alır, ancak güncellenmiş hücre durumunu dikkate alır:
ot=σ(Wo[xt,ht−1]+bo)
Yine, bu bize bir olasılık vektörü verir. Sonra hesaplıyoruz:
ht=ot∘tanh(Ct)
Dolayısıyla, mevcut hücre durumu ve çıkış kapısı, neyin verileceği konusunda anlaşmalıdır.
tanh(Ct)[0,1,1]ot[0,0,1][0,0,1]
htyt=σ(W⋅ht)
ht
LSTM'lerde birçok varyant var, ancak bu temel unsurları kapsıyor!