Наивное добавление слоев Boolean приводит к остановке или незавершению.

Введение

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

Цель

Наивно создайте скрытый слой в логической сети и извлеките информацию из его производительности.

Эксперимент

Код можно найти по адресу: https://github.com/arjay55/Logic_learn_12202019

На этот раз добавляется плотный скрытый слой. Каждый узел представляет собой объект, состоящий из ff:

  1. логическая формула
  2. Таблица истинности оценивается как 1
  3. Таблица истинности оценена как 0
  4. Таблица правды не волнует

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

Ошибки, где node(j,k ) XOR node(j+1,k) == 1, заданное правильное значение получается из входных данных. Если входные данные взяты из набора неважно node(j,k), формула пересчитывается с новой таблицей истинности. В противном случае следующее значение из набора данных «безразлично» используется как правильное значение из node(j,k), таким образом обучая затронутые узлы, используя соединения в node(j- 1,k). Это аналогично «обратному распространению» в многослойных персептронах. Как указано в предыдущем посте, обновленная таблица истинности является частью атрибутов узла для дальнейших обновлений, поступающих из набора безразлично.

Алгоритм обучения:

Алгоритм обучения является аналогом «разработки через тестирование» в разработке программного обеспечения. Если вывод допускает ошибку, то для обучения получается обучающая выборка. Процесс повторяется до тех пор, пока не будет достигнута 100% точность. Цель состоит в том, чтобы достичь 100 %, если данные, используемые для обучения, меньше 100 %.

Эксперименты на 1 слое:

  1. Как и ожидалось, обучение проходит успешно, достигая 100% логической эквивалентности. Однако это привело к непосредственной неразрешимости (NP-hard) характеру обобщения булевой логики. Вы можете запустить более раннюю версию кода (), чтобы просмотреть обучение набора данных

Поскольку наивно добавляется плотная сеть, могут возникнуть некоторые проблемы:

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

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

б. Неспособность учиться аналогична оптимизации только до локального оптимума.

Выводы:

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

Дальнейшая работа:

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