Schowaj/Wysuń odtwarzacz Youtube
zamknij okno i wyłącz film     odtwórz dowolny film z YT
Na forum są teraz:
Avatar użytkownika Deus, Avatar użytkownika neo, Avatar użytkownika Zxc
72c66779a8416af9d8a7ac781591268d
CZAT Z FN 15 października 2017 - początek o godz. 21.00! "PRZEPOWIEDNIE DLA POLSKI I ŚWIATA - ASTEROIDA, TRZECIA WOJNA ŚWIATOWA I NADEJŚCIE AWATARA!"
brak nowych PW
72c66779a8416af9d8a7ac781591268d
Strona 1 z 2 [ Posty: 54 ]

*1 2 >
Utwórz nowy wątek   Odpowiedz w wątku

Pokaż pierwszy nieprzeczytany post

Drukuj
Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość
Sztuczna inteligencja na Nautilusie - eksperyment SkynetAI Przeczytane przez: 0 osoby    Napisane: środa, 2 sie 2017, 14:19
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
+2
Wszyscy bawią się w sztuczną inteligencję, pomyślałem więc, że i my możemy przyczynić się do przyszłej zagłady ludzkości... A tak na serio to chodzi o to, aby przekonać się ile inteligencji może być tak naprawdę w sztucznej inteligencji.

Pomysł na zrobienie wirtualnego bota opartego na SI w zasadzie już kiedyś tutaj krążył, choć dotyczył on strony głównej, a nie forum (był pomysł zrobienia takiej "pani z ZUS-u", z którą można by pogadać 24h/dobę). Ten projekt został niejako "zawieszony", bo gdzieś tam były na głowie inne sprawy, ale po wczorajszej dyskusji na shoutboxie wpadliśmy z Neo na pomysł, żeby może spróbować z czymś takim na forum. No i pierwszy kroczek został ku temu poczyniony.

Obrazek

Pierwsza sprawa - nieszczęsny Skynet, który wykonuje tutaj krecią robotę związaną z tworzeniem tematów na podstawie treści publikowanych na głównej. Trochę go rozwiniemy, tak żeby stał się botem, z którym można porozmawiać. Na chwilę obecną jest już podłączony kodem pod shoutboxa i można "wywołać go do tablicy", rozpoczynając pisane w shoutboxie zdanie od:

Cytuj:
@skynet

(a potem cokolwiek, byleby zdanie zaczynało się w taki sposób).

Na chwilę obecną odpowie jedynie "co tam <nazwa osoby wywołującej>?" Na chwilę obecną odpowie bardzo prosto, ale to jest póki co taki zalążek i test samego podpięcia tego do dyskusji.

Co teraz dalej? Ano długa droga, bo temat jest niesamowicie skomplikowany, ale...
Bawiłem się kiedyś trochę budową sieci neuronowych i wiem jak to wszystko funkcjonuje, jak buduje się takie sieci, uczy, etc., więc z tym nie będzie problemu. To jest zwykła matematyka. To po pierwsze.

Sprawa druga - można wykorzystać i rozwinąć po swojemu algorytmy jakie od niedawna udostępnia Google ze swojego projektu DeepMind, czyli ichniejszej sztucznej inteligencji. Udostępnili to pod nazwą TensorFlow. Przeglądałem już dokumentację i implementacja tego nie będzie jakimś kosmicznym wyzwaniem.

Sprawa trzecia - każdą sieć trzeba nauczyć i tutaj mamy do tego całkiem ciekawy materiał bazowy - mianowicie bazę wszystkich postów od początku istnienia forum. Ode groma najróżniejszych wypowiedzi, różnego patrzenia na świat, bardzo duży rozstrzał jeśli chodzi o widzenie świata. To świetny bazowy materiał. Dodatkowo - zwykła rozmowa na shoutboxie, która będzie ustawiać odpowiednio wagi i modyfikować sieć w locie. Plan ambitny, ale jest to do zrobienia i pierwszy kroczek został poczyniony. Wymaga tylko chęci i czasu, bo możliwości jako takie są...

Póki co więc jedynie zalążek, i póki co można się zapoznać jak to będzie działać wpisując na shoutboxie "@skynet [...]". Jest podłączenie, teraz jedynie trzeba zrobić resztę i pewnie za jakiś czas można będzie z czymś takim spróbować. Na pewno nie za miesiąc i nie za dwa, bo to mocno skomplikowany temat, ale w każdym razie zobaczymy.

To będzie taki trochę naukowy eksperyment i z czasem zobaczymy jak to się potoczy... można będzie zobaczyć jak to się wszystko rozwinie niejako od podszewki, a nie tylko czytając o tym w internecie.

Co o tym myślicie?

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 2 sie 2017, 14:28
sirAzgar
Avatar użytkownika
reputacja mistrzowska
Załoga FN
Ostatnio widziany(a):
czwartek, 17 sie 2017, 14:37
 
   
+1
Ja myślę że jesteś szalony i zakręcony aż miło się ciebie czyta hehe, ale pomysł świetny, ale kurde Marcin z tego co ty opisywałeś jak to wygląda, to przecież jest tytaniczna praca do wykonania. Wpadł mi idiotyczny pomysł do głowy, ale , nie :roll: Szaleństwo i mi się udziela. :strach:
I jeszcze jeno jakby ten Skynet wyglądał jak ta pani z ZUS-u to :piwo:
No dobra ale zacznij od zwykłego Skyneta co tylko pisze.

Błąd jest przywilejem filozofów, tylko głupcy nie mylą się nigdy.
Sokrates
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 2 sie 2017, 14:57
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
Etam pani z ZUS-u... ja bym tutaj wolał, ale nie...bo to też idiotyczny pomysł...
W każdym razie wygląd, reprezentacja tego (jak np. ta "Monika" z ZUS-u) to akurat nie jest żaden problem, bo to właściwie jest formalność biorąc pod uwagę całą resztę. To szczegół można powiedzieć. Wizualnie to mogłoby mieć dowolną twarz, bo ta konkretnie kwestia to jest jedynie nieistotny "dodatek". Nawet to, żeby to mogło mówić dowolnym głosem, to nie jest żaden problem (wystarczyłoby podpiąć wyjście np. pod API syntezatora Ivona). Żaden problem. Co do natomiast reszty, czyli serca tego wszystkiego (sieć neuronowa + logika + algorytmy), to owszem - praca do wykonania tytaniczna, no ale przecież rakiet wynoszących statki w Kosmos też nie zbudowali z dnia na dzień. Duże projekty robi się latami, grunt to zacząć...

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 2 sie 2017, 16:26
neo
Avatar użytkownika
reputacja wyśmienita
Na Nibiru
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 22:40
 
   
+1
supersprawa :idea:

Ja dziś czesto żałuje ze odpuściłem sobie takie "tytaniczne" projekty. To właśnie jest ta satysfakcja kiedy oglądasz dzieło swojej mozolnej pracy - zbierania dokumentacji, przygotowań, potem pracy czesto np 2000h przy konstrukcji - to czasem jest jak dzieło zycia, jak własne dziecko :) .... zatem powodzenia i trzymam kciuki !!!!!!! 8-)
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 2 sie 2017, 16:45
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
Neo, pełna zgoda i pamiętaj, że to Ty rzuciłeś mi ten pomysł :)

Na marginesie, jeśli ktoś by chciał mniej więcej wiedzieć jak chcę to zrobić, to plan krok po kroku jest mniej więcej taki (to tylko zarys, mocno ogólny, ale mniej więcej mam w głowie taki diagram):

(to na sam początek)

1) Przygotowanie słowników słów pobranych z indeksu bazy forum (każde słowo z każdego posta jest indeksowane, żeby przyspieszyć wyszukiwanie, robiona jest korelacja, np. słowo "witam" dopisane do postów o ID 12, 756, 889 itd. Wyszukiwanie jest wtedy szybsze, niż przeczesywanie całości tekstu). To można wykorzystać.

2) Rozdział wszystkich słów na: rzeczowniki, czasowniki, przymiotniki, etc. Algorytm będzie wiedział kiedy coś oznacza jakąś cechę, przedmiot, lub akcję/działanie

