Сразу сделаю отступление: я тот самый обыватель которому интересно и непонятно. Моя профессиональная деятельность связана с конструированием оборудования для нефтегазового комплекса. С нейронными сетями и машинным обучением сталкиваюсь только в научно-популярных статьях и роликах популяризаторов.
Как выглядит для такого обывателя принцип, лежащий в основе Искусственного Интеллекта, я постарался описать в предыдущей статье. И продолжая раскрывать тему, мне бы хотелось поделиться самой моделью на основании которой писалась статья.
Но прежде, необходимо оговорить ряд важных моментов:
Первое с чем требуется определиться - какие данные будут поступать на вход модели. В моём случае, такими данными являются образцы рукописного текста, из наиболее простой базы, которую я смог найти. Базы данных MNIST, предложенной институтом стандартов и технологий США.
Второе важное замечание которое необходимо сделать, так как без понимания этого момента не получится сформировать правильного представления о работе модели: у модели нет отдельных выходов. Получение информации и вывод результатов работы модели происходит через одни и те же элементы.
А у данной реализации, которая будет рассмотрена в качестве примера работы модели - вывода результата нет совсем. Вывод ошибки, это не результат работы программы, это способ объективного контроля работоспособности модели если поступающие данные размечены. При этом очевидно, если существует возможность вывода значения ошибки, то можно настроить вывод и других значений. Но всё это, так или иначе будет внешним показателем работоспособности модели.
Третье замечание заключается в том, что модель не предназначена для работы с изображениями напрямую. Часть данных поступающих на обработку не должна нести информацию, обеспечивая возможность формирования отрицательных связей. А любой пиксель, из которых состоит изображение, содержит информацию даже если его значение равно нулю.
Поэтому, изображение требует подготовки, в ходе которой пиксели разделяются на активные и не содержащие информации. Это также связано с тем, что большой объём поступающей о событии информации, создаёт условие при котором модель находит больше деталей. Как следствие, выявляется большее количество совпадений на основании которых происходит классификация событий. Что приводит к формированию ложных обобщений.
Теперь можно перейти к самой модели. Класс Harmoshka.
Блок схема описывающая модель
В начале, при обращении к памяти с заданной периодичностью происходит удаление из неё мусора. В качестве мусора выступают маски не накопившие опыта с момента своего формирования, о чём говорит изменяемая в процессе обучения переменная Control_value. Токая ситуация возможна если событие, с которым маски ассоциированы, повторяется крайне редко и не похоже на любые другие события.
На следующем этапе, поступившие от сенсорного пространства сведения о изображении дополняются информацией от результирующих масок активных групп. Происходит отражение внутренних процессов памяти на сенсорном уровне, приводящее к снижению ошибки. Для оценки долговременного влияния данного фрагмента кода, его можно исключить из программы не нарушив её работоспособность в целом.
Далее происходит расчёт активности масок и их дообучение. О чём подробно рассказано в предыдущей статье и в ролике, который был размещён в конце статьи. Поэтому обозначу только ряд ключевых моментов.
Новая маска формируется в том случае, если с событием воздействующим на сенсоры, не связано ни одной маски или такая связь есть, но ниже порога заданного переменной satiety.
Такой подход к формированию масок позволяет хранить в маске информацию о целом событии. Например, если сенсоры зафиксировали попугая, в маске сохраняется полученная информация о попугае. И в дальнейшем при поступлении новой информации, она оценивается исходя из того, насколько вновь поступившая информация похожа на попугая. Чем точнее совпадение, тем выше активность маски.
В свою очередь, группы масок могут формировать более сложное представление о событии, опираясь на информацию хранящуюся в масках. Предположим, что удав похож на 1 удава, 0,5 слоника, 0,125 мартышки и 0,0208 попугая. Теперь, если есть группа масок, содержащая маски представляющие удава, слоника, мартышку и попугая, можно с определённой долей уверенности, исходя из активность этих масок, предполагать наличие перед нами удава. Если для такого состояния группы масок, нет результирующей маски, она формируется, фиксируя состояние для группы. Если маска есть, то она дообучается.
При этом, исходя из их текущей активности, дообучения проходят все результирующие маски отвечающие заданным в программе условиям. Это позволяет формировать в памяти абстракции, что оказывает влияние на способность памяти удерживать информацию препятствуя изменениям. Данный фрагмент кода, также можно исключить из программы, для оценки его влияния на ошибку.
В качестве заключения можно сказать следующие:
На сколько я могу судить, реализация модели имеет общие черты с подавляющим большинством решений в машинном обучении, и не претендует на оригинальность подхода. Исключением является, отсутствие сложных для понимания обывателя математических моделей. Что в свою очередь, облегчает понимание протекающих в программе процессов, но накладывает на программу ряд ограничений.
saboteur_kiev
а причем тут ИИ?
Philistine1917 Автор
По итогу прошлой статьи, в которой описан процесс мышления, спрашивали про модель. Решил написать к той статье дополнение и выложить саму модель.
Соответственно в этой статье, описана программа в которой реализован принцип мышления. Реализация мышления имеет отношение к ИИ?