Sinir ağı eğitimi için kategorik ve sürekli giriş özellikleri nasıl birleştirilir


16

Kategorik ve sürekli olmak üzere iki tür giriş özelliğimiz olduğunu varsayalım. Kategorik veriler bir sıcak kod A olarak temsil edilebilirken, sürekli veriler N-boyutlu uzayda sadece bir B vektörüdür. Görünüşe göre sadece concat (A, B) kullanmak iyi bir seçim değildir çünkü A, B tamamen farklı veri türleridir. Örneğin, B'den farklı olarak, A'da sayısal bir düzen yoktur. Bu yüzden sorum şu iki tür verinin nasıl birleştirileceği veya bunları işlemek için herhangi bir geleneksel yöntem var.

Aslında resimde gösterildiği gibi saf bir yapı öneriyorum

resim açıklamasını buraya girin

Gördüğünüz gibi, ilk birkaç katman A verisini sürekli uzayda bazı orta çıktıya değiştirmek (veya eşlemek) için kullanılır ve daha sonra, daha sonraki katmanlar için sürekli alanda yeni bir girdi özelliği oluşturan B verileri ile sonlandırılır. Makul olup olmadığını ya da sadece bir "deneme yanılma" oyunu mu merak ediyorum. Teşekkür ederim.

Yanıtlar:


5

Bunu çözmek için üç ana yaklaşım vardır:

  1. İki modeli ayrı ayrı oluşturma ve ardından iki modelin çıktısını girdi olarak alan bir topluluk algoritması eğitimi
  2. Bir önişleme adımı olarak tüm verilerin tek bir vektör / tensör içinde sonuçlandırılması ve daha sonra basit bir tek giriş NN'sinin eğitilmesi
  3. Önerdiğiniz çok girişli NN mimarisi

Topluluk yaklaşımı en basit ileri seçenektir ve iyi sonuçlar verir, ancak önerdiğiniz seçenek kadar iyi çalışmayacaktır, çünkü topluluk ağı yalnızca iki ağdan bir girdi olarak sınıf olasılıkları alır ve yaklaşım veri türleri arasındaki daha karmaşık ilişkileri kaçırır.

İkinci yaklaşım teoride, önerilen yaklaşımınızdan farklı değildir, fark, ağın kendi başına, girişin iki tür veri içerdiğini varsaymasıdır (her ikisi de aynı vektör / tensörde olduğu için) ). Ağın bunu öğrenmesi çok fazla zaman alacaktır ve bu gerçekleşmeden önce yerel bir minimada sıkışıp kalabilirsiniz.

Kişisel deneyimime dayanarak, önerdiğiniz ağ en iyi seçenektir ve en kısa tren zamanına sahip olması muhtemeldir ve mimariyi bir kez doğru hale getirdiğinizde, ağın üretimde eğitilmesinin ve bakımının (yeniden eğitilmesinin) çok kolay olduğunu göreceksiniz. sadece tek bir modeli yeniden eğitmeniz gerekecek.



0

Şimdiye kadar sizin tarafınızdan önerilen saf yapıyı kullanıyordum. İyi çerçeveli bir problemde ve yeterli veriyle, bu tür mimari oldukça iyi çalışır. Ancak burada öğrendiğim birkaç şey var:

  1. Ağaç tabanlı algoritmalar (RF, XGB), sinir ağları üzerinden uygulanması daha kolay olan bazı özel çıkış gereksinimleri veya kayıp işleviniz yoksa, genellikle karışık sınıflarla iyi performans gösterir.
  2. Sinir ağı kullanmaya karar verilirse, bu mimari diğer dize kodlama yollarına kıyasla daha iyi performans gösterir.
  3. Bu yaklaşım aynı zamanda karışık girdi zaman serisi verileriyle de çalışır - klasik zaman serisi yaklaşımlarından çok daha iyi.

Anahtar tasarım birleştirme katmanı olacak ve onu mimariye nereye koymak istersiniz. Ayrıca katıştırma katmanlarını kullanmak, bu öğrenilmiş düğünleri diğer bazı görevlerde / görselleştirmelerde kullanmanın ek avantajlarını sağlar.

Bu tür mimariler Kaggle yarışmalarında kullanılmıştır [1] ve aynı zamanda Prof. Jeremy Howard [2] tarafından Fast.ai kursunda öğretilmektedir.

  1. https://yashuseth.blog/2018/07/22/pytorch-neural-network-for-tabular-data-with-categorical-embeddings/
  2. https://www.fast.ai/2019/01/24/course-v3/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.