piątek, 17 listopada 2017

AI 6

AI 6

Pierwsze próby podejścia do działania biologicznych sieci neuronowych poczynili H.Spencer w "Principles of Psychology" 1872,  T.Meynert w "Psychiatry" 1884,  W.James w "Principles of Psychology" 1890. Pierwsze zasady nauczania neuronów podał  D.Hebb ( jest faktycznym twórcą  neuropsychologii i koneksjonizmu ) w  "Hebbian learning", 1949.
O ile od dość dawna wiemy jak działają neurony to wiedza o pracy mózgu jako takiego uparcie stoi w miejscu. Zdaniem koneksjonistów, mózg jest maszyną równoległą, która doskonale przetwarza sygnały z biologicznych sensorów. Zawarta w sieci neuronów nauczona wiedza wpływa na sposób przetwarzania sygnałów.
Inspiracją struktury sztucznej sieci neuronowej jest budowa naturalnych neuronów, łączących je synaps oraz układów nerwowych a w szczególności mózgu.

Częstotliwość taktowania procesorów praktycznie stoi w miejscu od 2003 roku. Ilość instrukcji wykonywanych przez procesory superskalarne ( aby działały wydajnie konieczny jest niestety derolling instrukcji ) w jednym cyklu zegarowym rośnie powoli. Procesory mają za to coraz więcej rdzeni.
Tworzenie ambitnych algorytmów i programów jest coraz to trudniejsze. Już sam system pamięci virtualnej Windows ma zastawione pułapki. Jak tylko w programie użyjemy dynamicznej alokacji pamięci to doznamy szoku mimo iż komputer ma aż za dużo pamięci RAM.
https://randomascii.wordpress.com/2014/12/10/hidden-costs-of-memory-allocation/

Opracowanie wydajnych algorytmów na procesory z pamięcią podręczną cache ( innych nie ma ) nie jest proste. Mierząc szybkość działania opracowanego algorytmu na komputerze PC operującego na dużym zbiorze danych w pamięci możemy doznać szoku - procesor działa nawet 30-100 razy wolniej niż teoretycznie powinien ! Dopiero kiedy zrozumiemy jak działa pamięć cache i świadomie w programie zapanujemy nad rozsądnym dostępem do danych ( jeśli to jest w ogóle możliwe ) to działania procesora pomkną jak strzała. Toteż najlepiej skorzystać z gotowych zoptymalizowanych funkcji. Użycie specjalnych rozkazów procesorów jest możliwe tylko w asemblerze. Kompilatory C/C++ ich nie uwzględniają.  
Od lat trwają konsekwentne prace nad tworzeniem algorytmów równoległych. Cóż z tego że procesor może mieć dużo jąder skoro program działa na jednym. Finalne równoległe użycie wszystkich jąder dla algorytmu równoległego nie jest trudne.  Intel udostępnia open source Threading Building Blocks (TBB) a Microsoft's Parallel Pattern Library (PPL). 
Posortowanie danych bardzo ułatwia późniejszy błyskawiczny dostęp do nich. Zbiory do sortowania mogą być ogromne. Większość znanych algorytmów sortowanie jest nierównoległa. Autor jeszcze ulepszył opublikowane algorytmy sortowania równoległego
http://www.drdobbs.com/parallel/parallel-in-place-merge-sort/240169094
Na wydajnym procesorze Intel i7 ( Intel Core i7 6950X ma teoretyczną, równoległą wydajność 317,900 MIPS przy taktowaniu 3.0 GHz ) czas równoległego sortowania miliarda liczb ( para liczb bo druga to numer rekordu danych ) wynosi trochę ponad sekundę !  W czasie konwencjonalnego sortowania możemy sobie zrobić i wypić kawę ! 
Pamięci od dekad tanieją. Cena komputera / servera z 256 G pamięci RAM nie jest bynajmniej zaporowa. W takiej ilości pamięci RAM mieści się już wystarczająco dużo danych, które można błyskawicznie maglować. Rzecz w tym że w tych danych informacja lub informacja o zjawisku musi w ogóle być obecna ! Toteż szczególnego znaczenia nabiera "inteligentne" planowanie różnych eksperymentów aby informacja tam się pojawiła i można ją było wydobyć.     

Obecnie spośród 500 najszybszych superkomputerów świata aż 202 znajduje się w Chinach. Od czerwca 2016 roku najszybszym superkomputerem świata jest chiński Sunway TaihuLight. Ma on teoretyczną prędkość 93 petaflopów na sekundę. Ma 10,6 miliona rdzeni.
Superkomputery są od dekad używane do symulowania zjawisk pogodowych, geofizycznych, w genetyce, medycynie, fizyce i chemii.

Póki co nikt nie dostał nagrody Nobla za odkrycie rzeczywistej Sztucznej Inteligencji.
Algorytmy są coraz lepsze i wydajne. Ale te algorytmy robią tylko to co każe im robić ich stwórca.

2 komentarze:

  1. "Opracowanie wydajnych algorytmów na procesory z pamięcią podręczną cache ( innych nie ma ) nie jest proste."
    Mój naiwny algorytm działał 200-300 razy wolniej niż powinien. Tak to wygląda z cachem.

    OdpowiedzUsuń
  2. Witam. Problemy z wrednym Cache to jest ból głowy. Ciężkie sprawy.

    OdpowiedzUsuń