искуственный интелект как самообучающийся алгоритм

advertisement
ИСКУСТВЕННЫЙ ИНТЕЛЕКТ КАК САМООБУЧАЮЩИЙСЯ АЛГОРИТМ
Деев Алексей Андреевич, студент 2 курса ГБПОУ Колледж "Царицыно"
Современному растущему информационному обществу, требуется все более
совершенные алгоритмы и программы для решения самых разнообразных проблем. Среди
этих проблем встречается необходимость в анализе достаточно больших объёмов
статистических данных. Например, необходимо узнать темпы роста населения и собираются
результаты переписей населения. Или необходимо узнать, как меняется климат в целом по
планете и просматриваются и анализируются данные с метеостанций.
Возникает проблемный вопрос «А какие данные необходимо собирать, чтобы узнать
показатель развития искусственного интеллекта?» Ответ прост - игры.
Для доказательства предлагается следующий вариант- это сбор данных о сыгранных
партиях в шахматы, шашки, реверси или в крестики-нолики. Что даёт нам запись сыгранных
партий? Предположим, что среди 100 партий, компьютер одержал 10 побед и соответственно
90 раз проиграл. В чём смысл коллекционировать эти данные? Возьмём конкретный пример
с игрой крестики-нолики.
Крестики-нолики
Сложно найти человека, который не играл или никогда не слышал об
этой игре. На квадратном поле 3 на 3 клетки, один игрок, играя
«крестиками» а второй «ноликами», поочерёдно делают ходы. Первый
игрок, выстроивший в ряд три своих фигуры по вертикали, горизонтали
или диагонали, побеждает.
Существует большое многообразие версий и правил для этой игры.
Увеличение игрового поля до 10 на 10 клеток, 9 отдельных полей
объединённых в одно или и вовсе бесконечное поле. Изменение условий
победы, когда первому игроку необходимо построить ряд из трёх фигур для победы, а
второму заполнить все поле фигурами. Или необходимо поставить не три, а четыре фигуры и
не в ряд, а буквой ‘Г’. Для примера нам не нужно усложнённые правила или нетрадиционные
версии игрового поля, а потому возьмём “стандартные” правила.
Одной из первой программы среди начинающих программистов очень часто
встречается реализация этой игры. После создания игрового поля, добавления выбора
фигуры и хода, остаётся ввести противника (если конечно нет особого желания играть
самому с собой). Рассмотрим три различных варианта интеллекта для противника.
1 Вариант
Самый простой. Для него потребуется только ГПСЧ (генератор псевдослучайных
чисел) и немного программного кода. Простейшие генераторы псевдослучайных чисел,
встроены практически во все современные высокоуровневые языки программирования. Для
такой программы, не потребуется криптостойкие ГПСЧ, такие как Fortuna, CryptoAPI или
RdRand. Достаточно будет «Вихрь Мерсенна» в стандартной библиотеке Autoit, Ruby,
Python, R, PHP, MATLAB, или не криптостойкие ГПСЧ в других высоуровневых языках.
Пронумеровываем игровое поле от 1 до 9, генерируем случайное число. Если в клетке с
этим числом свободно, компьютер ставит свою фигуру, в противном случае компьютер
заново генерирует случайное число, пока не найдёт свободную клетку или не кончатся ходы.
С точки зрения программирования, это очень простой вариант игрового интеллекта,
однако играть с ним не интересно. Данного противника можно сравнить с пятилетним
ребёнком, который даже не старается думать над ходом. Реальность такова, что ему будет
сложнее проиграть, чем его победить. Выбор ленивого программиста.
2 Вариант
Другой вариант интеллекта, прописать ему все возможные ходы. Кажется что их не так
много, и это не сложно, но стоит начать, как
приходит осознание, что их действительно очень
много! Если попытаться расписать все возможные
ходы, потребуется очень много времени. Для
решения этой проблемы игровое поле зеркалят по
центру, после чего для первого хода уже не девять,
а три варианта хода. Тем не менее, количество
возможных ходов достаточно много, около 200 –
300.
Когда все ходы прописаны, возникает другая проблема. Он не проигрывает или все
партии сводятся к ничьей. Игра просто теряет смысл. Для того чтобы играть было не так
бессмысленно, часть жёстко прописанных ходов заменяют случайно сгенерированными
ходами, создавая иллюзию реальной игры.
Данный вариант используют чаще всего, однако его сложно назвать хорошим. Да, он
работает. Более того совмещая с ГПСЧ можно получать разные уровни сложности. Чем же
плох данный вариант? Если начать изменять условия игры, возникнет необходимость
дописывать неучтённые ранее ходы, в некоторых случаях придётся сильно его переписывать.
Данный вариант интеллекта тупиковый и совершенно нерациональный!
В начале статьи стоял вопрос, зачем собирать данные о сыгранных партиях? Чтобы
дать ответ на этот вопрос, представим себя на месте компьютера. Далеко не всегда удаётся
просчитать наперёд все ходы. Играя, мы начинаем запоминать хорошие ходы и стараемся в
следующей игре либо повторить их, либо привести к ним. Это же справедливо и для плохих
ходов. Если пару раз столкнутся с “вилками”, во второй раз поймать на этом будет уже
сложнее. Мы учимся на ошибках, анализируя прошлые игры. А что если дать компьютеру
возможность учится на ошибках?
3 Вариант
После каждой партии, компьютер записывает ходы, которые он использовал, в файл.
В этом файле каждая партия представлена в виде одномерного массива, в начале строки
которого стоит число, указывающее, сколько раз эта комбинация победила. Следом идёт
игровая фигура и ходы за эту фигуры и врага. Каждым ходом, компьютер просматривает
свою память (файл с записанными ходами), выбирает самые лучшие варианты (с самым
высоким рейтингом) и использует их. В конце игры, он записывает все ходы в память,
обновляя рейтинги ходов. Такой интеллект будет использовать как минимум два встроенных
алгоритма. Первый “базовый требуется, если в памяти или не достаточно данных или он
пустой. Второй “продвинутый” работает, когда память уже накопилась. Эти два алгоритма
работы периодически подменяют друг друга, давая возможность компьютеру походить, если
ходы пока не полностью прописаны или возникли спорные ситуации.
Происходит это примерно так:
 На первой фазе, память пуста, работает только “базовый” алгоритм
 На второй фазу, когда память частично уже присутствует, “базовый” и “продвинутый”
алгоритм работают совместно, периодически подменяя друг друга
 На третьей фазе, когда память заполнена и участие “базового" алгоритма уже не
требуется, работает только “продвинутый” алгоритм
Также при желании можно полностью исключить 1 фазу работы. В этом случае
компьютер должен анализировать следующие ходы и записывать их непосредственно во
время игры, что может существенно повысить производительность.
Основная ценность данного Варианта 3 в том, что он способен обучатся. С каждой
победой или поражением, он будет становиться умнее, и отсекать плохие комбинации. Если
изменятся условия игры, не нужно будет его переписывать, достаточно внести небольшие
изменения. Например, меняя игровое поле, предстоит заново обучить его, не более. Он
способен подстраивается практически налету. Главным становится не искусственный
интеллект, а файл с накопленный опытом, который при необходимости можно передать
другим машинам. После длительной игры с таким компьютером рано или поздно он
становится таким же непобедимым, как и интеллект по второму варианту. Основным же
отличием является то, что компьютер находит правильный выигрышный алгоритм, а не
человек. Почему это так важно? Постараемся это выяснить.
В игре крестики-нолики конечное число ходов. Можно закончить игру с меньшим
числом ходов, но всего их, возможно, сделать не более 9. Такое встречается не во всех
подобных играх.
Обучение ИИ (искуственный интеллект)
Теперь, когда у нас есть, возможно, не идеальный, но способный к обучению
искусственный разум, как его обучать? Самое простое, это играть с ним. Каждая сыгранная
партия в итоге будет обучать его. Такой противник хорош тем, что он обучается вместе с
человеком и, в общем и целом убирает необходимость в сложности. При необходимости,
можно обнулить память и начать играть со слабым противников. Или если хочется испытать
свои силы, взять файл у более продвинутого ИИ. Так как написание подобного ИИ не
сложно, один файл с памятью может быть использован в разных версиях и совершенно поразному. Так, например ИИ может посредственно работать с полученной памятью и
использовать её лишь для удобства вычисления. Или полностью от неё зависеть и принимать
решение исходя только из памяти.
Подобные ИИ могут использоваться в совершенно разных ситуациях и отраслях. Это
не только информационные отрасли. Он способен хорошо себя показать в ситуациях, когда
требуется пристальное наблюдение за определённым процессом и подробный анализ
происходящего. Вычисление оптимального светового дня для предприятий или учебных
заведений, для меньшей траты электроэнергии, когда она не нужна. Такой ИИ был бы очень
к месту и в игровом сообществе. Начиная от игр наподобие “тамагочи” и заканчивая
шахматными турнирами между обученными ИИ. Способов использования настолько много
что нет смысла все перечислять.
Важно понимать, что сбор статистики это не самое главное, не менее важное уметь
правильно обрабатывать и анализировать данные. В современном растущем
информационном обществе приходится работать с огромными статистическими данными. И
неплохо было бы иметь подобные ИИ для облегчения этой работы.
Список литературы:
1. Короткий С. Нейронные сети: основные положения. http://www.gotai.net/
2. Короткий С. Нейронные сети: обучение без учителя. http://www.gotai.net/documents/
3. Галушкин А.И. Нейрокомпьютеры. Кн. 3 М.: ИПРЖ, 2000.
4. Логовский А. Новейшая история нейрокомптютинга в России. Открытые системы
№3, 2001. http://www.osp.ru/os/
5. Васенков
http://www.ict.edu.ru/
Д.В.
Методы
обучения
искусственных
нейронных
сетей
Download