Я думаю о следующей проблеме: я хочу найти регулярное выражение, которое соответствует определенному набору строк (например, действительные адреса электронной почты) и не соответствует другим (недействительные адреса электронной почты).
Предположим, что под регулярным выражением мы подразумеваем некоторый четко определенный конечный автомат, я не знаком с точной терминологией, но давайте договоримся о некотором классе разрешенных выражений.
Вместо того, чтобы вручную создавать выражение, я хочу дать ему набор положительных и отрицательных примеров.
Затем должно появиться выражение, которое соответствует «+», отклоняет «-» и является минимальным в некотором четко определенном смысле (число состояний в автоматах?).
Мои вопросы:
- Рассматривалась ли эта проблема, как ее можно определить более конкретным образом и можно ли решить ее эффективно? Можем ли мы решить это за полиномиальное время? Это NP завершено, мы можем приблизить это как-нибудь? Для каких классов выражений это будет работать? Буду признателен за любой указатель на учебники, статьи или тому подобное, которые обсуждают эту тему.
- Это как-то связано со сложностью Колмогорова?
- Это как-то связано с обучением? Если регулярное выражение согласуется с моими примерами, поскольку оно минимально, можем ли мы что-то сказать о его обобщающей силе на еще невиданных примерах? Какой критерий минимальности был бы более подходящим для этого? Какой из них будет более эффективным? Это как-то связано с машинным обучением? Снова любые указатели были бы полезны ...
Извините за грязный вопрос ... Направьте меня в правильном направлении, чтобы понять это. Благодарность !
источник
Ответы:
Да, это NP-Hard. Питт и Вармут показали, что нахождение наименьшего DFA, соответствующего данному образцу, не может быть аппроксимировано с точностью до для любой постоянной , если только .OPTk k P=NP
Что касается вопроса об обучении: Кернс и Валиант доказали, что вы можете кодировать RSA в DFA. Таким образом, даже если помеченные примеры исходят из равномерного распределения, возможность обобщения на будущие примеры (даже исходя из равномерного распределения) сломает RSA. Следовательно, мы думаем, что в худшем случае маркировка примеров не поможет в изучении DFA (в модели PAC). Это один из классических результатов криптографической стойкости для обучения.
Обе эти проблемы переплетаются из-за того, что мы называем теоремой Оккама о бритве . В основном это говорит о том, что если у нас есть процедура для нахождения наименьшей гипотезы из данного класса, которая согласуется с выборкой, помеченной гипотезой из того же класса, то мы можем PAC изучить этот класс. Таким образом, учитывая результат твердости RSA, мы ожидаем, что поиск наименьшего непротиворечивого DFA будет трудным в целом!
Чтобы добавить положительный результат обучения, Angluin показал, что вы можете изучать DFA, если вы создаете свои собственные примеры, но для этого требуется дополнительная способность спрашивать «верна ли моя текущая гипотеза?» Это было также основополагающим документом в обучении.
Чтобы ответить на ваш другой вопрос, все это действительно связано со сложностью Колмогорова, поскольку проблема обучения становится проще, когда каноническое представление целевого DFA имеет низкую сложность.
источник
Я отвечаю на вопросы, связанные с обучением.
Эта проблема, кажется, в литературе называется «обучение DFA».
Голд [Gol78] показал, что он NP-полон, чтобы при заданном k ∈ℕ и двух конечных наборах P и N строк решить, существует ли детерминированный конечный автомат (DFA) с не более чем k состояниями, который принимает каждую строку в Р и ни одна из строк в N . В статье [PH01], похоже, обсуждаются проблемы, связанные с этой мотивацией (может быть, их будет гораздо больше; это возникло, когда я попытался найти соответствующие статьи в Google).
Ссылки
[Gol78] E Марк Золото. Сложность идентификации автоматов по заданным данным. Информация и управление , 37 (3): 302-320, июнь 1978. http://dx.doi.org/10.1016/S0019-9958(78)90562-4
[PH01] Раджеш Парех и Васант Гонавар. Изучение ДФА на простых примерах. Машинное обучение , 44 (1–2): 9–35, июль 2001 г. http://www.springerlink.com/content/kr2501h2442l8mk1/ http://www.cs.iastate.edu/~honavar/Papers/parekh- dfa.pdf
источник
На протяжении всего этого обсуждения предполагалось, что нахождение минимального регулярного выражения равносильно нахождению минимального FSM, распознающего язык, но это две разные вещи. Если я правильно помню, DFA можно минимизировать за полиномиальное время, тогда как поиск минимального регулярного выражения, представляющего данный регулярный язык, сложен для PSPACE. Последнее является одним из тех результатов, которые принадлежат фольклору Теории автоматов, но чье доказательство не может быть найдено нигде. Я думаю, что это указано как упражнение в книге Пападимитру.
источник
Смотрите также этот пост переполнения стека. Похоже, что книга, которую вы ищете, - « Введение в теорию вычислений » Майкла Сипсера.
Вы задаете пару разных вопросов, поэтому берете их по одному:
Нет, это не так. В статье «Переполнение стека» обсуждается наивный алгоритм n ^ 2 для уменьшения FSM до минимального размера. (Работая в обратном направлении от состояний остановки, объедините состояния, которые являются «идентичными» в точном смысле.)
По-видимому (я не перешел по ссылке), для этого существует алгоритм n log n.
Как вы это сформулировали, ваш тренировочный набор описывает конечный язык. Конечные языки тривиально сопоставляются с FSM - создайте линейный набор состояний, оканчивающихся в состоянии остановки для каждой строки в вашем языке, цикличность не требуется. Затем запустите алгоритм минимизации FSM на полученном компьютере.
Я бы так не сказал. Минимизация FSM не меняет его дискриминационную силу - вот в чем дело. Минимальный FSM принимает точно набор строк как любой эквивалентный неминимальный FSM.
Как правило, регулярные выражения не подходят для классификации новых данных. Для любого конечного обучающего набора вы получите RE / FSM, который соответствует только положительным примерам в этом наборе, без возможности обобщения на новые данные. Я никогда не видел подход, который пытается найти бесконечный регулярный язык, который соответствует некоторому корпусу обучения.
Для машинного обучения вам нужно что-то вроде наивного байесовского классификатора, дерева решений, нейронной сети или чего-то более экзотического. Искусственный интеллект Рассела и Норвига : современный подход - это то же самое место, где можно найти обзор методов машинного обучения (и многое, многое другое).
источник