Czy to jest rozwiązanie tajemnicy kodu liczb pierwszych?

0

Jak wiadomo niejeden matematyk zmagał się z rozwiązaniem zagadki liczb pierwszych i na podstawie tego co oglądałem nawet w jednym z filmów dokumentalnych to niejeden z najlepszych matematyków poległ na liczbach pierwszych a właściwie to próbie udowodnienia (albo obalenia) hipotezy Riemanna. Doszukiwano się jakichś prawidłowości w rozkładzie tych liczb, łamano sobie głowy, nie wiem tylko po co to wszystko, skoro od strony jakichś matematycznych dowodów te najtęższe umysły sobie nie poradziły.

A tu proszę:
https://www.ideone.com/Bb0WyY

Na bazie oryginalnego kodu w pythonie:
http://arctrix.com/nas/python/bpnn.py

Symulacja dotyczyła tego czy sieć typu MLP byłaby w stanie sobie poradzić z ustalaniem liczb pierwszych na bazie zestawu treningowego, konkretniej chodzi o pierwsze 16 tych liczb, z tym że reprezentacja jest w formie binarnej a sieć de facto aproksymuje i oblicza przybliżone wartości wyjść w taki sposób, żeby skrypt pythona poprawnie obliczył na podstawie wejść wszystkie 16 początkowych liczb pierwszych. Wyniki macie pod pierwszym linkiem.

Jest rzeczą jasną że tam gdzie metody algorytmiczne sobie nie dają to sieci neuronowe są nie do pobicia. Udowodniono zresztą że sieci typu Feed Forward są uniwersalnymi aproksymatorami funkcji, w tym akurat skrypcie została użyta struktura z jedną warstwą ukrytą i nawet to wystarczyło do rozwiązania tego problemu. I teraz tylko wystarczy nawet przemnożyć ustalone wagi przez wejścia a potem obliczyć z tego wartość funkcji aktywacji, zaokrąglić, przetworzyć z reprezentacji dwójkowej na dziesiętną i mamy wynik.

Po co matematycy zawracają sobie głowę udowadnianiem hipotezy Riemanna to nie wiem, nie wiem również jakie to miałoby znaczenie praktyczne, skoro chodzi wyłącznie o udowodnienie/obalenie, że wszystkie nietrywialne zera funkcji dzeta leżą na linii krytycznej? Sieć neuronowa jak widać sobie poradziła, z tym że w przedziale w którym się nauczyła a mając na uwadze to że działanie perceptronu i tak jest określone wzorami matematycznymi, to czyż to nie rozwiązuje przynajmniej częściowo tej zagadki?

0

Nie podoba mi się kod, za dużo zagnieżdżeń.

4

@drorat1, ta sieć wypisała dokładnie to czego się nauczyła (linie 128-146), ani jednej nowej liczby nie wymyśliła... równie dobrze możesz shardkodować 30 liczb pierwszych i wypisywać z tablicy.

Jakbyś poświęcił tyle czasu na przeczytanie tego kodu co na napisanie tego posta to być widział, że to nic odkrywczego.

Jak zrobisz sieć generującą kolejne liczby spoza zbioru uczącego to wtedy można gadać

2

Nie wiem o jakim rozwiązaniu tajemnicy Piszesz, niech sieć, w rozsądnym czasie, znajdzie nową liczbę pierwszą i dowód, że nie musimy jej testować, to wtedy pogadamy:)

1

0

Akurat w tym przykładzie co jest pod pierwszym linkiem nie ma żadnej możliwości wyznaczania kolejnej np. 17-tej, 18-tej itd liczby pierwszej no bo jak to sobie niby wyobrażacie, skoro NN ma tylko 4 wejścia (+ jeszcze jedno dodane automatycznie jako bias) a to obrazuje dane wejściowe w formie binarnej, czyli liczba od 0 do 15 co obrazuje w tym przypadku wyznaczenie 0 jako pierwszej liczby a 15 jako 16-tej liczby pierwszej.

Weźcie również pod uwagę, że np. do takiego pola BIGINT w MySQL to nie wpiszecie więcej niż 64 bitowej liczby całkowitej a więc jest już ograniczenie, podobnie jak z zakresem zmiennych int jeśli bazujecie na jakichś tam statycznych językach programowania. To jest jakiś problem zwiększyć w tym przypadku liczbę neuronów sieci? Czyli w takim przypadku 64 na wejście + 1 bias, 128 w jednej lub może dwóch warstwach ukrytych (trochę czytałem co do praktycznych zaleceń liczby neuronów w tych warstwach) i 64 neuronów na wyjściu, co obrazuje również 64-bitową liczbę pierwszą. I trening na wszystkich liczbach pierwszych z tego zakresu. Po co wyznaczać dalej kolejne liczby z poza tego zakresu, skoro ograniczenia zmiennych integer na to nie pozwalają?

