В предыдущей статье я дал краткое описание моделей, основанных на энергии, объяснил архитектуру сети Хопфилда, а также правило обновления по Хеббиану и представил задачу избежать паразитных воспоминаний.

В этой статье я объясню основные факторы, влияющие на емкость хранилища сети Хопфилда, как можно использовать контрастную дивергенцию и стохастичность перехода состояний для смягчения паразитных воспоминаний, а также представлю машину Больцмана как развитие сетей Хопфилда.

Источники паразитических воспоминаний

Когда мы обучаем сеть Хопфилда сохранять несколько паттернов, в идеальном мире они разделены в пространстве состояний, и каждый паттерн образует четкие и четкие минимумы.

В большинстве случаев это не произойдет естественным путем. Без превентивных мер намеренно сохраненные состояния могут утратить свой статус явных минимумов энергии и могут образоваться различные типы непреднамеренных минимумов.

Шаблоны, которые слишком похожи или менее ортогональны другим сохраненным шаблонам, могут вызывать смешанные состояния. Кроме того, обратите внимание, что для каждого сохраненного шаблона также сохраняется его «призрак» или отрицание.

Ортогональность: два шаблона, отличающиеся N/2 битами, ортогональны

Вырезать до графика 3

В дополнение к непреднамеренным смешанным состояниям могут возникать ложные паразитные состояния независимо от сходства шаблонов.

Эти проблемы могут привести к тому, что развивающаяся сеть остановится в состояниях, которые не должны быть сохранены, или не остановится в состояниях, которые должны быть сохранены.

Емкость

Помня о паразитных воспоминаниях, когда мы говорим о пропускной способности сети Хопфилда, мы имеем в виду не только то, сколько паттернов мы можем сохранить, но и соотношение намеренно сохраненных паттернов к непреднамеренно сохраненным паттернам. Это соотношение определяет скорость, с которой мы можем успешно восстановить воспоминания, которые намеревались восстановить. Подводя итог, можно сказать, что пропускная способность сети Хопфилда — это расплывчатый термин, относящийся к скорости успешного поиска в сети.

Теоретически сеть хопфилда может хранить столько паттернов, сколько в ней нейронов, если все ее паттерны ортогональны, но в большинстве практических случаев емкость стандартной сети хопфилда значительно ниже.

Для случайно сгенерированных паттернов примерно один паттерн на 7 нейронов кажется несколько согласованной оценкой отношения, но имейте в виду, что это действительно зависит от ситуации.

Контрастное расхождение

Одним из действий, которые мы можем предпринять для повышения скорости поиска, является использование алгоритма контрастивной дивергенции в нашем процессе обучения.

Раньше при расчете весов сети при хранении нескольких шаблонов мы брали среднее значение бита каждого шаблона в каждой позиции. Делая это, мы минимизировали энергию в каждом состоянии, которое было шаблоном, который мы хотели сохранить.

По сути, мы пытались «вытянуть» энергию для целевых состояний, чтобы она сформировала то, что иллюстративно выглядит как долина… но что, если бы мы могли также «подтолкнуть» энергию для нецелевых состояний.

Другими словами, наша сеть, вероятно, работала бы лучше, если бы мы пытались не только минимизировать энергию для наших целевых паттернов, но и максимизировать энергию для наших нецелевых паттернов.

Итак, как мы реализуем этот второй термин в нашем тренировочном процессе?

Мы по-прежнему можем использовать обучение по хеббиану для вычисления первого члена, но нам нужно добавить процесс градиентного спуска для второго члена. Это означает, что если ранее обучение сети было однократным, то теперь оно является однократным только частично.

Градиентный спуск будет работать, но есть проблема: для любого паттерна значительной длины задача становится очень затратной в вычислительном отношении — максимизация энергии с помощью градиентного спуска для всех нецелевых паттернов имеет экспоненциальную сложность выполнения.

Таким образом, вместо того, чтобы максимизировать энергию для всех нецелевых шаблонов, мы можем быть немного умнее — мы можем попытаться максимизировать энергию только для непреднамеренных минимальных состояний. Другими словами , мы будем искать парасидические воспоминания и максимизировать их энергию, когда найдем их.

Для реализации этого мы можем сделать следующее:

Во-первых, инициализируйте веса сети, используя обучение по хеббиану, как мы делали ранее.

Затем случайным образом инициализируйте значения нейрона, позвольте сети развиваться, и когда она достигнет стабильного состояния, если это состояние не является предполагаемой памятью, максимизируйте энергию для этого состояния. Невозможно определить, были ли удалены все паразитические воспоминания, но этот процесс можно повторять до тех пор, пока не будут соблюдены некоторые «достаточно хорошие» критерии.

Мы можем улучшить или добавить этот процесс, дополнительно инициализируя значения нейрона в целевых шаблонах, если сеть развивается, это означает, что целевое состояние в настоящее время не является минимумом, каким мы хотим его видеть. Когда сеть перестанет развиваться, максимизируйте энергию для этого состояния — повторяйте этот процесс до тех пор, пока каждый предполагаемый целевой шаблон не станет стабильным минимумом.

В дополнение к инициализации значений сети в каждой предполагаемой памяти, мы также могли бы инициализировать значения случайным образом, и, если сеть эволюционирует в нецелевое состояние, выполнить там градиентный спуск.

Вот как можно использовать контрастную дивергенцию для обучения сети Хопфилда, это не гарантирует, что все исправит, но определенно поможет.

Стохастичность

Еще одно изменение, которое мы можем внести, чтобы сделать нашу сеть более устойчивой к паразитным воспоминаниям, — добавить в ее поведение некоторый шум, или, другими словами, сделать сеть стохастической.

Минимум ложных воспоминаний часто будет мелким по сравнению с минимумом предполагаемых воспоминаний. Если стандартная детерминированная сеть Хопфилда развивается во время логического вывода и заканчивается минимумами, она установится независимо от того, насколько мелкими являются минимумы.

Но если мы представим добавление шума как «сотрясение состояния», мы можем представить себе, как развивающаяся сеть может «избежать» неглубоких минимумов.

Мы можем сделать сеть Хопфилда стохастической, внеся это простое изменение: следуйте правилу обновления Хебба… обычно. Иногда, даже когда активация нейрона соответствует его значению, все равно переворачиваем его бит .

Если мы вернемся к сравнениям физических систем из предыдущей статьи этой серии, подходящим названием для этой переменной будет температура сети. Более высокая температура увеличивает шансы перевернуть значение нейрона, более низкая температура уменьшает эти шансы.

Чтобы использовать этот новый термин наиболее эффективно, мы можем включить отжиг, при котором мы постепенно снижаем температуру в ходе экземпляра эволюции.

Дополнительные единицы

До сих пор мы рассмотрели, как увеличить пропускную способность сети хопфилда за счет повышения ее скорости поиска — есть и другое направление, в котором мы могли бы двигаться.

В стандартной сети Хопфилда каждый нейрон представляет бит в паттерне, который мы пытаемся представить, но нет причин, по которым каждый нейрон в сети должен представлять какой-то бит в паттерне — мы могли бы добавить в сеть нейроны, которые действуют идентично все остальные нейроны, но просто не представляют собой часть сохраненного паттерна.

Если мы сделаем это, мы сможем разбить структуру на видимые нейроны, нейроны, которые вносят вклад в паттерн, и скрытые нейроны, нейроны, которые не вносят вклад в паттерн. При оценке состояния сети мы просто игнорируем значения скрытых нейронов.

Независимо от того, оценивали ли мы ранее пропускную способность шаблона как одну седьмую часть видимых узлов или как количество видимых узлов, с дополнительными скрытыми единицами, ограничивающий член возрастает до суммы количества видимых узлов и скрытые узлы.

Увеличивая общее количество нейронов, сеть способна представлять больше информации и увеличивать свою пропускную способность. Независимо от того, оценили ли мы емкость как K ‹ 0,14N или K ≤ N, N теперь возросло до N+K, где N — видимые единицы, а K — скрытые единицы.

Заключение/резюме

На данный момент мы преобразовали детерминированную сеть Хопфилда без скрытых элементов в стохастическую сеть Хопфилда со скрытыми элементами, также известную как машина Больцмана!

Напомним, мы рассмотрели

  • к чему относится пропускная способность сети Хопфилда
  • как контрастное обучение дивергенции и стохастическая эволюция могут улучшить скорость поиска сети Хопфилда
  • как добавление скрытых единиц может расширить возможности сети Хопфилда по представлению информации
  • и, наконец, представил машину Больцмана как эквивалент стохастической сети Хопфилда со скрытыми элементами.

Это все для этой статьи! Если вы получили что-то из этого, пожалуйста, ставьте мне палец вверх и рассмотрите возможность подписки.

Видео форму этих статей можно найти на моем youtube канале: https://www.youtube.com/watch?v=SVy-CzPFrwQ