Sztuczna inteligencja

4

Na wstępie chciałbym napisać, że do tematu chciałbym podejść poważnie i przynajmniej spróbować coś napisać co mnie usatysfakcjonuje. Żeby także nie było niedomówień. Bez problemu czytam dokumentacje po angielsku czy też napiszę aplikacje w c++, lecz moje umiejętności z cepa są słabe jeżeli porównuje do niektórych użytkowników forum.

sory za tasiemca :)

Chciałbym ogólnie napisać AI, ale nie żeby potrafił "jedno", najlepiej jakby potrafił wszystkie funkcje, które niżej wypiszę. Zdaje sobie sprawę że napisanie czegoś takiego (nawet jeden punkt) wymaga bardzo dużej wiedzy a co dopiero połączenie tego jakoś fajnie w całość, ale jestem dobrej nadziei.

  1. Bot uczy się rozmawiać.
    coś jak Snikers czy inne tego typu programy (http://cleverbot.com/) tylko coś lepszego niż własnie np ten cleverbot (bo czasami jest po prostu głupi :)). Dowiedziałem się, że najtężsi mózgowie ciągłe próbują nauczyć komputer myśleć, lecz póki co nieskutecznie. Jednak aż tak łatwo mnie się nie da zniechęcić i jednak chciałbym spróbować, dzięki czemu sądzę że wiele się nauczę. I właśnie pytanie brzmi. Od czego zacząć? Czego szukać? I nie chodzi tutaj o ogólne teksty typu "poszukaj coś na temat sztucznej inteligencji" tylko bardziej konkretne algorytmy, badania, czy ogólnie pod jakimi hasłami szukać informacji (oprócz typowej AI)

  2. Bot uczy się grać.
    Ogólnie najlepiej jakby uczył się każdej gry na którą napotka (jeżeli w nią już gra to wtedy jakąś już umiejętność ma). Przez co z czasem bot robi się coraz lepszy w różne gry. Także można mu pokazać pewne zachowania żeby się szybciej uczył czy też można ograniczyć jego umiejętności (żeby po prostu grał słabiej). Pytanie jest czy jest możliwe żeby jakoś pozwał zasady danej gry sam? (jest to bardzo powiązane z pierwszym punktem). Tutaj takie samo pytanie jak wyżej od czego zacząć? Nawet informacje po prostu o uczeniu się grać dla bota(w kółko i krzyżyk czy w warcaby) było by na prawdę fajne

  3. Bot potrafi sterować całym systemem operacyjnym
    Już dostałem wiadomość, że raczej albo własny język programowania bym musiał wymyślić, albo napisać powłokę.
    Ale w sumie fajnie by było nawet, jakbym mu napisał (jeżeli już by potrafił rozmawiać :)) "włącz mi moją ulubioną piosenkę" to on włączą odpowiednią aplikację z odpowiednią piosenką. Czy też fajnie by było jakbym napisał typu "zapisz mi plik w txt o treści "jutro napiszę o linijkę więcej kodu!" i wyświetl mi to przy następnym uruchomieniu"

  4. Także żeby reagował na głos (poprzez mikrofon)
    Sterowanie za pomocą głosu? OSOM

i jeszcze raz się powtórzę. Jak szukać? Gdzie czytać? Kogo pytać żeby się dowiedzieć jak najwięcej?

Też ciekawi mnie jak można napisać po prostu bota. Mniej więcej wiem na jakiej zasadzie działa ale jestem ciekaw jak on analizuję co zebrać co robić czego użyć gdzie pójść (mapy są generowane losowo)

Czy ogólnie do gier fpsowych żeby grał w miare naturalnie i miał różne taktyki (a własnie najlepiej jakby się uczył)

Sądzę że jakbym napisał cokolwiek co przypomina bota w ciągu pół roku byłbym na prawdę zadowolony z siebie. Czasu za bardzo nie mogę też poświecić żebym siedział codziennie po 10 godzin (a szkoda), ale na pewno łatwo z tego nie zrezygnuję jeżeli będę wiedział od czego zacząć.

Jeżeli dotrwaliście tak daleko to dzięki za przeczytanie :)

4

Jako że wcześniej pisałeś na PW, czuję się upoważniony do wklejenia tam udzielonej odpowiedzi tutaj.
Pytanie było trochę inaczej sformułowane, stąd nieścisłości.


