Ответы по СИИ
.doc
21. Игры. Минимаксные методы. Альфа-бета алгоритм.
Под игрой понимают поиск в условиях противодействия. 2 противника, ходы делаются поочередно в условиях полной определенности. Изучает теория игр. В отличие от простых задач поиска, решение находится очень трудно. Например, в шахматах дерево поиска ~10^154 узлов. Дерево игры – определяется возможными ходами противников. Т.к. ходы противников делаются поочередно, в дереве «слои» ходов разных противников перемежаются.
В игре есть: 1) функция определения преемника – возвращает список пар «допустимых ход, состояние»; 2) функция полезности (результат) для любого возможного терминального состояния (окончания игры).
Минимаксное (мм) значение для узла дерева – наш наивысший результат игры, достижимый из данного узла. Мы делаем лучшие ходы, т.е. выбираем ходы с наибольшим мм-значением. Противник делает лучшие ходы, т.е. выбирает ходы с наименьшим мм-значением. Минимаксный алгоритм – вычисляет мм-значение для текущего состояния.
Альфа-бета отсечение позволяет не рассматривать те вершины, для которых заранее известно, что они не оптимальны. Значение 7 в ветви «7» больше, поэтому противник пойдет по ветви 5 (ему нужен минимум). Поэтому ветвь «7» можно исключить из рассмотрения. Аналогично, значение 3 меньше, чем 5, а нам нужен максимум. Поэтому ветвь «3» можно исключить.
|
22. Генетические алгоритмы. Основные принципы. Применение.
Это эвристический способ решения задачи, напоминающий процессы эволюции в природе. Представляет из себя последовательный подбор и комбинирование искомых параметров. Позволяет найти неточное удовлетворительное решение для задачи. Стадии генетического алгоритма:
0) Определение начальной популяции. Популяция – набор способов решения задачи (особей). 1) Определение функции полезности для каждой особи. 2) Селекция. 3) Мутация и/или скрещивание (кроссовер). 4) Возврат к 1) или окончание по некоторому условию.
Селекция. Выбор особей, участвующих в шаге 3. Производится по результатам ф. полезности. Пусть нам нужно N особей. Подходы выбора: 1) пропорциональный (отношение целое(ф.п./ф.п.средн) для особи – сколько раз участвует, если <1 то с такой вероятностью участвует); 2) турнирный (N раз проводится соревнование по несколько особей, выбираются победители); 3) усечения (N особей, у которых ф.п. лучшая); 4) рулеточный (берётся круг, под каждую особь выделяется сектор пропорционально ф.п., случайным образом N раз тыкают в круг и выбирают проткнутых).
Скрещивание – две особи делятся одинаково на две части. Затем пара одинаковых частей у особей обменивается.
Мутация – произвольное изменение особи.
Условием завершения может быть определенное количество проходов, достижение определенного результата или стабилизация результата.
К каким задачам не нужно применять эвристические алгоритмы: 1) Если варианты немногочисленны (использовать перебор) 2) Решение может быть достигнуто методом спуска 3) Известно конкретное эвристическое решение. |
23. Нейронные сети. Основные компоненты.
НС – устройство параллельных вычислений, математическая модель, представляющая собой систему соединенных простых процессоров (нейронов). Нейронные сети обучаемы и направлены на определенную задачу (напр. распознавание символов, прогнозирование валютных счетов, классификация образцов).
Нейронная сеть состоит из нейронов и связей между ними (синаптических связей).
Нейроны бывают входные, промежуточные и выходные. На входные подаются параметры исследуемого образца. Промежуточные нейроны, как правило, выделяют в слои.
Соединительная связь между нейронами i и j характеризуется весовым коэффициентом (передачи) Wij. Состояние нейрона с индексом j определяется суммой по i: NETj = Σ Xi*Wij, где Xi – выходы предшествующих нейронов. Выход нейрона Xj определяется его функцией активации Gj(NETj) и передается далее. Весовые коэффициенты играют важнейшую роль при обучении сети.
Функция активации нейрона чаще бывают двух типов: скачкообразная (в некоторой точке скачком изменяется от -1 до 1) или сигмоидальная = 1/(1 + exp(NET)) – ((выглядит наподобие синуса от –π/2 до π/2)).
|
24. Обучение нейронной сети.
Нейронная сеть состоит из нейронов и связей между ними (синаптических связей). Процесс обучения – это подбор весовых коэффициентов для синаптических связей, для того, чтобы сеть могла правильно решать поставленную задачу.
Процесс обучения проходит так: 0) весовые коэффициенты устанавливаются случайным образом 1) на вход НС подается обучающий образец, на выходе получается результат; 2) если результат нас удовлетворяет, процесс обучения окончен, иначе переход к шагу 3; 3) некоторые весовые коэффициенты слегка меняются (случайным образом или по специальной функции); 4) переход к шагу 1.
Обычно используется один обучающий образец, а целая серия, они все последовательно прогоняются через сеть, запоминаются результаты, и только после этого переходим к шагу 2. Общая ошибка сети в этом случае будет находиться как сумма квадратов ошибок для всех векторов.
Обучение НС может вестись «с учителем» – обучение ведется по примерам или «без учителя» – сеть самообучается с помощью специальных функций.
Алгоритмы обучения делятся на детерминистские (жесткая последовательность действий) и стохастические (исп. случайные процессы).
|
25*. Решение задач классификации с помощью нейронных сетей.
Классификация – это отнесение образца к определенному классу. В отличие от кластеризации, рамки каждого класса четко или нечетко, но определены. Классификация образцов – одна из задач, решаемых нейронными сетями.
Например, если нужно классифицировать самолеты: если Вес > 0.8 & Скорость < 0.55 то Бомбардировщик если Вес < 0.9 & Скорость > 0.25 то Истребитель
На графике «Вес-Скорость» эти типы можно отделить прямой линией. Задача сети – определить, по какую сторону от линии находится образец. На вход сети подаются скорость и вес. Следующий слой определяет линейную зависимость по этим параметрам.
В некоторых случаях нельзя отделить образцы одного класса от образцов другого класса прямой линией. В этом случае проблема называется нелинейной. Она может быть решена только многослойными сетями. |
26*. Решение задач кластеризации с помощью нейронных сетей.
|
27. Ассоциативные сети.
Ассоциативные сети – нейронные сети, которые могут по неполному образцу воссоздать его вид. Это используется, например, в оптическом распознавании символов.
Сеть Хопфилда является такой сетью. В ней каждый элемент связан со всеми другими, но не связан с самим собой. За 1 шаг обновляется только один элемент сети (это делается в случайном порядке).
1. Входной образец задает начальное состояние элементов сети. 2. Случайным образом выбирается элемент для обновления. 3. Выбранный элемент получает сигналы от других. 4. Переход к 2, пока не будет достигнуто устойчивое состояние (т.е. сеть рекуррентна).
Функция активации – sgn, т.е значение на выходе каждого нейрона – знак его состояния sgn(NET). Матрица коэффициентов передачи связей вычисляется как трансп(X)*X, где X – вектор-образец, который нужно запомнить (правильный). На диагонали матрицы следует поставить нули, т.к. сам с собой элемент не связывается. |
28. Логические программы. Основные конструкции.
Логическая программа решает задачи, в которых используются понятия математической логики. Используются декларативные (описательные) языки программирования, в программы можно добавлять новые предложения: факты, правила, вопросы. Основная конструкция – предикат – определяет свойство для одного или нескольких объектов: родитель(петя, вася).
Это был факт – конкретный предикат над конкретными константами. Правило определяет новый предикат на основе существующих, используя переменные: дедушка(X, Y) :- родитель(X, Z), родитель(Z, Y).
Правила могут быть определены рекурсивно, т.е. через самих себя: предок(X, Y) :- родитель(X, Y). предок(X, Y) :- родитель(X, Z), предок(Z, Y)
Запятая понимается как конъюнкция «И», точка с запятой – дизъюнкция «ИЛИ». После задания вопроса (в ходе вычисления) переменные конкретизуются (c помощью операции сопоставления): ?- родитель(петя, X). yes X =вася |
29. Декларативный и процедурный смысл Пролог-программы.
Декларативный смысл определяет, является ли цель достижимой и, если да, то при каких значениях переменных. Процедурный смысл определяет, как будут выполняться предложения на Прологе.
Например, если записано: P :- Q. P :- S, T.
Декларативный смысл: P истинно, если истинно Q, или S и T. Процедурный смысл: для вычисления P нужно вычислить Q, а если значение не определено, вычислить S, затем ещё T.
Декларативный подход предпочтительнее с точки зрения программирования. Процедурный – с точки зрения эффективности программ. |
30. Списки. Основные операции над списками.
Список – это структура данных, которая либо пуста, либо состоит из головы (это первый элемент) и хвоста (оставшиеся). Список представляется перечислением элементов в квадратных скобках через запятую. Элемент списка тоже может быть списком. Операция [X|Y] в Прологе разделяет список на эти две части:
[a,b,c,d] => [X|Y] => X=a; Y=[b,c,d]
Списки в Прологе могут использоваться для представления множеств. Наиболее распространенные операции: добавление, удаление проверка на принадлежность элемента списку, конкатенация списков.
1. Принадлежность. Первый параметр – элемент, который нужно проверить, второй – список. Результат – yes/no. принадлежит(X, [X|L]). принадлежит(X, [Z|L]) :- принадлежит(X, L).
2. Конкатенация (сцепление). 1, 2 параметр – списки, 3 параметр – результат – их соединение. конк([], L, L). конк([X|L1], L2, [X|L3]) :- конк(L1, L2, L3).
3. Добавление. 1 параметр – элемент, 2 – список, 3 – результат – список с добавленным элементом (в начало списка). добавить(X, L, [X|L]).
4. Удаление. 1 параметр – элемент, 2 – список, 3 – результат – список без элемента X. удалить(X, [X|L], L). удалить(X, [Y|L], [Y|L1]) :- удалить(X, L, L1). |