Ja tylko nie rozumiem w jakim celu matematycy w ogóle zajmują się dowodzeniem tej hipotezy Riemanna i co taki dowód wniesie do naszego życia? Ale dobra, spoko, widzę że temat chyba nie jest wart zachodu, no to sobie odpuszczam.

0

Po co matematycy zawracają sobie głowę udowadnianiem hipotezy Riemanna to nie wiem, nie wiem również jakie to miałoby znaczenie praktyczne, skoro chodzi wyłącznie o udowodnienie/obalenie, że wszystkie nietrywialne zera funkcji dzeta leżą na linii krytycznej? Sieć neuronowa jak widać sobie poradziła, z tym że w przedziale w którym się nauczyła a mając na uwadze to że działanie perceptronu i tak jest określone wzorami matematycznymi, to czyż to nie rozwiązuje przynajmniej częściowo tej zagadki?

  1. Dlatego, że ma to zastosowanie również w innych dziedzinach nauki, np w fizyce.
  2. Ten kod liczy tylko dla 16 liczby. Równie dobrze mógłbym zebrać wszystkie superkomputery i puścić zwykłe sito erastotenesa, aby sobie liczyło w jakimś tam potężnym przedziale. Jeżeli ta sieć wyliczy nam nową liczbę pierwszą i co najważniejsze udowodni, że jest to liczba pierwsza, to wówczas będzie to coś ciekawego. Otóż jak widzisz dowód matematyczny daje nam pewność, że dane twierdzenie jest zgodne z prawdą i nasze wyniki są takie jakie zakładaliśmy. Mając udowodnioną hipotezę Riemanna będziesz miał gotowy wzór na liczby pierwsze. Po prostu podstawisz argument i dostaniesz wartość.
0

Ale ta hipoteza Riemanna wydaje się być zadaniem szalenie trudnym i możliwe że wykraczającym ponad możliwości ludzkiego umysłu, bo jak inaczej wytłumaczyć fakt, że nie została dotąd udowodniona/obalona a najtęższe umysły kapitulowały, co niektórzy zresztą się rozchorowali? Nie wiem czy nieudane wejście na K2 zimą jest tu dobrym porównaniem ale możliwe że to coś w ten deseń.

Ta sień neuronowa nie jest w stanie wyznaczyć nowej liczby pierwszej, ze względu na przyjęte założenia. Mnie chodziło o to że ponieważ zostało udowodnione że MLP są uniwersalnymi aproksymatorami funkcji:
https://pdfs.semanticscholar.org/f22f/6972e66bdd2e769fa64b0df0a13063c0c101.pdf

to poddałem pod zapytanie (nie zatytułowałem przecież wątku twierdząco) czy nie jest to pewnego rodzaju rozwiązanie (w zadanym przedziale liczb)? Tu znając wagi też w zasadzie można by wyznaczyć wzór (no spoko, dla tych tylko 16 liczb pierwszych), dla potrzeb dobrej interpretacji. W elektronice to też np. układy TTL dobrze interpretują pewne przedziały napięć jako 0 lub 1, więc nie musi być to dokładnie 0 albo 5V, tutaj też przyjąłem te założenia. Zrobię test dla większego zakresu i zobaczę co się będzie działo.

0

Po co matematycy zawracają sobie głowę udowadnianiem hipotezy Riemanna to nie wiem, nie wiem również jakie to miałoby znaczenie praktyczne, skoro chodzi wyłącznie o udowodnienie/obalenie, że wszystkie nietrywialne zera funkcji dzeta leżą na linii krytycznej? Sieć neuronowa jak widać sobie poradziła, z tym że w przedziale w którym się nauczyła a mając na uwadze to że działanie perceptronu i tak jest określone wzorami matematycznymi, to czyż to nie rozwiązuje przynajmniej częściowo tej zagadki?

Jeśli znajdziesz sieć neuronową o SKOŃCZONYM rozmiarze która będzie jakoś korelowała z nieskończonym zbiorem liczb pierwszych, to faktycznie
masz rację, hipoteza Riemanna z matematycznego punktu widzenia nie będzie niczym bardziej doniosłym niż ta sieć.

drorat1 napisał(a):

czy nie jest to pewnego rodzaju rozwiązanie (w zadanym przedziale liczb)?

No właśnie kruczek tkwi w tym "zadanym przedziale".

Pozdrawiam

Pozdrawiam

0

Ogólnie - fakt, że można sobie coś aproksymować jest czymś innym niż bycie pewnym na prawdziwość stwierdzenia.
Choćby dlatego że gdy się walniesz to masz potencjalnie co najmniej jeden punkt do sprawdzenia z głowy.

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