Искуственный интеллект

Нако­нец при­ду­мал, чем занять ней­ро­сеть. Научить её играть в игры.

Но для того, что­бы научить ней­ро­сеть чему угод­но, для нача­ла надо сде­лать набор дан­ных для обу­че­ния. В слу­чае с игра­ми, соот­вет­ствен­но, это будут пар­тии раз­лич­ных игр. Для нача­ла я выбрал что-нибудь попро­ще: кре­сти­ки-ноли­ки. Бла­го ПОЛНОЕ дере­во реше­ний для этой игры очень неболь­шое. Чисто тео­ре­ти­че­ски там 9! игр (око­ло 360 000), в реаль­но­сти намно­го мень­ше: не все игры идут 9 шагов, мно­гие явля­ют­ся отра­же­ни­я­ми дру­гих игр, раз­вёр­ну­тых на 90, 180, и 270 гра­ду­сов. И так далее.

Напи­сал про­грам­му на Питоне, кото­рая гене­ри­ру­ет все воз­мож­ные игры, игра­ет в них, и запи­сы­ва­ет резуль­та­ты. Таким обра­зом, у меня полу­чи­лась про­грам­ма, кото­рая игра­ет в игры тра­ди­ци­он­ным спо­со­бом — через постро­е­ние игро­во­го дере­ва.

Но будучи пол­ным нович­ком в напи­са­нии игр, я сде­лал фаталь­ную ошиб­ку. Вот как имен­но про­грам­ма реша­ет, каким ходом отве­тить на ход про­тив­ни­ка? Вопрос не такой про­стой, как кажет­ся. Вро­де бы оче­вид­но — берём ход, кото­рый ско­рее все­го при­ве­дёт нас к побе­де, и ходим так, да? Так думал и я. И невер­но думал. То, что ход может при­ве­сти нас к побе­де, совер­шен­но не озна­ча­ет того, что он не при­ве­дёт нас к пора­же­нию. Поэто­му ска­зав про­грам­ме выби­рать ход с наи­боль­шей веро­ят­но­стью побе­ды, я сде­лал её доволь­но дур­ной — даже такой пло­хой игрок как я (я очень хре­но­во играю в кре­сти­ки-ноли­ки, шаш­ки, шах­ма­ты, и про­чие подоб­ные вещи), её лег­ко обыг­ры­вал.

Про­грам­ма долж­на выби­рать не ход, кото­рый при­во­дит к побе­де. А ход, кото­рый не при­во­дит к пора­же­нию. Вот такая логи­че­ская заго­гу­ли­на. Ниче­го, зав­тра пере­де­лаю про­грам­му и попро­бую зано­во. Может быть, даже до ней­ро­се­ти — изна­чаль­но­го места назна­че­ния — дело дой­дёт.

Про­грам­мы, кото­рые игра­ют в шах­ма­ты тоже рабо­та­ют таким же обра­зом — через постро­е­ние игро­во­го дере­ва. Толь­ко пол­ное игро­вое дере­во для шах­мат… эээ несколь­ко боль­ше, чем коли­че­ство ато­мов в наблю­да­е­мой все­лен­ной, так что дере­во стро­ят толь­ко частич­ное, и опре­де­ла­ют пер­спек­тив­ность той или иной вет­ви через мини­макс.

Вооб­ще, если есть воз­мож­ность стро­ить игро­вое дере­во — луч­ше стро­ить игро­вое дере­во. Такие про­грам­мы будут играть в игру луч­ше, чем ней­ро­се­ти (кото­рые по сути толь­ко рас­по­зна­ют пат­тер­ны и реа­ги­ру­ют на них). Но игро­вое дере­во стро­ить воз­мож­но дале­ко не все­гда. Ска­жем, Го не под­да­ва­лось, поэто­му нор­маль­но играть ком­пью­тер в Го нако­нец-то научи­лись имен­но, что через ней­ро­се­ти. Пото­му что игро­вое дере­во для шах­мат — 10E120 (чис­ло Шен­но­на), а игро­вое дере­во для Го — 1.74E172! Но даже Го мерк­нет перед огро­мен­ным дере­вом крайне (на пер­вый взгляд) про­стой игры Стра­те­го, чей раз­мер состав­ля­ет 10E535!!! Неуди­ви­тель­но, что ком­пью­тер игра­ет в Стра­те­го крайне сла­бо. Может быть, имен­но что ней­ро­се­ти научат­ся. В лоб, через постро­е­ние дере­ва — путь тупи­ко­вый.