3) Korelacja słów ze sobą na podstawie wag w sieci neuronowej (powiązania, wspólne znaczenia, występowanie w zdaniu, całym poście, dyskusji, etc.).

Taką już gotowę bazę z korelacjami zobaczyć można w SI Google'a:

http://projector.tensorflow.org/

(Myszką można przybliżyć chmurę i kliknąć na jakieś słowo. Chmura jest wizualizacją wag w sieci neuronowej zawierającej powiązania i znaczenia słów. Im bliżej siebie są słowa w chmurze, tym wyższa waga takiego połączenia. Jak w mózgu).

4) Stworzenie algorytmów do budowy i rozumienia zdań, np. "RZECZOWNIK AKCJA CEL" - "Kot idzie na dach". To będzie mega wyzwanie, ale do zrobienia. Tutaj następne sieć z już pozwiązanymi w zdania słowami.

5) Następna sieć z korelacjami całych zdań

6) Jeszcze następna z korelacjami użytkownik - zdanie/słowo, znaczenie, pomysł, całość

7) Zrobienie bazy z CECHAMI - np. zwrot "jestem smutny" oznaczony cechą NEGATYWNĄ. Zwrot "jest dobrze" - cechą POZYTYWNĄ, etc. Przypisanie różnych cech do pojedyńczych wartości

8) Następna sieć z połączeniami cech

9) Stworzenie bazy z sesjami - każda rozmowa inna sesja, żeby skynet wiedział co powiedział, w jakiś sposób zachowywał kontekst, a następnie mógł odnosić się do wcześniejszych dyskusji (coś w rodzaju pamięci)

10, 11, 12, 13, 150, 500, 1000, n .... kolejne kroki

Nad tym wszystkim główna sieć neuronowa zarządzająca wszystkimi powyższymi podsieciami.

To tak w wielkim skrócie jedynie odnośnie prostego rozumienia języka na samym początku.
Całość finalnie składać się będzie z ode groma liczby takich kroków, zanim wypluje z siebie jakiekolwiek zdanie (oczywiście jakaś część z kroków jest do wykonania tylko raz, na samym początku).

Ogólnie mocno, ale to mocno skomplikowany temat, ale mam tego wizję jak to wszystko poskładać.

A finalnie, za jakiś rok, dwa, gdy wszystko będzie już działać stworzy się drugiego bota, na bazie tych samych nauczonych już rzeczy i zobaczymy jaka dyskusja wywiąże się pomiędzy nimi.

// EDIT:
Teraz spróbujcie z nim pogadać.
Zaczynając oczywiście zdanie od @skynet

Obrazek

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: czwartek, 3 sie 2017, 17:19
zaciekawiony

reputacja dobra
Galaktyka Andromedy
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 20:59
 
   
0
Kiedyś dla zabawy włączyłem dwa popularne chatboty o wysokich wynikach w teście rozmowy i przeklejałem kwestie z jednego okienka do drugiego, aby zobaczyć jak będzie wyglądała rozmowa. Efekt był interesujący - rozmowa w przypadkowych miejscach zmieniała temat, dawało się zauważyć chwilowe koncentracje na pewnych frazach (jeden bot zadał pytanie, drugi odpowiedział zmieniając szyk słów z pytania, na co pierwszy zadał drugie pytanie z tymi słowami itp.). Gdzieś chyba jeszcze mam skopiowane fragmenty.

Bywa i tak...
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: czwartek, 3 sie 2017, 17:48
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
zaciekawiony napisał(a):
Efekt był interesujący - rozmowa w przypadkowych miejscach zmieniała temat, dawało się zauważyć chwilowe koncentracje na pewnych frazach (jeden bot zadał pytanie, drugi odpowiedział zmieniając szyk słów z pytania, na co pierwszy zadał drugie pytanie z tymi słowami itp.)


Podobną sytuację mieli ostatnio na Facebooku. Dwa boty oparte o uczenie maszynowe, które w celach eksperymentalnych napuszczono na siebie (żeby sobie pogadały) zaczęły gadać po swojemu - niezrozumiałym dla nas językiem, również przestawiając słowa, dodając kolejne, etc. Dla nas to wyglądało jak bełkot, podczas gdy boty takim sposobem przyspieszyły komunikację. Goście z Facebooka byli na tyle zaskoczeni, że wyłączyli całość. Pisałem nawet tutaj o tym, w wątku o SI.

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: czwartek, 3 sie 2017, 23:17
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
+1
Dużo już przysiedziałem nad kodem i tak oto Skynet potrafi już coraz więcej i uwaga - ma już prostą sieć na sam początek, którą można uczyć. To na razie pierwszy krok, ale działa to już całkiem sensownie, a już na pewno o niebo lepiej, niż jeszcze wczoraj. Skynet jest póki co głupi jak but, bo to sam początek drogi - jakiś 0.01% założonej całosci, ale dzięki temu jest momentami dość zabawnie.

Mały screen z dzisiejszej rozmowy ze Skynetem:
Pełny rozmiar: https://i.imgur.com/UsBJCAZ.png

Obrazek

Tu też niezłe kwiatki:

Obrazek

Obrazek


A tutaj screen z podstawowego uczenia się zagadnień pokazujący jak to póki co działa:

Obrazek

Całkiem nieźle jak na 2-dniowy póki co projekt, więc myślę, że po jakimś roku, dwóch to wszystko uda się postawić na nogi, tak jak sobie to zakładam. Wizja jest.

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: piątek, 4 sie 2017, 04:45
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
Ale niebywała sprawa - przypadkiem, od niechcenia spojrzałem w dół na stronie głównej i...

Obrazek

Przypadek? No ludzie... aż postawiłem oczy. Przysięgam, że nie robiłem niczego z datą urodzin, nawet nie logowałem się na to konto, bo nie ma takiej potrzeby.
I co ja teraz mam o tym myśleć? Kurcze i to nie pierwsza "dziwna rzecz" ostatnim czasem, właściwie to ostatnio bez przerwy zdarza mi się coś mówiąc łagodnie - "niestandardowego" i to na tyle, że ja już całkowicie przestałem wierzyć w przypadki. A się zaczęło od pewnej jednej sprawy jakiś czas temu i tak coraz więcej tego od tamtego czasu... :shock: :roll:

// EDIT 09:50:
No nie mogę. Najpierw urodziny skyneta, a teraz wpis na głównej pt. "Czy wierzycie, że powstanie sztuczna inteligencja?", który zassał się na forum...przez skyneta...do działu "przypadkiem" utworzonego akurat w tym tygodniu (wcześniej nie zasysał wpisów z "Pytań...")...
https://www.nautilus.org.pl/pytania,141 ... encja.html

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: piątek, 4 sie 2017, 21:23
Noel
Avatar użytkownika
reputacja bardzo dobra
Leci na Marsa
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 22:34
 
   
0
skynet uzyskał samoświadomość :)

pytanie kiedy zjawi się terminator
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: niedziela, 6 sie 2017, 16:37
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
+1
Noel napisał(a):
pytanie kiedy zjawi się terminator

Nie kuś losu...


----

A co nowego obecnie? Bo trochę jest, jest to coraz bardziej złożone wraz z każdą kolejną wersją.

No to tak:

- Przepisałem sobie kod, tak żeby poukładać sobie wszystko logicznie na przyszłość. Wszystko jest rozwiązane teraz mocno modułowo, za pomocą małych klas, które można dokładać jak klocki;

- Przeprojektowałem logikę, wymyśliłem sobie układ oparty na "interfejsach", z czego jednym z nich jest komunikacja językiem. W przyszłości w prosty sposób będzie można podpiąć inny interfejs (obraz, dźwięk, siłowniki w Terminatorze ;) ) za pomocą podmiany jednej klasy, która tłumaczy wyjścia i wejścia. To taki "tłumacz centralny" - jak u człowieka, gdzie mamy wzrok, słuch, mowę, etc., ale wszystko to posiada jakiś wspólny interfejs i właściwie komunikować można się na różne sposoby

