Разработка нечеткой нейронной сети NEFClass M

Анализ недостатков системы NEFClass показывает, что их причиной является несовершенство алгоритма обучения нечетких множеств NEFClass. Для того что бы исправить это, необходимо заменить эмпирический алгоритм обучения на строгий алгоритм численной оптимизации. Как и оригинальная, так и модифицированная модель NEFClass основывается на архитектуре нечеткого персептрона. Архитектурные различия оригинальной и модифицированной моделей состоит в виде функций принадлежности нечетких множеств, функции t-нормы для вычисления активаций нейронов правил, а также в виде агрегирующей функции (t-конормы), определяющей активации выходных нейронов. Применение численных методов оптимизации требует дифференцируемости функций принадлежности нечетких множеств – условие, которому треугольные функции принадлежности не удовлетворяют. Поэтому в модифицированной модели нечеткие множества имеют гауссовскую функцию принадлежности.

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

Основное изменение, касается алгоритма обучения нечетких множеств. Целевой функцией в модифицированной системе NEFClass выступает минимизация среднеквадратичной ошибки на обучающей выборке по аналогии с классическими нейросетями

Аргументом численной оптимизации, направленной на уменьшение среднеквадратичной ошибки по обучающей выборке, является совокупный вектор параметров a и b всех нечетких множеств сети. В качестве конкретного метода может выступать любой метод безусловной оптимизации, как, например, градиентный метод или метод сопряженных градиентов.
Алгоритм обучения нечеткой нейронной сети NEFClass M
Этап 1 — генерация базы правил
Для первого этапа данного алгоритма – обучения базы правил ис-пользуется первый этап базового алгоритма NEFClass.
Этап 2 — обучение нечетких множеств
Второй этап использует метод сопряженных градиентов обучения нейронной сети прямого действия.

Проведение экспериментов с ННС NEFClass М
Исходные данные
В качестве образцов для сети были выбраны сотрудники МГОУ и занесены в базу данных(Рис.1.). Фотографии содержат изменения ракурса, масштаба и освещения. База данных имеет 100 изображений: 10 человек по 10 лиц. Размер изображений – 112x92. Формат — один байт на пиксель, в виде значений градаций серого [0; 255]. Для ускорения обучения изображения были уменьшены в 4 раза по объему (46x56).

image
рис.1.

Базы данных перед обучением были разделены на 2 части. Нечетные изображения человека использовались для обучения, а четные — для тестирования. Эксперименты с нечеткой нейронной сетью проводились в математическом редакторе Mathcad 14.0.

Эксперименты с ННС NEFClass M
Параметры обучения ННС NEFClass M
Параметр Значение
Алгоритм генерации правил лучший для класса
Алгоритм обучения сопряженных градиентов
Функция агрегации взвешенная сумма
Количество термов для каждого признака 5


Исследуем зависимость качества обучения от количества правил, которые генерируются на первом этапе. В качестве проверки будем проводить тестирование на проверочной выборке. Для этого зададим количество правил 1, 2, 3 или 4 (из 5) на каждый класс. Конфигурация сети: 40 выходных нейронов, 5 термов на каждый признак.
Результаты экспериментов
Таблица 1 — Зависимость качества обучения от количества правил

Входных нейронов Нейронов правил Распознавание (обучающая выборка) Распознавание (проверочная выборка)
Ok Err ? Ok Err ?
200 40 73.5 26.5 0.0 70.0 30.0 0.0
200 80 92.5 7.5 0.0 86.0 18.0 0.0
200 120 98.5 1.5 0.0 91.0 9.0 0.0
200 160 100.0 0.0 0.0 93.5 6.5 0.0
400 40 76.5 22.0 1.5 67.5 32.0 1.5
400 80 92.0 7.0 1.0 82.5 16.5 1.0
400 120 98.0 2.5 0.5 97.5 0.5 1.5
400 160 100.0 0.0 0.0 98.5 0.0 1.5

где «Err» — ошибки второго рода, «?» – нераспознанные образы (ошибка первого рода).

Из исследуемых алгоритмов нейронная сеть NEFClass M лучше всех справилась с задачей распознавания, однако в этой сети большое количество ошибок первого рода. Классическая нейронная сеть NEFClass показала идентичный результат процента таких ошибок, но при этом отстает от NEFClass М из-за большого количества нераспознанных изображений. Это обусловлено применением треугольных функций принадлежности, которые в диапазоне входных данных могут выдавать на входы нейронов правил нулевые значения (чего не происходит при использовании гауссовых функций принадлежности).

Из приведенного анализа следует, что для повышения вероятности распознавания, необходимо использовать нейронную сеть NEFCIass M. Нейронная сеть NEFCIass M показала минимальное количество ошибок классификации, но при этом имеет повышенное значение не распознанных изображений. Необходима оптимизация поиска в базе знаний и увеличения набора изображений лиц для уменьшения ошибок не распознанных изображений.

Вывод
На основании проведенного анализа и проведенных экспериментов следует отметить о наилучшей конфигурации сети и параметров предварительной обработки для задач распознавания изображений, а именно:
1. количество коэффициентов Фурье для качественного соотнесения изображения к определенному классу: 80-200, в зависимости от количества классов;
2. количество скрытых нейронов: 80-200, в зависимости от количества выходных нейронов;
3. наиболее оптимальные функции активации слоев – гиперболический тангенс;
4. алгоритм обучения – градиентный с адаптацией шага обучения

P.S Моя первая статья на хабре. Моя работа по аспирантуре.
Поделиться публикацией

Комментарии 33

    +3
    Ловите плюс, тема и статья интересная, но выскажу свое личное оценочное суждение по формату статьи: я, как человек, не занимающийся областью интеллектуальных ИС, не знаю, что такое NEFClass и чем он отличается от персептрона Розенблатта и подобных нейросетей. Было бы полезно сделать некоторое вступление, поясняющее базовые понятия для непосвященных.

    А так спасибо и добро пожаловать на Хабр.
      +1
      Спасибо. В следующий раз учту. У меня много статей накопилось.
        0
        А даже если человек знает, неплохо указывать задачи из реальной жизни, которые решаются с помощью рассматриваемого подхода. Например, «бинарные классификаторы»: отлично подходят для фильтрации спама.
        +3
        Тема интересная, но так статьи не пишут. Во-первых, нет отсылок к работам с хотя бы кратким описанием нейро-нечетких классификаторов. А во вторых, создается впечатление, что автор обращается к аудитории, которая каждый божий день работает с нечеткими системами и отчетливо представляет себе, чем NEFClass М круче NEFClass.

        Кстати, как вы правила генерируете то?
          +2
          я использую правила генерации системы NEFClass.
          Цель которого создать k нейронов правил NEFClass.
          если кратко, то работает по следующему принципу:
          1. Выбираем образец
          2. Для каждого входного нейрона, находим функцию принадлежности
          3. Если по-прежнему число узлов правил k меньше kmax и не существует узла правила R, то создаем такой узел и соединяем его с выходным узлом ci, если ti=1
          4. Если еще остались необработанные образцы в L и k<=kmax, то переходим на шаг 1, а иначе стоп.
          5. Определяем базу правил по одной из трех следующих процедур:
          “Простое” обучение правил: оставляем только первые k правил.
          “Лучшее” обучение правил: обрабатываем образцы в L и накапливаем активации каждого нейрона правил для каждого класса образцов, которые были распространены. Если нейрон правила R показывает большее накопление активации для класса Cj, чем для класса CR, который был специфицирован для следствия правила, тогда изменяем следствие R на Cj, то есть соединяем R с нейроном выхода cj.
          Оставляем k нейронов правил с наивысшими значениями VR и удаляем другие нейроны правил из системы NEFClass.
          “Лучший для каждого класса” алгоритм обучения: действуем также как и в предыдущем случае, но оставляем для каждого класса Cj те лучшие
          [k/m] правил, следствия которых представляют класс Cj (где [x] – целая часть от x).
          p.s. Могу дополнить с формулами:)
          +5
          Во — первых
          Если посмотреть на твою выборку, то видно что лица в первую очередь различаются не ЛИЦАМИ а общим цветовым фоном и наполнением. 1.) Первая линейка (фото где женщина) — светлые изображения. 2.) Вторая линейка — белое и черное с явным контрастом. 3.) Последняя линейка — Серое размытое. В результате у тебя классификатор заточится не на форму лица и его особенности, а на ненужные тебе совсем особенности изображений Вывод — выборка не репрезентативна, на фото в других условиях (при другом освещении например) обученная модель не сработает.
          Во-вторых
          Сами изображения для обучения используют редко, обычно используют некие дескрипторы (см HOG, LBP, Haar)
          В-третьих
          Ознакомься с этой вещью docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html и сравни производительность.
          И ещё
          Скачай базу с лицами и протестируй на ней, 10 изображений это очень мало для получения работоспособной модели.
            +4
            Вообще заметка больше похожа на фиговый отчет к лабораторке по нечетким моделям, чем на статью…
              0
              Если честно, то обидно:), это ни какой нибудь отчет по лабораторке, это часть из моей диссертации
                +1
                Ну, Хабр, всё-таки немножко другую направленность и стилистику, чем диссертации имеет. Не находите?:)
                  +1
                  Согласен:). Первый блин всегда комом
                    0
                    Вы главное не унывайте. Хороших статей про машинное обучение в рунете не просто мало, а почти нет. Если у вас материал накопился, вы пишите. Я с удовольствием буду читать. Про то, что гугл купил эпл, майкрасофт засудил амазон и т.д. добра на Хабре хватает:)

                    Вступление добавьте, расскажите, какие задачи решаются этим методом, какие плюшки есть. Вот, например, isvirin тоже по своей научной работе о многопоточном программировании цикл статей написал habrahabr.ru/company/nordavind/blog/176541/. Думаю, можно взять как образец.
                    0
                    Насчет направленности я бы поспорил. Хабр только лучше станет, если подобного рода штучки будут больше освещаться.
                    +4
                    Может у вас крутая диссертация, но данная заметка, увы, тянет разве что на отчет (по моему мнению, хотя чукча сам не писатель=)). Чтобы быть более конструктивным, вот мои мысли по её поводу(все очень субъективно):
                    1)Нет никакого вступления, сразу идет plain text, как-будто выдранный из середины какой-то статьи.
                    2)Не совсем понятно, чем отличается ваша сеть NEFClass N от, например, нечетких сетей Такаго-Сугэно-Канга(там также оптимизируется среднеквадратичное отклонение по выборке). А последние показывают не очень хорошие результаты, в сравнении с теми-же глубокими сетями.
                    3)Удивительно, что вы не строили ROC кривую, анализируя зависимость качества обучения от числа правил в базе(куча цифр в таблице — совсем не наглядное представление данных).
                  +2
                  Во-вторых
                  Сами изображения для обучения используют редко, обычно используют некие дескрипторы (см HOG, LBP, Haar)


                  Это не совсем так. Сейчас сильно развиваются методы representation learning, которые спосбоны выучить эффективные признаки из сырых данных.
                    0
                    Я тестировал на базе ORL, все эксперименты удались. Система успешно внедрена на одном предприятии.
                    Надо было с основ начать, следующие посты будут посвящены началу моего пути.
                      0
                      Конкретно для сравнения лиц (а не для выделения!) ни Хаара ни LBP не используют. А вот текстурных методов используют много разных (взять хотя бы классический Eigenface). Так что сама идея для сравнения лиц использовать нейронную сеть по изображениям — достаточно правильна. Только изображения нужно ещё нормировать и растягивать, предварительно находя там ориентацию лица. Другое дело, что в тех алгоритмах, которые наиболее успешны статистически используется множество разных методов, текстурные — лишь часть.
                      А в остальном вы всё верно пишите.
                        0
                        Благодарю:)
                      0
                      Соглашусь с предыдущими оратороми, было бы интересно почитать по подробней про эту тему. Эксперименты это круто, но начинать нужно с теории, мне кажется. Жду новых постов -)
                        0
                        Посты в принципе уже готовы, я их редактирую. Там написано все с самого начала.
                          0
                          Для первого поста на хабр — хорошо. Но в будущем постарайтесь писать более живые тексты. Хабр это всё-таки не ВАКовский журнал:) Тут в первую очередь хочется чтобы красиво и интересно было написано с максимумом картинок, графиков и выводом формул:)
                            0
                            Вы поняли, что это ВАК статья?:). Да вы правы — это именно ВАК статья. Впредь будут живые посты.
                              0
                              Просто я сейчас тоже диссер защищаю, хотя и на совершенно иную тему:)
                              Стиль, принятый в современных российских «научных» журналах слишком хорошо в глаза бросается:)
                                0
                                теперь понятно:), если не секрет какая тема?)
                                  0
                                  Про наблюдение и сопровождение спутников оптическими средствам. Но с системами биометрии достаточно много поработать пришлось:)
                                    0
                                    ты случаем не на КВАНТЕ?
                                      0
                                      Не, я с РТ:)
                                        0
                                        А то я на КВАНТЕ делал программу для расчета скопости спутников:)
                                0
                                Надеюсь, что это черновик статьи? Т.к. «На основании проведенного анализа и проведенных экспериментов следует отметить о наилучшей конфигурации сети и параметров предварительной...» делает мой мозг кипеть. А ещё использование будущего времени («В качестве проверки будем проводить тестирование на проверочной выборке.») обычно не допускается в научных публикациях.
                          0
                          А какая статистика получается по нормальной базе у алгоритма, если не секрет?
                          Мы просто сталкивались при работе с очень похожей задачкой пару месяцев назад, реализовали самые простые текстурные алгоритмы, получили средненькие результаты, думали куда дальше разрабатывать, в сторону алгоритмов выделяющих особенности, или в сторону усложнения сравнения.
                            0
                            Реальная статистика такова, из 100 человек идентифицирует 98%, 2% не относит ни к чему, в ряду нечеткости камеры, этот нюанс еще просматриваю и изучаю, но все равно 98% это уже большое достижение.
                              0
                              А размер базы какой?
                                0
                                полностью база весит 300мб (там 1543 сотрудника)
                            +1
                            нечеткая статья по нечеткой нейронной сети

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое