В программе собраны 3 разных программы по нейронкам.
1) Ouths and crosses
2) Ten of neurons
3) Russian alphabet
Подробнее о каждой из них.
1) Крестики-нолики. Названа так, потому что нужно распознавать крестик или нолик.
Нейросеть состоит из одного нейрона. Входными данными являются значения клеток поля 16х16. В поле рисуется картинка (крестик или нолик). Потом эти 256 значений подаются на вход нейрона. На выходе получаем 0 или 1, то есть крестик это или нолик.
Рисуем картинку. Жмём "Recognize" (распознать). Вычисляем значение на выходе нейрона. Если совпадает, то жмём "Clear picture" (очистить картинку), рисуем и распознаём картинку заново. Если же картинка не совпадает с распознанным значением (нарисован крестик, а программа выдаёт нолик или наоборот), то жмём "Teach" (обучить). Нейрон обучается крайне быстро (может хватить 10 картинок), поэтому никаких сохранений состояния нейросети нет. Также как нет сохранения обучающих картинок.
2) Десять нейронов.
В данной программе необходимо было реализовать однослойную нейросеть с десятью нейронами. Предназначена такая нейросеть для различия 10 разных образов (например, 10 букв греческого алфавита).
Заходить во вкладки на самом деле нужно в обратном порядке. Сначала нужно создать случайные коэффициенты нейросети, потом обучить нейросеть, и, наконец, распознавать. Упорядочены ссылки по частоте их использования: быстро создали нейросеть, обучили и перешли в режим распознавания образов (наиболее длительный и увлекательный процесс).
И так, по порядку вкладок.
"Recognize" (распознать). Здесь можно рисовать образ и делать попытку его распознавания. Если нейросеть хорошо обучена, то образ будет довольно хорошо распознаваться. Если же нет, то лучше перейти к обучению.
"Teach" (обучить). Тут используются такие понятия, как Tutor (обучалка) и Sample (образец). Обучалка может состоять из нескольких образцов. В примере можно увидеть по 10 образцов на каждую букву греческого алфавита. Можно редактировать имена как образцов (альфа 1, альфа 2, ... ), так и видов образцов (альфа, бэта, ... ). Можно сохранять в/загружать из *.xml файл(а) всю обучалку целиком.
Имеются автоматизированые средства обучения. Можно зайти в "Teach settings" и настроить там количество повторений, а также диапазон изменения коэффициента Eta, используемого при обучении. При нажатии на "Teach neuronet" можно запустить процесс обучения в соответствии с выбранными ранее настройками. У пользователя запрашивается какие он будет применять образцы: все или только выбранные. Далее придётся подождать завершения процесса обучения нейросети. К сожалению никаких progress bar-ов не реализовано.
"Neuronet" (нейросеть). В этой вкладке можно просмотреть матрицу коэффициентов каждого нейрона. В данном случае 10 нейронов. Красным отмечены положительные числа, синим - отрицательные. Чёрным отмечены нули (они редко встречаются).
3) Русский алфавит
В этой программе необходимо было реализовать двуслойную нейросеть для распознавания букв русского алфавита. На первом (внутреннем) слое 100 нейронов, на втором (внешнем) слое 33 нейрона (по количеству букв русского алфавита).
Функциональность вкладок аналогична функциональности в программе с десятью нейронами. Претерпели незначительные изменения первая и последняя вкладки. Во вкладке "Neuronet" теперь можно переключаться не только по нейронам, но и по их слоям.
Из-за увеличения количества слоёв и количества нейронов в них - увеличились файлы *.xml, хранящие нейросеть и обучалку. Поэтому было решено "обернуть" xml в zip. Теперь все данные сжимаются на лету и помещаются в архив. При загрузке происходит обратный процесс.
Обучалки и обученные нейросети.
Для быстрого просмотра программы можно скачать дополнительные файлы обучалок и обученных нейросетей для 2 и 3 программы соответственно. Ссылки на них приведены под ссылкой на программу.