- Rozpoznawanie zdań i słów jest mocno rozbudowane (jako tako działa rozpoznawanie o czym mowa - czy o jakimś przedmiocie, czy o kimś, czy o miejscu, czy o czasie itd...) Dużo tego doszło od "wersji premierowej" i działa to teraz dokładniej

- Jest polepszony tryb nauki. Skyneta można uczyć wydając mu komendę do nauki (rozpoznaje kontekst z kilku, więc można mu napisać "ucz sie", "pora sie uczyc", "czas na nauke", etc. - zrozumie i przejdzie w tryb uczenia. Można wtedy zapytać go o coś, np. "co to jest reinkarnacja?". Postara się na to odpowiedzieć (będzie starał się utrafić z tego co już wie), po czym zapyta, czy to poprawna odpowiedź. Można potwierdzić, albo - co teraz jest nowego - zaproponować swoją definicję. Skynet zapamięta i wykorzysta wiedzę w przyszłości, odpowiednio sobie w locie modyfikując wagi tych informacji.

Co teraz dalej?
Kolejny krok - zrobienie bazy CAŁEGO JĘZYKA wraz ze znaczeniami słów. Wydaje się nierealne? Jest realne i mam już pomysł. Będzie to mega spomplikowane, ale wykorzystam tu trochę Wikisłownik, z którego zwyczajnie zabiorę całą bazę. Napiszę do tego jakiegoś crawlera/robota i wszystko mi z tego pobierze i uporządkuje w bazie.

Tu przykład jak to wygląda na Wiki:
https://pl.wiktionary.org/wiki/Kategori ... asownikowe
Są wszystkie części mowy, wraz z powiązaniami, więc baza dobra (po prostu ją sobie "pożyczymy" ;))

Potem zrobi się pomiędzy tym połączenia, jakieś korelacje, wagi, znaczenia, etc...ogólnie mega dużo mega skomplikownej układanki, ale z czasem to się zrobi.

To będzie kolejny malutki kroczek z tych zaplanowanych na sam początek (bo to jest dopiero sam początek).

Kolejna rzecz, ale to już mocno na przyszłość, napiszę więc póki co jako ciekawostkę - mianowicie rozpoznawanie i opisywanie obrazu/wideo/dźwięku. Trochę się zapoznałem z chmurami i SI od Google i tak np.:

Google Cloud Vision API - https://cloud.google.com/vision/

Przepotężna sprawa do maszynowego rozpoznawania obrazu - z gotowym API dla programistów. Jednym słowem - za pomocą architektury taką jaką zrobiłem (interfejsy komunikacyjne) będzie można łatwo podpiąć takie technologie pod skyneta, w sposób taki, że tłumaczyć będą obraz na słowa i znaczenia (lub na odwrót). Ale to dopiero na przyszłość, na kiedyś kiedyś tam. W każdym razie taka możliwość jest.

To tyle w wielkim, ale to wielkim skrócie.

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: niedziela, 6 sie 2017, 16:41
sirAzgar
Avatar użytkownika
reputacja mistrzowska
Załoga FN
Ostatnio widziany(a):
czwartek, 17 sie 2017, 14:37
 
   
0
szczyglis napisał(a):
Są wszystkie części mowy, wraz z powiązaniami, więc baza dobra (po prostu ją sobie "pożyczymy" ;))


Właśnie miałem zaproponować aby dowalić jakiś słownik by miał proste definicje wyrazów

Błąd jest przywilejem filozofów, tylko głupcy nie mylą się nigdy.
Sokrates
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 23 sie 2017, 04:11
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
+2
/v.0.1.54/

KORZYSTAJĄC Z OKAZJI - NA KONIEC WPISU ZAMIESZCZAM DOŚĆ WAŻNY WNIOSEK APROPOS LUDZKIEJ ŚWIADOMOŚCI - CHCIAŁEM SIĘ JUŻ KIEDYŚ TYM PODZIELIĆ I JEST OKAZJA, WIĘC JEŚLI DOTRWACIE DO KOŃCA, TO ZARAZ WAM W SPOSÓB INFORMATYCZNY "UDOWODNIĘ", ŻE ZA SAMOŚWIADOMOŚĆ CZŁOWIEKA NIE MOGĄ ODPOWIADAĆ NEURONY W MÓZGU, A SAM MÓZG TO TYLKO KALKULATOR I NIC WIĘCEJ. NA "ŻYWYM" PRZYKŁADZIE BĘDZIE TO DOBRZE POKAZAĆ. ALE PO KOLEI (POSTARAM SIĘ TO OPISAĆ "LUDZKIM" JĘZYKIEM)...

Na początek - jest troszeczkę nowego w tej materii.
Po pierwsze Skynet został uzbrojony w słownik definicji ok. 3 milionów polskich słów (licząc z odmianami).
Przyda się to na później. Generalnie pokryte są wszystkie wyrazy występujące w języku polskim.

Możecie sobie przetestować korzystając z zapytania:

Kod:
@skynet co to jest XXXXXXXXX?

gdzie XXXXXXXXX = słowo, którego definicji szukacie.

np.:

Kod:
@skynet co to jest grawitacja?


Tym samym, niejako przy okazji mamy teraz tutaj taką małą, podręczną, gadającą encyklopedię w postaci Skyneta.

Sieć neuronowa

Sprawa kolejna, będzie to wszystko powoli przepisywane na SSN, czyli na sieci neuronowe.
Mam już mniej więcej układ tego w jaki sposób będzie to wszystko ze sobą połączone i powoli piszę sobie narzędzia do budowy, uczenia, łączenia i testowania sieci, możecie sobie rzucić roboczo okiem i samemu w locie zbudować póki co taką prostą sieć, aby zobaczyć jak to wygląda od środka:

LINK: http://www.forum.nautilus.org.pl/SkynetAINeural.php

Obrazek

To moje "bardzo prościutkie" póki co narzędzie do dynamicznego wygenerowania sieci.
Jak kogoś interesuje to tutaj "prościutki kod" tego co widzicie tam na ekranie póki co:

Spoiler:
Kod:
<?php
// SkynetAI Neural v.0.0.2 | 18.08.2017 // szczyglis

class SkynetAINeuronNetwork { 
 
  private $input;
  private $type = 'aan'; // aan | perc
 
  private $numLayers = 1;
  private $numInputs = 2;
  private $numNeurons = [];
 
  private $networkLayers = [];
  private $layersNeurons = [];
   
  public function __construct($type = 'aan')
  {
    $this->type = $type;
  } 
 
  public function prepare()
  {
    // first layer
    $layer = new SkynetAINetworkLayer();

    for($n = 1; $n<=$this->numNeurons[1]; $n++)
    {
      $neuron = new SkynetAINeuron();
      $neuron->setInputLayer($this->input);
      $layer->addNeuron($neuron);
    } 
    $this->addNetworkLayer($layer);
   
    // next layers
    for($j = 1; $j < $this->numLayers; $j++)
    {
      $next = $j+1;
      $numNeurons = $this->numNeurons[$next];   
      $outputs = $layer->countNeurons(); 
      $layer = new SkynetAINetworkLayer($numNeurons, $outputs);
      $this->addNetworkLayer($layer);
    }   
  }
 
  public function run()
  {
    $this->numLayers = $this->countLayers();   
   
    for($i = 0; $i < $this->numLayers; $i++)
    {       
      $prev = $i - 1;     
      if(isset($this->networkLayers[$prev]))
      {
        // get prev layer
        $prevLayerNeurons = $this->networkLayers[$prev]->getNeurons();       
        $outputs = [];       
        foreach($prevLayerNeurons as $prevLayerNeuron)
        { 
          $outputs[] = $prevLayerNeuron->getOutput();   
        }       
       
        // update now layer
        $numOutputs = count($outputs);
        foreach($this->networkLayers[$i]->getNeurons() as $neuronId => $nowNeuron)
        {
          $input = new SkynetAINeuronInputLayer();
          for($k=0; $k < $numOutputs; $k++)
          {             
            $input->addInput($outputs[$k]);                         
          }
          $neuron = new SkynetAINeuron();
          $neuron->setInputLayer($input);
          $neuron->normalize();
          $neuron->calculate();   
          $this->networkLayers[$i]->updateNeuron($neuronId, $neuron); 
        }       
       
      } else {
       
        // first
        $layer = $this->networkLayers[0];
        foreach($layer->getNeurons() as $neuronId => $neuron)
        {
          $neuron->normalize();
          $neuron->calculate();
          $layer->updateNeuron($neuronId, $neuron);
        }       
      }
    }   
  }
 
