Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #30693 > unrolled thread

sieć neuronowa do uczenia sieci neuronowej

Started by"M.M." <mmarszik@gmail.com>
First post2017-09-17 17:26 -0700
Last post2017-09-18 13:21 -0700
Articles 5 — 3 participants

Back to article view | Back to pl.comp.programming


Contents

  sieć neuronowa do uczenia sieci neuronowej "M.M." <mmarszik@gmail.com> - 2017-09-17 17:26 -0700
    Re: sieć neuronowa do uczenia sieci neuronowej t-1 <t-1@todlaspamu.pl> - 2017-09-18 16:23 +0200
      Re: sieć neuronowa do uczenia sieci neuronowej "M.M." <mmarszik@gmail.com> - 2017-09-18 13:08 -0700
    Re: sieć neuronowa do uczenia sieci neuronowej Szyk Cech <szyk100@o2.pl> - 2017-09-18 16:43 +0200
      Re: sieć neuronowa do uczenia sieci neuronowej "M.M." <mmarszik@gmail.com> - 2017-09-18 13:21 -0700

#30693 — sieć neuronowa do uczenia sieci neuronowej

From"M.M." <mmarszik@gmail.com>
Date2017-09-17 17:26 -0700
Subjectsieć neuronowa do uczenia sieci neuronowej
Message-ID<471296cd-f954-4aeb-91d8-ffb3291424dc@googlegroups.com>
Co prawda to nie jest grupa stricte o sztucznej inteligencji, ale
takowa niemal zamarła, piszą tam z rzadka góra 3-4 osoby; ponadto 
temat sztucznej inteligencji (póki co) jest ściśle związany z
algorytmiką, więc chyba można na tę grupę pisać o sieciach 
neuronowych, a szczególnie o sztucznych sieciach neuronowych.

Do rzeczy, jakiś czas temu przyszło mi kilka pomysłów do głowy na to, 
jak jedną sztuczną sieć neuronową wykorzystać do uczenia drugiej 
sztucznej sieci neuronowej. Pomysłami tymi nie chcę się na razie 
dzielić, poza jednym wyjątkiem. Ten jeden stricte nie dotyczy uczenia, 
ale dotyczy doboru architektury, doboru sposobu inicjalizacji wag,
parametrów uczenia, czasu uczenia, i innych. Pomysł nie jest 
przełomowy, wiem że analogiczne zastosowania sztucznych sieci 
neuronowych były już w innych dziedzinach, chociażby w optymalizacji
technologii wypiekania ciasteczek. Wpisałem jednak w google i 
nic podobnego nie znalazłem, więc postanowiłem ten pomysł opisać
tutaj, ryzykując że już ktoś to opisywał.

Teraz naprawdę do rzeczy. Mamy duże zadanie, dużo danych, prawdopodobnie 
będzie do tego zadania potrzebna duża sieć, a więc każda próba uczenia
będzie kosztowna i czasochłonna. Na początku na wyczucie dobieramy
czas uczenia, rozmiary pod-zbiorów uczących, architekturę sieci, sposób
inicjalizacji wag, itd. Przeprowadzamy kilka eksperymentów i sprawdzamy
(kroswalidacja) jakie uzyskaliśmy wyniki na zbiorach testowych. Następnie
na wejście drugiej (dużo mniejszej) sieci podajemy wyniki ze zbiorów
testowych, a na wyjście dajemy właśnie czas uczenia, rozmiary pod-zbiorów,
architekturę, inicjalizację, itd. Potem oczywiście uczymy drugą sieć.
W końcu na wejście sieci dajemy wartość 100%, bo na zbiorach walidacyjnych
chcemy mieć właśnie skuteczność 100%. Druga sieć na wyjściu zaproponuje 
nowy czas uczenia, nowe podziały na pod-zbiory, nową architekturę itd.
Pierwszą sieć, o ile odpowiedź drugiej sieci nie jest całkowicie
nonsensowna, uczymy według propozycji drugiej sieci. W ten sposób 
uzyskamy kolejne dane uczące dla drugiej sieci. Cały proces zapętlamy.

Będę wdzięczny za uwagi.
Pozdrawiam

[toc] | [next] | [standalone]


#30694

Fromt-1 <t-1@todlaspamu.pl>
Date2017-09-18 16:23 +0200
Message-ID<opoktp$278$1@node1.news.atman.pl>
In reply to#30693
W dniu 2017-09-18 o 02:26, M.M. pisze:
> Druga sieć na wyjściu zaproponuje
> nowy czas uczenia, nowe podziały na pod-zbiory, nową architekturę itd.
> Pierwszą sieć, o ile odpowiedź drugiej sieci nie jest całkowicie
> nonsensowna, uczymy według propozycji drugiej sieci. W ten sposób
> uzyskamy kolejne dane uczące dla drugiej sieci. Cały proces zapętlamy.
> 
> Będę wdzięczny za uwagi.

