Nauka sieci neuronowych.

0

Witam, moim celem jest poznanie tematyki sieci neuronowych, w przyszłości chciałbym używać ich w aplikacjach. Zastanawiam się, czy najlepiej będzie uczyć się ogólnych informacji o nich, ponieważ później jest z nimi podobnie jak z pseudokodami i wystarczy znać składnie dowolnego języka, żeby je zaimplementować i stworzyć program opierający się na nich, czy może od początku lepiej jest już ćwiczyć i szukać materiałów w wybranym przeze mnie języku?

0

Nie możesz pracować na sieciach neuronowych bez znajomości zasad ich funkcjonowania. To znaczy możesz, ale będzie to nieefektywne. Ja zacząłem od książki Tadeusiewicza o sieciach neuronowych.

Taka podstawa z sieci neuronowych uczonych z nauczycielem to oczywiście algorytm wstecznej propagacji błędu. Poczytaj o nim.

Ważne są też metody przyśpieszające uczenie, jak np. metoda adaptacyjnego współczynnika uczenia.

Sieci neuronowe naprawdę są niezwykle ciekawe, ale i trudne. Przygotuj się na sporo matmy.

0

http://otworzksiazke.pl/ksiazka/odkrywanie_wlasciwosci_sieci_neuronowych/ i jest gdzieś jeszcze "Sieci neuronowe", ale nie mogę teraz znaleźć, na YT są też jakieś jego pogadanki też warto zobaczyć. Dobrym pomysłem jest też poczytać "Neurocybernetyka teoretyczna"

1

To trochę bez sensu skoro nic na ten temat nie wiesz a już chcesz stosować ;] Szczególnie że są dużo lepsze metody uczenia maszynowego niż SSN. Polecam przelecieć jakiś kurs Machine Learning na Courserze żeby ogarnąć się tak generalnie z tego tematu.

0

Ciekawe materiały są też na yt
CS231n Winter 2016

Deep Learning

Deep learning at Oxford 2015

cs155

CS224D Deep Learning for NLP

0

Czytałem jakiś czas temu "Odkrywanie właściwości sieci neuronowych przy użyciu programów w języku C#" R.Tadeusiewicza, jednak wiedza tam zawarta była przekazywana w bardzo teoretyczny sposób. Ogólnie jest sporo kursów i raczej te sieci opisywane są ogólnikowo i to było powodem stworzenia tego tematu. Zastanawiałem się, czy to nie jest jak z nauką programowania, ponieważ dużo szybciej przyswajam sobie wiedzę oglądając tutoriale i ćwicząc od razu na kodzie, zamiast przerabiać jakąś wielostronicową książkę. Ale wychodzi na to, że sieci neuronowe to trochę inna sprawa i jednak warto poświęcić czas na naukę teorii, ponieważ implementacja to nie problem, w przeciwieństwie do dobrania odpowiedniego rodzaju sieci, metody uczenia itd.? Akurat właśnie ostatnio sporo czasu spędziłem na poszukiwaniu materiałów i mam ściągnięte między innymi kursy z Coursera. Może znajdzie się osoba, która już przerabiała ten temat, ma doświadczenie i doradzi w jaki sposób powinienem rozwijać się w tym kierunku? Z góry dzięki.

0

Polecam wykłady oraz książki Ryszarda Tadeusiewicza.

0

Ja mam trochę inne pytanie bo wiadomo, że sieć neuronową można stworzyć w jakimkolwiek języku programowania, trochę słabo ogarniam te sieci neuronowe, ale przykładowo jak już piszę jakiś algorytm, który liczy coś skomplikowanego związanego ze sztuczną inteligencją to jak poznać czy nie stworzyłem jakiejś prostej sieci neuronowej.

0

Czyli że co - chcesz poznać czy przypadkowo nie stworzyłeś sieci neuronowej? Takie rzeczy się nie dzieją :D

0
pol90 napisał(a):

Ja mam trochę inne pytanie bo wiadomo, że sieć neuronową można stworzyć w jakimkolwiek języku programowania, trochę słabo ogarniam te sieci neuronowe, ale przykładowo jak już piszę jakiś algorytm, który liczy coś skomplikowanego związanego ze sztuczną inteligencją to jak poznać czy nie stworzyłem jakiejś prostej sieci neuronowej.

Ponieważ sieć neuronowa to także pewna struktura składająca się z abstrakcyjnych neuronów. Posiada n wejść, m wyjść (czasem warstwy ukryte, a czasem to np nie jest struktura warstwowa tylko bardziej mesh). Interpretacja wyjść dopiero daje jakąś informację. Dodatkowo sieci działają według róznych algorytmów uczenia, a i samych sieci jest mnóstwo. Jedna super rozpoznają obrazy patrząc na zadane wzorce, z kolei inne tylko uczą się je klasyfikować do określonej grupy.

Ale tak - jak posadzi się x małp, które losowo klepia w klawisze, to istnieje pewne niezerowe prawdopodobieństwo, że napiszą sieć neuronową :)

1

Trochę materiałów teoretycznych jest w tym temacie na Heaton Research i można sobie trochę o tym poczytać. No i jest fajna biblioteka Encog, pod JAVA jak wównież C#.

Wiem że są różne typy sieci neuronowych ale te najbardziej znane to Multilayer Perceptron (o tej to najczęściej się mówi) SOM, Hopfielfd oraz RBF. Sądzę że w praktycznej (i komercyjnej) realizacji będą miały zastosowanie w bardzo złożonych zagadnieniach a nie jakichś głupotach typu obliczanie dajmy na to ciśnienia na określonej wysokości bo na to jest wzór barometryczny i można to załatwić dość łatwo za pomocą algorytmu, zaś SSN (tutaj w przypadku takich prognoz będzie miała zastosowanie MLP z jakąś jedną warstwą ukrytą) będą nie do pobicia tam gdzie będzie bardzo trudno (a wręcz nawet to niemożliwe) rozwiązać dany problem za pomocą algorytmów.

I tak np. zastosowanie w ruchu drogowym i wykrywanie różnego typu wykroczeń, rozpoznawanie tablic rejestracyjnych, wiadomo że to spory wydatek na inwestycję ale wiadomo w jakiej postaci się zwróci. Rozpoznawanie mowy, tłumaczenie dajmy na to języka migowego na tekst albo nawet mowę i na odwrót, co jest jak najbardziej do realizacji przy użyciu robotów (animatronika), rozpoznawanie i ostrzeganie przed zjawiskami atmosferycznymi (burze, huragany, powodzie), oczywiście zastosowania na giełdzie, w medycynie itd.

Temat jest bardzo ciekawy ale jednocześnie trudny zarazem.

0

Odświerzam wątek
Nigdzie w kursach nie ma o tym jak się oblicza wagi czy to się jakos prosto robi czy, żeby obliczyć wagę dla pojedyńczego neuronu to trzeba brać pod uwagę tez inne neurony ?

0

W każdym kursie piszą, w jaki sposób oblicza się wagi: backpropagation :-)

0

W pythonie jest bardzo prosta implementacja:
https://gist.github.com/yusugomori/2501438

Czyli typowa sieć z jedną warstwą ukrytą, backpropagation z learning rate i momentem. W powyższym przykładzie +1 neuron w wejściowej warstwie z 1.0 na wejściu jako bias. Czyli analizując połączenie typu każdy z każdym, zresztą tego się nie liczy ręcznie, to dzieje się automatycznie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1