
- •Интеллектуальные системы. Основные классы систем и задач. Понятие иис
- •Критерии интеллектуальности ис
- •История развития иис
- •Классификация задач, решаемых иис
- •Классы иис
- •Символьная обработка и вычислительный интеллект в задачах искусственного интеллекта. Символьная обработка в задачах искусственного интеллекта
- •Вычислительный интеллект в задачах искусственного интеллекта
- •Экспертные системы. Архитектура систем. Экспертные системы
- •Архитектура экспертной системы
- •Архитектура нечеткой экспертной системы.
- •Архитектура нейронной экспертной системы.
- •Архитектура мягкой экспертной системы.
- •Экспертная деятельность
- •Вычисление нечеткой импликации:
- •Архитектура нечёткой экспертной системы
- •Искусственная нейронная сеть. Математическая модель нейрона.
- •Функция активации. Виды нейронных сетей. Функция активации.
- •Виды нейронных сетей.
- •Нс без обратных связей
- •Полносвязные сети
- •Обучение нс. Решение задачи классификации. Обучение нс
- •Решение задачи классификации
- •Обучение нс. Решение задачи кластеризации.
- •Обучение нс. Решение задачи аппроксимации.
- •Нейронная сеть как универсальный аппроксиматор.
- •Эффективность аппроксимации с помощью нейронных сетей и систем нечеткого вывода.
- •Линейно-сепарабельные задачи.
- •Нейронная сеть как универсальный аппроксиматор.
- •Сети Кохонена. Алгоритм обучения «победитель забирает все» Сети Кохонена
- •Алгоритм обучения «победитель забирает все»
- •Дельта-правило в машинном обучении
- •Алгоритм обратного распространения ошибки.
- •Архитектура нейронной экспертной системы
- •Эволюционные вычисления. Классы эволюционных вычислений.
- •История эволюционных вычислений
- •Классы эволюционных вычислений.
- •Обобщение идей эволюционных вычислений
- •Понятие генетического алгоритма.
- •3 Основные положения в теории эволюции (Теория «Происхождения Видов» 1859г. Дарвина):
- •Кодировка хромосом. Оператор отбора.
- •Операторы рекомбинации и мутации. Оператор скрещивания (оператор кроссовера)
- •Оператор мутации
- •Сходимость га.
- •Теорема схем.
- •Гибридные интеллектуальные системы.
- •Методы гибридизации.
- •Способ 1
- •Способ 2 (метод -срезов)
- •Понятия t-нормы и s–конормы.
- •Общие свойства t – норм и s — конорм
- •Пары норм и конорм
- •Определения и-или-нейронов и нечеткой нейронной сети.
- •Нечеткая нейронная сеть архитектуры anfis
- •Пример функционирования нечеткого нейронного контроллера
- •Определить входные переменные.
- •Пример. Нечёткий регулятор для стиральной машины (архитектура anfis)
- •Алгоритмы обучения для неч-ой нейр-ой сети контроллера
- •Нечёткий контроллер на основе нейронной сети (nnflc).
- •Архитектура anfis (адаптивная нейронная сеть, основанная на системе нечёткого вывода).
- •Нейронная сеть для нечётких (nndfr)
- •Нечёткие нейронные сети с генетической настройкой.
- •Эффективность аппроксимации с помощью нейронных сетей и систем нечеткого вывода.
- •Моделирование линейного нейрона
- •Моделирование многослойного перцептрона
- •Моделирование сети Кохонена
- •Пример генетической оптимизации при решении задач
Эффективность аппроксимации с помощью нейронных сетей и систем нечеткого вывода.
См. вопрос 10
Моделирование линейного нейрона
function[outs] = Hell(a, b, c)
if (a*0.5 + b*0.5) > c then
outs = 1
else outs = 0;
end
endfunction
Hell (1, 1, 0.7)
Hell (0, 1, 0.7)
Hell (0, 0, 0.7)
Hell (1, 0, 0.7)
Функция Hell построит линейный нейрон, реализующий функцию логического И.
a и b – входные значения, которые формируют X = (a, b) – вектор входов.
outs – вектор выходов
W = (0.5, 0.5) – вектор весов
с– порог срабатывания
Функция активации – F = a*0.5 + b*0.5
Формула срабатывания нейрона:
Моделирование многослойного перцептрона
Перцептрон – многослойную нейронную сеть прямого распространения сигнала, способную к обучению.
Многослойный перцептрон – самая известная и очень старая архитектура, в которой идут подряд несколько слоев нейронов — входной, один или несколько скрытых слоев, и выходной слой.
В данной функции lab описано не только моделирование многослойного перцептрона, но и его обучение по дельта-правилу.
O = (o1, o2, o3) – вектор выходов (2-го слоя)
X = (x1, x2, x3, x4) – вектор входов для нейронов 1-го слоя
W – вектор весов.
Y = (y1, y2) – вектор выходов нейронов 1-го слоя – они же входы для нейронов 2-го слоя.
Z = (z1, z2, z3) – желаемые значения
function[o1, o2, o3] = lab(x1, x2, x3, x4, z1, z2, z3)
//случайным образом инициализируем матрицу весов (2 шаг, 1 шаг упущен – в данном случае лишь 1 многослойный перцептрон)
w = rand(1, 10);
//допустимый уровень ошибки ξ
e0 = 0.0000001;
//ошибка
e = [1, 1, 1];
//скорость обучения – некоторый уровень обучения, шаг изменения ζ
s = 0.1;
//расчёт выходов нейронов (моделирование многослойного перцептрона) 3 шаг
//расчёт выходов нейронов 1-го слоя
if (0.5 * x1*w(1) + x2*w(2)) < 1 then
y1 = 1
else y1 = 0.5 * x1 * w(1) + x2 * w(2);
end
if (0.6 * x3 * w(3) + x4 * w(4)) < 1 then
y2 = 1
else y2 = 0.6 * x3 * w(3) + x4 * w(4);
end
//расчёт выходов нейронов 2-го слоя
if (1.7 * y1 * w(5) + 1.9* y2 * w(6)) < 1 then o1 = 1
else o1 = 1.7 * y1 * w(5) + 1.9* y2 * w(6);
end
if (1.9 * y1 * w(7) + 1.9* y2 * w(8)) < 1 then o2 = 1
else o2 = 1.9 * y1 * w(7) + 1.9* y2 * w(8);
end
if (1.9 * y1 * w(9) + 2.9* y2 * w(10)) < 1 then o3 = 1
else o3 = 1.9 * y1 * w(9) + 2.9* y2 * w(10);
end
//условие выхода (шаг 7 – выполняем проверку)
while ((e(1) > e0) | (e(2) > e0) | (e(3) > e0))
//пересчёт вектора весов (5 шаг, 4 шаг упускаем, просто не запоминаем результаты)
w(5) = w(5) + s*abs(z1 - o1)*y1;
w(6) = w(6) + s*abs(z1 - o1)*y2;
w(7) = w(7) + s*abs(z2 - o2)*y1;
w(8) = w(8) + s*abs(z2 - o2)*y2;
w(9) = w(9) + s*abs(z3 - o3)*y1;
w(10) = w(10) + s*abs(z3 - o3)*y2;
//расчёт выходов нейронов 2-го слоя
if (1.7 * y1 * w(5) + 1.9* y2 * w(6)) < 1 then o1 = 1
else o1 = 1.7 * y1 * w(5) + 1.9* y2 * w(6);
end
if (1.9 * y1 * w(7) + 1.9* y2 * w(8)) < 1 then o2 = 1
else o2 = 1.9 * y1 * w(7) + 1.9* y2 * w(8);
end
if (1.9 * y1 * w(9) + 2.9* y2 * w(10)) < 1 then o3 = 1
else o3 = 1.9 * y1 * w(9) + 2.9* y2 * w(10);
end
//вычисляем накопленную ошибку (6 шаг)
e(1) = 0.5*(z1 - o1)*(z1-o1);
e(2) = 0.5*(z2 - o2)*(z2 - o2);
e(3) = 0.5*(z3 - o3) * (z3 - o3);
end
endfunction
[o1, o2, o3] = lab(0.4, 0.1, 0.7, 0.8, 7, 55, 15)