Объектно-ориентированный подход к построению нейросетевых эмуляторов
Имя: TNetSynapse
Назначение: Инкапсулирует информацию о типовом элементе «синапс». Определяет его поведение и реакцию на «активацию». При посещении (активации), синапс умножает свой вес, на входное значение.
Основные поля и методы:
§ weight – значение веса синапса
§ getValue() – возвращает значение поля weight
§ visited() – реакция на «активацию» элемента «синапс». Умножить входное значение на вес.
Теперь рассмотрим алгоритм «запуска» нейронной сети. В результате работы нейронной сети, каждый нейрон должен быть посещен и накопленное, в сумматоре, значение должно быть передано на выход. Для решения поставленной задачи, представим модель нейронной сети ориентированным графом:
§ Окраска вершины означает, активацию элемента нейронной сети.
§ Сумматор представлен особой вершиной, которая окрашивается только после того, как будут окрашены все нейроны.
§ После окраски всех вершин, типовой элемент «выход сети» содержит результат работы нейронной сети.
Таким образом, алгоритм «запуска» нейронной сети должен окрасить все вершины графа. За основу возьмем алгоритм обхода графа в ширину. Т.к. в графе есть вершина особого вида (сумматор), которая окрашивается лишь при последнем посещении, в отличие от обычных вершин, которые окрашиваются при первом, модифицируем используемую в алгоритме структуру данных типа очередь. Вершина добавляется в очередь лишь при условии, что в ней еще нет этой вершины. Там образом «сумматор» добавиться в очередь только при первом посещении, а удалиться, только после того, как будут окрашены все нейроны.