Koulutusprojekti shakki ja tekoäly. Tekoäly voitti ihmisen peleissä (Go, Chess ja muut)

Katsotaanpa joitain peruskäsitteitä, jotka auttavat meitä luomaan yksinkertaisen tekoälyn, joka voi pelata shakkia:

  • liikkuva;
  • shakkilaudan arviointi;
  • minimax;
  • alfa beta -leikkaus.

Jokaisessa vaiheessa parannamme algoritmiamme jollakin näistä aika-testatuista shakin ohjelmointitekniikoista. Näet kuinka kukin niistä vaikuttaa algoritmin pelityyliin.

Valmis algoritmi löytyy GitHubista.

Vaihe 1. Liikkeiden luominen ja shakkilaudan visualisointi

Käytämme chess.js-kirjastoja liikkeiden luomiseen ja chessboard.js-kirjastoja laudan hahmontamiseen. Liikkeiden generointikirjasto toteuttaa kaikki shakin säännöt. Tämän perusteella voimme laskea kaikki liikkeet tietyssä laudan tilassa.

Liikkeen generointitoiminnon visualisointi. Aloituskohtaa käytetään tulona, ​​ja lähtö on kaikki mahdolliset liikkeet tästä asennosta.

Näiden kirjastojen käyttö auttaa meitä keskittymään vain mielenkiintoisimpaan tehtävään - luomaan algoritmin, joka löytää parhaan liikkeen. Aloitamme kirjoittamalla funktion, joka palauttaa satunnaisen liikkeen kaikista mahdollisista liikkeistä:

