Рекурсивный спуск по сравнению со сгенерированными синтаксическими анализаторами - эффективность

Это одна из хорошо известных проблем в области статистики и нейронных сетей, называемая Проблема распознавания открытых множеств .

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

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

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

Надеюсь, мои 2 цента помогут.

7
задан ljs 28 January 2009 в 14:33
поделиться

2 ответа

Я думаю, что много зависит от языка, который Вы пытаетесь проанализировать. Другая часть производительности, о которой иногда забывают, является лексическим анализом (сканирование) часть - это значительно для производительности, поскольку это имеет дело с символами, а не символами. Рекурсивный спуск является хорошим первым повторением при записи синтаксического анализатора, и это делает после логики проанализированного языка довольно естественный. Я думаю, что, если проанализированный язык соответствует (никакая левая рекурсия) необходимо запустить с рекурсивного спуска. Выбор LALR для производительности на данном этапе, кажется, преждевременная оптимизация. Можно записать синтаксический анализатор диаграммы вручную, но я сомневаюсь, что это - то, что Вы имеете в виду. Запись LALR-парсера вручную возможна, но утомительна.

8
ответ дан 7 December 2019 в 03:21
поделиться

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

Лично, я нахожу LALR-грамматики легкими работать с, и fsyacc интеграция F# (который является, как я учился, парсинг) делает очень легким интегрировать yacc в Ваш проект.

1
ответ дан 7 December 2019 в 03:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: