Универсальный нейросетевой редактор — имитатор
MemBrain — мощный графический нейросетевой редактор — имитатор для Microsoft Windows, поддерживающий искусственные нейросети произвольного размера и архитектуры. Редактор-имитатор выполнен в виде программы freeware. Тексты нейропакета доступны в Интернет на немецком и английском языках. Его адрес:
http://www.membrain-nn.de/english/download_en.htm.
Назначение и возможности пакета MemBrain
Основные характеристики пакета MemBrain позволяют:
— Передачу подготовленных нейросетей в промышленные программные системы (динамические библиотеки dll) или автоматическую генерацию C-Code обученной нейросети.
— Формирование «на-лету» результатов обучения нейросети на заранее подготовленных данных;
— Обучение «с учителем» и «без учителя»;
— Моделирование сложных нейросетей с учётом временных связей и динамики их изменения;
— Внедрение объектов высокой сложности с учётом языка сценариев.
MemBrain обеспечивает максимальную гибкость разработки и исследования искусственных нейросетей, созданных с помощью интуитивного графического интерфейса пользователя.
К настоящему времени пакет используется многими университетами для исследования и обучения. В то же время, в течение последних лет наблюдается повышение интереса к использованию его в промышленном производстве и технических управляющих приложениях.
Большинство приложений связано с отображением корреляции между входами и выходами неизвестных или недостаточно известных данных в искусственных нейронных сетях. Целью является способность предсказания выходов системы на основе тестирования входов без знания передаточной функции. Знание этих функций часто невозможно совсем, или по крайней мере недоступно для получения законными средствами.
Исключительно важное требование для достижения этой цели — достаточное количество вводимых и выходных пар данных, которые могли быть получены из реальной системы или могли уже быть доступны из исторических записей. Эти данные могут быть импортированы в MemBrain и могут быть использованы для обучения искусственных нейронных сетей.
Как только нейронная сеть разработана и успешно обучена, она может быть использована, чтобы аппроксимировать реальную систему для использования в прогнозах или других вычислениях: новые величины прикладываются ко входам сети — целевые выходные величины вычисляются сетью и доступны через выходные порты сети.
Используя MemBrain, такая сеть может легко быть преобразована в промышленные системы, независимо от того, являются они основными или вложенными системами.
Основные системы могут использовать dll — версию MemBrain для загрузки и обучения нейросетей из файлов. Dll так же позволяет проводить обучение сетей вместе с пользовательскими приложениями.
Для вложенных систем MemBrain даёт возможность использовать встроенный исходный кодовый генератор C, который позволяет генерировать код, ограниченый типичными требованиями вложенных систем: небольшой объём используемой памяти и отказ от динамического распределения памяти.
Из-за своих гибких дисплейных свойств MemBrain применим как для больших сетей, использующих много нейронов и связей, так же и для небольших сетей, состоящих только из нескольких нейронов и может быть использован для подробного обследования, которое производится на самом низком уровне.
MemBrain использует мощный язык C++, как язык описания, который позволяет описать всё — от простых пакетных процессов до сложных управляющих программ для того, чтобы автоматически запускать часто используемые последовательности операторов или чтобы достигать определённого потребителем поведения.
Программа MemBrain и все связанное с ней вспомогательное программное обеспечение включая MemBrain DLL, распространяются по принципу «как есть». Никакая гарантия, любого типа, ни — явная или неявная, не даётся.
Вы используете пакет на свой риск. Томас Jetter не будет ответственным за потерю данных, убытки и упущенную выгоду если убыток вызывался использованием или неправильным употреблением этого программного обеспечения.
Учебные материалы
Основной учебник MemBrain находится в файлах MemBrain_Help. pdf и MemBrain.chm. Его оглавление содержит следующие разделы:
Кроме того, учебные материалы есть и в других файлах: MemBrain Examples.chm и Popko MEMBRAIN ARTIFICIAL NEURON NETWORK. pdf.
Сетевые возможности пакета
Пакет MemBrain предусматривает работу с различными видами нейросетей:
И может реализовать работу с нестандартными нейросетями, например:
Перевод базовых разделов документации
Документация находится в файле MemBrain. pdf и MemBrain.chm. Сайт нейропакета: http://www.membrain-nn.de/
Установка настроек пакета
На первом шаге необходимо установить и скорректировать несколько параметров для оптимизации работы пакета. MemBrain сохранит эти настройки в файле и будет их загружать в дальнейшем в начале работы.
Следующие установки задаются в меню <View> при начале работы:
— <View> <Show Links>: checked
— <View> <Show Activation Spikes On Links>: unchecked
— <View> <Show Fire Indicators>: unchecked
— <View> <Use Display Cache>: checked
— <View> <Black Background>: unchecked (тёмный фон нужен лишь для демонстрации активационных шипов)
— <View> <Snap To Grid>: checked
— В меню <Teach> щёлкнуть функцию <Set Teach Speed…>. Установить 0 ms <OK>
— В меню <Edit> щёлкните по <Default Properties…> и проверьте. Это будут установки по умолчанию при старте MemBrain впервые.
— В <Edit Neuron Properties> желательна начальная установка:
После щелчка по <Appearance…>:
— Выделить: Показывать имя и активацию
В <Normalization…> выбрать, использовать или нет Нормализацию:
В <Edit Link Properties> определить, нужно ли показывать веса связей:
В <Customize Activation Functions> устанавливается активационная функция:
Настройки экрана
MemBrain предлагает несколько вариантов отображения, доступных через меню <View>. Галочка под опциями в меню показывает их текущее состояние активации.
— <Вид> <Показать ссылки> Если активирован, то ссылки отображаются на экране. В противном случае ссылки и порты подключения нейронов скрыты. Вы можете выбрать ссылки, только если они отображаются. Тем не менее, вы можете соединить нейроны всеми способами, которые не требуют ручных операций подключения, даже если ссылки в настоящее время не отображаются.
— <Вид> <Показать шипы активации в ссылках> Если активирован, то активационные шипы отображаются по ссылкам.
— <Вид> <Показать индикаторы огня> Если активировано, то нейроны показывают желтую точку на своем выходном разъеме каждый раз, когда они запускаются (выдают сигнал <> 0).
На следующих рисунках показан нейрон, который в данный момент работает.
— На первом рисунке опция <Вид> <Показать ссылки> деактивирована, поэтому входной разъем не отображается.
— Второе изображение — это результат отображения, если опция активирована.
— <View> <Show Winner Neuron>
Если Show Winner Neuron активирован, то выходной нейрон с наивысшей (нормализованной) активацией указывается после каждого шага Think следующим образом:
Это может использоваться, например, для определения нейрона-победителя на самоорганизующейся карте (SOM).
• <Вид> <Рисовать ссылки на переднем плане> Если эта опция установлена, то ссылки отрисовываются перед нейронами. Иначе они отображаются как находящиеся позади нейронов. Этот параметр также применяется к отображаемым шипам активации в ссылках.
• <Вид> <Показать информацию о слое> Информация о слое для каждого нейрона может быть отображена и скрыта с помощью этого пункта меню. Смотрите здесь для более подробной информации.
• <Вид> <Использовать кэш отображения> Когда вы активируете эту опцию, MemBrain подготавливает содержимое экрана к следующему обновлению экрана во внутреннем кэше и перетаскивает его на экран за один раз. Это обеспечивает обновление дисплея без мерцания, но может быть немного медленнее в некоторых ситуациях. Тем не менее, иногда лучше не использовать кэш дисплея, потому что при работе с большими сетями вам может потребоваться увидеть прогресс в обновлении дисплея, чтобы увидеть, что происходит.
• <Вид> <Черный фон (только с дисплеем кэша)>
Эта опция выбирает черный фон для дисплея, который может улучшить визуальный внешний вид некоторых сетей, особенно когда отображаются пики активации и сеть моделируется в режиме Auto Think.
Auto Think — эта опция доступна только при использовании кеша отображения.
• <Вид> <Показать сетку>
Показывает / скрывает сетку размещения нейронов.
• <Просмотр> <Просмотр обновления во время обучения>
Если флажок установлен, то вид обновляется в процессе обучения после каждого урока в сети.
• <Вид> <Обновить вид во время Think>
Если этот флажок установлен, то вид обновляется во время процесса Auto Think после каждого шага Think сети.
Отображение панелей инструментов на верхней границе главного окна MemBrain
Вы можете управлять состоянием видимости каждой панели инструментов с помощью команды меню <Вид> <Панели инструментов>.
Если вы хотите автоматически отображать и переупорядочивать все панели инструментов, выберите команду меню <Вид> <Панели инструментов> <Прикрепить и показать все> или нажмите клавиши <Ctrl> + «T» на клавиатуре. Эта команда организует отображение всех панелей инструментов на верхней границе главного окна MemBrain.
Вы также можете выполнить эту команду после изменения размера главного окна MamBrain.
Использование сетки
При использовании MemBrain вы можете работать на основе сетки размещения нейронов или работать со свободным размещением нейронов. Чтобы изменить текущую настройку, используйте команду <View> <Snap To Grid> из главного меню.
Если сетка отображается на экране (или нет), ее можно определить с помощью отдельной опции: используйте команду <View> <Display Grid> главного меню, чтобы отобразить / скрыть сетку.
Вы также можете установить ширину сетки в диапазоне от 5 до 500 единиц, используя <View> <Set Grid Width …>. В качестве ориентации: ширина нейрона составляет 45.
Существует также возможность перераспределить все выбранные в настоящее время нейроны в их ближайшую точку сетки: используйте <Edit> <Snap Selection to Grid> в главном меню.
Задание.
— Найдите в Интернет сайт фирмы MemBrain и загрузите пакет. Ознакомьтесь с файлами нейропакета. Найдите файлы документации.
— Проверьте настройку инсталлированной у вас версии пакета.
— Обратите внимание, что автор пакета приглашает посетить форум фирмы. Побывайте на нём.
Нейроны в MemBrain (Neurons in MemBrain)
Нейроны в MemBrain высвечиваются как:
N1 — Скрытый нейрон (Hidden Neuron)
N2 — Входной нейрон (Input Neuron);
N3 — Выходной нейрон (Output Neuron);
N4 — Нейрон с заблокированным порогом активации (activation threshold — одно из свойств (properties) нейрона), обозначен его синей границей (в чёрно-белом варианте может быть незаметна). Запертый порог активации нейрона не будет изменен в процессе обучения.
Обычно в MemBrain входной порт нейрона находится сверху нейрона, выходной порт расположен внизу. Обратите внимание, что для просмотра портов должна быть активирована опция <View> <Show Links>.
N1, N2, N3 и N4 являются названиями нейронов. Каждому нейрону может быть назначено произвольно выбираемое имя. Это одно из свойств нейронов.
Нейроны будут менять свой цвет в соответствии с их текущей активацией: нейрон с активацией 0 будет отображаться серым цветом. Отрицательная активация приведет к тому, что нейрон будет отображаться больше в направлении синего, достигая максимальной синей окраски при активации -1. Положительные значения активации приводят к красному нейрону. Максимальная красная окраска будет достигнута при активации 1:
Обратите внимание, что цвет всегда определяется на основе так называемой «нормализованной» активации нейрона.
Добавление простых нейронов (Adding Single Neurons)
Чтобы добавить новые нейроны в область рисования, просто выберите <Insert> <New Neurons> в главном меню или просто нажмите соответствующую кнопку панели инструментов:
Курсор изменится на перекрестие, и новый нейрон уже будет прикреплен к курсору.
Переместите курсор в назначенную позицию и поместите нейрон в позицию курсора, щелкнув левой кнопкой мыши. Следующий новый нейрон уже будет прикреплен к курсору. Продолжайте размещать новые нейроны таким же образом. Когда закончите, снова выберите стандартный режим работы, нажав
на панели инструментов, отменив выбор <Insert> <New Neurons> в главном меню или просто нажав <ESC> на клавиатуре.
Замечания: При добавлении нейронов вы также можете перемещаться навигацией (navigate) по области рисования. Если опция Snap to Grid активирована, размещение нейронов будет происходить автоматически только в точках сетки. В этом случае убедитесь, что ширина сетки настроена на значение, подходящее для вашей планируемой нейронной сети.
Новые нейроны всегда создаются с текущими свойствами по умолчанию, установленными с помощью <Edit> <Default Properties …> из главного меню. Имя новых нейронов будет состоять из строки, введенной для имени в свойствах по умолчанию, плюс символ <SPACE> и уникальный номер, который создается внутри MemBrain для идентификации каждого отдельного нейрона. Это имя по умолчанию может быть изменено. Изменение имени не повлияет на внутренний идентификатор MemBrain для нейрона.
Изменение свойств нейрона (Changing Neuron Properties)
Чтобы редактировать свойства одного или нескольких нейронов, выделите их мышью и выполните одно из следующих действий.
• Щелкните правой кнопкой мыши по одному из выбранных нейронов и выберите <Свойства> в контекстном меню, или
• Выберите <Edit> <Properties> в главном меню, или
• Дважды щелкните по одному из выбранных нейронов (также работает с одиночными нейронами, которые еще не выбраны)
• Нажмите <ENTER> на клавиатуре.
Откроется следующий диалог:
Если вам нужна дополнительная информация о том, как эти параметры влияют на поведение нейрона, обратитесь к разделу о модели нейрона MemBrain’s Neuron Model.
Поля и их значения:
— Name (Название): Свободно выбираемое имя нейрона. Имя будет отображаться в центре нейрона. Обратите внимание, что MemBrain также включает функцию автоматического именования нейронов (Neuron Auto Naming), которая может использоваться, если большая группа нейронов должна быть переименована с использованием схемы нумерации.
— Type (Тип): Один из следующих
• INPUT
• HIDDEN
• OUTPUT
— Activation (Активация): Это текущая активация нейрона. Активация вместе с параметрами в разделе «Настройки вывода» диалогового окна определяет сигнал, который выводится нейроном. Примечание. Вы также можете настроить активацию нейрона с помощью функции быстрой активации (Quick Activation).
— Порог активации (Activation Threshold): Порог активации нейрона используется для расчета его активации из предыдущей активации, суммы входных сигналов и функции активации нейрона. Функция активации — это параметр, который изменяется в процессе обучения, если он явно не заблокирован.
— Функция активации (Activation Function): Один из следующих
• LOGISTIC
• IDENTICAL
• IDENT. 0 TO 1
• TAN HYP
• BINARY
Функция активации определяет, как активация рассчитывается из суммы входов и порога активации.
Активный фактор устойчивости (Activation Sustain Factor):
— Новая активация нейрона всегда вычисляетcя из текущих входных сигналов и определенного разрушения текущей активации. Коэффициент устойчивости активации определяет, какая часть текущей активации включается в расчет новой активации.
— Блокировка акта (Lock Act). Важно для Учителя (Thres for Teacher):
Если этот флажок установлен, то порог активации нейрона не будет изменяться ни во время обучения сети, ни с помощью функции <Randomize Net>.
— Разрешить учителю подключение выхода (Allow Teacher to Connect Output).
Если эта опция деактивирована, то учитель (алгоритм обучения) не имеет права подключать новые ссылки к выходу этого нейрона. Это действует только в том случае, если активный в данный момент учитель реализует добавление новых ссылок, таких как «Каскад» «Cascade Correlation».
— Уровень выходного огня (Output Fire Level):
Один из следующих
• 1
• Activation
Уровень выходного огня определяет выходной уровень нейрона при работе. Это либо фиксированное значение 1, либо текущая (нормализованная) активация нейрона, в зависимости от выбранной настройки.
— Внешность… (appearance): Если вы нажмете на эту кнопку, вы можете редактировать внешний вид нейронов в следующем диалоговом окне.
o Отображаемое имя (Display Name): Если эта опция включена, то имя нейрона отображается на нейроне.
o Активация дисплея (Display Activation): Когда этот флажок установлен, активация нейрона печатается на экране под нейроном.
о Это пиксель (Is Pixel): Если это свойство установлено для нейрона, оно отображается в виде прямоугольника с острыми краями, который меняет свой цвет с черного (активация = 0) с серого на белый (активация = 1). Если такие нейроны расположены близко друг к другу на экране, они отображаются в виде монохромного растрового изображения.
— Нормализация … (Normalisation…): Если вы нажмете на эту кнопку, вы сможете редактировать параметры нормализации нейронов в следующем диалоговом окне.
Нормализация означает, что вы можете указать конкретный диапазон значений активации для каждого входного или выходного нейрона вашей сети. Затем этот диапазон будет автоматически преобразован внутри MemBrain в или из реального диапазона функций активации соответствующего нейрона в зависимости от ситуации.
Нормализация контролируется следующими настройками в этом диалоговом окне:
— Использовать нормализацию (Use Normalisation): Нейрон использует нормализацию, только если этот флажок установлен
— нижний и верхний пределы (Normalisation Range): Диапазон значений ввода / вывода, который нормализуется к внутреннему диапазону функции активации нейрона.
— Использовать значение игнорирования активации во время обучения (Use Activation Ignore …): этот параметр позволяет дополнительно указать специальное значение активации для каждого выходного нейрона вашей сети, который служит заполнителем для данных, которые должны игнорироваться во время обучения. Игнорирование данных во время обучения может быть полезно, если ваши данные содержат неполные шаблоны, то есть не все выходные данные могут быть известны для всех ваших шаблонов. В этом случае вы можете установить соответствующие элементы выходных данных шаблонов в это специальное значение, чтобы они игнорировались в процессе обучения. Дополнительная информация о нормализации диапазонов функций активации нейронов также доступна здесь вместе с мастером нормализации, который может помочь вам в настройке диапазонов нормализации ваших нейронов (here, together with the Normalization Wizard).
— Флажки «Изменить (Change)» работают только в том случае, если редактируются свойства более чем одного нейрона.
Быстрая Активация (Quick Activation)
Значения активации -1, 0 и 1, а также определяемое пользователем четвертое значение могут быть назначены нейронам очень быстро и легко. Это полезная функция, когда вы хотите быстро проверить ответ сети на тестовые данные, созданные на лету. Или, может быть, вы хотите нарисовать двоичную картинку на массиве входных нейронов.
Затем вы можете использовать метод Paint Brush Selection, чтобы выбрать интересующие нейроны с помощью мыши, а затем активировать выбранные нейроны с помощью быстрой активации.
Вот как это сделать:
— Выберите целевые нейроны
Затем:
— Нажмите <0> на клавиатуре, чтобы применить активацию 0
— Нажмите <1> на клавиатуре, чтобы применить активацию 1
— Нажмите <2> на клавиатуре, чтобы применить активацию -1
— Нажмите <Strg +1> на клавиатуре или выберите <Доп. Функции> <Применить быструю активацию>, чтобы применить настраиваемое значение активации. Значение можно настроить, выбрав <Extras> <Quick Activation Value …> в главном меню, которое откроет следующий диалог.
Автоматическое присваивание номеров нейрону (Neuron Auto Naming)
MemBrain предоставляет возможность автоматически создавать и присваивать нумерованные имена для пары выбранных нейронов:
1.) Выберите нейроны, которым будет присвоено автоматически сгенерированное имя.
2.) Выберите пункт меню <Edit> <Neuron Auto Naming …>
Откроется следующий диалог:
Вы можете ввести необязательный текст префикса и начальное значение для автоматической генерации имени.
Если вы нажмете ОК, то всем выбранным нейронам будет автоматически назначено автоматически сгенерированное имя в соответствии с настройками в диалоговом окне.
Перечисление выбранных нейронов будет происходить в соответствии с их расположением на экране.
Автоматическое перечисление начинается с выбранного слева верхнего нейрона, а затем идет сверху вниз в строках слева направо.
Конечно, как и любые другие изменения в сети, автоматическое перечисление может быть отменено с помощью функциональности Undo / Redo MemBrain.
Функции активации (Activation Functions)
MemBrain предоставляет пять различных функций активации:
• ЛОГИСТИКА (LOGISTIC)
• ИДЕНТИЧНЫЙ (IDENTICAL)
• ИДЕНТИЧНЫЙ от 0 до 1 IDENTICAL 0 TO 1 ()
• TAN HYP (TAN HYP)
• BINARY (BINARY)
• МИНИМАЛЬНОЕ Евклидово расстояние (MINIMUM EUCLIDEAN DISTANCE)
Некоторые функции активации могут быть параметризованы индивидуально для каждого нейрона с помощью диалога свойств.
Подробнее о редактировании свойств нейронов смотрите здесь (MemBrain_Help. pdf -> Changing Neuron Properties).
Диалог Свойства содержит дополнительную вкладку для визуализации и настройки функций активации:
График может отображаться для каждой доступной функции активации. Какой из них отображается, можно выбрать с правой стороны области графика.
Для знакомства с функциями активации в основном меню MemBrain создаём нейрон:
На иконке нейрона правой кнопкой мышки открываем меню:
и выбираем Properties:
Нажимаем Customize Activation Function — откроется Activation Graph c графическим изображением функции активации:
Повторяем несколько раз «Изменяем Export Logic -> Update Graph»:
Изменяем тип графика на Identical, и другие:
Замечания:
— Для построения графика предполагается, что порог активации равен 0. Также текущий выбор отображаемой функции активации не влияет на выбор функции активации, сделанный на вкладке «Редактировать свойства нейрона» («Edit neuron properties’).
— Для функции «Логистика» параметр «Экспонент Логистика», а для функции «Гиперболический тангенс» — параметр «Tan Hyp» можно отрегулировать в окне Customize Activation Functions.
— Кнопка «Обновить график» приводит к обновлению графика после изменения этих значений.
Следует отметить, что функция активации «Минимальное евклидово расстояние» принципиально отличается от всех других функций активации: все остальные функции активации рассчитывают активацию нейрона, используя в качестве основы сумму входов для всех входов нейронов.
«Минимальное евклидово расстояние» не использует входную сумму, но вычисляет евклидово расстояние между входным вектором (то есть выходным вектором всех нейронов, подключенных к входу нейрона) и вектором, построенным по весам всех входных связей нейрона. Это евклидово расстояние нормировано на длину 0..2, указывающее, насколько близко эти два вектора находятся вместе:
— Евклидово расстояние 0 означает, что векторы идентичны, что приведет к значению активации 1.
— Евклидово расстояние 2 означает, что Дифференциальный вектор между двумя векторами имеет длину 2, что означает, что один вектор является отрицательным для другого. Это приведет к значению активации 0.
Функция активации «Минимальное евклидово расстояние» используется для выходных нейронов так называемых самоорганизующихся карт (SOM), где сходство между входным вектором и вектором веса является критерием для определения выходного нейрона сети, то есть нейрона с самым высоким значением активации.
Диапазоны активаций нейронов, которые обычно имеют величину, отличную от -1 до 1 или от 0 до 1, обычно устанавливаются при настройке функций активации нейронов.
При нормализации нейронов они могут быть изменены (MemBrain_Help. pdf -> Normalize I/O Data).
Модель нейрона и Операция (Neuron Model And Operation)
Все нейроны в MemBrain в основном идентичны. Тем не менее, они могут вести себя совершенно иначе в результате того, как их параметры настроены.
Когда во время моделирования должно быть рассчитано новое состояние нейронной сети (это называется одним «шагом мысли» в MemBrain), тогда каждый нейрон выполняет свои собственные вычисления на основе сигналов на своих входах, текущей активации и настроек параметров. Результат этого вычисления определяет новую активацию нейрона, которую производит сигнал, появляющийся на выходе нейрона согласно другому набору настраиваемых параметров нейрона.
Выходной сигнал нейрона затем передается по всем подключенным выходным каналам связи на входные порты нейронов назначения, к которым эти сигналы направляются. Сигнал дополнительно умножается на вес соответствующей линии связи, прежде чем он достигнет входного порта нейрона назначения.
Чтобы полностью понять поведение нейрона в MemBrain, очень важно четко различать активацию нейрона и его выходной сигнал.
Активация:
Давайте сначала посмотрим на расчет активации, который задается следующей формулой:
Как мы видим, новая активация нейрона рассчитывается из двух частей:
— Текущая активация, умноженная на так называемый коэффициент устойчивости активации
— Значение функции активации, которая получает сумму по всем входам нейрона минус так называемый порог активации в качестве аргумента (за исключением функции активации минимального евклидова расстояния, которая вычисляется по-другому).
Кроме того, результирующее значение активации обрезается до диапазона [0..1] или [-1.. 1] независимо от того, какой диапазон применяется к конкретной функции активации.
Для первого понимания давайте предположим, что вторая часть в формуле равна 0. В MemBrain это имеет место в двух ситуациях: либо сумма всех входов вместе с порогом активации приводит к тому, что функция активации приводит к значению 0, либо к нейрону не поступает никаких сигналов (т.е. нет ссылок), связанных с его входным портом. Если у нейрона нет сигналов, связанных с его входом, вся правая часть формулы опускается. Обратите внимание, что это не то же самое, что входной сигнал 0! В этом случае новая активация рассчитывает только текущую активацию и фактор поддержки активации. Это приводит к тому, что активация нейрона затухает с каждым шагом вычисления до тех пор, пока он не достигнет 0.
Фактор устойчивости активации определяет, как быстро это произойдет: значение 0 приводит к тому, что активация немедленно падает до 0 при следующем шаге вычисления. Значение 1 приведет к тому, что активация останется неизменной навсегда. Любое значение между этими пределами будет вызывать активацию, которая экспоненциально уменьшается до 0 в течение определенного количества этапов расчета. (Теоретически активация никогда не достигнет 0 при любом значении фактора устойчивости активации, кроме 0, но в MemBrain активация в диапазоне [-0.0000001 <= активация <= +0.0000001] автоматически устанавливается на 0.)
Вместе с правой частью формулы мы получаем хорошее представление о том, как происходит активация нейрона в симуляции. Его входы в сочетании с функцией активации приводят к тому, что активация повышается или понижается в зависимости от признаков входов, в то время как коэффициент устойчивости активации возвращает активацию обратно к 0, когда входы не вызывают существенной активации. Чувствительность нейрона по отношению к его входам определяется порогом активации.
Выходной сигнал:
После того, как активация нейрона была рассчитана в соответствии с процедурой, описанной выше, его выходной сигнал определяется в соответствии со следующей таблицей: («X» в таблице означает, что настройка не имеет значения, т.е. «Не волнует»)
(*): Решение о том, запускает ли нейрон (выход <> 0) или нет (выход = 0), принимается на основе того, что вероятность стрельбы увеличивается от 0 до 1 (= 100%) при активации в пределах от нижнего порога огня к верхнему порогу огня. Обратите внимание, что в приведенной выше таблице «Акт» всегда относится к нормализованной активации нейрона, то есть не зависит от определенных пользователем диапазонов данных (так называемые «Настройки нормализации»). Как мы видим, выход нейрона определяется переменными Активация.
Число шагов активации с момента последнего запуска нейрона определяется в сочетании со следующими параметрами, которые являются свойствами каждого нейрона:
• Нижний порог огня
• Верхний порог огня
• Выбор уровня выходного сигнала («1» или «Активация»)
• Время восстановления выхода
Смысл термина «огонь» заключается в том, что выход нейрона имеет значение <> 0.
Строка 1: Если активация меньше или равна нижнему порогу огня, то нейрон не будет срабатывать в любом случае.
Строка №2: Если число вычислений активации с момента последнего запуска нейрона меньше, чем время восстановления выхода, нейрон не будет срабатывать в любом случае. Наименьшее допустимое значение для времени восстановления выхода равно 1, что обычно позволяет нейрону срабатывать при каждом шаге вычисления. (Используйте настройку 1, если вы хотите отключить настройку Output Recovery Time)
Строка №3 и строка №4: Если активация больше, чем Upper Fire Threshold, то нейрон сработает в любом случае, если это позволяет настройка времени восстановления выхода (см. Строку №2).
То, какое значение появляется на выходе при срабатывании нейрона, определяется выходным уровнем срабатывания, который имеет две возможные настройки: «1» или «Активация». Если установлено значение «1», то нейрон всегда срабатывает с выходным уровнем 1. В последнем случае нейрон выдает свою активацию при стрельбе.
Строка №5 и строка №6:
Когда активация больше, чем нижний порог огня, и меньше или равна верхнему порогу огня, тогда нейрон срабатывает с вероятностью, которая непрерывно возрастает от 0 до 1 (= 100%) с увеличением активации. Опять же, параметр «Время восстановления выхода» должен учитывать это, как описано в строке №2.
Это приводит к некоторому случайному поведению нейрона, когда нижний порог огня и верхний порог огня не идентичны. Если вы не хотите иметь это случайное поведение, тогда используйте одинаковые настройки для обоих порогов. Выходной сигнал в случае, если нейрон срабатывает, снова определяется настройкой уровня выходного сигнала, как уже описано в строке №3 и строке №4.
Задание.
1. Задание по ознакомлению с возможностями по настройке нейронов.
Составить справочник по изменению параметров нейронов для каждого типа активации:
Лучше использовать те архитектуры, свойства которых вам наиболее знакомы, так как это упростит интерпретацию результатов. На выбор может повлиять наличие или отсутствие в вашем распоряжении соотвествующих программ.
Скрытые слои характеризуются все одинаково: число нейронов в каждом скрытом слое, активационная функция нейронов каждого скрытого слоя. По умолчанию они имеют нейроны с сигмоидальной активационной функцией.
Выходной слой характеризуется так же, как входной. По умолчанию они оба имеют нейроны с линейной активационной функцией.
Различные активационные функции могут быть по-разному настроены. Так, линейная активационная функция для настройки имеет коэффициент А и смещение B. Если их изменять, изменяется и внешний вид функции, что меняет и реакцию нейронов на приходящие на них сигналы.
Графика в MemBrain (ссылки, связи, размещение нейронов)
Перемещение нейронов
В MemBrain нейроны могут быть легко перемещены в пределах пространства для рисования. Обычно для этого необходимо:
— Выбрать один или более нейронов мышью
— Держать нажатой кнопку мыши у одного из выбранных нейронов и перемещать его до его нового расположения.
— Удерживать кнопку мыши до переноса нейрона на новое место.
Если активирована опция Snap to Grid то нейроны будут перемещены на шаги текущих меток (grid width).
Связи в MemBrain
Нейроны в MemBrain соединяются друг с другом связями.
Связь — это взвешенное соединение между выходными коннекторами нейронов и входными коннекторами других нейронов или даже тех же самых нейронов в их верхней части.
Связи в MemBrain выводятся как тонкие линии между коннекторами нейронов и изменяют свои цвета в соответствии с их текущим весом, начиная от голубого при весе -1 или меньше, достигая серого при 0 и стремящегося к красному в конце, когда вес становится 1 или больше.
Примечание. Ссылки отображаются в MemBrain только в том случае, если в главном меню включена опция <Вид> <Показать ссылки>.
Также вы можете выбрать, будут ли ссылки отображаться на переднем или заднем плане (за нейронами). Это полезная опция, когда многие ссылки пересекают нейроны на чертеже.
Выберите <View> <Draw Links in Foreground> для переключения между вариантами.
Как показано в примере, текущий вес ссылки может отображаться вместе со ссылкой. Это одно из свойств, которое можно настроить для каждой ссылки.
Еще одно свойство ссылки — это функция блокировки его веса. Если флаг блокировки ссылки установлен, вес ссылки не изменяется в процессе обучения и командой Randomize Net. Ссылка с заблокированным весом отображается пурпурным цветом, как показано ниже, независимо от фактического значения веса.
Ссылка в нейронной сети может быть логически прямой или обратной связью. Ссылки в приведенном выше примере являются прямыми ссылками.
В следующем примере нейросеть также содержит обратные ссылки (петли назад), которые иногда отображаются пунктирными линиями.
В этой сети есть две петлевые ссылки: одна идет от выходного нейрона с именем «4» назад в иерархии слоев сети к так называемому «контекстному нейрону» с именем «C» в примере. Другая на самом деле является круговой связью, которая соединяет выход нейрона «L» со своим собственным входом.
Примечание. При соединении двух нейронов ссылки, идущие вверх в области рисования, считаются петлевыми ссылками, если не проводился анализ сети. Сетевой анализ проверит сеть и определит, какие ссылки в сети являются реальными обратными ссылками, а какие нет. Таким образом, внешний вид ссылок может измениться после запуска сетевого анализа.
Добавление ссылок между нейронами
Для того, чтобы видеть характер соединений нейронов на экране, должна быть включена опция отображения ссылок MemBrain: убедитесь, что опция <View> <Show Links> в главном меню MemBrain активна!
Нейроны в MemBrane всегда имеют свои входы на верхнем и выход на нижнем разъеме:
Ссылка в MemBrain всегда должна соединять выход со входом. Обычно говорят, что это единственное правило, которое применяется к связям между нейронами. В MemBrain есть много способов связать нейроны со ссылками. Из-за этого описание того, как это сделать, было разбито на несколько подразделов.
При создании связей между нейронами есть такие возможности:
— Простое соединение двух нейронов (вручную создаются отдельные ссылки)
— Групповое соединение двух групп нейронов (сразу всех нейронов одной группы со всеми нейронами другой)
Чтобы вручную соединить два нейрона, просто наведите указатель мыши на один из разъемов нейрона (верхний разъем является входным, нижний — выходным). Разъем автоматически увеличится и станет синим, указывая на возможность подключения:
Щелкните левой кнопкой мыши на разъеме, и к нему будет прикреплена новая ссылка. Другой его конец находится на кончике курсора мыши. Теперь наведите курсор мыши на целевой разъем другого или даже того же нейрона. Разъем будет подсвечен, если соединение возможно. Нажмите еще раз левой кнопкой мыши:
Примечание. Новые ссылки всегда создаются со свойствами по умолчанию. Свойства по умолчанию можно установить, выбрав <Edit> <Default Properties …> в главном меню.
Если вы хотите отменить действие подключения, просто нажмите <ESC> на клавиатуре.
Во время подключения нейронов вы также можете перемещаться по областям чертежа, которые в данный момент не видны, без необходимости отмены текущей операции подключения.
Во втором случае (при групповом соединении двух групп нейронов) используются простой выбор членов группы (обычно при этом цвет выбранных нейронов становится красным), и дополнительный выбор (при котором цвет выбранных нейронов становится зелёным).
Одиночный щелчок по нейрону левой кнопкой мыши приводит к выделению этого нейрона и нейрон становится «выделенным».
При нажатии клавиши <Ctrl> на клавиатуре и удержании её в нажатом состоянии пока щёлкаются мышью другие нейроны, происходит простой выбор — делают всю группу нейронов выделенными.
Кроме того, все нейроны становятся выделенными, если при нажатой клавише <Ctrl> мышью нарисовать прямоугольник вокруг выделяемых нейронов (это так же приводит к простому выбору).
Для создания дополнительного выбора нейронов надо сначала с этими нейронами произвести простой выбор, а затем применить к ним состояние «Extra Selection» (нажать на одном из выбранных нейронов правую кнопку мыши, и в открывшемся меню выбрать пункт «Extra Selection») — при этом происходит дополнительный выбор группы нейронов.
Используя простой выбор и дополнительный выбор для разных групп нейронов, можно изменять направление связей между нейронами:
• Подключить нейроны от дополнительного выбора к текущему выбору.
• Подключиться к дополнительному выбору из текущего выбора.
• Добавить выходные ссылки на текущий выбор и подключить их вручную к входам других нейронов.
• Добавить входные ссылки в текущий выбор и подключить их вручную к выходам других нейронов.
При групповом соединении можно изменять не только направление связей, но и их вид, зависящий от характера взаимоотношений соединяемых групп (например, разных слоёв нейросети):
• Полная связь
• Случайная связь
• 1: 1 связь
• Матрица на основе связи
Подключение из дополнительного выбора (для ПОЛНОЙ связи)
Чтобы соединить две разные группы нейронов, вы можете использовать функцию Connect FROM Extra Selection. С помощью этой функции очень легко добавить несколько соединений между целыми слоями сети:
• Выберите исходные нейроны ОТ (FROM), откуда должны выходить ссылки
• применить к ним состояние «Extra Selection»
• Выберите целевые нейроны, куда должны идти ссылки.
Щёлкните символ:
Или выберите <Редактировать> <Подключить из дополнительного выбора> в главном меню или в контекстном меню, которое появится, если щелкнуть правой кнопкой мыши один из выбранных нейронов.
Будут созданы ссылки:
Примечание. Новые ссылки всегда создаются со свойствами по умолчанию. Свойства по умолчанию можно установить, выбрав <Edit> <Default Properties …> в главном меню.
Примечание. Вы выбрать нейроны в качестве цели, которые дополнительно выбраны (в качестве источника). Это приведет к созданию циклических связей между выходами экстра-выбранных нейронов и их собственными входами, а также входами всех других выбранных нейронов.
Например, если вы сейчас сразу нажмете на символ панели инструментов
Бесплатный фрагмент закончился.
Купите книгу, чтобы продолжить чтение.