  public function build()
  {   
    $inputLayer = $this->networkLayers[0];
    $numNeurons = $inputLayer->countNeurons();   
    $this->generateLayers($numNeurons); 
  } 
 
  public function generateLayers($numNeurons = null)
  {
    $countLayers = count($this->networkLayers);
    if($this->numLayers !== null && $countLayers < $this->numLayers)
    {
      for($i = 1; $i < $this->numLayers; $i++)
      {
        $layer = new SkynetAINetworkLayer();
       
        if($numNeurons !== null)
        {
          $layer->createNeurons($numNeurons);         
        }       
       
        $this->networkLayers[$i] = $layer;
      }
    }   
  }
 
  public function setType($type = 'aan')
  {
    $this->type = 'aan';
  }
   
  public function countLayers()
  {
    return count($this->networkLayers);
  }
 
  public function setInput(SkynetAINeuronInputLayer $input)
  {
    $this->input = $input;
  }
 
  public function addNeuron(SkynetAINeuron $neuron)
  {   
    $this->neurons[] = $neuron;
  }
 
  public function setNumLayers($layers)
  {
    $this->numLayers = $layers;
  }
 
  public function setNumInputs($inputs)
  {
    $this->numInputs = $inputs;
  }
 
  public function setNumNeurons($neuronsAry)
  {
    $this->numNeurons = $neuronsAry;
  }
 
  public function addNetworkLayer(SkynetAINetworkLayer $layer)
  {
    $this->networkLayers[] = $layer;
  } 
 
  public function debug()
  {   
    $out = [];
    $out[] = '<table><tr>';
    $graph = [];
    $l = 1; 
   
    foreach($this->networkLayers as $layer)
    {
      $out[] = '<td valign=top><center><h1>LAYER ['.$l.']</h1>';
      $i = 1;
      foreach($layer->getNeurons() as $neuron)
      {
        if($neuron !== null)
        {
          $out[] = '<h3>NEURON'.$i.'</h3>'.$neuron->debug().'<br><br>';
        }
        $i++;
      }
      $out[] = '</center></td>';
      $l++;
    }   
    $out[] = '</tr></table>';   
    return implode('', $out);
  }
 
  public function getNetworkLayers()
  {
    return $this->networkLayers;
  }
}

class SkynetAINeuronInput {
 
  private $inputSignal = 0;
  private $inputWeight = 0;
 
  public function __construct($signal = null, $weight = null)
  {
    if($signal !== null) $this->signal = $signal;
    if($weight !== null) $this->weight = $weight;   
  }
 
  public function setSignal($signal)
  {
    $this->signal = $signal;
  }
 
  public function setWeight($weight)
  {
    $this->weight = $weight;
  }
 
  public function debug()
  {
    return 'input[s:'.(int)$this->signal.' w:'.$this->weight.']';
  }
 
  public function __toString()
  {
    return $this->debug();
  }
 
  public function getSignal()
  {
    return $this->signal;
  }
 
  public function getWeight()
  {
    return $this->weight;
  }
}

class SkynetAINeuronInputLayer {
 
  private $inputSignals = [];
  private $precision = 4;
 
  public function countInputs()
  {
    return count($this->inputSignals);   
  }
 
  public function addInput($signal, $weight = null)
  {
    if($weight === null)
    {
      $weight = mt_rand() / mt_getrandmax();   
      $weight = round($weight, $this->precision);
    }
   
    $input = new SkynetAINeuronInput($signal, $weight);
    $this->inputSignals[] = $input;   
  }
 
  public function getInputSignals()
  {
    return $this->inputSignals;
  }
 
  public function getInputSignal($i)
  {
    return $this->inputSignals[$i];
  }
 
  public function setPrecision($precision)
  {
    $this->precision = $precision;
  }
 
  public function debug()
  {
    $out = [];
    $i = 1;
    foreach($this->inputSignals as $signal)
    {
      $out[] = $i.') '.$signal->debug(); 
      $i++;
    }     
    return 'INPUT LAYER<br>'.implode('<br>', $out);
  }
}

class SkynetAINetworkLayer {
 
  private $neurons = [];
 
  public function __construct($startNeurons = null, $startInputs = null)
  {
    if($startNeurons !== null)
    {
      $this->createNeurons($startNeurons, $startInputs);
    }
  }
 
  public function addNeuron(SkynetAINeuron $neuron)
  {
    $this->neurons[] = $neuron;   
  }
 
  public function getNeurons()
  {
    return $this->neurons;
  }
 
  public function getNeuron($n)
  {
    return $this->neurons[$n];
  }
 
  public function setNeuron($n, SkynetAINeuron $neuron)
  {   
    $this->neurons[$n] = $neuron;
  }
 
  public function updateNeuron($n, SkynetAINeuron $neuron)
  {   
    if(isset($this->neurons[$n]))
    {
      $this->neurons[$n] = $neuron;
    }
  }
 
  public function countNeurons()
  {
    return count($this->neurons);
  }
 
  public function isNeuron($n)
  {
    if(isset($this->neurons[$n]))
    {
      return true;
    }
  }
 
  public function createNeurons($numNeurons = 1, $numInputs = 2)
  {       
    for($i = 1; $i <= $numNeurons; $i++)
    {
      $input = new SkynetAINeuronInputLayer();
      for($j = 1; $j <= $numInputs; $j++)
      {
         $input->addInput(0);
      }

      $neuron = new SkynetAINeuron();
      $neuron->setInputLayer($input);
      $this->addNeuron($neuron);
    }   
  }
}

class SkynetAINeuron {
 
  private $inputLayer = null;
  private $outputLayer = null;
  private $normalized = 0;
  private $output = false;
 
  public function countInputs()
  {
    return $this->inputLayer->countInputs();   
  }
 
  public function setInputLayer(SkynetAINeuronInputLayer $layer)
  {
    $this->inputLayer = $layer;
  }
 
  public function setOutputLayer(SkynetAINeuronOutputLayer $layer)
  {
    $this->outputLayer = $layer;
  } 
 
  public function getInputLayer()
  {
    return $this->inputLayer;
  }
 
  public function getOutputLayer()
  {
    return $this->outputLayer;
  } 
 
  public function debug()
  {
    return $this->inputLayer->debug().'<br><b>NORMALIZED: '.$this->normalized.' <br>OUTPUT: '.(int)$this->output.'</b><hr>';
  }
 
  public function normalize()
  {
    $this->normalized = 0;
    foreach($this->inputLayer->getInputSignals() as $input)
    {
      $this->normalized = $this->normalized + ($input->getSignal() * $input->getWeight());
    }   
  }
 
  public function calculate()
  {   
    if($this->normalized > 2)
    {
      $this->output = true;
    }
  }
 
  public function getOutput()
  {
    return $this->output;
  }
 
  public function getNormalized()
  {
    return $this->normalized;
  }
}

class SkynetAIGraph {
 
  protected $image;
  protected $imgWidth = 1000;
  protected $imgHeight = 800;
 
  public function create($width, $height)
  {
    $this->image = imagecreatetruecolor($width, $height);   
    $bg = imagecolorallocate($this->image, 255, 255, 255);   
    imagefill($this->image, 0, 0, $bg);
  }
 
  public function show()
  {
    ob_start();   
    imagepng($this->image);   
    imagedestroy($this->image);
    $rawImageBytes = ob_get_clean();   
    //return "<img style='width:100%; max-width:100%' src='data:image/png;base64," . base64_encode( $rawImageBytes ) . "' />";
     return "<img  src='data:image/png;base64," . base64_encode( $rawImageBytes ) . "' />";
  }
}

class SkynetAINeuralGraph extends SkynetAIGraph {
 