Hah, ambitny temat sobie wybrałeś :>

No więc, przede wszystkim, temat jak najbardziej nadaje się na forum. Mieści się to w Nietuzinkowe tematy, przy czym biorąc pod uwagę poziom skomplikowania zadania odpowiedzi mogą być niezbyt konstruktywne (czyt. ironiczne).

Ale zaczynając od Twoich pytań:

  • Czy c++ + asm wystarczy żeby to napisać w jakimś realnym czasie? (asma będę dopiero się uczył od podstaw, w sumie c++ ciągle się uczę)

Do napisania czegoś takiego wystarczy dowolny język kompletny w sensie maszyny Turinga, czyli C, C++, Asm (chociaż tutaj byłoby ciężko...), C#, Java, Brainfuck (chociaż tutaj byłoby ciężko...), Haskell, Erlang, Scala, Javascript, Prolog, etc, etc. Czyli odpowiedź brzmi - tak. Pozostaje pytanie w czym byłoby najprościej, pisanie sztucznej inteligencji w asemblerze będzie baardzo męczące.

  • Jakie IDE i kompilator do (tak sądzę) dużego projektu? Czy C::B z minGW wystarczy?

Jasne, w przypadku C++ ważne tylko żeby to nie był Dev :>. Zresztą ja zazwyczaj kompiluję z konsoli za pomocą ręcznego wywołania gcc albo makefile - też się da, zależy co kto lubi.

  • Od czego ogólnie zacząć? (najlepiej od początku, ale gdzie jest początek :)?)

Od porządnej nauki języka programowania i angielskiego :]. Później studiować sztuczną inteligencję - http://en.wikipedia.org/wiki/Artificial_intelligence.

I teraz przeskakując wcześniej:

  1. Bot uczy się rozmawiać. Nie wiem czy kojarzysz Snikersa czy inne tego typu programy (http://cleverbot.com/) tylko coś lepszego niż własnie np ten cleverbot (bo czasami jest po prostu głupi :))

Cleverbot nie jest głupi ani mądry, on nie myśli w żadnym sensie - nie chodzi mi to o jakieś filozoficzne rozważania typu czy komputer ma duszę i co to znaczy że człowiek myśli, o bardziej prozaiczną kwestię - cleverbot nie analizuje semantycznie tego co do niego piszesz - odpowiada na podstawie setek tysięcy wymienionych wcześniej zdań.

Popatrz na tą rozmową którą dla Ciebie przeprowadziłem :>

<msm>Hi.
<bot>How are you?
<msm>Nice, thank you.
<bot>Welcome.
<msm>Nice to meet you.
<bot>You as well.

Powiedzmy końcówka - kiedyś bot do kogoś zagadał nice to meet you i otrzymał odpowiedź you as well. Teraz ja zagadałem że miło go spotkać, a on przypomniał sobie że zna odpowiedź na takie przywitanie. I tak to działa - dzięki olbrzymiej ilości zebranych danych potrafi udawać rozmowę.

Ach, tak, do pytania - no więc ty prawdopodobnie chcesz zrobić coś innego - nauczyć komputer myśleć. Szczerze mówiąc, nikomu, mimo dziesiątek lat badań najlepszych specjalistów od AI, się to jeszcze nie udało. Być może będziesz pierwszy... Chociaż bardziej prawdopodobne że się zniechęcisz.

  1. Bot uczy się grać. W niektóre gry wolałbym grać z kimś kto ma podobny poziom jak ja lub je przewyższa

Cóż, możesz postąpić podobnie jak twórcy cleverbota - podać mu na tacy tysiące rozegranych partii, powiedzmy, szachów i nauczyć go naśladowania (w podobnej sytuacji XXX zrobił YYY).
A, i nie nauczysz go grania w każdą grę - to po prostu niemożliwe. Dla każdych zasad gry musiałbyś go uczyć od zera, oraz musiałbyś go przystosowywać do każdego programu (sztuczna inteligencja nie ma pojęcia o czymś takim jak powiedzmy 'przycisk' albo 'pionek', jedynie manipuluje stanami)

  1. Bot zarządza całym komputerem. Jeżeli bym chciał żeby coś zrobił to po prostu to zrobi (nie chciałbym go ograniczać tylko do włączenia danej aplikacji tylko np żeby też coś z nią zrobił.

Zbyt ogólne, musiałbyś znaleźć sposób na przekazywanie mu rozkazów. W jakiej formie byś tego nie robił, skończysz albo z nową powłoką systemową, albo z nowym językiem programowania, nigdy botem.

  1. Także żeby reagował na głos (poprzez mikrofon)

Jeśli wykonasz którykolwiek z poprzednich punktów to ta część będzie dla Ciebie śmiesznie łatwa ;]

  • skąd czerpać wiedzę lub jak zadawać odpowiednie pytania w google?

Lata praktyki - a poważnie to kiedy zaczniesz czytać np o sztucznej inteligencji od najprostszych tematów będziesz trafiał na referencje do coraz bardziej złożonych tematów - wtedy szukasz czegoś na ich temat w google i volia, gotowe.

  • jak sprawić żeby grał? O ile jakoś mogę sobie wyobrazić żeby się uczył jak nie popełniać błędów w grze (np kółko krzyżyk) o tyle napisanie takiego bota jest dla mnie jest to trochę czarną magią

Uwierz, taki bot w porównaniu do tego co planujesz zrobić jest zabawnie łatwy. Składa się z mniej więcej trzech części
[CZYTANIE_STANU_DIABLO] => [ANALIZOWANIE_STANU, WYKONANIE_JAKIEJŚ_AKCJI] => [KOPIOWANIE_STANU_DO_DIABLO]
Przy czym najtrudniejsze są pierwsza i trzecia część.

  • Czy da radę napisać w ciągu 5 lat wszystkie punkty jeden człowiek który będzie to pisał w wolnym czasie? (sądzę że w tyg znajdę min 10 godzin na to)

No więc tak - ja jestem realistą (chociaż złośliwi twierdzą że pesymistą). Gdybyś wiedział dokładnie co pisać i jaki algorytm stworzyć, być może byś zdążył. Tylko że samo napisanie to najłatwiejsza część, znalezienie sposobu/algorytmu na nauczenie komputera myślenia to jest problem.
No więc - moim zdaniem - nie.

11

Napiszę krótko i pozwolę sobie zweryfikować jedną rzecz: nie istnieje (jeszcze) coś takiego jak sztuczna inteligencja w sensie, w którym myślisz, że istnieje. Bot to najzwyczajniejszy zestaw skryptów, według których program reaguje na określone sytuacje oraz odpowiednio skonstruowana, duża baza danych. Bot nie zrobi nic ponad to, czego nie zaprogramował jego autor. Koniec, kropka. Będzie to na tyle "naturalne", na ile go zaprogramujesz. Na pewno bot cię niczym nie zaskoczy, np. nie nauczy się rozpoznawać nowych poleceń. Co najwyżej możesz umożliwić dodawanie nowych poleceń podczas działania bota. Ale tak czy siak, musisz to zaprogramować.

Bot z Diablo, o którym piszesz to najprawdopodobniej fejk.

1

Podbijam temat jako że już roczek jestem z Wami

tu jest all-in-one : harvard, mit, stanford - http://www.class-central.com/
a co do SI to przerobilem pol klasy Thruna i Norviga i powiem że zajebiście uczą i szybko ogarniesz - https://www.ai-class.com/

no i wiadomka że robią Ci panowie dla google po tym jak się stało bardziej wypłacalne od NASA :P

a co do tego czy inteligencja ma cos do SI to tak jak psychologia innych gatunków H20 do psychologii człowieka
( ile o nim tak naprawde wiemy ), nie ma co się pocić nad problemem którym się zajmują kognitywiści
jak tu chodzi o czyste algorytmy,
a jak bardzo chcesz dowiedzieć się czegoś
jak uczy się człowiek i jak uczyć komputer to
ogarnij sobie "Psychologia umysłu" Zbigniewa Piskorza,
a co do polaków w czołówce AI to profesor Duch z Torunia( www.is.umk.pl/~duch/indexpl.html )
na pewno ma jakieś publikacje publicznie udostępnione
a jak nie, to napisz do niego że chcesz mu pomóc stworzyć myślący komputer to może zaprosi Ciebie na wykłady ;)


peace
ChS

3

Na początku proponuje abyś zaimplementował sobie algorytm minimaks w jakiejś grze logicznej np warcaby(sztuczna inteligencja) później gdy trochę bardziej obeznasz się z tematem możesz podjąć się tego co chcesz zrobić. Jeśli będziesz chciał od razu wskoczyć na głęboką wodę to się utopisz(projekt się nie powiedzie).