Muutt számítaParasMove = function(game) ( //Luo kaikki liikkeet tietylle paikalle var newGameMoves = game.ugly_moves(); return newGameMoves; );

Vaikka tämä algoritmi ei ole kovin vankka shakinpelaaja, se on kuitenkin hyvä lähtökohta, koska sen taso riittää pelaamiseen kanssamme:

Musta pelaa satunnaisia ​​liikkeitä

JSFiddle.

Vaihe 2. Arvioi taulu

Yritetään nyt ymmärtää, kumpi puoli on vahvempi tietyssä asemassa. Helpoin tapa saavuttaa tämä on laskea laudalla olevien nappuloiden suhteellinen vahvuus seuraavan taulukon avulla:

Pistefunktiolla voimme luoda algoritmin, joka valitsee suurimman pistemäärän saaneen liikkeen:

Muutt számítaBestMove = funktio (peli) ( var newGameMoves = game.ugly_moves(); var bestMove = null; //Käytä mitä tahansa negatiivista lukua var bestValue = -9999; for (var i = 0; i< newGameMoves.length; i++) { var newGameMove = newGameMoves[i]; game.ugly_move(newGameMove); //Возьмите отрицательное число, поскольку ИИ играет черными var boardValue = -evaluateBoard(game.board()) game.undo(); if (boardValue >bestValue) (>bestValue = boardValue; bestMove = newGameMove ) ) palauttaa bestMove; );

Ainoa konkreettinen parannus on se, että algoritmimme syö nyt palan, jos mahdollista:

Musta leikkii yksinkertaisella arviointitoiminnolla

Voit nähdä mitä tapahtui tässä vaiheessa JSFiddlessä.

Vaihe 3 Etsi Tree ja Minimax

Luomme sitten hakupuun, josta algoritmi voi valita parhaan liikkeen. Tämä tehdään käyttämällä minimax-algoritmia.

Merkintä. käännös Yhdessä artikkelissamme käsittelimme jo - opimme luomaan tekoälyn, jota ei voi lyödä tic-tac-toe.

Tässä algoritmissa kaikkien mahdollisten liikkeiden rekursiivinen puu tutkitaan tiettyyn syvyyteen ja sijainti arvioidaan puun "lehdillä".

Tämän jälkeen palautamme pääsolmuun joko pienimmän tai suurimman lapsiarvon riippuen siitä, kenen vuoro lasketaan (eli yritämme minimoida tai maksimoida tuloksen kullakin tasolla).

Minimax visualisointi keinotekoisessa asennossa. Paras siirto valkoiselle on b2-c3, joten voimme taata, että pääsemme asemaan, jossa tulos on -50

Muutt minimax = funktio (syvyys, peli, isMaximisingPlayer) ( if (depth === 0) ( return -evaluateBoard(game.board()); ) var newGameMoves = game.ugly_moves(); if (isMaximisingPlayer) ( var bestMove = -9999; for (var i = 0; i< newGameMoves.length; i++) { game.ugly_move(newGameMoves[i]); bestMove = Math.max(bestMove, minimax(depth - 1, game, !isMaximisingPlayer)); game.undo(); } return bestMove; } else { var bestMove = 9999; for (var i = 0; i < newGameMoves.length; i++) { game.ugly_move(newGameMoves[i]); bestMove = Math.min(bestMove, minimax(depth - 1, game, !isMaximisingPlayer)); game.undo(); } return bestMove; } };

Minimaxilla algoritmimme alkaa ymmärtää shakin perustaktiikoita:

Minimax syvyystasolla 2

Voit nähdä mitä tapahtui tässä vaiheessa JSFiddlessä.

Minimaxin tehokkuus riippuu pitkälti saavutettavissa olevasta hakusyvyydestä. Tätä parannamme seuraavassa vaiheessa.

Vaihe 4 Alpha Beta -leikkaus

Asennot, joita emme tarvitse, jos käytetään alfa-beta-leikkausta. Puussa käydään kuvatussa järjestyksessä.

Alfa-beta-leikkauksella saamme merkittävän parannuksen minimaxissa, kuten seuraavassa esimerkissä näkyy:

Arvioitavien paikkojen lukumäärä haun syvyydellä 4 ja kuvassa näkyvä aloitussijainti.

Voit nähdä mitä tapahtui tässä vaiheessa JSFiddlessä.

Vaihe 5. Parannettu pisteytystoiminto

Alkuperäinen pisteytysfunktio on melko naiivi, koska laskemme yksinkertaisesti laudalla olevien nappuloiden pisteet. Sen parantamiseksi alamme ottaa huomioon lukujen sijainnin. Esimerkiksi laudan keskellä oleva ritari on "kallimpi", koska sillä on enemmän liikkeitä käytettävissä ja on siksi aktiivisempi kuin laudan reunalla oleva ritari.

Automaation ja tietotekniikan kehityksen historia liittyy oudosti shakkiin. XVIII vuosisadalla. "ajattelevia" shakkiautomaatteja käytettiin temppuihin ja huijauksiin. Ensimmäinen todellisella tekoälyllä varustettu laite, joka luotiin Espanjassa 1900-luvun alussa, kykeni mattimaan shakinpelaajan kuninkaan ja tornin kanssa. Ilmeisesti ei ole sattumaa, että yksi ensimmäisistä todella älykkäistä tehtävistä, jotka ohjelmoijille määrättiin tietojenkäsittelyn kynnyksellä, oli shakkipeli. Yksi ensimmäisten shakkiohjelmien luojista, teknisten tieteiden tohtori, professori Vladimir Lvovich Arlazarov, puhuu shakkiohjelmista ja tämän muinaisen pelin yhteydestä tekoälyteknologian kehitykseen.


– Vladimir Lvovich, miten päädyit ajatukseen, että tietokone voi ratkaista älyllisiä ongelmia?

- Kun selvisi, että tietokoneet eivät osaa vain laskea, kuten se on keksitty alusta asti, että aritmeettisten operaatioiden takana on looginen operaatio, joka ei ainoastaan ​​suorita aputoimintoja laskentaohjelmien toiminnassa, vaan myös laskentaohjelmien avulla. joilla on mahdollista ratkaista itsenäisiä ongelmia, kävi selväksi: kannattaa yrittää laittaa älyllisiä tehtäviä tietokoneeseen. Jossain 40-luvun lopusta 50-luvun loppuun tästä keskusteltiin aktiivisesti, ja lisäksi esitettiin puolifilosofisia kysymyksiä: ehkä tietokoneet ovat älykkäämpiä kuin ihmiset? Ja sitten mitä? Ja ihan vakavissaan. Nyt tällaisia ​​kysymyksiä ei esitetä, kunhan 40 vuotta on kulunut. Sitten, tietojenkäsittelyn kynnyksellä, tajusimme vasta, mitä koneet voisivat periaatteessa tehdä. Ymmärsimme, että ihmisen aivot ovat tietokoneen kaltainen laite ja tuhat, miljoona kertaa tehokkaampi, mutta pohjimmiltaan se on hieman erilainen. Kävi selväksi, että ainakin suurin osa ihmisen ratkaisemista rationaalisista ongelmista voidaan asettaa koneen edelle. Siksi voit yrittää kirjoittaa ohjelmia, jotka ratkaisevat nämä ongelmat. Yksi, kaksi, tuhat... loppujen lopuksi ihminen ei myöskään ratkaise loputonta määrää ongelmia. Ja on mahdollista niin sanotusti ohjelmoida kaikki ihmisen henkinen toiminta.

– Ja miksi päätit siirtyä peliin?

”Kuten sanoin, siitä, voiko kone ajatella, on keskusteltu paljon. On kuitenkin aivan selvää, että jos puhumme ohjelmoijista, ihmisistä, jotka eivät käsittele filosofiaa, vaan todellista tietokonetta, niin kysymys ei ole siitä, pystyykö kone pohjimmiltaan tekemään jotain, vaan etsitään esimerkkejä siitä, missä koneet päättää älyllisistä tehtävistä ja niistä, jotka ovat henkilön käytettävissä hänen älyllisessä toiminnassaan. Raja tässä ei tietenkään ole selvä. Mutta on selvää, että jos henkilö kertoo 20-numeroiset luvut, hän ei käsittele syvästi älyllistä tehtävää, koska sen toteuttamiseen on erittäin helppo löytää triviaali algoritmi, jonka jokainen koululainen tuntee. Mutta niitä tehtäviä, joissa on täysin selvää, että ihmisellä ei ole a priori algoritmia, mutta hän kuitenkin ratkaisee ne hyvin, kutsumme älyllisiksi. Ensimmäiset kilpailijat tällaisten tehtävien rooliin ovat pelit siitä yksinkertaisesta syystä, että ainakin säännöt on muotoiltu selkeästi. Tehtävä on äärimmäisen vaikea ja pelin säännöt on helppo muotoilla, joten koneen toiminnot on helppo määrittää. Toisaalta shakki on ihmiselle vaikea tehtävä, josta jotenkin ei ole koskaan keskusteltu eikä keskustella nytkään.

- Ja miksi valitsit shakin peleistä? Ehkä perinne?

Miksi vain shakki? Kokeilimme myös cross-elokuvia ja muita pelejä. Mutta shakilla on monia etuja muihin peleihin verrattuna. Jos yksinkertaisissa peleissä kone voittaa ihmisen, tämä ei yllätä ketään. Shakki on vaikea peli, ja tietokoneen voitto on tärkeä tässä. Sitten shakissa, toisin kuin monissa muissa peleissä, on monia erotettavia laatukriteerejä, eli voidaan määrittää: kone pelaa hyvin, kone pelaa paremmin, paremmin, paremmin. Monissa muissa peleissä tällaisia ​​asteikkoja on erittäin vaikea määrittää. Joissakin niistä kone joko opetetaan pelaamaan ehdottoman tarkasti, jolloin kaikki kiinnostus peliä kohtaan katoaa välittömästi tai se pelaa erittäin huonosti. Ja shakissa, ei abstraktissa, vaan niin sanotusti hallinnassa, on niin monia tasoja, että niiden avulla on mahdollista määrittää koneen pelin luokka.

– On siis selvää, miksi shakki oli tekoälyn ensimmäisiä ja tärkeimpiä tehtäviä. Mitä menetelmiä käytettiin sen ratkaisemiseen?

– Shakkipelin ongelmanratkaisutekniikka hallittiin alusta asti vähitellen. Periaatteessa shakki on rajallinen peli, ja matemaattisella tarkkuudella voidaan todistaa, että missä tahansa asennossa on abstrakti paras liike jokaiselle vastustajalle ja siten jonkinlainen tulos. Siksi on tarpeen kuvata algoritmi, jolla tämä peli voidaan laskea loppuun asti. Tämän algoritmin ainoa haittapuoli on, että se kestää kauan. Emmekä ole päässeet lähellekään niitä aikajärjestuksia, joita tarvitaan esimerkiksi shakin laskemiseen loppuun alkuasennosta. Viimeisen viidenkymmenen vuoden aikana tehtävä on ajallisesti ollut äärettömän monimutkainen. No, ääretön miinus kymmenen on silti ääretön. Mutta jos tarvitset aikaa, vaikkapa 10-100 vuositehoa, ja nopeuttaa autoa vaikkapa 100-kertaiseksi ja saat 10-98 vuosipotenssiin, on epätodennäköistä, että se parantaa oloasi. Siksi pääalgoritmi on tyhjentävä, triviaali: jos menen näin, vihollisella on niin monia mahdollisuuksia. Vaihtoehdot kasvavat eksponentiaalisesti ja muodostavat ketjuja. Mutta paikkojen määrä on yleensä rajallinen, eikä niitä ole niin paljon jokaisessa ketjussa. Ketjut yhdistetään puiksi, jotka eivät taaskaan ole loputtomia. Totta, ne kasvavat eksponentiaalisesti ja ketjujen määrä kasvaa. Joten herää tärkeä kysymys: tarvitsemmeko täydellisen, loppuun asti, luettelon - kaikkiin mattoihin, umpikujaan, kolminkertaisiin toistoihin ja muihin pelin päätöksiin shakin sääntöjen mukaisesti? Loppujen lopuksi, jos algoritmi johtaa paikkoihin, joita ei vaadita tässä puussa, niin ehkä koko puuta ei tarvitse ottaa huomioon. Huomaa itsellesi, että tilassa, jossa Valkoinen pariutuu yhdellä liikkeellä, voit rakentaa saman äärettömän puun, mutta sinun ei tarvitse harkita sitä, mutta riittää, että löytää tämän ainoan liikkeen. Ehkä tilanne on sama shakissa yleensä? Yleisesti ottaen luettelointialgoritmi, vaihtoehtojen luettelointi liittyy niin moniin ihmisen ratkaisemiin tehtäviin, että jos voisimme järjestää sen jollain hyvin omaperäisellä tavalla, se olisi tavallaan kuin ihmiskunnan pyörän keksiminen. - yksi perustavanlaatuisista löydöistä. Joten, luettelointi voisi olla, ja ehkä se onkin, tekoälyn pyörä.

– Yhdessä tekoälyä käsittelevistä artikkeleista luin, että äly on kykyä ymmärtää ja valita. Tietenkin on erittäin vaikeaa opettaa tietokonetta valitsemaan useista eri vaihtoehdoista. Mutta varmasti jotkut shakkikohtaiset ratkaisut ovat mahdollisia?

- Kyllä kyllä. Tämä tehtävä oli ratkaistava nopeasti ja tehokkaasti, ja shakissa he päätyivät nopeasti seuraavaan kysymyksen teoreettiseen muotoiluun: ei katsota ääretöntä määrää liikkeitä, vaan vain muutamia liikkeitä eteenpäin. Oletetaan, että katsomme 5 askelta eteenpäin. Tämä on paljon. Jos rakastat shakkia ja 5 liikettä ei riitä sinulle, niin otetaan 10. Ja sitten kone 10 liikettä, 20 puoliliikettä eteenpäin ei tee virheitä missään ja takaa, että 10 liikkeen jälkeen sinulla ei ole yhtään nappulaa vähemmän. On selvää, että kyseessä on vahva pelikone. Joten pelipuuta on pienennettävä ja ongelma ratkaistava paljon rajoitetussa tilassa. Toinen kysymys on, että he yrittävät harkita tätä puuta ei kokonaan matemaattisten karsiumenetelmien avulla. Puhuin jo yhdestä niistä: jos matti on yhdessä liikkeessä, ei tarvitse tarkastella muita vaihtoehtoja. Muut algoritmit ovat heuristisia, eivät tarkkoja. Keskimäärin ne toimivat oikein, monet ovat ehdottoman tarkkoja, mutta ne voivat olla väärin. Emme esimerkiksi voi käydä läpi kaikkia liikkeitä, vaan vain sieppauksen ja laskea ne paljon eteenpäin, koska sieppauksia on vähän. Liikkeiden kokonaissyvyys on pieni: et voi syödä enempää kuin kolmekymmentäkaksi palaa. Siksi ketjujen pituudet ovat pieniä ja oksia on vähän. Tietysti on selvää, että pelkkää kaappausta ei voi rakentaa, vaan siinä on oltava joitain paikannusnäkökohtia. Pakottamisen (kaappaus, tarkista) ja sijaintinäkökohtien yhdistelmä sekä tietty luettelon syvyys on kaikkien olemassa olevien algoritmien perusta, eikä se juuri muutu. Toinen kysymys: kuinka valita ne liikkeet, joita harkitsen edelleen? Perustuuko se vain yksinkertaisiin muodollisiin kriteereihin (kaappaus, tarkista) vai yhdistääkö nämä liikkeet, kuten shakinpelaajat haluavat sanoa, suunnitelmaan, keksiä jonkinlaisia ​​ketjuja, joilla on jokin yhteinen omaisuus? Joka tapauksessa tästä on kirjoitettu paljon vakavia teoksia käytännön sovelluksilla. Ei ole turhaa, että melko hyvämaineiset yritykset harjoittavat shakkiohjelmien luomista.

– Ja milloin ensimmäiset shakkiohjelmat ilmestyivät?

- Todelliset shakkiohjelmat ilmestyivät ensin jossain 50-luvun lopulla Amerikassa ja sitten jossain 60-luvun alussa - maassamme. Ohjelmat olivat erittäin heikkoja, koska silloin oli sekä äärimmäisen primitiivisiä koneita että ajatteluamme, joka ei ollut vielä tottunut uutuuteen. Osallistuimme tähän liiketoimintaan noin vuonna 1963. Sitten kotimaisissa autoissamme oli joitain otteluita. Mielestäni vuonna 1967 oli ensimmäinen ottelu Neuvostoliiton ja USA:n välillä. Sitä kutsuttiin niin, vaikka tietysti se tapahtui kahden joukkueen, ei maiden, välillä. Se oli ottelu teoreettisen ja kokeellisen fysiikan instituutissa kehitetyn ohjelmamme ja tietokonemaailman hyvin kuuluisan henkilön John McCarthyn ohjelman välillä, joka oli yksi ohjelmointikielten luojista, joka silloin piti shakkiohjelmista. Liikkeet välitettiin lennättimellä, koska silloin ei ollut verkkoja.

- Ja kuka voitti?

– Voitimme silloin 3:1. Pelasi 4 peliä. Muutto tehtiin päivässä, koska amerikkalaisilla oli tehokkaampia ja syvällisempiä ohjelmia, jotka ajattelivat pitkään, ja pelasimme eri versioilla ohjelmista, jotka ajattelivat sekä nopeasti että hitaasti. Voittomme oli ensimmäinen saavutuksemme. Tämä suunta alkoi kehittyä vähitellen ja aktivoitui erityisen aktiivisesti 70-luvulla. Ensimmäiset shakin maailmanmestaruuskilpailut järjestettiin vuoden 1974 tienoilla Tukholmassa. Mukana oli noin kahdeksan ohjelmaa, mukaan lukien meidän. Ja sitten voitimme myös ja tulimme ensimmäisiksi maailmanmestariksi. Siitä lähtien MM-kisoja on järjestetty säännöllisesti, kolmen vuoden välein. Osallistuimme niihin vielä 2 kertaa - vuonna 1977 ja 1980. Emme voittaneet Lavrovia silloin, koska vuonna 1977 jaoimme 2. ja 3. sijan (osallistui monia shakkiohjelmia, oli jopa aluevalinnat), ja vuonna 1980 - 4. ja 5. paikka. Yleensä ne rullasivat hitaasti taaksepäin. Tosiasia on, että tähän aikaan tietojenkäsittelyssä oli jo tapahtunut valtavaa edistystä, ja pelasimme edelleen melko vanhentuneilla tietokoneilla. Ja vuoteen 1980 mennessä meille kävi selväksi, että kilpaileminen koneilla, joilla työskentelemme, oli menettänyt kaiken merkityksen, ja yleensä Venäjällä shakkiohjelmien alalla työ alkoi tulla tyhjäksi. Vaikka mielenkiintoisia teoreettisia töitä oli melko paljon. Hieman myöhemmin he loivat ensimmäisen, ehkäpä ohjelman, joka levisi ympäri maailmaa, ja hän osasi pelata täysin tarkasti monimutkaista loppupeliä, eli kuningatar ja sotilas kuningatarta vastaan ​​tai torni ja sotilas tornia vastaan. . Ohjelma vain käsitteli tällaiset loppupelit loppuun asti, eli missä tahansa asennossa se antoi ihanteellisen oikean liikkeen. Algoritmi rakennettiin yksinkertaisesta luetteloinnista hieman poikkeaville periaatteille, koko sijaintijoukon täydelliselle tarkastukselle. No, ja sitten shakissa tehtiin tämän tyyppisiä teoksia. Ja sitten sanottiin hyvästit käytännön pelille, sillä nopeuserot olivat jo satakertaiset. Mutta mestaruuskilpailut jatkuivat, ja shakkiohjelmien kehitys siirtyi aivan uudelle tasolle heti, kun kaikki siirtyi PC:lle. Laajan kaupallistamisen seurauksena shakkiohjelmiin alettiin sijoittaa valtavia summia, kaikki luokiteltiin välittömästi. Ja aiemmin ne kuuluivat tutkijoille, jotka, elleivät niitä pakoteta tarkoituksella, eivät piilota saavutuksiaan, vaan päinvastoin levittävät niitä. Vuonna 1980 tunsimme ensimmäistä kertaa, että oli kaupallisen ohjelmoinnin aika. Tämä maailma on tietysti ainutlaatuinen. Ensinnäkin siksi, että siihen sijoitetaan rahaa, ja toiseksi, koska siitä saadaan rahaa. Vaikka shakkiohjelmistoista on lehtiä, todellinen ajatustenvaihto on vähentynyt huomattavasti viimeisten 15–17 vuoden aikana, koska niistä on tullut valtava bisnes PC:ssä.

– Mutta kaupankäynti stimuloi shakkiohjelmistomarkkinoiden kehitystä, eikö niin?

- Aiemmin tietokonekilpailut ajoitettiin tietotekniikan foorumien kanssa. On olemassa sellainen organisaatio - IFI (International Federation for Informatics) ja yleensä maailmanmestaruuskilpailut ajoitettiin samaan aikaan sen kongressin kanssa. Nyt niistä on tullut täysin itsenäisiä tapahtumia, melko arvostettuja. Tällaisia ​​ohjelmia on satoja ja satoja. Ohjelmoinnin ja tietämyksemme taso on jo sellainen, ettei yksinkertaisen shakkiohjelman tekeminen ole pienintäkään vaikeutta. Tämä on normaalia opiskelijatyötä. Uskon sen vain jollekin opiskelijalle. Shakkiohjelman lyömisestä on tullut niin sanotusti arkipäivää.

– Mutta kuten aina, alempi taso yksinkertaistuu ja korkeampi monimutkaisempi?

- Se siitä. Siksi uusimmat ohjelmat, ne, jotka nyt voittivat, erityisesti Kasparovin voittanut ohjelma, ovat vahvistuneet paljon. Hakujen syvyys on kasvanut merkittävästi, ja tämä on tietysti seurausta matemaattisesta edistyksestämme ja osittain yksinkertaisesti tietotekniikan kehityksestä. Loppujen lopuksi, jos aiemmin 1000 paikan sekunnissa huomioimista pidettiin paljon, nyt niissä puissa, joista olemme jo puhuneet, otetaan huomioon yli miljoona paikkaa. Ja ylimääräinen miljoona on useita liikkeitä oikealla valinnalla. Ja jokainen hakusyvyyden taso parantaa ohjelmaa huomattavasti. Jokainen taso yksi siirtymä eteenpäin on suunnilleen sijoitus, ja esimerkiksi neljän liikkeen hakusyvyys on kolmas arvo ja viisi liikettä on jo toinen sijoitus. Kun saavutamme 11–13 liikkeen tason, tämä on mestaritaso ja on melko vaikeaa pelata koneella pidemmälle. Tietysti nyt amerikkalaiset johtavat, koska he osaavat sijoittaa paljon rahaa sellaisiin asioihin.

– Mikä tahansa tekoälyohjelma päätöksentekoon ei tarvitse vain heuristisia mekanismeja, vaan myös jonkinlaisen tietopohjan. Mikä on tietokannan ja shakkiohjelmien paikkoja luovien algoritmien välinen suhde?

- Kukaan ei voi sanoa varmaksi, koska tämä on spekuloinnin aihe. Siellä oli ohjelmia, jotka olivat riittävän vahvoja vain minimaalisella tiedolla, tarkoituksella minimaalisella tiedolla, erityisesti nähdäkseen, mitä puhtaasta matematiikasta voidaan puristaa. Jossain vaiheessa tämä johtui kaupallistamisesta ja erityisesti siitä, että he alkoivat tehdä tehokkaimpia ohjelmia - sillä ei ole väliä minkä kustannuksella. Mutta osittain siitä syystä, että upotetun tiedon kanssa työskentely on itsenäinen tehtävä, niitä on paljon. Ensinnäkin luotiin valtava hakemisto. Nyt hakemistot ovat satoja tuhansia kantoja. Silloin asemien arviointiin panostetaan aina paljon shakkiälyä. Se riippuu tietysti pelimateriaalista, joka on triviaalia, ja joihinkin sijaintitekijöihin. Asematekijät ovat siis puhtaasti shakkiälyä, joka on tietysti ohjelmoitu, mutta täällä siitä on paljon asetettu ja sitä parannetaan jatkuvasti. Ja mitä enemmän tekijöitä sinne investoidaan, sitä vahvempi ohjelma on. Tietyssä mielessä kyky arvioida asemaa ja luettelon syvyys ovat keskenään vaihdettavia asioita. Jos pystyisimme arvioimaan asennon nerokkaasti, niin meille riittäisi kokeilla kaikkia ensimmäisiä liikkeitä. Tämä on kuin äärimmäinen esimerkki. On selvää, että paremmalla sijaintiarviolla on vastaavasti suurempi vaikutus hakusyvyyteen. Tämä on toinen, perustavanlaatuinen menetelmä. On olemassa useita ohjelmia, joissa shakkiäly on sisällytetty harkittavien vaihtoehtojen valintaan, toisin sanoen joitain puhtaasti shakkinäkökohtia, joitain suunnitelmia. Tällaisia ​​näkökohtia on melko vähän, mikä rajoittaa luettelointia. Heidän toimintansa ei ole kovin laaja, ja älyllis-shakkikohtainen data hidastaa laskemista. Muuten, juuri älyllisiä asioita Botvinnik puolusti kerran erittäin voimakkaasti. Hän oli suuri koneshakin harrastaja ja antoi siihen joitain ideoita. Vaikka hän ei koskaan onnistunut luomaan työohjelmaa, hänen auktoriteettinsa oli silloin erittäin korkea. Joten hän oli hyvin järkyttynyt siitä, että suunta ei yleensä ollut niin "älyllinen" kuin hän haluaisi, ja ohjelmiin panostettiin hyvin rajallinen määrä puhtaasti shakkitietoa.

– Entä erikoistuneet shakkitietokoneet? He ilmeisesti toimivat juuri sukupolven menetelmällä?

- Tietenkin. Ensinnäkin, sukupolven merkityksessä, luettelointi on kaavamaista. Toiseksi, kaikki paikkataulukot eivät ole vähemmän tärkeitä, koska shakissa paikkojen toisto on erittäin korkea. Menet E4E6D4 tai D4E6E4 - asento on sama, ja se on vain 3 puoliliikettä. Ja kun alamme mennä syvemmälle, asemien toistettavuus on erittäin korkea. Kolmanneksi tekninen alue. Itse asiassa aikoinaan rakensimme teorioita siitä, mille asemille paikalliset muutokset eivät pohjimmiltaan voi johtaa pakkovaihtoehtojen muutokseen, miten luoda jonkinlaisia ​​malleja. Tällaisten vaihtoehtojen mallit sopivat hyvin tietokoneen erilaisiin puhtaasti teknisiin suunnitelmiin. Tietenkin referenssikaaviot ovat erittäin tärkeitä.

– Onko olemassa keinoja luoda universaali ajattelukoneisto, johon voisi laittaa tietopohjan - ei väliä, shakkiasennot tai jotain muuta, säännöt, joiden mukaan tämän tiedon kanssa tulee työskennellä - ja saada siitä riittävästi tuloksia?

- On selvää, että rakentavuuden kannalta tällaista tehtävää ei voida ratkaista tänään, se ei ole relevanttia. Vaikka nyt ratkaistaan ​​monia älyllisiä tehtäviä, kuten esimerkiksi tekstintunnistus. Voit laittaa tekstiarkin skanneriin ja saada sen näytölle Wordissa. Hän lukee itse, jokainen kirjain tunnistetaan. Itse asiassa olemme edistyneet monissa älyllisissä tehtävissä. Osa niistä on jo ratkaistu, osa on ratkaistu. Jollain tapaa se osoittautuu suhteellisen paremmaksi kuin henkilön osallistuessa, toisaalta se on vielä huonompi. Käytännön esimerkkejä voidaan antaa monia. Mitä tulee yleismaailmalliseen keinotekoiseen ajattelumekanismiin, tämä on enemmän filosofinen kuin käytännöllinen ongelma. Loppujen lopuksi, jopa niin yksinkertaisessa pelissä kuin shakki, kesti 30 - 40 vuotta saavuttaa jotain. Jokainen filosofia perustuu mielipiteisiin. Jokainen luulee olevansa oikeassa, ja ehkä jokainen on oikeassa omalla tavallaan. Esimerkiksi koko ikäni olen käsitellyt tekoälyä ja uskon, että ihmisen aivot eivät ole muuta kuin suuri tietokone, joten ei voida sanoa, että vastaavan luominen olisi pohjimmiltaan mahdotonta. Kysymys on sen tehossa, nopeusominaisuuksissa, sen täyttämisessä tiedolla. Tässä ei ole mitään käsittämätöntä. Tämä on henkilökohtainen näkemykseni. Mutta on myös muita mielipiteitä. Tietysti, jos tunnistamme ihmisen jumalallisen luonteen, meidän on jo valittava toinen kahdesta epistemologisesta vaihtoehdosta. Tai kyllä, meillä on jumalallinen luonne, mutta se on tiedossa. Tässä tapauksessa emme pysty todella toistamaan sitä, mitä Herra Jumala kykeni tekemään, mutta voimme ainakin osittain luoda uudelleen Hänen luomuksensa. Tai seisomme agnostiikan kannalla, ja sitten se on tuntematonta, ja kysymys poistetaan kokonaan. Osoittautuu, että ihmisen aivot ratkaisevat joitain ongelmia - eikä kukaan epäile tässä. Mutta emme voi saavuttaa aivoja, koska toisaalta ne ovat Jumalan luomia, ja toisaalta emme voi tietää niitä. Kaikki kolme asentoa liittyvät uskoon, koska todellisuudessa ei ole välttämätöntä tietää kaikkia aivojen toimintoja. Jos teemme koneesta yhtä voimakkaan kuin aivot, sen ei tarvitse ajatella kuten aivot. Hän toimii eri tavalla.

- Psykologiassa tietääkseni ihmisen älyllinen kehitys määräytyy kolmen kriteerin perusteella: kyky abstraktoida, luoda älyllistä aluetta ja jotain muuta... Missä määrin nämä mahdollisuudet toteutuvat tekoälyssä ja ovat tajusivatko he ollenkaan?

- On paljon ohjelmia, joiden tarkoituksena on nimenomaan luoda käsitteitä, jotka irtaantuvat olemassa olevasta faktamateriaalista. Tällaiset ohjelmat toimivat hyvin. Toinen kysymys on, että ihminen pystyy luomaan nämä käsitteet ikään kuin omien lakiensa mukaan, jotka hän itse keksii. Kaikki yrityksemme kääntää nämä hänen lakinsa logiikan algebran kielelle osoittautuvat turhiksi. Ihmisellä on paljon tehokkaampi ajattelumekanismi, jota emme yksinkertaisesti tiedä. Emme voi tehdä "mitään". Luomme tarvitsemamme formulaatiot, mutta emme voi "ilmaista" niitä täsmällisissä koneongelmissa. Kaikki vaikeutuu mekaanisiksi ongelmiksi, ja vaikka se vähenisi, niin hitaasti. Todennäköisesti emme vielä tiedä suoria tapoja saavuttaa tavoite. Tietokoneeseen voi laittaa mitä tahansa. Kysymys on siitä, että ihminen pystyy manipuloimaan tätä tietoa koko ajan, mutta hän ei silti osaa saada konetta tekemään samoin, koska dataa on rajoitettu määrä ja nopeus.

"Mutta ehkä ei ole mitään järkeä pakottaa konetta manipuloimaan tietoa?"

– Tässä käsitellään sekä moraalittomia että rakentavia puolia. Olemme vielä kaukana kapinallisista koneista. Minun ikäiselleni ja myös sinulle rauhallisuutta riittää varmasti. Edes rajoitetuilla alueilla emme ole vielä oppineet kuinka saada kone manipuloimaan ongelmia, edes niitä, jotka se pystyy ratkaisemaan. Asetamme tehtävän, ja hän ajattelee vain käskystä.

– Vladimir Lvovich, kerro minulle, jos olisi taas tietotekniikan kynnyksellä, kannattaisiko shakkiohjelmien tekeminen? Ovatko ne todella edistäneet edistystä?

– Shakkihan laajentaa näköalojamme. Shakkiohjelmissa tehtäviä asetetaan, tulos näkyy, arvioimme sen. Silti täytyy olla monia ratkaistuja mielenkiintoisia ongelmia, mikä edistää tietotekniikan edistymistä.

Valitettavasti shakille ei ole vielä olemassa parempaa algoritmia kuin hyvin monien paikkojen luettelointi. Totta, luettelo on järjestyksessä (eikä yksi) optimoitu, mutta silti se on suuri luettelo. Vastausliikkeen etsimiseksi rakennetaan puu, jonka juureen alkuperäinen siirto, reunat - siirrot-vastaukset ja solmut - uudet paikat.

Alkeisalgoritmeissa on helppo selittää, kuinka seuraava liike valitaan. Vuorollasi valitset liikkeen (mielestäsi), joka tuo suurimman hyödyn (maksimoi hyödysi), ja vastustaja yrittää seuraavalla siirrollaan valita liikkeen, joka tuottaa hänelle eniten hyötyä (maksimoi hänen hyödynsä) ja minimoi omasi). Tällä periaatteella toimivaa algoritmia kutsutaan minimaxiksi. Jokaisessa vaiheessa annat sijaintiarvion jokaiselle puun solmulle (lisätietoja myöhemmin) ja maksimoit sen omalla liikkeelläsi ja minimoit sen vastustajasi liikkeellä. Algoritmin tulee toiminnan aikana käydä läpi kaikki puun solmut (eli kaikki mahdolliset pelipaikat), eli se on täysin sopimaton ajallisesti.
Sen seuraava parannus on alfa-beta-leikkaus (haara- ja reunamenetelmä).

Nimestä seuraa, että algoritmi katkaisee kahdella parametrilla - alfa ja beta. Leikkaamisen pääidea on, että nyt pidämme leikkausvälin (ala- ja ylärajat - alfa ja beta - K.O.) emmekä ota huomioon arvioita kaikista solmuista, jotka eivät kuulu väliin alhaalta ( koska ne eivät vaikuta tulokseen - nämä ovat vain huonompia liikkeitä kuin jo löydetty), ja itse aikaväliä kavennetaan, kun parhaat liikkeet löydetään. Vaikka alfa-beta-leikkaus on paljon parempi kuin minimix, sen käyttöaika on myös erittäin pitkä. Jos oletetaan, että kesken pelin toisella puolella on noin 40 eri liikettä, niin algoritmin aika voidaan arvioida muodossa O(40^P), jossa P on siirtopuun syvyys. Tietysti minimaxilla voi olla sellainen harkintasiirtojen sarja, kun emme tee mitään leikkauksia, silloin alfa-beta-leikkauksesta tulee yksinkertaisesti minimax. Parhaimmillaan alfa-beta-leikkauksella voidaan välttää kaikkien minimax-liikkeiden juurien tarkistaminen. Pitkän käyntiajan välttämiseksi (niin O-suurella algoritmin monimutkaisuudella) puussa tehdään haku jollain kiinteällä arvolla ja solmu arvioidaan siellä. Tämä arvio on erittäin suuri approksimaatio solmun todelliselle estimaatille (eli iteroidaan puun loppuun, ja siellä tulos on "voita, häviä, tasapeli"). Mitä tulee solmun arviointiin, on olemassa vain joukko erilaisia ​​​​menetelmiä (voit lukea sen artikkelin lopussa olevista linkeistä). Lyhyesti sanottuna - sitten tietysti lasken pelaajan materiaalin (yhden järjestelmän mukaan - kokonaisluvuilla sotilas - 100, ritari ja piispa - 300, torni - 500, kuningatar - 900; toisen järjestelmän mukaan - aito osissa yhdestä) + sijainti tämän pelaajan laudalla. Mitä tulee asemaan, tästä alkaa yksi shakin kirjoittamisen painajaisista, sillä ohjelman nopeus riippuu pääasiassa arviointitoiminnosta ja tarkemmin sanottuna paikan arvioinnista. Siinä on jo joku. Parikierroksilla pelaaja +, kuninkaan peittäminen omilla pelinappuloillaan +, pelilaudan toista päätä lähellä oleva sotilas + jne. sekä riippuvat nappulat, avoin kuningas jne. miinus asema. jne. - Voit kirjoittaa joukon tekijöitä. Täällä pelin sijainnin arvioimiseksi rakennetaan arvio pelaajan asemasta, joka tekee liikkeen, ja siitä vähennetään vastustajan vastaavan sijainnin arvio. Kuten sanotaan, yksi kuva on joskus parempi kuin tuhat sanaa, ja ehkä pala pseudo-C#-koodia olisi myös parempi kuin selityksiä:

Enum CurrentPlayer (minä, vastustaja); public int AlphaBetaPruning (int alfa, int beta, int syvyys, CurrentPlayer currentPlayer) ( // nykyisen solmun int arvon arvo; // laskea nykyinen solmu ++solmutSearched; // saada vastakohta nykyiselle pelaajalle CurrentPlayer vastustajanPlayer = GetOppositePlayerTo(currentPlayer); / / generoi kaikki liikkeet pelaajalle, jonka vuoro on tehdä siirto / /tällä menetelmällä luodut liikkeet ovat vapaita liikkeistä // minkä jälkeen nykyinen pelaaja olisi tarkistuslistalla liikkuu = GenerateAllMovesForPlayer(nykyinen pelaaja); // silmukka liikkeiden läpi foreach liike siirroissa ( MakeMove(move); ++ply; // Jos syvyys on paikallaan, jatka etsimistä syvemmälle if (depth > 1) arvo = -AlphaBetaPruning (-beta, -alfa, syvyys - 1, vastustajanPelaaja); else // Jos syvyyttä ei ole jäljellä (lehtisolmu), arvioi kyseisen sijainnin arvo = EvaluatePlayerPosition(currentPlayer) - EvaluatePlayerPosition(opponentPlayer); RollBackLastMove(); --ply; if (arvo > alfa) ( // Tämä siirto on niin hyvä, että aiheutti lepopuun katkaisun if (arvo >= beta) return beta; alfa = arvo; ) ) if (liikkee.Count == 0) ( // jos ei liikettä, niin sijainti on matti tai jos ( IsInCheck(currentPlayer)) return (-MateValue + ply); muuten palauttaa 0; ) palauttaa alfa; )

Mielestäni jotkin koodin selitykset eivät ole tarpeettomia:

  • GetOppositePlayerTo() yksinkertaisesti muuttaa CurrentPlayer.Me muotoon CurrentPlayer.Opponent ja päinvastoin
  • MakeMove() tekee seuraavan siirron siirtoluettelosta
  • ply - globaali muuttuja (osa luokkaa), joka pitää sisällään tietyllä syvyydellä tehtyjen puoliajojen määrän
Esimerkki menetelmän käytöstä:

( kerros = 0; solmutHaettu = 0; int pisteet = AlphaBetaPruning (-MateArvo, MateArvo, max_depth, CurrentPlayer.Me); )
jossa MateValue on riittävän suuri luku.
Parametri max_depth on suurin syvyys, johon algoritmi laskeutuu puussa. On syytä pitää mielessä, että pseudokoodi on puhtaasti demonstroiva, mutta varsin toimiva.

Sen sijaan, että olisivat keksineet uuden algoritmin, alfabeta-leikkausta edistävät ihmiset ovat keksineet monia erilaisia ​​heuristiikkaa. Heuristiikka on vain pieni hakkerointi, joka joskus saa aikaan erittäin suuren nopeuden lisäyksen. Shakissa on paljon heuristiikkaa, et voi laskea niitä kaikkia. Annan vain tärkeimmät, loput löytyvät artikkelin lopussa olevista linkeistä.

Ensin käytetään hyvin tunnettua heuristiikkaa "nolla liike". Rauhallisessa asennossa vastustaja saa tehdä kaksi liikettä yhden sijasta ja sen jälkeen puuta tarkastellaan syvyyteen (syvyys-2), eikä (syvyys-1). Jos tällaisen alipuun arvioinnin jälkeen käy ilmi, että nykyisellä pelaajalla on edelleen etu, alipuuta ei ole syytä harkita tarkemmin, koska seuraavan siirtonsa jälkeen pelaaja vain parantaa asemaansa. Koska haku on polynomi, nopeuden vahvistus on havaittavissa. Joskus käy niin, että vihollinen tasoittaa etunsa, niin sinun on harkittava koko alipuuta loppuun asti. Aina ei tarvitse tehdä tyhjää siirtoa (esimerkiksi kun joku kuninkaista on sökissä, zugzwangissa tai loppupelissä).

Edelleen ideaa käytetään ensin liikkeen tekemiseen, jossa otetaan kiinni viimeisen liikkeen tehnyt vastustajan nappula. Koska lähes kaikki liikkeet luetteloinnin aikana ovat typeriä eivätkä kovin järkeviä, tällainen ajatus kaventaa hakuikkunaa huomattavasti alussa ja katkaisee siten monia tarpeettomia liikkeitä.

Myös tunnettu historian heuristiikkaa tai paras siirtopalvelu. Luettelon aikana tallennetaan puun tietyn tason parhaat liikkeet ja paikkaa harkittaessa voit ensin yrittää tehdä tällaisen liikkeen tietylle syvyydelle (perustuu ajatukseen, että puussa yhtä syvyyksillä parhaat liikkeet tehdään hyvin usein).
Tiedetään, että tällainen liikkeiden välimuisti paransi Neuvostoliiton Caissa-ohjelman suorituskykyä 10 kertaa.

On myös ajatuksia liikkeiden luomisesta. Ensinnäkin huomioidaan voittavat sieppaukset, eli sellaiset kaappaukset, joissa pienempi pistemäärä päihittää hahmon, jolla on korkeampi pistemäärä. Sitten huomioidaan ylennyksiä (kun pelilaudan toisessa päässä oleva sotilas voidaan korvata vahvemmalla nappula), sitten yhtäläiset kaappaukset ja sitten siirtyvät historian heuristisesta välimuistista. Loput siirrot voidaan lajitella laudan ohjauksen tai jonkin muun kriteerin mukaan.

Kaikki olisi hyvin, jos alfa-beta-leikkaus antaisi taatusti parhaan vastauksen. Vaikka otetaan huomioon pitkä kaatumisaika. Mutta se ei ollut siellä. Ongelmana on se, että kiinteällä arvolla suoritetun listauksen jälkeen lasketaan sijainti ja se on siinä, mutta kuten kävi ilmi, joissain pelipaikoissa lukemista on mahdotonta pysäyttää. Monien yritysten jälkeen kävi ilmi, että laskennan voi lopettaa vain rauhallisissa asennoissa. Siksi pääluetteloon lisättiin ylimääräinen luettelo, jossa huomioidaan vain sieppaukset, ylennys ja tarkastukset (ns. pakotettu luettelointi). Huomasimme myös, että joitain positioita, joissa on vaihto keskellä, on myös harkittava syvemmällä. Ideoita siis oli laajennuksia і vähennyksiä, eli luettelointipuun syvennykset ja lyhennykset. Syventämiseen sopivimpia asentoja ovat kuten pelinappulat, shekin välttäminen, nappulan vaihto keskellä rintakuvaa jne. Lyhentämiseen sopivat "täysin rauhalliset" asennot. Neuvostoliiton Caissa-ohjelmassa pakkolaskelma oli hieman erikoista - siellä laskennan aikana tapahtuneen kaappauksen jälkeen pakkolaskenta alkoi välittömästi eikä sen syvyyttä rajoitettu (koska se tyhjenee rauhallisessa asennossa jonkin ajan kuluttua).

Kuten Anthony Hoare sanoi: Ennenaikainen optimointi on kaiken ohjelmoinnin pahan alku." (huomaa: niille, jotka uskovat tämän lainauksen olevan Knuthilta, on mielenkiintoisia keskusteluja

Ottelu on menetetty: tietokone henkilöä vastaan.

Luova ajattelu, logiikka, kokemus ovat ominaisuuksia, jotka mahdollistivat ihmisen johtamisen "ihmisen ja koneen" taistelussa. Näytti siltä, ​​​​että nämä edut tulevat aina olemaan ihmisen salainen ase, ja tietokone tulee olemaan "kiinni".

Mutta kesti melko vähän aikaa, ennen kuin tekoäly tavoitti ja ohitti ikuisesti ihmiset monilla alueilla, myös älyllisen viihteen alalla.

Tekoäly voitti ihmisen: missä ja miten

Rubikin kuutio
Tämä palapeli tunnetaan kaikkialla maailmassa. Miljoonat ihmiset yrittävät suorittaa tehtävän ja kerätä kuution oikein, ja jotkut jopa kilpailevat kokoamisnopeudella. Ihmisennätyksen teki 14-vuotias yhdysvaltalainen Lucas Etter, joka ratkaisee pulman 4,904 sekunnissa. Uskomatonta, eikö? Mutta tämän tuloksen ylitti robotti, jonka loivat kaksi harrastajaa Jay Flatland ja Paul Rose: robotin tulos on 1,047 sekuntia.


Sisäänrakennettujen kameroiden ansiosta, joita on neljä, tietokone arvioi sijainnin ja valitsee parhaan toiminta-algoritmin. Järjestelmä perustuu Kotzebuen kaavaan (kokoonpano 20 liikkeessä). Tuskin kukaan ihmisistä pystyy ratkaisemaan Rubikin kuution nopeammin kuin 1 sekunti.
0:1 tekoälyn puolesta.

"Othello"
Tämän pelin suosion huippu osuu viime vuosisadan 70-luvun alkuun. Pelin ydin on asettaa pelimerkit pelikentälle (8 × 8 solua): sinun on suljettava vastustajan pelimerkkirivit molemmilta puolilta sinun värilläsi, sitten pelimerkit vaihtavat väriä ja menevät vastustajalle. Voitto menee sille, joka miehittää suurimman alueen.


Vuonna 1980 Hiroshi Inouye oli Othellon maailmanmestari ja voitti helposti maurien ohjelman 5-1.
Myöhemmin ohjelmat oppivat laskemaan vastustajan liikkeet (noin 25 siirrolla), ja kun hallitseva maailmanmestari Takeshi Murakami kohtasi uusintaottelussa Logistello-järjestelmän kanssa vuonna 1997, tulos oli murskaava 0:6 ohjelmiston hyväksi.

Backgammon
Tekoäly on backgammon-etunsa ihmisiin nähden velkaa kirjesahkin maailmanmestarille (ja sellaisia ​​on) Hans Berlinerille, joka kirjoitti BKG 9.8 -ohjelman. Ja vuonna 1979 ohjelma osoittautui vahvemmaksi kuin backgammonin maailmanmestari Luigi Villa.


Uskotaan, että siinä pelissä tietokone oli onnekas (hyviä noppaa putosi useita kertoja), mutta kukaan muu ei halunnut taistella toistuvassa uusintaottelussa, varsinkin kun ohjelmistoa on sen jälkeen paranneltu useita kertoja.

Shakki
Shakkijärjestelmät alkoivat kehittyä 1900-luvun puolivälissä, kehitys kuului IBM:lle. Mutta koska ohjelma vaati vakavia ja pitkiä laskelmia, tätä hanketta oli lykättävä 30 vuodella. Vuonna 1996 Garry Kasparov asetettiin "shakkiaivoja" - Deep Blue -tietokonetta vastaan.


Ottelu päättyi miehen hyväksi: 3 voittoa, 2 tasapeliä, 1 tappio. Vuotta myöhemmin ottelu toistettiin, ja tällä kertaa Deep Blue oli valmistautuneempi. Silti järjestelmä arvioi 200 miljoonaa sijaintia sekunnissa. Ja vaikka Harry halusi saada takaisin myöhemmin, IBM kieltäytyi pitäen sitä hyödyttömänä.

Tammi (eräänlainen tammi)
Marion Tinsley oli tammen mestari koko uransa ajan. Ja kun hän vuonna 1992 tapasi Albertan yliopistossa (Kanada) kehitetyn järjestelmän, voitto oli hänen. 39 pelistä - 4 voittoa, 2 tappiota ja 33 tasapeliä.


2 vuoden kuluttua tapahtui kosto, mutta Tinsley vetäytyi kilpailusta terveysongelmien vuoksi (kieltäytymishetkellä oli 6 tasapeliä), ja voitto meni järjestelmälle. Siitä hetkestä lähtien tekoäly on vahvistunut paljon: vuonna 2007 kanadalaiset ilmoittivat ihanteellisen järjestelmän luomisesta, eikä kukaan ihmisistä yritä ylittää sitä tammissa.

Raapia
Tietokoneen voitto tässä pelissä oli helppoa jo ensimmäisellä kierroksella: maailmanmestari David Boyce voitti vuonna 2006 robo-kilpailija Quacklen toimesta.


Muuten, tämä ohjelma on saatavilla verkossa, ja voit mitata vahvuutesi sen avulla, ja ehkä tuot voiton "Man" -joukkueelle.

Mennä
Tämä peli ilmestyi muinaisessa Kiinassa yli kaksi tuhatta vuotta sitten, mutta niin pitkästä pelikokemuksesta huolimatta ihmiset hävisivät silti. Kentällä (19 × 19) kaksi pelaajaa laittaa kivet (musta/valkoinen), voittaa se, joka tekee enemmän pisteitä (merkit lasketaan riville). Toisaalta kaikki on yksinkertaista, mutta kiinnostus piilee mahdollisten vaihtoehtojen ja liikkeiden moninaisuudesta.


AlphaGon (Googlen alaisuudessa luotu) kehittäjille oli myös mielenkiintoista luoda järjestelmä, joka pystyy laskemaan tuhansia vaihtoehtoja. Aluksi tekoäly kokeili kätensä muiden ohjelmistojen kanssa, ja kun 500 pelistä 499 oli AlphaGolle, se otti kolminkertaisen Euroopan mestarin Fan Huin. Mestarilla ei ollut mahdollisuuksia: 5:0.

TV
Tykkäätkö vastata kysymyksiin tietokilpailuissa? IBM:n Watson-robotin kehittäjät eivät myöskään voineet vastustaa, ja vuonna 2011 Watson toimi osallistujana Jeopardy! Huolimatta siitä, että hänen vastustajansa olivat ohjelman ennätystenhaltijat - Brad Rutter ja Ken Jennings - hän voitti, ja voitetut miljoona dollaria lahjoitettiin hyväntekeväisyyteen.


Ja vaikka tietokone on jo osoittanut älyllisen ja loogisen ylivoimansa ihmisiin nähden, se jatkaa kehittymistä. Joten Alibaba Group ja Microsoft (kehityksiä tehtiin rinnakkain) esittelivät tekoälyn, joka osoittautui vahvemmaksi kuin ihminen luetun tiedon ymmärtämisessä.
Stanfordin yliopiston testi sisältää yli 100 000 kysymystä, jotka perustuvat viiteensataan Wikipedia-kirjaston artikkeliin.

Henkilön paras indikaattori on 82,304 pistettä, Alibaban tulos on 82,44, Microsoftin hermoverkko on 82,605. Tulokset osoittavat, että tekoäly pystyy vastaamaan kaikkiin kysymyksiin suurella tarkkuudella, mikä tarkoittaa, että teknologioilla voidaan palvella asiakkaita, potilaita, museovierailijoita jne.

Ohjelma hillitsi myös tietokonepelejä. Ohjelma voitti ohjelman: kuka olisi uskonut, että tämä tulevaisuus on niin lähellä? Suosittu peli Quake III, jossa pelaajat ovat gladiaattoreita, on erittäin suosittu eSportsissa. Mutta parhaat täällä eivät olleet ihmiset, vaan DeepMind-bottitiimi, jonka oli luonut Googlen jaosto. Ja vaikka taistelu käytiin lyhennetyssä versiossa, laskelmien mukaan 73 %:n varianssilla, botti voittaisi missä tahansa kilpailussa.


Onko tällainen tekoälyn ylivoima vaarallista vai ei? Kukaan ei voi vastata varmaksi. Ja loppujen lopuksi tämä vastaus ei ole avain, koska pääasia ei ole se, että ihminen on huonompi kuin tietokone, vaan se, voimmeko käyttää tätä potentiaalia omaksi hyödyksemme. Kuten näemme, tekoäly päihittää ihmisen eikä jätä mitään mahdollisuutta voittaa.

kulttuuri. Väitöskirja. Cand. Ped Sciences. Rostov-on-Don. 2003.

2. Azarova E.A. Perhekasvatuksen tuhoisat muodot, aikamme ajankohtaiset ongelmat, viime aikojen rikokset: henkiset, moraaliset ja oikeuslääketieteelliset näkökohdat. - Rostov-on-Don: Venäjän valtion pedagogisen yliopiston kustantamo, 2005.

3. Gabdrev GSH. Psykologian ahdistuneisuusongelman pääkohdat // Koulupsykologi. - 2004. - N° 8. - S. 9.

4. Enikolopov S.N. Perheväkivallan ongelmat // Psykologian ongelmat. -2002. -#5-6.

5. Tseluiko V.M. Epätoimisen perheen psykologia: Kirja opettajille ja vanhemmille. - M.: Kustantaja VLADOS-PRESS, 2003.

6. Shapar V.B. Käytännön psykologia. Vanhempien ja lasten välisten suhteiden psykodiagnostiikka. - Rostov n / a: Phoenix, 2006.

© Azarova E.A., Zhulina G.N., 2016

A.I. Alifirov

cand. ped. Tieteet, apulaisprofessori, RSSU, Moskova, Venäjän federaatio

I.V. Mikhailova Cand. ped. Tieteet, apulaisprofessori, RSSU, Moskova, Venäjän federaatio

"TEKOÄLY" shakissa

huomautus

Artikkelissa käsitellään sellaisen ohjelmiston ja laitteiston käytön syntyä, jotka pystyvät suorittamaan henkistä toimintaa, joka on verrattavissa ihmisen henkiseen toimintaan.

Avainsanat

Tietokonetekniikat shakissa, shakkiohjelmat, shakki.

Nykyään termillä "tekoäly" (AI) tarkoitetaan teoriaa sellaisten ohjelmistojen ja laitteistojen luomisesta, jotka pystyvät suorittamaan henkistä toimintaa, joka on verrattavissa ihmisen älylliseen toimintaan. Käytännön ongelmia ratkaistaessa he käyttävät useimmiten luettelon tehtävää, mutta ottavat huomioon, että jos tietokonejärjestelmä pystyy ratkaisemaan nämä ongelmat, se on tekoälyjärjestelmä. Usein tähän listaan ​​kuuluu shakin pelaaminen, lauseiden todistaminen, diagnostisten ongelmien ratkaiseminen alun perin epätäydellisillä tiedoilla, luonnollisen kielen ymmärtäminen, kyky oppia ja oppia itse, kyky luokitella esineitä ja kyky tuottaa uutta tietoa sukupolven perusteella. uusista säännöistä ja regularisointimalleista.

Yksi uuden tieteen - kybernetiikan - tärkeimmistä ongelmista oli ongelma, kuinka parantaa johtamista, miten parantaa päätöksentekoa. Yksi kybernetiikan perustajista C. Shannon ehdotti shakin formalisoimista ja ohjelmointia käyttääkseen shakkitietokonetta mallina vastaavien ohjausongelmien ratkaisemiseen. K. Shannonin auktoriteetti oli niin suuri, että hänen ideansa loivat heti perustan uudelle tieteelliselle suunnalle. K. Shannonin ideoita käytettiin A. Turingin, K. Zusen, D. Princen teoksissa.

Tietoteorian kirjoittaja. K. Shannon kirjoitti: "Shakkikone on ihanteellinen aloittaa, koska (1) tehtävä määritellään selkeästi sallituilla operaatioilla (liikkeet) ja perimmäisellä tavoitteella (matti); (2) se ei ole liian yksinkertaista olla triviaali , eikä liian vaikeaa saada tyydyttävää ratkaisua; (3) uskoa, että shakki vaatii "ajattelua" taitavaan pelaamiseen, tämän ongelman ratkaisu saa meidät joko ihailemaan koneellisen ajattelun kykyä tai rajoittamaan käsitystämme "ajattelusta" "; (4) Shakin erillinen rakenne sopii hyvin nykyaikaisten tietokoneiden digitaaliseen luonteeseen."

Myöhemmin shakista tuli luonnollisen ja tekoälyn välinen kilpailu, ja maailman johtavat shakinpelaajat pelasivat useita otteluita tietokoneita vastaan. Vuonna 1995 suositun Wired-lehden haastattelussa G.K. Kasparov hahmotteli näkemystään shakkipelistä: "Shakki ei ole matematiikkaa. Se on fantasiaa ja mielikuvitusta, se on inhimillistä logiikkaa, ei peliä, jonka lopputulos on ennustettava. En usko, että shakkipeli voi teoreettisesti mahtua johonkin joukko kaavoja tai algoritmeja." Kaksi vuotta myöhemmin DEEP BLUE -supertietokone voitti 13. maailmanmestarin G.K. Kasparova poisti kuuden pelin uusintaottelussa kysymyksen shakin tekoälyn mahdollisuuksista esityslistalta. DEEP BLUE piti muistissa täydellisen tietokannan kaikista peleistä ja analysoi strategian vain laskennallisesti. Ottelun jälkeen G.K. Kasparov muutti näkemystään ja myönsi, että "Shakki on ainoa ala, jossa voi verrata ihmisen intuitiota ja luovuutta voimaan ja koneeseen." Ottelu muutti sekä klassisen että tietokonesahkin kehityskulkua. Tekoälyä on käytetty laajalti koulutusjärjestelmässä. DI. Bronstein kirjoitti kirjassaan "David vs. Goljat" (2003): "Botvinnik uskoi, että shakki on analyysin taidetta, ja Andersenin, Morphyn ja Zukertortin kaltaisten yksinäisten improvisoijien aika on mennyt ikuisesti. Kun tarkastellaan nykyaikaista shakkia, meidän on myönnettävä että Botvinnik osoittautui oikeaksi. "Tietokonepojat" veivät hänen käsityksensä kotianalyysin tarpeesta järjettömyyteen asti. He eivät edes piilota sitä, että he hiovat avausmuunnelmia selkeäksi tulokseksi. Turnauksessa Linaresissa (2000), unkarilainen Leko myönsi hämmentyneenä, että koko peli Anandin kanssa oli hänen tietokoneessaan!".

Luettelo käytetystä kirjallisuudesta:

1. Alifirov A.I. Uraohjaustyö lukioissa shakin avulla / Alifirov A.I. // Tieteen ja koulutuksen kehityksen ongelmat: teoria ja käytäntö. Kokoelma kansainvälisen tieteellisen ja käytännön konferenssin aineistoihin perustuvia tieteellisiä artikkeleita 31.8.2015: 3 osassa. Osa II. M.: "AR-Consult", 2015 - S. 13-14.

2. Mikhailova I.V., Alifirov A.I. Shakinpelaajien taktiset toimet / Mikhailova I.V., Alifirov A.I. // Tieteellisen tutkimuksen tuloksia Kansainvälisen tieteellis-käytännöllisen konferenssin artikkelikokoelma. Toimittava toimittaja: Sukiasyan Asatur Albertovich (15. helmikuuta 2016) klo 4 h. P/3 - Ufa: AETERNA. -2016.S. 119-121.

3. Mikhailova I.V., Alifirov A.I. Ajattelumenetelmän teoreettiset ja metodologiset perusteet shakinpelaajien suunnitelmilla / Mikhailova I.V., Alifirov A.I. // Tieteellisen tutkimuksen tuloksia Kansainvälisen tieteellis-käytännöllisen konferenssin artikkelikokoelma. Toimittava toimittaja: Sukiasyan Asatur Albertovich (15. helmikuuta 2016) klo 4 h. P/3 - Ufa: AETERNA. - 2016. S. 123-125.

4. Mikhailova I.V. Nuorten korkeasti koulutettujen shakinpelaajien koulutus tietokoneshakkiohjelmien ja "Internetin" avulla: kirjoittaja. dis. ... cand. ped. Tieteet: 13.00.04 / Mikhailova Irina Vitalievna; RSUPC. - M., 2005. - 24 s.

© Alifirov A.I., Mikhailova I.V., 2016

UDC 378.046.2

A.I. Alifirov

Pediatrian kandidaatti, RSSU:n apulaisprofessori, Moskova, RF V.V. Fedchuk, Ph.D

LLC "Prosperity", vanhempi opettaja-metodologi, Moskova, RF TUTKIMUS NUURIN Fyysisen TERVEYDEN TASOSTA

huomautus

Artikkeli käsittelee nuorten fyysisen terveyden ongelmaa ja eri tekijöiden vaikutusta