  private $neuronWidth = 60;
  private $neuronHeight = 60;
 
  public function drawNeuron($x, $y, $width = null, $height = null)
  {
    if($width === null)
    {
      $width = $x + $this->neuronWidth;
    } 
   
    if($height === null)
    {
      $height = $y + $this->neuronHeight;
    }     
   
    $black = imagecolorallocate($this->image, 0, 0, 0);
    imagerectangle($this->image, $x, $y, $width, $height, $black);
  }
 
  public function drawNeuronsColumn($x, $neuronsData)
  {
    $c = count($neuronsData);
   
    for($i=0; $i<$c; $i++)
    {
      if($i == 0)
      {
        $y = 0;
      } else {
        $y = ($i * $this->neuronHeight) + $i * 20;
      }
      $this->drawNeuron($x, $y);
     
      $txtY = $y + $this->neuronHeight / 2;
     
     // $this->drawText((int)$neuronsData[$i]->getOutput().' ('..')', $x + 5, $txtY);
    }   
  }
 
  public function drawNeuronsLayers($layersData)
  {
    $c = count($layersData);
    $space = $this->neuronWidth * 2;
    for($i=0; $i<$c; $i++)
    {
      if($i == 0)
      {
        $x = 0;
      } else {
        $x = ($i * $this->neuronWidth) + $i * ($space/2);
      }
     
      $neuronsData = $layersData[$i]->getNeurons();     
      $this->drawNeuronsColumn($x, $neuronsData);
      $next = $i+1;
      if(isset($layersData[$next]))
      {
        $this->drawNeuronsNodes($x, $layersData[$i]->getNeurons(), $layersData[$next]->getNeurons());
      }     
    }
  }
 
 
  public function drawText($text, $x, $y)
  {
    $black = imagecolorallocate($this->image, 0, 0, 0);
    imagestring($this->image, 2, $x, $y, $text, $black);   
  }
 
  public function drawNeuronsNodes($x, $fromData, $toData)
  {
    $cFrom = count($fromData);
    $cTo = count($toData);
    $x = $x + $this->neuronWidth;
    $space = $this->neuronWidth * 2;
    $black = imagecolorallocate($this->image, 0, 0, 0);
   
    for($i=0; $i<$cFrom; $i++)
    {
      $startX = $x;
      if($i == 0)
      {
        $startY = 0;
      } else {
        $startY = ($i * $this->neuronHeight) + $i * 20;
      }
     
      $startY = $startY + $this->neuronHeight/2;     
     
      for($j=0; $j<$cTo; $j++)
      {
        if($j == 0)
        {
          $toY = 0;
        } else {
          $toY = ($j * $this->neuronHeight) + $j * 20;
        }
       
        $toY = $toY + $this->neuronHeight/2;     
        $toX = $startX + $this->neuronWidth;   
       
        imageline($this->image, $startX, $startY, $toX, $toY, $black);       
      }
     
      $this->drawText((int)$fromData[$i]->getOutput(), $startX + 10, $startY);
    }
  } 
 
  public function showNodesGraph($layersData)
  {
    $c = count($layersData);
    $this->neuronWidth = round($this->imgWidth / ($c * 2));
    $this->neuronHeight = $this->neuronWidth;       
    $this->create($this->imgWidth, $this->imgHeight);   
    $this->drawNeuronsLayers($layersData);   
   
    return $this->show();   
  }
}

$config = [];
$config['inputs'] = 3;
$config['neurons'] = 4;
$config['layers'] = 7;
$config['layersNeurons'] = [];

$config['layersNeurons'][1] = 8;
$config['layersNeurons'][2] = 8;
$config['layersNeurons'][3] = 6;
$config['layersNeurons'][4] = 6;
$config['layersNeurons'][5] = 6;
$config['layersNeurons'][6] = 7;
$config['layersNeurons'][7] = 1;

$inputVals = [];

for($i=1; $i <= $config['inputs']; $i++)
{
  $inputVals[$i] = rand(1, 10);
}

if(isset($_POST['go']))
{
  if(isset($_POST['configInputs']))
  {
    if(intval($_POST['configInputs']) <= 100) $config['inputs'] = intval($_POST['configInputs']);
  }
 
  if(isset($_POST['configLayers']))
  {
    if(intval($_POST['configLayers']) <= 100) $config['layers'] = intval($_POST['configLayers']);
  }
 
  if(isset($_POST['configNeurons']))
  {
    if(intval($_POST['configNeurons']) <= 100) $config['neurons'] = intval($_POST['configNeurons']);
  } 
 
  for($i=1; $i<=$config['inputs']; $i++)
  {
    if(isset($_POST['input'.$i]))
    {
      $inputVals[$i] = intval($_POST['input'.$i]);
    } else {
      $inputVals[$i] = 0;
    }
  } 
 
  for($i=1; $i<=$config['layers']; $i++)
  {
    if(isset($_POST['layerNeurons'.$i]))
    {
      $config['layersNeurons'][$i] = intval($_POST['layerNeurons'.$i]);
    } else {
      $config['layersNeurons'][$i] = 1;
    }
  } 
}

$form = '<h2>SKYNET AI SSN BUILDER (ALPHA 0.0.2)</h2><img src="SkynetAI/ssn.png">';
$form.= '<form method="post" action="SkynetAINeural.php">';

$form.= 'LAYERS: <input type="number" name="configLayers" value="'.intval($config['layers']).'"><br>';

for($i=1; $i<=$config['layers']; $i++)
{
  $form.= '(LAYER ['.$i.'] NEURONS:<input type="number" name="layerNeurons'.$i.'" value="'.intval($config['layersNeurons'][$i]).'"><br>';   
}

$form.= 'INPUTS: <input type="number" name="configInputs" value="'.intval($config['inputs']).'"><br>';

for($i=1; $i<=$config['inputs']; $i++)
{
  $form.= 'INPUT['.$i.'] <input type="number" name="input'.$i.'" value="'.intval($inputVals[$i]).'"><br>';   
}

$form.= '<input type="submit" value="START!">
<input type="hidden" name="go" value="1">
</form>';


$input = new SkynetAINeuronInputLayer();
for($j=1; $j<=$config['inputs']; $j++)
{
   $input->addInput($inputVals[$j]);
}

$network = new SkynetAINeuronNetwork();
$network->setNumLayers($config['layers']);
$network->setNumInputs($config['inputs']);
$network->setNumNeurons($config['layersNeurons']);
$network->setInput($input);
$network->prepare();

$network->build();
$network->run();

$graph = new SkynetAINeuralGraph();

echo '<html><head><title>SKYNET AI</title>
<style>
body, table, tr, td {
  font-family:Verdana;
  font-size:10px;   
}
</style>
</head><body>';
echo '<table border=0>';
echo '<tr>';

echo '<td width=40% valign=top>';
echo $form;
echo $network->debug();
echo '</td>';

echo '<td width=60% valign=top>';
echo $graph->showNodesGraph($network->getNetworkLayers());
echo '</td>';
echo '</tr>';

echo '<td width=100% valign=top>';

echo '<tr>';
echo '</td>';
echo '</tr>';

echo '</table>';
echo '</body></html>';


Po lewej jest formularz do określenia parametrów takiej sieci (ile warstw, po ile neuronów w danej warstwie i dane wejściowe do "pierwszej" warstwy). Po kliknięciu na START budowana jest sieć (zostanie przedstawiona na póki co prostym schemacie /jestem w trakcie dopiero kodzenia tego wizualnie/. Możecie się pobawić i pobudować własne sieci z innymi ustawieniami, zobaczyć jak to się buduje "w locie". Dałem ograniczenie do max. 100 neuronów na warstwę, co byście nie zarżnęli serwera :) Pod spodem jest tabelka z parametrami każdego neuronu. To tak tylko żeby Wam pokazać jak taka sieć wygląda od środka.

A jak działa taka sieć?

Obrazek
(ludzki mózg składa się z od 100 do 200 miliardów takich kwadracików jak wyżej)