1

Ja mam w odległych planach nauczenie się Lojbana. To chyba jedyny darmowy i kompletny język (tak twierdzi Wiki) który daje się jednoznacznie sparsować. A skoro daje się jednoznacznie sparsować to już jeden problem z głowy przy tworzeniu sztucznej inteligencji.

0

Dziękuję wszystkim za odpowiedź.
Ogólnie jestem na rozdrożu (nie wiem do końca w co iść, bo tyle rzeczy jest ciekawych...), ale to nie jest o tym temat.

Najważniejsze jak dla mnie, że dzięki tym postom. Ja czy inny "ciekawski" na temat AI będzie wiedział od czego zacząć tak żeby długo nie błądzić, a właśnie taki cel miał ten topic ;) (przynajmniej w moim odczuciu).

a troszkę offtopując. To trochę jednak strach przed tworzeniem czegoś takiego. Później ludzie by palili mój wizerunek i by opłakiwali ten dzień w którym powstała w pełni AI :D (tiaaa... za dużo chyba terminatora)

Jeszcze raz dziękuję. Przede mną dużo lektury i jeszcze więcej praktyki także mam co robić na pewno do końca 2012r (lub do słynnego dnia w grudniu ;p)

0

Ja jestem osobiscie zainteresowanym twoimi punktami 1, 3 oraz 4 poniewaz sam zaczalem nad tym pracowac i chcialbym napisac/stowrzyc taki program/bota/S.I dla moich potrzeb. Pozdrawiam mam nadzieje ze Ci sie udalo.

0

Sam interesuję się tym tematem.. Problemem jest 'uzbrojenie' takiego Boota w narzędzia..bo co najlepiej dać mu myszkę i klawiaturę.. Wtedy może sobie klikać ile wlezie,lecz będzie ślepy :) Trzeba dać mu wzrok. Wzrok to widok obrazu/Pulpitu sytemu oraz wszystkich wyskakujących okien. Jak to zrobić? Może analiza screenów? Dalej będzie problem z analizą przycisków. Boot nie wie gdzie dokładnie zaczyna się i kończy dany button.. Można ręcznie wklepać każde położenie danego okna,przycisku do obsługi programu.. tylko to nie ma sensu.. Boot ma sam się tego nauczyć przy zastosowaniu odpowiednich algorytmów. Mi udało się tylko stworzyć sieć dla robocika 2d który uczy się iść daną ścieżką. Myślę ,że podobnie można zrobić dla boota uczącego się danego systemu operacyjnego. Nauka trwa wtedy do momentu gdy np. boot nie sformatuje dysku C :D

0

Co do drugiego to "ostatnio" jakiej firmie się udało coś takiego zrobić i z marszu zostali kupienie za kwote z 7 zerami na końcu.
Nie mogę znaleźć linku ale tu google chwali się osiągnięciami.
http://www.komputerswiat.pl/nowosci/wydarzenia/2015/09/sztuczna-inteligencja-uczy-sie-grac-w-gry-z-lat-80-tych.aspx

2

Zauważyłem że wiele osób było za interesowane tematem, bo jest obiektywnie fajny :p,pisałem program który który zawraca współrzędne występowania określonej grafiki na monitorze. Może żadne sci-fi, ale wystarczająco szybkie by napisać program, który kierując ruchem myszki znajdzie wyjście z labiryntu, rozwiąże sapera, lub oszuka kupla w jakieś grze :P. Programy które wykorzystują najzajebistrzy algorytm świata na krzaczastym interfejsie nie robią na nikim wrażenia(no chyba że grafika 3d w konsoli ale to działa tylko na programistów), ale jak coś rusza myszką, to wtedy jest potęga :D, każdemu się to podoba :D. No i dlatego wydaje mi się że fajnie było by się tym podzielić, zwłaszcza że trochę się namęczyłem by to napisać :P .
Uzycie PrintScreen klik -> wybranie myszka grafiki -> załaduj wzór klik -> znajdz klik; Żółte kółka to rogi. wyczyść usuwa kółka.

