Çoklu Çıktı Regresyonu için Sinir Ağı


21

34 giriş sütun ve 8 çıkış sütun içeren bir veri kümesi var.

Sorunu çözmenin bir yolu, 34 girişi almak ve her bir çıkış sütunu için bireysel regresyon modeli oluşturmaktır.

Bu sorunun özellikle Sinir Ağı kullanılarak sadece bir model kullanılarak çözülüp çözülemeyeceğini merak ediyorum.

Çok Katmanlı Perceptron kullandım ama bunun doğrusal regresyon gibi birden fazla modele ihtiyacı var. Sekanstan Sekansa uygulanabilir bir seçenek olabilir mi?

TensorFlow kullanıyorum. Kodum var ama çok katmanlı algılayıcı teorisi açısından neyi kaçırdığımı anlamanın daha önemli olduğunu düşünüyorum.

MLP'de bir çıkış düğümü varsa bir çıkış sağlayacağını anlıyorum. 10 çıkış düğümünüz varsa, bu çok sınıflı bir sorundur. 10 çıkıştan en yüksek olasılıklı sınıfı seçersiniz. Ama benim durumumda, aynı giriş için 8 çıkış olacağı kesindir.

Diyelim ki bir dizi girdi için bir şeyin 3B koordinatını elde edeceksiniz (X, Y, Z). Gibi, Girdiler = {1,10,5,7} Çıktı = {1,2,1}. Aynı giriş için {1,10,5,7} X değeri Y değeri ve Z için modeller yapmam gerekiyor. Bir çözüm, MLP kullanan 3 farklı modele sahip olmak. Ama bir modele sahip olup olamayacağımı görmek istiyorum. Bu yüzden seq2seq kullanmayı düşündüm. Çünkü kodlayıcı bir dizi girdi alır ve kod çözücü bir dizi çıktı sağlar. Ancak tensorflow'daki seq2seq şamandıra değerlerini işleyemiyor gibi görünüyor. Bu konuda yanlış olabilirim.


Çok katmanlı perceptron NN modelini ve ayrıca TensorFlow'u anlamada bazı sorunlarınız var gibi görünüyor - bunlar hakkındaki açıklamalarınız yanlış. Ancak, neden bu yanlış anlaşılmaya sahip olduğunuz açık değildir, bu da bir yanıtın bunu düzeltmenize yardımcı olamayacağı anlamına gelir. Tek bir NN modelinde örneğin 8 regresyon çıkışını tahmin etmek çoğu NN çerçevesinde son derece kolaydır, sizin durumunuzda sıralamaya gerek yoktur. Bu yüzden size yardımcı olmak için son paragrafınızın neye dayandığına bakmak önemli olabilir - bu düşüncelere gelmek için gördükleriniz veya denediklerinizin ayrıntılarını ekleyebilir misiniz?
Neil Slater

Tek bir NN modelini kullanarak 8 regresyon çıkışını nasıl alacağınıza cevap vermeniz mümkün müdür? Teşekkürler.
sjishan

Muhtemelen, sorunuzu düzenleyerek birkaç şeyi açıklarsanız: 1) Hangi çerçevede? 2) Şimdiye kadar kodunuz (veya kodunuz yoksa tasarım) nedir? 3) Bunu kendiniz yapmanıza engel olan nedir? Kullanabileceğiniz bir şeyle cevap vermek için 1 ve 2'ye ihtiyacım var. Sorununuzun ne olduğunu anlamak ve çözümü açıklamak için 3'e ihtiyacım var.
Neil Slater

1. Tensorflow. 2. Kodum var ama çok katmanlı algılayıcı teorisi açısından neyi kaçırdığımı anlamanın daha önemli olduğunu düşünüyorum. MLP'de bir çıkış düğümü varsa bir çıkış sağlayacağını anlıyorum. 10 çıkış düğümünüz varsa, bu çok sınıflı bir sorundur. 10 çıkıştan en yüksek olasılıklı sınıfı seçersiniz. Ama benim durumumda, aynı giriş için 8 çıkış olacağı kesindir. Farklı bir örnek göstereyim, Diyelim ki, bir dizi girdi için bir şeyin 3B koordinatını elde edeceksiniz (X, Y, Z). Gibi, Girdiler = {1,10,5,7} Çıktı = {1,2,1}
sjishan

Aynı giriş için {1,10,5,7} X değeri Y değeri ve Z için modeller yapmam gerekiyor. Bir çözüm, MLP kullanan 3 farklı modele sahip olmak. Ama bir modele sahip olup olamayacağımı görmek istiyorum. Bu yüzden seq2seq kullanmayı düşündüm. Çünkü kodlayıcı bir dizi girdi alır ve kod çözücü bir dizi çıktı sağlar. Ancak tensorflow'daki seq2seq şamandıra değerlerini işleyemiyor gibi görünüyor. Bu konuda yanlış olabilirim.
sjishan

Yanıtlar:


14

Açıkladığınız şey normal çok boyutlu doğrusal bir regresyon. Bu tür bir sorun normalde, MLP veya sorunun doğasına uyan diğer herhangi bir mimari ile bir ileri beslemeli ağ ile giderilir.

Herhangi bir sinir ağı çerçevesi böyle bir şey yapabilir.

Bunu yapmanın anahtarı, son katmanın doğrusal aktivasyonlara sahip olması gerektiğini hatırlamaktır (yani aktivasyon olmaması).

Gereksinimlerinize göre, giriş katmanının şekli bir vektör (34,) ve çıkış (8,) olacaktır.

Güncelleme : regresyon problemleri için kullanılan normal kayıp fonksiyonu ortalama kare hatasıdır (MSE). İşte Keras kullanan çok boyutlu regresyon örneği ; ağ bir MLP değildir, ancak fikri göstermek için Tamam olmalıdır.


1
Muhtemelen regresyon (ortalama kare hatası) ve TensorFlow regresyon örneğine işaret için her zamanki maliyet fonksiyonu hakkında bir çizgi eklemeye değer - ancak şimdi bir tane aramak için 10 dakika geçirdim ve hiçbir şey görmedim. . . (örnekler doğrusal regresyondan MNIST sınıflandırıcılarına atlar, ancak temel MLP regresyon modelleri yoktur).
Neil Slater

4

Bunu çok basit bir şekilde Python'da uygulayabilirsiniz.
X'iniz x, y, z eğitim koordinatlarının koleksiyonu olacaktır.
Y'niz, x, y, z koordinatlarını test etme koleksiyonu olacaktır.

from sklearn import cross_validation                     
from sklearn.neural_network import MLPRegressor   

model = MLPRegressor(solver='lbfgs',alpha=0.001,hidden_layer_sizes=(150,))
cross_validation.cross_val_score(model, X, Y,scoring='mean_squared_error')

0

Bu düşündüğünüzden çok daha kolay - çıktı katmanınızı tek bir skaler yerine bir vektör olacak şekilde ayarlayabilirsiniz. Tabii ki burada sihir yok ve verilerinizi hazırlamanızı tavsiye ediyorum (toplu çıkış normalleştirmesi yapın, böylece tüm çıktılar 0 ile 1 arasında değerler olacaktır).

Keras kullanıyorsanız, bunu yapmanın yolu son çıktı katmanı olarak yoğun bir katman eklemektir: model.add(Dense(8, activation='linear'))

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.