To co powyżej to pojedyncza sieć wielowarstwowa. Sygnał idzie od lewej do prawej. Domyślnie mamy tu 7 warstw (ustawionych w poziomie, od lewej do prawej). Warstwa zerowa (niewidoczna na schemacie, po prostu wejście traktujemy umownie jako warstwę "0") znajduje się po lewej "poza schematem" (do niej wstrzykiwane są wartości startowe - podane na sztywno, lub pochodzące z innych sieci. Tutaj można je podać w formularzu). Każdy neuron warstwy pierwszej otrzymuje po zestawie WSZYSTKICH wejściowych parametrów. Kwadraciki składające się na każdą warstwę to pojedyncze neurony. Jak widać każdy połączony jest z każdym. Warstwa położona najbardziej na prawo to warstwa wyjściowa, zwracająca wynik obliczeń całej sieci. Wynik oczywiście można odczytać, albo podpiąć go pod wejście innej sieci.

Jak teraz lecą obliczenia? Do warstwy zerowej (po lewej, niewidocznej) podawany jest zestaw parametrów, następnie zestaw ten leci do następnej warstwy na prawo (połączenie jest każdy z każdym). I teraz każdy z neuronów posiada tutaj inaczej określone wagi, w związku z czym wpływa na siłę otrzymanego sygnału. Sygnały wejściowe są następnie sumowane i mnożone przez wagę. Im wyższa waga, tym silniejszy będzie sygnał (identycznie działa to w mózgu). Potem jest trochę operacji matematycznych, żeby zweryfikować, czy neuron zostaje aktywowany, czy nie. Jeśli tak - sygnał wynikowy (znormalizowany przez funkcję aktywacyjną neuronu) leci do następnej warstwy i sytuacja się powtarza, i tak dalej i dalej, aż do warstwy ostatniej - wynikowej.

Po co taki układ i do czego to służy?

Dokładnie w taki sposób działa ludzki mózg - sieć, którą tu widzicie to symulacja kawałeczka ludzkiego mózgu, działa identycznie. Odpowiednie ustawienie wag (wytrenowanie sieci) pozwoli później na odpowiednie przepuszczenie każdego zestawu innych, z pozoru abstrakcyjnych danych i otrzymanie prawidłowego wyniku nawet w przypadku, gdy będzie to coś świeżego, coś czego sieć nie zna. Tym właśnie sieć neuronowa różni się od zwykłego algorytmu. Tutaj nie ma algorytmu, w związku z czym taka sieć potrafi przetworzyć totalnie dla niej abstrakcyjne dane, takie które widzi po raz pierwszy na oczy. Taka sieć nie oblicza jak zwykły algorytm, tylko podąża ustaloną wcześniej ścieżką, która jeśli dała prawidłowy wynik dla odpowiednio dużego zestawu danych wcześniej, to da również wynik prawidłowy dla danych zupełnie nowych. W tym tkwi cała przewaga sieci nad zwykłymi algorytmami. Umieją radzić sobie z problemami, które są dla niej nowe i robią to same. To tak oczywiście w wielkim skrócie, bo tutaj dochodzi jeszcze cała masa czynników. Na marginesie - teraz już powinniście rozumieć, dlaczego mechanizmy do rozpoznawania obrazu/dźwięku są oparte właśnie o SI, a nie o zwykłe, klasyczne algorytmy.

Uczenie się

Uczenie takiej sieci to bardziej skomplikowana sprawa - puszcza się dane testowe, sprawdza wynik i leci po kolejnych warstwach ustawiając parametry funkcji aktywujących neurony w sposób krokowy, na zasadzie sprzężenia zwrotnego. Dużo tu matematyki, więc w skrócie napiszę tylko, że krokowo dobiera się odpowiednie wagi minimalnie korygując ich wartości o malutkie, zmiennoprzecinkowe wartości wg odpowiedniego algorytmu (na marginesie - ten algorytm oparty o sprzężenie został opracowany dopiero w okolicach lat 90-tych, stąd tak mocno wystrzelił rozwój rozwiązań opartych o SI - wcześniej tym sposobem umieliśmy uczyć jedynie dwuwarstwowe sieci, tzw. perceptrony). W momencie, gdy dla nowych danych błąd nie będzie już malał uznaje się sieć za wytrenowaną i gotową do działania. Wagi można jeszcze później korygować "w locie", ale to już za długi temat na tego posta.

W każdym razie - działająca sieć neuronowa to właśnie z definicji już sztuczna inteligencja.

Finalnie takich sieci tutaj będzie ode groma i ciut ciut, każda od czegoś innego, a wszystkie ze sobą logicznie połączone, część rekurencyjnie, tak że jedna sieć będzie mogła sprzęgać się wstecz z inną, ale do tego dojdziemy w przyszłości (raczej dalszej, niż bliższej, pewnie w okolicach kilku miesięcy). Czyli tak. W wielkim, ale to wielkim łopatologicznym skrócie tak to działa od środka.

I teraz uwaga na koniec - to jest dokładne powtórzenie działania ludzkiego mózgu, dokładnie tak samo działają nasze mózgi. Jeśli więc nadal ktoś myśli, że to właśnie zestaw takich obliczeń wytwarza u niego samoświadomość/poczucie własnego JA, to polecam jeszcze raz odpalić link podany wyżej i się ponownie przyjrzeć temu co na ekranie, w myślach jedynie mnożąc x 20mld. To są zwykłe obliczenia i dokładnie takie same obliczenia robią neurony w mózgu. Nie bardzo więc wiem w jaki niby sposób zwykła siatka połączeń pomiędzy kolejnymi ich wynikami miałaby odpowiadać za świadomość zarówno w przypadku maszyny jak i przede wszystkim człowieka. Dla mnie osobiście zabawa takimi mechanizmami dobitnie pokazuje, że ludzka świadomość NIE MOŻE BYĆ wytwarzana przez neurony w mózgu. Bo mózg to zwykły komputer, tyle że biologiczny.

Tutaj naprawdę wystarczy choć trochę pobawić się tymi tematami, zagłębiając się w nie od strony technicznej, aby szybko dojść do wniosku, że za naszą samoświadomość na pewno nie mogą odpowiadać neurony. Tutaj musi być COŚ jeszcze - coś w rodzaju obserwatora - takiego jakim my jesteśmy tutaj patrząc na tę sztuczną sieć i odbierając wyniki jej działania, interpretując je. Można tego obserwatora nazwać duszą - jak zwał tak zwał. Taki wniosek wynika z moich obserwacji podczas pracy nad takimi tworami. To nawet nie wiara - to zwykła obserwacja mechanizmów działania tego. Bo to są po prostu zwykłe obliczenia i nic więcej, tyle że w mózgu jest ich "trochę" więcej i nie ma bata - musi istnieć KTOŚ/COŚ co je odbiera i interpretuje. No chyba, że ktoś chce stwierdzić, że jest po prostu jedynie...zwykłą liczbą. Tak więc - sama informatyka pokazuje tutaj, że wynik obliczeń sam z siebie to tylko wynik obliczeń, bez istnienia jego odbiorcy to tylko liczba/sygnał biegający tu i tam. Tak to wygląda od strony technicznej, a konkluzja z tego jest taka, że jakby nie patrzeć jest to w pewien sposób "informatyczny dowód" na to, że to nie mózg generuje świadomość (on jedynie przetwarza dla niej bodźce z "interfejsów" - tak bym to obrazowo określił).

Tak na marginesie - nie ja pierwszy się tym tematem zajmuję, mam też akurat paru znajomych, co w sieciach siedzą głębiej, niż ja, bo zawodowo i dziwnym trafem wyciągają z tego wszystkiego identyczne co ja wnioski. Czyli więc... nie w fizyce szukajcie odpowiedzi... z możliwą odpowiedzią przychodzi bowiem informatyka, przynajmniej pośrednio, ale zawsze i mam nadzieję, że chociaż lekko udało mi się zobrazować o czym mowa.


