•  

    pokaż komentarz

    Wow! Teraz sam będę mógł tworzyć sieci neuronowe!

  •  

    pokaż komentarz

    Zawsze było proste. Trudne to było dobranie danych wejściowych i wyjściowych.

    •  

      pokaż komentarz

      @masz_fajne_donice: Wyjaśnisz na tym ta trudność polega? Mi się zawsze wydawało, że trudno to było dobrać wagi połączeń między neuronami...

    •  

      pokaż komentarz

      @masz_fajne_donice: @JanuszAndrzejNowak: wy kiedykolwiek jakąś sieć programowaliście?

      1. Dobór danych nie jest trudny, wręcz przeciwnie, dane powinny być jak najbardziej różnorodne, żeby skrypt uczył się "co jest złe, a co dobre". Jedyną trudność może stanowić skala - ilość materiałów powinna być bardzo duża.
      2. Wagi połączeń same się ustawiają podczas procesu nauki.

      To co jest trudne, to napisanie skryptów wykonywanych przez poszczególne komórki. Trzeba wiedzieć jak analizować dane wsadowe i co walić na wyjście dla kolejnych komórek.

    •  

      pokaż komentarz

      2. Wagi połączeń same się ustawiają podczas procesu nauki.

      @nielegalny_imigrant: Tak, tak, a przecież to chwila moment i nie ma o czym mówić...ważne, że 'robi się sam'...( ͡° ͜ʖ ͡°)

    •  

      pokaż komentarz

      @JanuszAndrzejNowak: No na tym przecież polega uczenie się sieci, że się te wagi dobierają.

      Dobór danych nie jest trudny, wręcz przeciwnie, dane powinny być jak najbardziej różnorodne, żeby skrypt uczył się "co jest złe, a co dobre". Jedyną trudność może stanowić skala - ilość materiałów powinna być bardzo duża.

      @nielegalny_imigrant: To jest zajebiście trudne. To co napisałeś to jakieś banały. To jak jak wyjść z depresji? Proste. Więcej się uśmiechaj, wyjdź do ludzi, zacznij biegać i przestań być smutny XD
      Dobranie danych wejściowych i wyjściowych jest bardzo trudne, żeby sieć pełniła swoją funkcję. W sumie do tego się sprowadza 90% pracy z samą siecią bo samo dobranie ilości cykli uczenia itp to nawet przy małym doświadczeniu nie było nigdy specjalnie dużo pracy. Można to nawet zautomatyzować - przynajmniej ja tak robiłem. Powiedz mi więc ty co uważasz największą trudność przy korzystaniu z sieci neuronowych?

      Masz giełdę i robisz sieć neuronową do przewidywania kursu dolara wobec złotówki. Jakie dane wrzucasz? Danych z giełdy są tysiące parametrów możesz wybrać kilka. Które dobierasz? To tylko abstrakcyjny przykład ale chyba wiesz o co chodzi. Z jakiego zakresu czasowego i interwału?
      Przy prostych grach gdzie wrzucasz cały stan albo rozpoznawaniu obrazów to może jest dosyć proste ale przy większości zastosowań już mniej.

    •  

      pokaż komentarz

      Wyjaśnisz na tym ta trudność polega? Mi się zawsze wydawało, że trudno to było dobrać wagi połączeń między neuronami...

      @JanuszAndrzejNowak: Z doświadczenia gości zajmujących się uczeniem maszynowym (nie moim bo ja jestem początkujący) wynika że zebranie i przygotowanie danych wejściowych zajmuje najwięcej czasu. Dane są niekompletne, są obciążone subiektywną opinią ludzi którzy uczestniczyli w ich zbieraniu i tworzeniu, zazwyczaj są niepełne, zbyt skorelowane albo posiadające za mało cech, etc... Problemów jest cała fura, więc tak jak napisał @masz_fajne_donice: to jest uznawane obecnie za najtrudniejsze zadanie w dziedzinie ML.

      Jeżeli źle przygotujesz dane to nie uzyskasz dobrego wyniku ponieważ uczenie maszynowe to jest rodzaj programowania w którym algorytm powstaje przez generalizację podawanych danych. Więc jeżeli dane są niewłaściwe to nie ma szans na powstanie dobrego algorytmu.

      Potem jest dobór struktury sieci, czyli liczby warstw i węzłów (neuronów), ich rodzaju, sposobu uczenia, wybór parametrów uczenia (hyperparameters), sposobu regularyzacja, funkcji celu czyli sposobu w jaki będziesz oceniał jak dobrze sieć się nauczyła, etc...

      Następnym problemem to jest moc obliczeniowa. Naprawdę ciekawe rzeczy wymagają dużych sieci. Pojedynczy cykl uczenia może trwać kilkaset godzin farmy serwerów z drogimi kartami do uczenia maszynowego. To długo trwa i zaczyna dużo kosztować bo zanim dojdziesz (o ile!) do poprawnej struktury sieci i wybierzesz poprawne hyperparametry to musisz zrobić wiele prób a każda będzie kosztować.

      Podstawowym narzędziem do budowy sieci DNN jest TensorFlow. Mocno specjalistyczna biblioteka która wymaga wiedzy programistycznej ponieważ nie jest prosta w użyciu i wiedzy naukowej ponieważ musisz np. wybrać rodzaj algorytmu, parametrów, etc... (trzeba mieć trochę wiedzy teoretycznej ze rachunku prawdopodobieństwa i statystyki żeby rozumieć jakie są wady i zalety tych algorytmów - czyli na jakich danych będą działać dobrze a z jakimi sobie nie poradzą).

      Żeby umożliwić wykorzystanie tej biblioteki przez mniej techniczne osoby, tworzone są różnego rodzaju wysoko-poziomowe narzędzia ułatwiające dostęp do tych bibliotek. Wliczając w to automatyczny wybór struktury sieci, hyperparametrów, etc... Tylko że według mnie to nie jest święty gral... Jeżeli nie będziesz w stanie ocenić rezultatów działania takiego algorytmu to nic nie pomoże. Sieć się nauczy ale nie tego czego oczekiwałeś :-).

      Żeby chociaż zrozumieć typy problemów które występują w uczeniu maszynowym polecam przejrzeć same tutoriale video w kursie https://developers.google.com/machine-learning/crash-course/ (to jet 5-10 minut na początku każdego rozdziału).

      Można też rzucić okiem na narzędzia takie jak https://playground.tensorflow.org/ czyli wysokopoziomowy framework do budowania i uczenia sieci. Dane do takiej sieci możesz spróbować przejrzeć używając innego narzędzia: https://pair-code.github.io/facets/

      Reasumując: fajnie że zrobili takie narzędzie, ułatwianie ML jest ze wszech miar pożyteczne! Szkoda że w conowego nie opisali tego narzędzia :( nie wierzę też że to narzędzie będzie Świętym Graalem w dziedzinie ML. Jak zbudujemy taki meta-ML-algorytm to generalnie będzie to już potężne AI które wyeliminuje wiele zawodów z naszej cywilizacji ;-)

    •  

      pokaż komentarz

      @masz_fajne_donice: Oczywiście że było. 10 lat temu wystarczyło mieć oprogramowanie Statistica i dane aby sieć mogła się uczyć

    •  

      pokaż komentarz

      @masz_fajne_donice: jprdl, jak zwykle januszeria sztucznej inteligencji się wypowiada. Problem w ANN polega na znalezieniu odpowiedniej architektury oraz połączeń między neuronami. Konkretnie chodzi o liczbę warstw oraz ile wejść mają neurony i gdzie są podłączane do warstwy i-1.
      Inną kwestią są funkcje aktywacji neuronów. Kombinacji jest mnóstwo. Jest to problem optymalizacyjny, rozwiazywany np. za pomocą GA.

    •  

      pokaż komentarz

      Z doświadczenia gości zajmujących się uczeniem maszynowym (nie moim bo ja jestem początkujący) wynika że zebranie i przygotowanie danych wejściowych zajmuje najwięcej czasu. Dane są niekompletne, są obciążone subiektywną opinią ludzi którzy uczestniczyli w ich zbieraniu i tworzeniu, zazwyczaj są niepełne, zbyt skorelowane albo posiadające za mało cech, etc...

      @kwanty: Tak, tylko nie jest to problem samych sieci neuronowych tylko modeli inteligencji obliczeniowej. Powiem więcej, to jest problem związany z samą analizą danych niezależnie od tego jak te dane chcemy następnie wykorzystać.

      Następnym problemem to jest moc obliczeniowa. Naprawdę ciekawe rzeczy wymagają dużych sieci. Pojedynczy cykl uczenia może trwać kilkaset godzin farmy serwerów z drogimi kartami do uczenia maszynowego. To długo trwa i zaczyna dużo kosztować bo zanim dojdziesz (o ile!) do poprawnej struktury sieci i wybierzesz poprawne hyperparametry to musisz zrobić wiele prób a każda będzie kosztować.

      @kwanty: I to jest to o czyn mówię, jeżeli potrafilibyśmy dobrać wagi połączeń (czyli struktura i parametry byłyby znane) od tak, to proces budowania sieci neuronowych byłby banalnie prosty. To właśnie czas i koszt obliczeniowy potrzebny na wybranie struktury, parametrów jest największym problemem. Problem, który występuje niezależnie od wykorzystanych danych.

      Problem w ANN polega na znalezieniu odpowiedniej architektury oraz połączeń między neuronami.

      @Chrzonszcz: Szykuj się na całą masę minusów, bo zdaniem wielu 'ekspertów' z internetu zarówno struktura jaki i wagi same się dobierają ( ͡° ͜ʖ ͡°)

    •  

      pokaż komentarz

      struktura

      @JanuszAndrzejNowak: Tego nikt nie powiedział. Ja twierdzę, że to mało względnie pracy dla doświadczonej osoby.

      wagi same się dobierają
      Pierwszy lepszy link:

      Podobnie jak w przypadku pojedynczego neuronu, główną zaletą sieci neuronowej jest to, że nie musimy "ręcznie" dobierać wag. Możemy te wagi wytrenować, czyli znaleźć ich w przybliżeniu optymalny zestaw za pomocą metody obliczeniowej zwanej wsteczną propagacją błędu.
      http://edu.pjwstk.edu.pl/wyklady/nai/scb/wyklad3/w3.htm

      A na czym niby polega uczenie sieci neuronowej jak nie na automatycznym dobieraniu wag przez podanie danych do nauki?

    •  

      pokaż komentarz

      @JanuszAndrzejNowak: Gdybyśmy znali właściwe wagi to sieć sieć nie była by potrzebna, można by zastosować algorytm deterministyczny.

      Cała zabawa z DNN polega na tym że nie chcemy projektować algorytmu tylko chcemy żeby algorytm sam się zaprojektował na podstawie przykładów.

      Ten algorytm to wagi połączeń między neuronami i jest wyznaczany automatycznie w procesie optymalizacji wieloparametrowej.

      Na tym w skrócie polega uczenie NN

    •  

      pokaż komentarz

      @JanuszAndrzejNowak: owszem. Na początku wagi są generowane losowo z jakiejś dystrybucji (najczęściej normalnej) i dopiero później za pomocą mechanizmu nazwanego propagacja wsteczną (back propagation) ustalane są wagi dla poszczególnych neuronów w kolejnych warstwach, licząc od tyłu.

    •  

      pokaż komentarz

      @Chrzonszcz: struktura sieci to pikuś. Najważniejsze zawsze są dane. Ich jakość i ilość. Twoja wypowiedź to typowa januszeria.

    •  

      pokaż komentarz

      Gdybyśmy znali właściwe wagi to sieć sieć nie była by potrzebna, można by zastosować algorytm deterministyczny.

      Cała zabawa z DNN polega na tym że nie chcemy projektować algorytmu tylko chcemy żeby algorytm sam się zaprojektował na podstawie przykładów.

      Ten algorytm to wagi połączeń między neuronami i jest wyznaczany automatycznie w procesie optymalizacji wieloparametrowej.

      Na tym w skrócie polega uczenie NN

      @kwanty: Właśnie w tym rzecz... Ktoś napisał, że największym problem w sieciach neuronowych są dane. Reszta to plusuje bo nie odróżnia eksploracji danych od uczenia maszynowego. Obecnie największy wysiłek jest wkładany właśnie w przyspieszenie procesu uczenia. To czas uczenia ogranicza zastosowanie sieci - rzeczywiste problemy wymagają ogromnych sieci, a co za tym idzie uczenie wymaga ogromnej mocy obliczeniowej i czasu. Użycie nowych danych w celu poprawy działania sieci wymaga douczenia sieci - czyli wracamy do uczenia.
      Napiszę to jeszcze raz - dane są problemem bez względu na wybrany model inteligencji obliczeniowej czy po prostu metodę analizy danych (choćby najprostszą). W samych sieciach to dobór wag jest problemem, tak jak w algorytmach genetycznych (czy szerzej w algorytmach ewolucyjnych) sposób reprezentacji rozwiązania i zdefiniowanie funkcji celu.

  •  

    pokaż komentarz

    to może w końcu artykuły na co nogo będą trochę lepsze

  •  

    pokaż komentarz

    W sumie tworzenie sieci neuronowych nie jest takie straszne. Zwłaszcza jak ktoś działa na perceptronie wielowarstwowym mlp. Aby tylko odpowiednio przygotować zbiory danych i rozumieć w jaki sposób te sieci są tworzone i dobierane.

  •  

    pokaż komentarz

    Yo dawg! Wytrenujemy naszą sieć neuronową za pomocą sieci neuronowej! ;)