Rysuje się więc układ potencjalnie niestabilny.
A ponieważ jest niewątpliwie układem dynamicznym, wielowymiarowym, 
nieliniowym i niestacjonarnym to trudno nawet oszacować jak się zachowa.

[toc] | [prev] | [next] | [standalone]


#30696

From"M.M." <mmarszik@gmail.com>
Date2017-09-18 13:08 -0700
Message-ID<36053383-c06d-40fd-b66e-4001f67f0dca@googlegroups.com>
In reply to#30694
On Monday, September 18, 2017 at 4:23:54 PM UTC+2, t-1 wrote:
> W dniu 2017-09-18 o 02:26, M.M. pisze:
> > Druga sieć na wyjściu zaproponuje
> > nowy czas uczenia, nowe podziały na pod-zbiory, nową architekturę itd.
> > Pierwszą sieć, o ile odpowiedź drugiej sieci nie jest całkowicie
> > nonsensowna, uczymy według propozycji drugiej sieci. W ten sposób
> > uzyskamy kolejne dane uczące dla drugiej sieci. Cały proces zapętlamy.
> > 
> > Będę wdzięczny za uwagi.
> 
> Rysuje się więc układ potencjalnie niestabilny.
> A ponieważ jest niewątpliwie układem dynamicznym, wielowymiarowym, 
> nieliniowym i niestacjonarnym to trudno nawet oszacować jak się zachowa.

Druga sieć jest po prostu aproksymatorem. Skuteczność sieci na zbiorze
testowym zależy głównie od: inicjalizacji wag, algorytmu uczenia, czasu
uczenia, podziału danych na pod-zbiory uczące/testowe i od architektury 
sieci. 

Przykład dotyczący architektury: zbyt dużo neuronów ukrytych doprowadzi 
do przeuczenia, zbyt mało do niedouczenia. I w jednym, i w drugim 
przypadku sieć kiepsko zachowa się na zbiorze testowym. Druga sieć,
na podstawie kilkudziesięciu danych uczących, może z jakimś
prawdopodobieństwem odgadnąć optymalną ilość ukrytych neuronów.

Pozdrawiam

[toc] | [prev] | [next] | [standalone]


#30695

FromSzyk Cech <szyk100@o2.pl>
Date2017-09-18 16:43 +0200
Message-ID<opom23$2b5$1@mx1.internetia.pl>
In reply to#30693
Nie znam się na SI, ale na logikę, skoro 1 sieć jest jedynie 
przybliżeniem rozwiązania problemu, to czy nauczona na niej druga sieć 
nie będzie czasem gorszym przybliżeniem rozwiązania problemu?!?

[toc] | [prev] | [next] | [standalone]


#30697

From"M.M." <mmarszik@gmail.com>
Date2017-09-18 13:21 -0700
Message-ID<a933e9c8-6eca-4b54-9f6d-371493b43733@googlegroups.com>
In reply to#30695
On Monday, September 18, 2017 at 4:43:16 PM UTC+2, Szyk Cech wrote:
> Nie znam się na SI, ale na logikę, skoro 1 sieć jest jedynie 
> przybliżeniem rozwiązania problemu, to czy nauczona na niej druga sieć 
> nie będzie czasem gorszym przybliżeniem rozwiązania problemu?!?

Tak, jakby druga sieć uczyła się tego samego co pierwsza, to albo
byłoby tak jak piszesz, albo jeszcze gorzej. Pierwsza sieć uczy
się na zupełnie innych danych. 

Przykład:
Mamy zbiór X jakiś danych. Przygotowujemy 10 różnych eksperymentów 
uczenia. W każdym eksperymencie używamy sieci o innej architekturze, w
pierwszym mamy 5 neuronów, w drugim w drugim 10, itd aż do 50.  
Uczymy pierwszą sieć w każdym eksperymencie i testujemy na zbiorze 
uczącym. Następnie tworzymy zbiór Y danych. W zbiorze Y będzie 
początkowo 30 wektorów. Wejście w tych wektorach będzie stanowiła 
skuteczność sieci na zbiorze testowym. Wyjście 5, 10, itd aż do 50
neuronów. Na tych 30tu wektorach uczymy drugą sieć. Następnie na
wejście podajemy drugiej sieci wartość 100%, bo chcemy uzyskać
skuteczność 100%. Druga sieć na wyjściu poda np. 38 neuronów. Więc
do następnego eksperymentu używamy w pierwszej sieci 38 neuronów.

Pozdrawiam

[toc] | [prev] | [standalone]


Back to top | Article view | pl.comp.programming


csiph-web