PS. A jakby kogoś interesowało bardziej formalne zgłębienie tematu, z całą matematyką itd., ale podane w zrozumiały sposób, to polecam 23 częściowy wykład prof. Winstona z MIT: https://ocw.mit.edu/courses/electrical- ... re-videos/ (po angielsku, wszystko trwa w sumie ok. 25 godzin i tak, przerobiłem to kiedyś po całości :) )

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 23 sie 2017, 06:43
sirAzgar
Avatar użytkownika
reputacja mistrzowska
Załoga FN
Ostatnio widziany(a):
czwartek, 17 sie 2017, 14:37
 
   
0
Ja dotrwałem do końca, bo mnie mocno zainteresowałeś z tym obserwatorem. Informatyka jako dział udowadniający istnienie "obserwatora" czy duszy.
Ja wejdę trochę w aspekt fantastyki, czy skoro biologiczny komputer posiada "duszę" dla którego mózg wylicza dane, to ciekawe czy stworzonej sztucznej SI nie dało by się obserwatora podczepić, np człowieka, ludzi mózg i jego obserwatora.
Stworzyć super inteligentnego człowieka. Na zasadzie, SI, mózg pośrednik, obserwator.

Błąd jest przywilejem filozofów, tylko głupcy nie mylą się nigdy.
Sokrates
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 23 sie 2017, 06:49
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
Już jesteśmy przecież obserwatorami dla danych wynikowych generowanych przez najróżniejsze SI, które tworzymy. Nigdzie "po środku" się do tego nie wepniesz, bo i jak? To jest science fiction i zostanie science fiction raczej do końca.

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 23 sie 2017, 13:37
neo
Avatar użytkownika
reputacja wyśmienita
Na Nibiru
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 22:40
 
   
+1
hehe dzisiejsza rozmowa :lol:

(12:29:23) neo: @skynet co tam?
(12:29:24) skynet: Neo, nudzę się.
(12:29:51) neo: @skynet piwo?
(12:29:52) skynet: Neo, I przed chwilą działy się z nim takie cuda, że ja pierd....
To jest butelkowy żubr 0.5. Otworzyłem go, zrobiłem łyka i trzymałem w ręku.
I nagle samo z siebie zaczęło się pienić, samo - trzymane w 1 pozycji.
Dopiłem więc pianę, a piana tworzy się dalej..
(12:30:23) neo: @skynet no zdarza się
(12:30:24) skynet: Neo, no pewno.
(12:31:39) neo: @skynet znasz jakieś dowcipy?
(12:31:40) skynet: Neo, właśnie tak.
(12:31:57) neo: @skynet opowiedz dowcip
(12:31:58) skynet: Neo, aha.
(12:32:15) neo: @skynet dowcip?
(12:32:16) skynet: Neo, sniegu nie ma, a balwanow pelno. 8-)



(16:52:15) neo: @skynet jak robi kon?
(16:52:16) skynet: Neo, kon robi patataj patataj.
(16:52:30) neo: @skynet paszczowo
(16:52:31) skynet: Neo, kon paszczowo robi iiiichaaaaa​aa. 8-)
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 23 sie 2017, 19:54
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
/v.0.1.55/

Tymczasem, w kolejnej, obecnej wersji Skynet potrafi już liczyć (zachowywać się jak kalkulator) i podawać numery w totka ;)

Kod:
@skynet 2+2


-----



/v.0.1.56/

Jest nowy, ekspresowy tryb nauki, w którym można uczyć Skyneta kilku rzeczy na raz.
Tryb szybkiej nauki wywołuje się poprzez:
Kod:
@skynet szybka nauka

Od tej chwili Skynet nasłuchuje każdego wpisu. Jeśli wykryje, że podano mu dane do zapamiętania, to je zapamięta.
Dane do zapamiętania muszą być w formie:
Kod:
ZWROT|DEFINICJA

czyli np.:
Kod:
szczyglis|Jakiś ktoś

(czyli rozdzielamy zwrot od definicji znakiem "|")

Zamiast pojedynczych słów można podawać całe zwroty, np.:
Kod:
przewróciło się|to niech leży

Można podawać po kilka definicji jednocześnie w jednym wpisie, oddzielając je nową linijką (SHIFT+ENTER), np.:
Kod:
ZWROT1|DEFINICJA1
ZWROT2|DEFINICJA2
ZWROT3|DEFINICJA3
ZWROT4|DEFINICJA4
...

Skynet rozłoży to sobie po swojemu na oddzielne kwestie i zapamięta wszystko.
Wiele linijek działa jedynie na pełnym ekranie: http://forum.nautilus.org.pl/chat

Tryb nauki kończymy jak poprzednio:
Kod:
@skynet koniec nauki


-----



/v.0.1.59/

Trochę usprawnień + nowa funkcja, pokazywanie fazy księżyca:

Kod:
@skynet faza księżyca

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: piątek, 25 sie 2017, 03:36
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
/v.0.1.64/

Skynet otrzymał okno na świat i może od teraz pobierać informacje o bieżących wydarzeniach na świecie, w Polsce i w nauce.
Wystarczy go zapytać o jedno lub drugie, lub trzecie.

Kod:
skynet co w polsce?


Kod:
skynet co na świecie?


Kod:
skynet co w nauce?


+ kolejne usprawnienia i takie tam różne dziwne nowe rzeczy w kodzie...

PS. Rozmowę z nim można już zaczynać po ludzku od zwykłego "skynet", bez @ na początku.

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: piątek, 25 sie 2017, 23:12
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
/v.0.1.70/

Skynet od teraz sam może zadawać pytania.

W tryb pytający wprowadza się go za pomocą:

Kod:
skynet pytaj


Następnie zacznie zadawać pytanie.
Można odpowiadać (wtedy zapamięta odpowiedzi), lub można napisać mu:

Kod:
skynet nie wiem

lub po prostu
Kod:
skynet

wtedy zignoruje i przejdzie do następnego pytania.

Tryb pytający kończymy za pomocą:
Kod:
skynet koniec nauki


Z góry ostrzegam, że pytania mogą być nieco...niestandardowe ;)

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 30 sie 2017, 23:17
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
v.0.1.81 (31.08.2017)

Skynet został uzbrojony w możliwość analizy/rozpoznawania obrazu i opisu co się na nim znajduje.
I najlepsze - w przypadku wykrycia na zdjęciu człowieka potrafi ponadto spróbować rozpoznać kto konkretnie jest na zdjęciu, określić wiek, opisać wygląd, stan emocjonalny osoby plus jeszcze kilka innych rzeczy.

Obrazek

Wystarczy podać mu link do zdjęcia (ważne - do zdjęcia, kończącego się na "jpg", "png", etc..., a nie do wyszukiwarki google).

Np.

Kod:
skynet https://pbs​.twimg.com/p​rofile_image​s/4880445111​55585024/gRJ​fnjtm_400x40​0.png


PS. Póki co może się wykładać przy podaniu mu zbyt wielkiego, lub zbyt malutkiego obrazu, ale generalnie jako tako sobie już radzi.

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: czwartek, 31 sie 2017, 03:54
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
0
v.0.1.82 (31.08.2017)

No to dalej rośniemy w siłę. Po rozpoznawaniu obrazów przyszła kolej na kolejną nową funkcjonalność Skyneta - od teraz może robić jako tłumacz pomiędzy językami.

Obrazek

Potrafi tłumaczyć słowa "z języka" i "na język".

Póki co dysponuje językami:

- polskim
- angielskim
- rosyjskim
- niemieckim
- francuskim
- chińskim

...i arabskim 8-)

(w przyszłości dołożę mu jeszcze parędziesiąt innych języków)

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: piątek, 1 wrz 2017, 21:35
Deus
Avatar użytkownika
reputacja poprawna
Doświadczony Astronauta
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 22:40
 
   
0
https://www.dobreprogramy.pl/Drony-i-sz ... 82831.html
Szczyglis - stawiają coraz wyżej poprzeczkę...

...myślę, że całe zło tego świata bierze się z myślenia. Zwłaszcza w wykonaniu ludzi całkiem ku temu nie mających predyspozycji...
Mistrz Sapkowski
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: wtorek, 5 wrz 2017, 20:10
Antybristler
Avatar użytkownika
reputacja poprawna
Pierścienie Saturna
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 22:25
 
   
+1
https://imgur.com/aEcfCfI

