-
91. Data: 2013-04-18 22:58:41
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: 3d <d...@...niebie>
W ciemnym zaułku dnia Thu, 18 Apr 2013 17:36:02 +0200, bartekltg
<b...@g...com> wymamrotal:
> Nadal obstawiam, żę wynik będzie dość bliski proporcji
> przy porównaniu algorytmów dla całych macierzy.
> (Pewnie masz inny sprzet, wiec x16 z bloga jest neimiarodajne)
Z innej strony: spodziewam się jednak większego przyspieszenia
w mandelbrocie że względu na ram w mnozeniu macierzy. Tam
trzeba wczytac cały tile, sumowac, zapisać a na koniec o ile
dobrze kojarze połączyć cząstkowe wyniki. W mandelbrocie są
praktycznie same obliczenia.
Wcześniej mi umknął argument, że nie zrownoleglili cpu i nie używam
matlaba prawie wcale więc może masz rację. Taki wpis na blogu.
Nie wiem gdzie znaleźć faktyczne przepustowości cpu ale gpu
dzisiaj mają po kilka TFlopow.
--
3d
-
92. Data: 2013-04-18 23:05:57
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: 3d <d...@...niebie>
W ciemnym zaułku dnia Thu, 18 Apr 2013 04:47:50 -0700 (PDT), firr
kenobi <p...@g...com> wymamrotal:
> no spoko, w sumie nawet ciekawe
> (sam kod avx wlasciwie taki sam
> jak ta wersja softlab testowana
> przeze mnie - skad pomysl by to
> tak rozwinac na 12 pikseli ?
> 12 pikseli dziala najszybciej ?
Metodą prób i błędów.
Gdybym miał dorabiać teorię, w obu algorytmach 12
było optymalne pewnie przez wysycenie jednostek i
kolejki. Samo liczenie po 4 wykorzystuje operacje
ale w asm oprócz przepustowości w cyklach liczy
się też latency - np 2 operacje na cykl ale wynik jest
po 3 cyklach. Dlatego liczenie z przeplotem mogło
dac wynik 2x szybciej.
--
3d
-
93. Data: 2013-04-19 20:54:57
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: "M.M." <m...@g...com>
On Thursday, April 18, 2013 5:35:15 PM UTC+2, Edek wrote:
> No bo nie mam zbyt wysokiego mniemania o NN w sensie ogólnym.
Ach to o to chodziło :) Mnie strasznie wkurza propaganda SSN. Czasami
można odnieść wrażenie, że naprawdę programista jedzie na wakacje, a w
tym czasie sieć neuronowa pisze za niego program. W praktyce należy
spodziewać się że będzie odwrotnie i rozwiązanie na bazie SSN będą
wymagały większego nakładu pracy, nie wspomniawszy o klastrach
obliczeniowych do treningu i eksperymentów. Niemniej jestem entuzjastą
rozwiązań w których sztuczna sieć neuronowa pełni jakąś pomocniczą rolę.
> Jak to mówią ludzie z front-office, fajnie działają, ale nie da się
> tego sprzedać, bo to black-box - na pytanie "jak to działa w konkretnym
> przypadku" można rybkę szczelić.
Racja, a to zaledwie wierzchołek góry lodowej problemów SSN. Trudno (bardzo
trudno) na bazie wyuczonej sieci wywnioskować jaki ona w istocie realizuje
algorytm, kiedy ten algorytm zadziała, a kiedy zawiedzie. Nawet gdy sieć ma
niezbyt dużo połączeń/wag to trudno jest się uczyć od wyuczonej sieci. Od
wielu innych metod uczenia maszynowego można się czegoś dowiedzieć niczym
od nauczyciela.
A czy fajnie działają? Nie wiem czy tak fajnie... W moich szachach działają
rewelacyjnie, ale opracowanie i implementacja choćby algorytmy
przygotowującego dane zajęło mi wiele wiele miesięcy, jeśli nie lat. Jak
dam tak po prostu dane z gier, czy dane graczy do uczenia, to mam
powiedzmy 90% szans na całkowicie bezsensowny efekt i jakieś 10% na efekt
kiepski :) Tak więc rola sieci neuronowej w tej całej zabawie jest
marginalna, rewelacyjne działanie wynika z tzw "dodatków" które
okazują się najważniejsze.
> Dodatkowo NN to artefakt ideologii AI, gdzie mapowanie mózgu przesłania
> mapowanie umysłu, a tu już się kłania lingwistyka.
Hmmm nie wiem :) Ja stawiam (wiem że kontrowersyjną) hipotezę, że mózg to
antena, analogiczna jak oczy, czy uszy.
> Praktycznie ja najpierw zrobiłem typowe NN, gdzie zrównoleglanie było
> banalne, a potem zrobiłem coś takiego:
Typowe, warstwowe, jednoprzebiegowe sieci powinny się zrównoleglać
prawie liniowo. W przypadku bardziej skomplikowanych sieci, można
zrównoleglać obliczanie błędu i/albo gradientu.
> I to już zaczęlo mnie uczyć kombinowania w programowaniu gpu. Naprawdę
> trzeba się namęczyć.
Gdy się rozważa siedząc w wygodnym fotelu, to nie wydaje się trudne, ale
w praktyce... wierzę że jest co tuningować przez długie tygodnie.
Pozdrawiam
-
94. Data: 2013-04-19 21:43:15
Temat: Re: Rozwijanie petli
Od: firr kenobi <p...@g...com>
W dniu czwartek, 18 kwietnia 2013 23:05:57 UTC+2 użytkownik 3d napisał:
> W ciemnym zaułku dnia Thu, 18 Apr 2013 04:47:50 -0700 (PDT), firr
>
> kenobi <p...@g...com> wymamrotal:
>
> > no spoko, w sumie nawet ciekawe
>
> > (sam kod avx wlasciwie taki sam
>
> > jak ta wersja softlab testowana
>
> > przeze mnie - skad pomysl by to
>
> > tak rozwinac na 12 pikseli ?
>
> > 12 pikseli dziala najszybciej ?
>
>
>
> Metodą prób i błędów.
>
>
>
> Gdybym miał dorabiać teorię, w obu algorytmach 12
>
> było optymalne pewnie przez wysycenie jednostek i
>
> kolejki. Samo liczenie po 4 wykorzystuje operacje
>
> ale w asm oprócz przepustowości w cyklach liczy
>
> się też latency - np 2 operacje na cykl ale wynik jest
>
> po 3 cyklach. Dlatego liczenie z przeplotem mogło
>
> dac wynik 2x szybciej.
>
no wlasnie to zdaje sie nie dlatego f1() f2() f1() f2()
jest szybsze ze bo f1-f2 rozgrzewają sobie kaszę tylko
dlatego ze f1() f1() f1() f1() blokuje sama siebie
np z moich pobieznych testów (niezbyt dokladnych
i moga byc bledy wyszlo ze mov [edx], xmm kosztuje
bardzo malo mov xmm, [edx] tez malo choc chyba wiecej
natomiast para mov [edx], xmm mov xmm, [edx] nagle
kilkukrotnie wiecej, to pewnie jest przypadek gdy
troughput spada do konfliktów na latency
-
95. Data: 2013-04-20 09:43:25
Temat: Re: Rozwijanie petli
Od: "M.M." <m...@g...com>
On Friday, April 19, 2013 9:43:15 PM UTC+2, firr kenobi wrote:
> no wlasnie to zdaje sie nie dlatego f1() f2() f1() f2()
> jest szybsze ze bo f1-f2 rozgrzewają sobie kaszę tylko
> dlatego ze f1() f1() f1() f1() blokuje sama siebie
> np z moich pobieznych testów (niezbyt dokladnych
> i moga byc bledy wyszlo ze mov [edx], xmm kosztuje
> bardzo malo mov xmm, [edx] tez malo choc chyba wiecej
> natomiast para mov [edx], xmm mov xmm, [edx] nagle
> kilkukrotnie wiecej, to pewnie jest przypadek gdy
> troughput spada do konfliktów na latency
Jedna instrukcja asemblera dzielona jest na wiele (w nowych prockach
chyba na kilkanaście) mikro instrukcji. Jeśli jedna instrukcja
koliduje z drugą na poziomie tych mikro instrukcji, to procesor
musi czekać aż się wykonają wszystkie (albo jakaś część)
mikro-instrukcje - pewnie dłuższy czas wynika z opóźnienia.
Pozdrawiam
-
96. Data: 2013-04-21 17:58:27
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: Edek <e...@g...com>
Dnia Fri, 19 Apr 2013 11:54:57 -0700 po głębokim namyśle M.M. rzekł:
> On Thursday, April 18, 2013 5:35:15 PM UTC+2, Edek wrote:
>
>> No bo nie mam zbyt wysokiego mniemania o NN w sensie ogólnym.
> Ach to o to chodziło :) Mnie strasznie wkurza propaganda SSN. Czasami
> można odnieść wrażenie, że naprawdę programista jedzie na wakacje, a w
> tym czasie sieć neuronowa pisze za niego program. W praktyce należy
> spodziewać się że będzie odwrotnie i rozwiązanie na bazie SSN będą
> wymagały większego nakładu pracy, nie wspomniawszy o klastrach
> obliczeniowych do treningu i eksperymentów. Niemniej jestem entuzjastą
> rozwiązań w których sztuczna sieć neuronowa pełni jakąś pomocniczą rolę.
To jest główna idea tych sieci. Po co robić analizę statystyczną czy
budować wiedzę bayesem jak można zapuścić sieć. I nawet działa w
przypadku "płynnych dziedzin" typu wsparcie wycofywania kilkuosiowej
ciężarówki. Ale już przy kwantyfikowanych danych i relacjach minimalizacja
to nie to co misie lubią najbardziej.
>> Jak to mówią ludzie z front-office, fajnie działają, ale nie da się
>> tego sprzedać, bo to black-box - na pytanie "jak to działa w konkretnym
>> przypadku" można rybkę szczelić.
> Racja, a to zaledwie wierzchołek góry lodowej problemów SSN. Trudno
> (bardzo trudno) na bazie wyuczonej sieci wywnioskować jaki ona w istocie
> realizuje algorytm, kiedy ten algorytm zadziała, a kiedy zawiedzie.
> Nawet gdy sieć ma niezbyt dużo połączeń/wag to trudno jest się uczyć od
> wyuczonej sieci. Od wielu innych metod uczenia maszynowego można się
> czegoś dowiedzieć niczym od nauczyciela.
Mało wiem o siciach, ale niektórzy właśnie się odgrażali, że najpierw
zrobią sieć, potem zobaczą co wyjdzie, a na koniec zanalizują i się
czegoś dowiedzą. Mi to podejście wydaje się atrakcyjne, skoro uczymy
się od natury, że zwrotne delfiny mają "poszarpane" płetwy i tak
można zbudować lepszą łódź podwodną, to czemu nie symulować natury,
żeby nauczyć się rozwiązywać problemy nie występujące w naturze -
chyba że istnieją misie wycofujące "Long Vehicles" o czym nie wiem ;)
To trochę naginana teoria z tym modelowaniem przyrody, ale ma jeszcze
jakiś sens.
> A czy fajnie działają? Nie wiem czy tak fajnie... W moich szachach
> działają rewelacyjnie, ale opracowanie i implementacja choćby algorytmy
> przygotowującego dane zajęło mi wiele wiele miesięcy, jeśli nie lat. Jak
> dam tak po prostu dane z gier, czy dane graczy do uczenia, to mam
> powiedzmy 90% szans na całkowicie bezsensowny efekt i jakieś 10% na
> efekt kiepski :) Tak więc rola sieci neuronowej w tej całej zabawie jest
> marginalna, rewelacyjne działanie wynika z tzw "dodatków" które okazują
> się najważniejsze.
Mało mam praktyki, ale sporo znam teorii. Chociażby wg. modeli
matematycznych gęstość informacji jest inna w neuronach z funkcją
ciągłą i nieciągłą. Czyli jak masz back-propagation mnożesz
minimalizować, ale za pomocą nieciągłych da się przy tej samej liczbie
połączeń (aksjonów, tak?) uzyskać więcej kwantyfikowanych relacji. I to
o rzędy wielkości.
Ja właśnie tak przy okazji uczenia się CUDY coś takiego przetestowałem.
Powiedzmy: 3 layery 100x100 mają 3e4 linków. Layery 1000x1000 już
3e6. Wygląda mi to na straszną marnację mocy obliczeniowej i
przy okazji wcale nie odpowiada naturze. Więc jeżeli takie layery
mają 2 wymiary, to zrobiłem neurony mające kształ, powiedzmy dla
layerów 100x100 nauron miałby {x -3:7,y -10:10} - jak kolejny neuron
jest "w kształcie" połączenie jest. Od razu zrobiło się luźniej.
Potem: nieliniowość. W zasadzie funkcja była taka: y = x > .5 ? 1 : 0.
Zrobiłem też więcej layerów - skoro linków mniej, to można je łączyć
dwa-trzy layery w dół i nie działa prawo klasycznych sieci, że to
samo da się osiągnąć 3 layerami in-pośredni-out dzięki nieliniowości
- i uczyłem output layer gradientem, a pozostałe tak: jeżeli wynik jest
ok to nic się nie zmienia, jeżeli jest błąd to
link_delta = C * abs(e) * sign(source_firing - 0.5) * sign(target_firing
- 0.5), gdzie firing jest 0. lub 1. a C < 0. Czyli odwrotność
pozytywnego wzmocnienia a la Pawłow. A, i bez biasu, więc zawsze musi
być jakiś input bo inaczej ZIZO - zero in zero out.
Zrobiłem to tak dla picu, uczyłem się cudy i mało mnie interesowało,
czy te sieci będą się do czegokolwiek nadawać, ale jak się okazało
działa: sieć się bardzo fajnie uczyła, z tym że _nigdy_ nie uczyła
się do końca, zawsze błąd oscylował na niewielkim poziomie, powiedzmy,
że kilka % przypadków było źle. Testowałem operacje logiczne, a nie
"płynne" dzidziny. Dlatego o tym wspominam - szachy są skwantyfikowane,
nawet jeżeli wynik jest "to całkiem całkiem" a inny wynik "to trochę
lepiej".
>> Dodatkowo NN to artefakt ideologii AI, gdzie mapowanie mózgu przesłania
>> mapowanie umysłu, a tu już się kłania lingwistyka.
> Hmmm nie wiem :) Ja stawiam (wiem że kontrowersyjną) hipotezę, że mózg
> to antena, analogiczna jak oczy, czy uszy.
Yyyy... a powiesz co przez to rozumiesz?
>> Praktycznie ja najpierw zrobiłem typowe NN, gdzie zrównoleglanie było
>> banalne, a potem zrobiłem coś takiego:
> Typowe, warstwowe, jednoprzebiegowe sieci powinny się zrównoleglać
> prawie liniowo. W przypadku bardziej skomplikowanych sieci, można
> zrównoleglać obliczanie błędu i/albo gradientu.
Tak, dokładnie, z tym że tak jak napisałem nie liczyłem wcale gradientu.
A przynajmniej nie jego propagacji.
>> I to już zaczęlo mnie uczyć kombinowania w programowaniu gpu. Naprawdę
>> trzeba się namęczyć.
> Gdy się rozważa siedząc w wygodnym fotelu, to nie wydaje się trudne, ale
> w praktyce... wierzę że jest co tuningować przez długie tygodnie.
Ano. Fajnie jest mieć pomysł, ale potem trzeba na parę dni zakasać
rękawy. Oby na kilku dniach się skończyło...
--
Edek
-
97. Data: 2013-04-21 19:31:23
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: Edek <e...@g...com>
Dnia Sun, 21 Apr 2013 15:58:27 +0000 po głębokim namyśle Edek rzekł:
> link_delta = C * abs(e) * sign(source_firing - 0.5) * sign(target_firing
> - 0.5), gdzie firing jest 0. lub 1. a C < 0. Czyli odwrotność
Oczywiście walnąłem się w opisie... miało być tak, że dla dowolnego
layera w przypadku błędu na outpucie te które wypaliły mają mniej
wypalać, a te które nie wypaliły mogą być potem bardziej wzbudzane.
To swoją drogą dobrze reguluje ilość aktywnych neuronów.
--
Edek
-
98. Data: 2013-04-22 01:26:20
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: 3d <d...@...niebie>
W ciemnym zaułku dnia Thu, 18 Apr 2013 05:03:33 -0700 (PDT), firr
kenobi <p...@g...com> wymamrotal:
> hehe - spox ale nie dziw
> sie ze nie chce rozmawiac z osobami proponujacymi rozmaowa na tego
typu poz=
> iomie (wiecej meki w brnieciu przez glupote
> rozmowcy niz pożytku)
--
3d
-
99. Data: 2013-04-23 12:13:42
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: "M.M." <m...@g...com>
Dnia Fri, 19 Apr 2013 11:54:57 -0700 po g��bokim namy�le M.M. rzek�:
>> On Thursday, April 18, 2013 5:35:15 PM UTC+2, Edek wrote:
>>
>>> No bo nie mam zbyt wysokiego mniemania o NN w sensie og�lnym.
>> Ach to o to chodzi�o :) Mnie strasznie wkurza propaganda SSN. Czasami
>> mo�na odnie�� wra�enie, �e naprawd� programista jedzie na wakacje, a w
>> tym czasie sie� neuronowa pisze za niego program. W praktyce nale�y
>> spodziewa� si� �e b�dzie odwrotnie i rozwi�zanie na bazie SSN b�d�
>> wymaga�y wi�kszego nak�adu pracy, nie wspomniawszy o klastrach
>> obliczeniowych do treningu i eksperyment�w. Niemniej jestem entuzjast�
>> rozwi�za� w kt�rych sztuczna sie� neuronowa pe�ni jak�� pomocnicz�
rolďż˝.
> To jest główna idea tych sieci. Po co robić analizę statystyczną czy
> budować wiedzę bayesem jak można zapuścić sieć. I nawet działa w
> przypadku "płynnych dziedzin" typu wsparcie wycofywania kilkuosiowej
> ciężarówki. Ale już przy kwantyfikowanych danych i relacjach minimalizacja
> to nie to co misie lubią najbardziej.
Generalnie miałem problemy z uzyskaniem dobrych wyników przy pomocy SSN jeśli
sieć na wejście otrzymywała dane bez zaawansowanego przetworzenia. Jeśli
dane były np. tylko przeskalowane i znormalizowane to w trudniejszych zadaniach
sieć nie działała. Do tego dochodził drugi problem z doborem zbioru uczącego.
Gdy po prostu podawałem dane jakie były to też było kiepsko. W szachach
po pierwsze układ na szachownicy zamieniam na długi wektor rożnych statystyk.
Dopiero te statystyki są podawane na wejście sieci. Po drugie używam specjalnego
algorytmu do budowy danych uczących. Jeśli dane sobie wylosuję, albo wezmę z
jakiś gier dobrych graczy, to jest kicha.
Przyjąłem więc założenie, że sieć popełni błędy w jakiś sposób "adekwatne"
do usterek w jej wyuczeniu. Ta adekwatność intuicyjnie wydaje się uzasadniona,
ale ściśle nie potrafię tego uzasadnić. Więc źle wyuczona sieć popełnia błędy
adekwatne do swojego złego wyuczenia i do danych uczących dostają się akurat
takie dane, które powodują, że zbiór uczący jest... chciałoby się rzec
bardziej reprezentatywny. Jednak też nie chodzi o reprezentatywność. Po prostu
do danych uczących dostają się dane bardziej odpowiednie do dobrego wyuczenia
sieci. Cały proces jest zapętlony, czyli zapętlone są trzy etapy: granie,
uzupełnianie zbioru uczącego i uczenie. Po kilku, maksymalnie kilkunastu
pętlach sieć osiąga swój szczyt umiejętności, potem wraz z ilością pętli
umiejętności spadają. Nie znalazłem odpowiedzi na pytanie dlaczego spadają.
Niemniej to dodatkowo potwierdza to tezę, że nie można użyć dowolnego
zbioru uczącego - zbiór musi być odpowiedni.
Jeśli sieć osiąga swoje maksimum po takich kilku - kilkunastu iteracjach, to
nie pozostaje nic innego, jak najlepsze wyniki zapamiętać, wagi sieci
zresetować i zacząć następne kilkanaście iteracji. Ostatecznie można wziąć
najlepszą z najlepszych. Myślę że przykład szachów pokazuje trzy typowe
problemy jakie napotyka się w praktyce przy sieciach:
1) przetworzenie danych wejściowych
2) dobór zbioru uczącego
3) dobór czasu uczenia
Do tego dochodzi problem czwarty, czyli dobór architektury sieci - w swoich
eksperymentach niby dotarłem do tego etapu, ale jak na razie go nie przebrnąłem.
Na ogół wyniki bardziej rozbudowanych architektur były gorsze, czas uczenia
tysiące razy dłuższy, nigdy nie było wiadomo czy uczenie nie utknęło w
płytkim minimum lokalnym, itd. Dobór architektury to bardzo trudna sprawa.
Uważam że generalnie tak jest w stosowaniu SSN, czyli kupa trudnych
problemów do rozwiązania.
>>> Jak to m�wi� ludzie z front-office, fajnie dzia�aj�, ale nie da si�
>>> tego sprzeda�, bo to black-box - na pytanie "jak to dzia�a w konkretnym
>>> przypadku" mo�na rybk� szczeli�.
>> Racja, a to zaledwie wierzcho�ek g�ry lodowej problem�w SSN. Trudno
>> (bardzo trudno) na bazie wyuczonej sieci wywnioskowaďż˝ jaki ona w istocie
>> realizuje algorytm, kiedy ten algorytm zadzia�a, a kiedy zawiedzie.
>> Nawet gdy sie� ma niezbyt du�o po��cze�/wag to trudno jest si� uczy�
od
>> wyuczonej sieci. Od wielu innych metod uczenia maszynowego mo�na si�
>> czegoďż˝ dowiedzieďż˝ niczym od nauczyciela.
> Mało wiem o siciach, ale niektórzy właśnie się odgrażali, że najpierw
> zrobić sieć, potem zobaczyć co wyjdzie, a na koniec zanalizują i się
> czegoś dowiedzą.
Dużo zależy od tego jaką analizę chcą przeprowadzić. Jakiś czas temu
miałem dużo bardzo niepewnych danych. Chciałem się dowiedzieć czegoś o
rozkładach. Napisałem na kolanie aproksymator, a jako funkcji aproksymującej
użyłem krzywej łamanej. Krzywa łamana ma dużą swobodę w aproksymacji,
równie dobrze może wyjść totalna sieczka, co jakiś elegancki kształt
potwierdzający przypuszczenia intuicyjne. Nic nie stoi na przeszkodzie,
aby sieci neuronowej użyć jako takiego aproksymatora, a potem chociażby
odrysować przy jej pomocy jakiś wykres i się czegoś nauczyć. Być może
jest jeszcze kilka innych sprytnych sposobów uczenia się od wytrenowanej
sieci, ale na podstawie analizy wartości wag i połączeń w dużej sieci to
bym nie chciał się uczyć od sieci :)
> Mi to podejście wydaje się atrakcyjne, skoro uczymy
> się od natury, że zwrotne delfiny mają "poszarpane" płetwy i tak
> można zbudować lepszą łódź podwodną, to czemu nie symulować natury,
> żeby nauczyć się rozwiązywać problemy nie występujące w naturze -
> chyba że istnieją misie wycofujące "Long Vehicles" o czym nie wiem ;)
Czasami prawidłowy tok rozumowania wygląda właśnie tak przedstawiłeś. Jeśli
coś w jednym przypadku poskutowało, to i w drugim poskutuje, zwłaszcza gdy w
drugim dokonamy jakiś modyfikacji. W naturze poskutokowały siły
napędzające ewolujcę w dziedzinie optymalizacji organizmów żywych. Więc jak
poskutkowały w optymalizacji ogranizmów żywych, to atrkacyjne wydaje się
zaprzęgnięcie ich do optymalizacji czegoś innego. Jednak rodzi się szereg
pytań:
1) Jakie siły napędzają ewolujcę? Na pewno nie napędza jej przypadek. Atom
węgla nie zmienia się przypadkowo w atom nieznanego pierwiastka, a
grawitacja nie zienia się losowo w antygrawitację, ani nawet nie
zmienia się jej siła co losowy czas o losową wartość - to samo
ma się z pozostalymi prawami fizycznymi i z właściwościami związków
chemicznych.
2) Czy optymalizacja algorytmu wycofywania ciężarówki jest w ogóle
możliwa przy pomocy sił podobnych do tych które napędzaly ewolucję?
Łódź podwodna porusza się świetnie pod wodą, ale po drodze szybkiego
ruchu nie pojedzie, nawet po istotnych modyfikacjach. Nie wiemy jaka
jest natura sił optymalizujących ogranizmy żywe, więc nie wiemy
jakie mają pole zastosowań i po jakich modyfikacjach.
3) Czy ogranizmy żywe w ogóle były optymalizowane? Może materia ma
taką cechę, że jak się potrzasa odpowiednimy substancjami chmicznymi
w odpowiednich warunkach, to powstaje życie.
Ja stawiam 50 dolców na wersję trzecią.
> To trochę naginana teoria z tym modelowaniem przyrody, ale ma jeszcze
> jakiś sens.
Ma sens i generalnie podoba mi się, ale do póki siły ewolucyjne do
komputera wkładamy "na chama" to uzyskamy podobnej skuteczności jak w
optymalizacji oka ćmy. Przypadek oznacza brut-force, a to nawet na
zadaniu u małym rozmiarze zarżnie komputer molekularny zwany kosmosem.
Naturalne algorytmy ewolucyjne są bardzo wyrafinowane, a z powodu
samego chaotycznego mieszania się substancji chemicznych, nie mamy
prawa stawiać przypadku u ich podstaw.
>> A czy fajnie dzia�aj�? Nie wiem czy tak fajnie... W moich szachach
>> dzia�aj� rewelacyjnie, ale opracowanie i implementacja cho�by algorytmy
>> przygotowuj�cego dane zaj�o mi wiele wiele miesi�cy, je�li nie lat. Jak
>> dam tak po prostu dane z gier, czy dane graczy do uczenia, to mam
>> powiedzmy 90% szans na ca�kowicie bezsensowny efekt i jakie� 10% na
>> efekt kiepski :) Tak wi�c rola sieci neuronowej w tej ca�ej zabawie jest
>> marginalna, rewelacyjne dzia�anie wynika z tzw "dodatk�w" kt�re okazuj�
>> si� najwa�niejsze.
> Mało mam praktyki, ale sporo znam teorii. Chociażby wg. modeli
> matematycznych gęstość informacji jest inna w neuronach z funkcją
> ciągłą i nieciągłą. Czyli jak masz back-propagation mnożesz
> minimalizować, ale za pomocą nieciągłych da się przy tej samej liczbie
> połączeń (aksjonów, tak?) uzyskać więcej kwantyfikowanych relacji. I to
> o rzędy wielkości.
Czy ja wiem... funkcję skokową można dowolnie dobrze aproksymować
funkcją ciągłą - ale to teoria. Ja w praktyce napotykam na zupełnie
inne problemy niż opisywane w literaturze. Np. teraz stanąłem przed
zadaniem wyuczenia sieci (własciwie to dowolnego aprosymatora, niekoniecznie
sieci) na danych nie zawierających wyjścia :) Mam dane wejściowe, a nie mam
danych wyjściowych, nikt nawet nie umie oszacować jakie są wyjścia dla
danych wejściowych. I co począć? Jak mam wyuczyć sieć poprawnego wyjścia? :)
> Ja właśnie tak przy okazji uczenia się CUDY coś takiego przetestowałem.
Nom bo to fajne zadanie na cudę.
> Powiedzmy: 3 layery 100x100 mają 3e4 linków. Layery 1000x1000 już
> 3e6. Wygląda mi to na straszną marnację mocy obliczeniowej i
> przy okazji wcale nie odpowiada naturze. Więc jeżeli takie layery
> mają 2 wymiary, to zrobiłem neurony mające kształt, powiedzmy dla
> layerów 100x100 nauron miałby {x -3:7,y -10:10} - jak kolejny neuron
> jest "w kształcie" połączenie jest. Od razu zrobiło się luźniej.
Nie kumam.
> Potem: nieliniowość. W zasadzie funkcja była taka: y = x > .5 ? 1 : 0.
> Zrobiłem też więcej layerów - skoro linków mniej, to można je łączyć
> dwa-trzy layery w dół i nie działa prawo klasycznych sieci, że to
> samo da się osiągnąć 3 layerami in-pośredni-out dzięki nieliniowości
> - i uczyłem output layer gradientem, a pozostałe tak: jeżeli wynik jest
> ok to nic się nie zmienia, jeżeli jest błąd to
> link_delta = C * abs(e) * sign(source_firing - 0.5) * sign(target_firing
> - 0.5), gdzie firing jest 0. lub 1. a C < 0. Czyli odwrotność
> pozytywnego wzmocnienia a la Pawłow. A, i bez biasu, więc zawsze musi
> być jakiś input bo inaczej ZIZO - zero in zero out.
Rozumiem ledwo ledwo, coś jakby sieć tokenowa.
> Zrobiłem to tak dla picu, uczyłem się cudy i mało mnie interesowało,
> czy te sieci będą się do czegokolwiek nadawaďż˝, ale jak się okazało
> działa: sieć się bardzo fajnie uczyła, z tym że _nigdy_ nie uczyła
> się do końca, zawsze błąd oscylował na niewielkim poziomie, powiedzmy,
> że kilka % przypadków było źle. Testowałem operacje logiczne, a nie
> "płynne" dzidziny. Dlatego o tym wspominam - szachy są skwantyfikowane,
> nawet jeżeli wynik jest "to całkiem całkiem" a inny wynik "to trochę˝
> lepiej".
Gdzieś mam (zabawowy) projekt sieci neuronowej do rozpoznawania liczb
pierwszych :) Ciekawe ile trzeba nieuronów/wag do prawidłowego rozpoznawania
wszystkich liczb pierszych nie większych niż N :D
>>> Dodatkowo NN to artefakt ideologii AI, gdzie mapowanie m�zgu przes�ania
>>> mapowanie umys�u, a tu ju� si� k�ania lingwistyka.
>> Hmmm nie wiem :) Ja stawiam (wiem �e kontrowersyjn�) hipotez�, �e m�zg
>> to antena, analogiczna jak oczy, czy uszy.
>Yyyy... a powiesz co przez to rozumiesz?
Czasami lubię wymyślać dziwne tezy, abym potem był zmuszony do ich bronienia :D
Gdy badacz obserwuje drzewo rosnące przed nim, to aby je zbadać, zajmuje
się drzewem, a w żadnym razie nie wydłubuje sobie oczu i nie zagląda do ich
środka :) Gdy badacz słyszy dźwięk upadającego kamienia i chce się o nim
czegoś dowiedzieć, to zajmuje się kamieniem, a nie swoimi uszami. Podobnie
jest z bodźcami węchowymi, dotykowymi, smakowymi. A gdy badać ma zajmować
się wspomnieniami, wyobrażeniami, skojarzeniami, snami, przemyśleniami, to
nagle ma się włamywać do wnętrza neuronów, a nie szukać źródła gdzieś na
zewnątrz. Podejrzany brak konsekwencji :D
Po drugie jak to możliwe żeby w 1-2kg materii dało się zbudować tak
niezwykły komputer? Mało tego, jak da się zakodować w tak małej
ilości informacji genetycznej wzór na powstawanie mózgu? Jeśli jest
to niemożliwe, to inteligencja jest gdzieś poza neuronami.
Pozdrawiam
-
100. Data: 2013-04-23 20:54:36
Temat: Re: Podpis cyfrowy większej ilości podmiotów
Od: Edek <e...@g...com>
Dnia Tue, 23 Apr 2013 03:13:42 -0700 po głębokim namyśle M.M. rzekł:
> Przyjąłem więc założenie, że sieć popełni błędy w jakiś sposób
> "adekwatne" do usterek w jej wyuczeniu. Ta adekwatność intuicyjnie
> wydaje się uzasadniona,
> ale ściśle nie potrafię tego uzasadnić.
Zostawiłem cytując tylko ten fragment, bo pięknie oddaje "naturę"
sieci :)
> Uważam że generalnie tak jest w stosowaniu SSN, czyli kupa trudnych
> problemów do rozwiązania.
W uczenie algorytmów trzeba zawsze włożyć sporo pracy. Mi się tylko
nie podoba zbytnio skutek: no, ta sieć wyszła lepiej od innych
(ale "dlaczego" to mam blade pojęcie i kilka hipotez...).
> Dużo zależy od tego jaką analizę chcą przeprowadzić. Jakiś czas temu
> miałem dużo bardzo niepewnych danych. Chciałem się dowiedzieć czegoś o
> rozkładach. Napisałem na kolanie aproksymator, a jako funkcji
> aproksymującej użyłem krzywej łamanej. Krzywa łamana ma dużą swobodę w
> aproksymacji,
> równie dobrze może wyjść totalna sieczka, co jakiś elegancki kształt
> potwierdzający przypuszczenia intuicyjne. Nic nie stoi na przeszkodzie,
> aby sieci neuronowej użyć jako takiego aproksymatora, a potem chociażby
> odrysować przy jej pomocy jakiś wykres i się czegoś nauczyć. Być może
> jest jeszcze kilka innych sprytnych sposobów uczenia się od wytrenowanej
> sieci, ale na podstawie analizy wartości wag i połączeń w dużej sieci to
> bym nie chciał się uczyć od sieci :)
Do minimalizacji, tu różnicy pomiędzy funkcją modelowaną a modelem
(niegdy nie pamiętam tego słowa... ;), nadają się bardzo dobrze.
> Ja stawiam 50 dolców na wersję trzecią.
Ja czasami też stawiam na wersję nr 3.
> Czy ja wiem... funkcję skokową można dowolnie dobrze aproksymować
> funkcją ciągłą - ale to teoria. Ja w praktyce napotykam na zupełnie inne
> problemy niż opisywane w literaturze. Np. teraz stanąłem przed zadaniem
> wyuczenia sieci (własciwie to dowolnego aprosymatora, niekoniecznie
> sieci) na danych nie zawierających wyjścia :) Mam dane wejściowe, a nie
> mam danych wyjściowych, nikt nawet nie umie oszacować jakie są wyjścia
> dla danych wejściowych. I co począć? Jak mam wyuczyć sieć poprawnego
> wyjścia? :)
Czy aby, jeżeli to jest możliwe, czyżby jednak, jeżeli dobrze się
domyślam, masz na myśli klasyfikację i Kohonena? Poza tym widzę, że
wybraliśmy inną literaturę. Naprawdę sieci z funkcją ciągłą dobrze
minimalizują ale mają mniejszą gęstość entropii (w luźnym tłumaczeniu).
>> Powiedzmy: 3 layery 100x100 mają 3e4 linków. Layery 1000x1000 już 3e6.
>> Wygląda mi to na straszną marnację mocy obliczeniowej i przy okazji
>> wcale nie odpowiada naturze. Więc jeżeli takie layery mają 2 wymiary,
>> to zrobiłem neurony mające kształt, powiedzmy dla layerów 100x100
>> nauron miałby {x -3:7,y -10:10} - jak kolejny neuron jest "w kształcie"
>> połączenie jest. Od razu zrobiło się luźniej.
> Nie kumam.
No nie łączy się każdy neuron z każdym neuronem następnego layera,
tylko do tych w pobliżu. Gdy jest każdy z każdym jest strasznie dużo
linków do przemielenia - po co. No i stosunek liczby linków do liczby
neuronów bardzo szybko rośnie wraz z wymiarami layerów gdy jest "każdy z
każdym" w klasycznej sieci z layerami 2d.
No i implementacja takiej banalnej sieci to nie uczenie się cudy.
> Gdzieś mam (zabawowy) projekt sieci neuronowej do rozpoznawania liczb
> pierwszych :) Ciekawe ile trzeba nieuronów/wag do prawidłowego
> rozpoznawania wszystkich liczb pierszych nie większych niż N :D
Spytaj Bartka ;)
>>>> Dodatkowo NN to artefakt ideologii AI, gdzie mapowanie m�zgu
>>>> przes�ania mapowanie umys�u, a tu ju� si� k�ania
>>>> lingwistyka.
>>> Hmmm nie wiem :) Ja stawiam (wiem �e kontrowersyjn�) hipotez�,
>>> �e m�zg to antena, analogiczna jak oczy, czy uszy.
>
>>Yyyy... a powiesz co przez to rozumiesz?
> Czasami lubię wymyślać dziwne tezy, abym potem był zmuszony do ich
> bronienia :D
>
> Gdy badacz obserwuje drzewo rosnące przed nim, to aby je zbadać, zajmuje
> się drzewem, a w żadnym razie nie wydłubuje sobie oczu i nie zagląda do
> ich środka :) Gdy badacz słyszy dźwięk upadającego kamienia i chce się o
> nim czegoś dowiedzieć, to zajmuje się kamieniem, a nie swoimi uszami.
> Podobnie jest z bodźcami węchowymi, dotykowymi, smakowymi. A gdy badać
> ma zajmować się wspomnieniami, wyobrażeniami, skojarzeniami, snami,
> przemyśleniami, to nagle ma się włamywać do wnętrza neuronów, a nie
> szukać źródła gdzieś na zewnątrz. Podejrzany brak konsekwencji :D
>
> Po drugie jak to możliwe żeby w 1-2kg materii dało się zbudować tak
> niezwykły komputer? Mało tego, jak da się zakodować w tak małej ilości
> informacji genetycznej wzór na powstawanie mózgu? Jeśli jest to
> niemożliwe, to inteligencja jest gdzieś poza neuronami.
Inteligencja jest w kulturze i języku. My się pod względem sporej
części genów i struktury mózgu nie różnimy - ok, powiedzmy że mam
na myśli samego siebie tak dla bezpieczeństwa dyskusji ;) - od
ludzi, którzy po raz pierwszy powiedzieli "Małpa kamień won!".
W lingwistyce w zasadzie wszystkie podstawowe struktury myślenia
abstrakcyjnego są rozwinięte na gruncie przestrzeni i obiektów - stąd
też w I klasie podstawówki uczymy się o podmiocie i orzeczeniu,
czyli "kamieniu łupanym". Od czasu ludzi pierwotnych rozwinęła się
bardziej wiedza i kultura niż nasze mózgi. Mamy też dłuższe życie
i lepsze zdrowie - więcej czasu na rozwijanie szachów i picie kawy ;)
--
Edek