Sam algorytm to żadne rocket-sciense, liczy sumy kontrolne dla obrazka wzorcowego, sumy kolorów w pikselach, + proste funkcje, ma to swoje wady ale dziwo działa dość dobrze, i poza lustrzanymi odbiciami i oczywistymi przypadkami, stosunkowo rzadko się myli:P, i chodzi szybko. Jak ktoś potrzebuje i lub chce ma cierpliwość to stosunkowo prosto przyśpieszyć ten kod, kilka- kilkanaście razy(a przynajmniej mi się tak wydaje.).
Pierwszy raz pisałem coś takiego i chciałem to dociągnąć do końca dla tego kod miejscami są jest ciekawie.
saper.jpg

0

To ciekawe :) Czyli program robi najpierw screena a potem analizuje poszczególne grafiki? Z jakiej biblioteki korzystasz?

0

Temat stary, ale się wypowiem. Przede wszystkim, jestem na 100% pewny, że autor sobie nie poradził z zadaniem, a nawet bardzo pewne, że projekt porzucił. A teraz odpowiadam: najkrócej, sztandarową "kogniwistyką" itp. nie załatwi się sprawy.

fasadin napisał(a):
  1. Bot uczy się rozmawiać.
    (...)

  2. Bot uczy się grać.
    (...)

  3. Bot potrafi sterować całym systemem operacyjnym
    (...)

  4. Także żeby reagował na głos (poprzez mikrofon)
    (...)

Ostatni punkt sugeruje, że nie masz zbyt dużego pojęcia o tym, co chcesz osiągnąć, bo "reagowanie" na głos (w szczególności zamiana dźwięku na tekst), a "rozumienie" (na ile możemy mówić o rozumieniu czegokolwiek przez kod) co mówi ten głos, to dwie zupełnie różne sprawy.

Natomiast odnosząc się do trzech pozostałych punktów, nie ma prostego rozwiązania. To o czym piszesz sugeruje, że powinien istnieć jakiś meta-system koncepcji (lub meta-meta-system, lub meta-meta-meta... itd. w zależności od Twoich ambicji), który operuje pewnymi abstrakcyjnymi pojęciami, a następnie je przekłada na konkretne obiekty czy też elementy.

"Bot uczy się rozmawiać" to temat wałkowany od dekad, i na pewno możesz znaleźć jakieś rozwiązania, niekoniecznie satysfakcjonujące, ale 'jakoś' działające. Uczenie się grania lub dowolnego systemu operacyjnego to osobna sprawa, i wymaga poświęcenia potężnych studiów pod kątem koncepcyjnym (nie - programowania), by w ogóle dobrze zabrać się za ten temat.

0

@up ale on to pisał 5 lat temu, twierdzenie że obecnie nie ma o tym pojęcia jest takie trochu nie na miejscu.

0

Witajcie, czy to już jest ten moment, gdzie AI zaczyna wychodzić ze sfery fiction i staje się science:

Naukowcy z Kalifornijskiego Instytutu Technologii i Uniwersytetu w Salerno opracowali system sztucznej inteligencji, który poprzez analizę skanu mózgu danej osoby jest w stanie przewidzieć jej inteligencję. System dokonuje tego na podstawie obrazowania funkcjonalnego rezonansu magnetycznego (fMRI) aktywności mózgu w stanie spoczynku danej osoby.

http://human2.com.pl/sztuczna-inteligencja-na-podstawie-skanu-mozgu-odgadla-iq-i-nie-tylko/

System sztucznej inteligencji (AI) zdobył 2:0 w zawodach diagnozowania nowotworów mózgu i przewidywaniu rozwoju krwiaka mózgu przeciwko doświadczonym lekarzom w Pekinie.

System BioMind AI, opracowany przez Centrum Badań nad Sztuczną Inteligencją dla Chorób Neurologicznych w Pekinskim szpitalu Tiantan, dokonał prawidłowej diagnozy w 87 procentach 225 przypadków w czasie około 15 minut, podczas gdy zespół 15 starszych lekarzy osiągnął jedynie 66-procentową skuteczność.

http://human2.com.pl/sztuczna-inteligencja-na-podstawie-skanu-mozgu-odgadla-iq-i-nie-tylko/

1

Hej,
posurfuj po tej stronie: http://www.is.umk.pl/~duch/indexpl.html Sporo zagadnień z AI, i zagadnień pokrewnych... :)

0
Nieposkromiony Samiec napisał(a):

czy to już jest ten moment, gdzie AI zaczyna wychodzić ze sfery fiction i staje się science:

Nie.

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