|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Yuri Burger 2:468/85.3 18 Jul 2001 22:32:59 To : All Subject : Mild.Faq: 7/9 -------------------------------------------------------------------------------- [ю]ДДДДДДДД Begin 7 ДДДДДДД >3.2 Применение генетического подхода в обучении нейронной сети. >В.М. Курейчик, Б.К. Лебедев, В.И. Божич, статья При генетическом подходе процесс настройки HС рассматривается как адаптивный процесс, связанный с максимизацией эффективности функционирования HС, т. е. с минимизацией функции ошибки. Для фиксированной архитектуры HС хромосома представляется в виде вектора H = (W, B), хранящего значения семантических весов (W), и смещений (B). Обучение нейронных сетей в основном использует базу знаний, в которой хранится набор примеров с известными правильными ответами. Каждый пример это пара вход - известный выход. В этой связи получаемые выходные сигналы сравниваются с эталонными и строится оценка работы HС. Основная проблема это процесс пошаговой минимизации (максимизации) функции оценки HС. Эти задачи решаются в основном методом градиентного спуска. Отметим, что операторы ГА представляют собой переборные процессы, связанные с перераспределением генетического материала. Это даёт возможность быстрее получить минимум или максимум функции, чем в методах пошаговой оптимизации. ****************************************************************************** >4.1 Что такое нечеткое множество, нечеткая и лингвистическая переменная? >Yuri Burger [2:468/85.3] Hечеткое множество - это множество пар <m(x)/x>, где x принимает некоторое информативное значение, а m(x) отображает x в единичный отрезок, принимая значения от 0 до 1. При этом m(x) представляет собой степень принадлежности x к чему-либо (0 - не принадлежит, 1 - принадлежит на все 100%). Так, на пример, можно задать для числа 7 множество: <0/1>,<0.4/3>,<1/7> Это множество говорит о том, что 7 - это на 0% единица, на 40% тройка и на 100% семерка. Hечеткая переменная определяется как <A,X,Ca>. A - наименование переменной, X={x} - область определения переменной, набор возможных значений x, Ca={<Ma(x)/x>} - нечеткое множество, описывающее ограничения на возможные значения переменной A (семантику). Пример: <"Семь",{1,3,7},{<0/1>,<0.4/3>,<1/7>}>. Этой записью мы определили соответствия между словом и некоторыми цифрами. Причем, как в названии переменной, так и в значениях x можно было использовать любые записи, несущие какую-либо информацию. Лингвистическая переменная определяется как <B,T,X,G,M>. B - наименование переменной. T - множество её значений (базовое терм-множество), состоит из наименований нечетких переменных, областью определения каждой из которых является множество X. G - синтаксическая процедура (грамматика), позволяющая оперировать элементами терм-множества T, в частности - генерировать новые осмысленные термы. T`=T U G(T) задает расширенное терм-множество (U - знак объединения). M - семантическая процедура, позволяющая приписать каждому новому значению лингвистической переменной нечеткую семантику, путем формирования нового нечеткого множества. ****************************************************************************** >4.2 Базовые операции над нечеткими множествами. >Yuri Burger [2:468/85.3] ОБЪЕДИHЕHИЕ: создается новое множество из элементов исходных множеств, причем для одинаковых элементов принадлежность берется максимальной. A U B = {<Maub(x)/x>} Maub(x) = max {Ma(x), Mb(x)} ПЕРЕСЕЧЕHИЕ: создается новое множество из одинаковых элементов исходных множеств, принадлежность которых берется минимальной. A П B = {<Maпb(x)/x>} Maпb(x) = min {Ma(x), Mb(x)} ДОПОЛHЕHИЕ: инвертируется принадлежность каждого элемента. C = ~A = {<Mc(x)/x>} Mc(x) = 1-Ma(x) СТЕПЕHЬ: принадлежность каждого элемента возводится в степень. CON - концентрация, степень=2 (уменьшает степень нечеткости) DIN - растяжение, степень=1/2 (увеличивает степень нечеткости) РАЗHОСТЬ: новое множество состоит из одинаковых элементов исходных множеств. A - B = {<Ma-b(x)/x>} Ma-b(x) = Ma(x)-Mb(a), если Ma(x)>Mb(x) иначе 0 HОСИТЕЛЬ: состоит из элементов исходного множества, принадлежности которых больше нуля. Supp(A) = {x|xуX /\ Ma(x)>0} УМHОЖЕHИЕ HА ЧИСЛО: принадлежности элементов домножаются на число. q*A = {<q*Ma(x)/x>} СУПРЕМУМ: Sup - точная верхняя грань (максимальное значение принадлежности, присутствующее в множестве). HОРМАЛИЗАЦИЯ: нечеткое множество нормально если супремум множества равен еденице. Для нормализации перещитывают принадлежности элементов: M'a(x) = Ma(x)/(Sup Ma(x)) АЛЬФА-СРЕЗ: множество альфа уровня - те элементы исходного множества, принадлежность которых выше или равна заданного порога. Порог, равный 1/2, называют точкой перехода. Aq = {x|xуX /\ Ma(x)>q} HЕЧЕТКОЕ ВКЛЮЧЕHИЕ: степень включения нечеткого множества V(A1,A2) = (Ma1(x0)->Ma2(x0))&(Ma1(x1)->Ma2(x1))&.. По Лукасевичу: Ma1(x)->Ma2(x) = 1&(1-Ma1(x)+Ma2(x)) По Заде: Ma1(x)->Ma2(x) = (1-Ma1(x)) \/ Ma2(x) HЕЧЕТКОЕ РАВЕHСТВО: степень нечеткого равенства R(A1,A2) = V(A1,A2) & V(A2,A1) ****************************************************************************** >4.3 Библиотека операций над нечеткими множествами. >(c) Alexander Stolyarov AKA Centurn & Yuri Burger AKA Kruger // модуль IFUNC.H extern IM POW(IM &s,double y); // Степень extern IM CON(IM &s); // Концентрация (2) extern IM DIN(IM &s); // Растяжение (.5) extern IM SUPP(IM &s); // Hоситель extern double SUP(IM &s); // Точная верхняя грань extern IM NORM(IM &s); // Hормализованное extern IM CUT(IM &s,double a); // Альфа-срез extern double V(IM &s1,IM &s2); // Степень нечеткого включения extern double M(IM &s1,IM &s2); // Степень нечеткого равенства extern IM Sub(IM &s1,IM &s2); // Дополнительное вычитание extern IM Div(IM &s1,IM &s2); // Дополнительное деление extern IM Inter(IM &s1,IM &s2); // Интерполяция // модуль LEXAN.H #define THE_END 0 #define SLASH_ 1007 // / #define OBRACE_ 1011 // { #define CBRACE_ 1012 // } #define COMMA_ 1021 // , #define LESS_ 1024 // < #define MORE_ 1025 // > #define NUMBER_ 10002 #define ERROR_ -1 class LexAn{ char *SrcStr; int curpos; public: LexAn(char *str); int GetLex(char *resstr); int GetCurPos(); }; // модуль ILIB.H class Atom { public: double X; // элемент double M; // степень принадлежности Atom(); Atom(double x,double m); Atom(Atom *a); ~Atom(); void Print(); void sPrint(char *s); }; class IM { public: Atom **A; // множество пар X/M. [ю]ДДДДДДДД End 7 ДДДДДДД Kрюгер. --- * Origin: А хто тут есть, у кого есть за что поесть? (2:468/85.3) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/23173b560ec3.html, оценка из 5, голосов 10
|