Приветствую всех.Наша команда сейчас занимается созданием НейроСети (НС), способной распознавать символы русского алфавита.Архитектура сети - многослойный перцептрон (MLP). Изображения в обучающей выборке (ОВ): монохромные изображении вида 16*16. ОВ состоит из 4196 изображений. НС имеет от 100 до 500 нейронов скрытого слоя и 33 нейрона на выходе. НС полносвязная. Активационная функция: "Result := Arctan(x);", её производная: "Result := 1 / (1 + Power(x, 2));". Шаг динамический. Метод Монте-Карло.Изначально, на вход НС подавались значения пикселов изображения. Т.е. если пиксел белый, то значения активационной функции нейрона входного слоя НС будет логический 0. Если чёрный, то логическая 1.Проблема заключалась в том, что НС не удалось до конца обучиться, даже с течением большого кол-ва времени. (Причём проблема закл. в том, что НС чаще всего ошибается на тех символах, что являются конфликтными. Например, "А" и "Л" и "Д"; "З" и "Э")Потом я подал на вход топологическую проекцию (сколько линий контура символа есть в текущем столбце/строке изображения ОВ).НС не обучилась, но результат оказался лучше.Я подал и пиксела и топологическую проекцию.НС не обучилась, но результат оказался лучше, чем прежде.
Я пришёл к такому выводу, что чем различимее данные на входе НС, тем быстрее и качественнее она обучается. И вообще - я в статье (не помню в какой), там из изображений 16*16 выделялось ~1200 первичных признака (А у меня ~600. Нужно больше. :) ).
Вот и вопрос: Какие признаки можно выделить из изображения, для того, чтобы подать их на вход НС?Я думал, и понял, что можно выделить следующие:* Кол-во замкнутых областей (У буквы "Ф" их две).* Кол-во структурных единиц изображения (У буквы "Ё" их три).
Тема в том, что я полагаю, что мне нужно больше этих признаков.Или... может быть существую ещё какие-нибудь способы повышения скорости (или возможности) обучения НС?