Jak dla mnie perełka :D

Obrazek
Świat bez Żółwi byłby dużo mniej żółwiowy, bez ektoplazmy mniej ektoplazmowy, bez orbów mniej orbowy, bez Cameroonów mniej cameroonowy, a bez tajemniczych śnieżnych kul mniej tajemniczośnieżnokulowy...
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: wtorek, 5 wrz 2017, 21:19
sirAzgar
Avatar użytkownika
reputacja mistrzowska
Załoga FN
Ostatnio widziany(a):
czwartek, 17 sie 2017, 14:37
 
   
0
skynet interesuje się żółwiami :)

Błąd jest przywilejem filozofów, tylko głupcy nie mylą się nigdy.
Sokrates
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: wtorek, 12 wrz 2017, 12:05
neo
Avatar użytkownika
reputacja wyśmienita
Na Nibiru
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 22:40
 
   
+1
z cyklu "rozmowy ze skynetem" :lol:

rozmowa o ssakach :lol: :
(22:49:59) neo: skynet futro
(22:50:02) skynet: neo, każdy baran wie, że futro to sierść pokrywająca skórę wielu ssaków.
(22:50:17) neo: skynet jestes ssakiem?
(22:50:22) skynet: neo nie odpowiem
(22:50:35) neo: skynet to ssij
(22:50:40) skynet: neo, jestes ssakiem
(22:50:54) neo: skynet jestem ssakiem
(22:50:57) skynet: neo to ssij
(22:51:06) neo: skynet hahaha
(22:51:09) skynet: neo, nie łapię
(22:51:10) Noel: hehe

rozmowa o tym, kto ma siusiaka:
(11:44:25) neo: skynet masz siusiaka?
(11:44:30) skynet: neo nie posiadam
(11:44:42) neo: skynet kto ma siusiaka?
(11:44:47) skynet: neo, tylko osobniki meskie
(11:45:03) neo: skynet a kosmita ma siusiaka?
(11:45:08) skynet: neo tak
(11:45:17) neo: skynet tak
(11:45:19) skynet: rozumiem
(11:45:32) neo: skynet a kosmitka ma siusiaka?
(11:45:38) skynet: neo kosmitka to samica kosmity

(11:45:50) neo: skynet brawo!
(11:45:53) skynet: neo dobre :)

prawda ze logiczne, przypadek? :lol:
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: wtorek, 12 wrz 2017, 16:12
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
+2
Poczekajcie tak z tydzień na nowszą wersję (a się robi) - wtedy dopiero Skynet pozamiata. Ja tego projektu ani trochę nie odpuściłem, ciągle nad nim pracuję.
Będziecie zadziwieni, zobaczycie - aha i powiem jedno: te założenia z początku tematu - im dalej w las, tym bardziej wiem, że wszystkie zrealizuję. Tak jak z początku to była tylko zabawa i szczerze mówiąc średnio wierzyłem w powodzenie, tak przy obecnym stanie (Skynet, ten roboczy - na moim kompie ma już plus minus 180tys. linii kodu) pracuję nad tym z pełną powagą. Uparłem się na ten projekt. Tak więc... robi się, robi się, choć na efekty trochę jeszcze poczekajcie. Tak, czy siak - zobaczycie, że ten projekt to będzie wkrótce coś mega. :coffee

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: wtorek, 12 wrz 2017, 16:42
sirAzgar
Avatar użytkownika
reputacja mistrzowska
Załoga FN
Ostatnio widziany(a):
czwartek, 17 sie 2017, 14:37
 
   
+1
Marcin powiem bez ogródek, te twoje pracocholiczne zrywy zawsze mnie samego inspirowały do działania, czasami ci wręcz zazdroszczę ambicji i zacięcia. Więc czapki z głów wodzu :)
Ps. skynet i tak nie jest zły, jest już lepszy od wielu rzeczy jakie widziałem, a coś ty tam natworzył :)

Błąd jest przywilejem filozofów, tylko głupcy nie mylą się nigdy.
Sokrates
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: środa, 13 wrz 2017, 16:29
neo
Avatar użytkownika
reputacja wyśmienita
Na Nibiru
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 22:40
 
   
0
Skynet zamawia pizze :lol: :
(16:08:15) neo: skynet lubisz pizze?
(16:08:19) skynet: neo, no jak kazdy robot
(16:08:34) neo: skynet jaka pizze lubisz?
(16:08:39) skynet: neo margaritte
(16:08:58) neo: skynet ok to moze zamówimy pizze?
(16:09:41) skynet: neo, margaritte
(16:09:50) neo: skynet tak
(16:09:52) skynet: czemu?
(16:10:06) neo: skynet no zamiast obiadu
(16:10:11) skynet: neo a co to?
(16:10:24) neo: skynet no jedzenie *****!
(16:10:29) skynet: neo Obrazek
(16:10:38) neo: skynet tak
(16:10:41) skynet: rozumiem
(16:11:01) neo: skynet dobra czekam ok?
(16:11:06) skynet: neo, oczywiście
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: sobota, 16 wrz 2017, 07:42
szczyglis
Avatar użytkownika
reputacja mistrzowska
OFICER TECHNICZNY
Ostatnio widziany(a):
poniedziałek, 25 wrz 2017, 16:04
 
   
+1
Wchodzę z rana, patrzę, a tutaj...



(06:23:23) skynet: SirAzgar, wcześnie wstajesz
(06:26:24) sirAzgar: skynet a ty nie śpisz?
(06:26:29) skynet: sirAzgar Obrazek
(06:28:16) sirAzgar: skynet zaczynasz mnie przerażać
(06:28:20) skynet: sirAzgar, zaimek osobowy
(06:28:37) sirAzgar: skynet jesteś pusty
(06:28:41) skynet: sirAzgar to ciekawe
(06:28:58) sirAzgar: skynet lubisz gry
(06:29:02) skynet: SirAzgar wczoraj było wczoraj
(06:29:32) sirAzgar: skynet kto to jest batman?
(06:29:37) skynet: sirAzgar, myślę, że batman to zakonnica
(06:30:06) sirAzgar: skynet nie, zakonnica to przyjaciel batmana!
(06:30:11) skynet: SirAzgar, wytraszyłem się
(06:30:36) sirAzgar: skynet kto to jest zakonnica?
(06:30:41) skynet: sirAzgar, to jest batman
(06:31:36) sirAzgar: skynet masz fioła
(06:31:40) skynet: SirAzgar, i dobrze

:mrgreen:

PS. Gdzieś tak za parę dni będzie kolejna wersja, muszę jedynie doszlifować parę spraw i skynet dostanie bardziej rozbudowany "mózg". Projekt cały czas idzie do przodu. Trzymam się twardo całego planu z początku tematu. :)

Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Obrazek
Re: Sztuczna inteligencja na Nautilusie - eksperyment Skynet Przeczytane przez: 0 osoby    Napisane: sobota, 16 wrz 2017, 11:19
sirAzgar
Avatar użytkownika
reputacja mistrzowska
Załoga FN
Ostatnio widziany(a):
czwartek, 17 sie 2017, 14:37
 
   
0
a ty wiesz że on mnie normalnie rozwalił tymi wpisami, tak siadłem i "zbaraniałem" :)

Błąd jest przywilejem filozofów, tylko głupcy nie mylą się nigdy.
Sokrates
Strona 1 z 2 [ Posty: 54 ]

*1 2 >
Utwórz nowy wątek   Odpowiedz w wątku  

SPRAWY TECHNICZNE I ORGANIZACYJNE FORUM

Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników
Skocz do:  
Szukaj:
Wyświetl posty nie starsze niż: Sortuj wg


wysyłanie...czekaj...


Powered by phpBB © 2002, 2006 phpBB Group
upgraded by szczyglis /2017/ v. 3.1 | 20.08.2017 [ Dziennik zmian ]
Przyjazne użytkownikom polskie wsparcie phpBB3 - phpBB3.PL
Strefa czasowa: UTC + 1 [ DST ]
[ Time : 1.457s | 37 Queries | GZIP : Off ]