Próbowałem więc zrozumieć sieci neuronowe, odkąd natknąłem się na blog Adama Geitgeya na temat uczenia maszynowego. Przeczytałem jak najwięcej na ten temat (który mogę zrozumieć) i wierzę, że rozumiem wszystkie ogólne pojęcia i niektóre działania (pomimo tego, że jestem bardzo słaby w matematyce), neurony, synapsy, wagi, funkcje kosztów, propagacja wsteczna itp. Jednak nie byłem w stanie dowiedzieć się, jak przełożyć problemy świata rzeczywistego na rozwiązanie sieci neuronowej.
W tym przypadku Adam Geitgey podaje jako przykład zastosowania system prognozowania ceny domu, w którym podano zestaw danych zawierający liczbę sypialni , Sq. stopy , sąsiedztwo i cena sprzedaży możesz wytrenować sieć neuronową, aby móc przewidzieć cenę domu. Jednak zatrzymuje się przed faktycznym wdrożeniem możliwego rozwiązania w kodzie. Najbliżej, na przykład, jest podstawowa funkcja pokazująca, jak zaimplementować wagi:
def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood):
price = 0
# a little pinch of this
price += num_of_bedrooms * 1.0
# and a big pinch of that
price += sqft * 1.0
# maybe a handful of this
price += neighborhood * 1.0
# and finally, just a little extra salt for good measure
price += 1.0
return price
Wydaje się, że inne zasoby koncentrują się w większym stopniu na matematyce, a jedyny podstawowy przykład kodu, jaki mogłem znaleźć, który rozumiem (tj. To nie wszystko śpiewanie, cała baza kodów klasyfikacji tańczących obrazów) to implementacja, która trenuje sieć neuronową do bycia XOR bramka, która zajmuje się tylko 1 i 0.
Więc w mojej wiedzy jest luka, której po prostu nie mogę zlikwidować. Jeśli wrócimy do problemu prognozowania ceny domu , jak sprawić, by dane były odpowiednie do wprowadzenia do sieci neuronowej? Na przykład:
- Liczba sypialni: 3
- Plac stopy: 2000
- Okolica: Normaltown
- Cena sprzedaży: 250 000 $
Czy możesz po prostu wprowadzić 3 i 2000 bezpośrednio do sieci neuronowej, ponieważ są to liczby? A może musisz je przekształcić w coś innego? Podobnie co z wartością Normaltown , czyli ciągiem, jak przejść do tłumaczenia jej na wartość, którą sieć neuronowa może zrozumieć? Czy możesz po prostu wybrać liczbę, taką jak indeks, o ile jest ona spójna w danych?
Większość przykładów sieci neuronowych, które widziałem, liczby przechodzące między warstwami wynoszą od 0 do 1 lub od -1 do 1. Więc pod koniec przetwarzania, w jaki sposób przekształcasz wartość wyjściową na coś użytecznego, takiego jak 185 000 $ ?
Wiem, że przykład prognozy ceny domu prawdopodobnie nie jest szczególnie przydatnym problemem, ponieważ został znacznie uproszczony do zaledwie trzech punktów danych. Ale po prostu czuję, że jeśli uda mi się pokonać tę przeszkodę i napisać niezwykle podstawową aplikację, która ćwiczy przy użyciu pseudo-rzeczywistych danych i wyrzuca pseudo-rzeczywistą odpowiedź, nie zerwę tego i będę w stanie kopnąć i zagłębiać się w uczenie maszynowe.