В теории вычислительного обучения индукция регулярных языков относится к задаче изучения формального описания (например, грамматики) регулярного языка из заданного набора строк-примеров. Хотя Э. Марк Голд показал, что не каждый регулярный язык можно изучить таким образом (см. идентификацию языка в пределе ), подходы были исследованы для различных подклассов. Они кратко описаны в этой статье. Для изучения более общих грамматик см. Индукция грамматики .
Регулярный язык определяется как (конечный или бесконечный) набор строк , который может быть описан одним из математических формализмов, называемых « конечный автомат », « регулярная грамматика » или « регулярное выражение », все из которых имеют одинаковую выразительную силу. Поскольку последний формализм приводит к самым коротким обозначениям, он будет представлен и использован здесь. При наличии набора Σ символов (он же алфавит) регулярное выражение может быть любым из
Например, при использовании Σ = {0,1} регулярное выражение (0+1+ε)⋅(0+1) обозначает множество всех двоичных чисел с одной или двумя цифрами (допускается начальный ноль), тогда как 1⋅(0+1) * ⋅0 обозначает (бесконечное) множество всех четных двоичных чисел (без начальных нулей).
При наличии набора строк (также называемых «положительными примерами») задача индукции регулярного языка состоит в том, чтобы придумать регулярное выражение, которое обозначает набор, содержащий все из них. Например, при наличии {1, 10, 100} «естественным» описанием может быть регулярное выражение 1⋅0 * , соответствующее неформальной характеристике « 1, за которой следует произвольное количество (возможно, даже ни одного) нулей ». Однако (0+1) * и 1+(1⋅0)+(1⋅0⋅0) — это еще одно регулярное выражение, обозначающее наибольший (предполагая, что Σ = {0,1}) и наименьший набор, содержащий заданные строки, и называемые тривиальным переобобщением и недообобщением соответственно. Некоторые подходы работают в расширенной обстановке, где также задан набор строк «отрицательных примеров»; затем необходимо найти регулярное выражение, которое генерирует все положительные, но ни одного отрицательного примера.
Дюпон и др. показали, что множество всех структурно полных конечных автоматов [примечание 1], генерирующих заданный входной набор строк-примеров, образует решетку , в которой тривиальный недообобщенный и тривиальный сверхобобщенный автомат являются нижним и верхним элементами соответственно. Каждый член этой решетки может быть получен путем факторизации недообобщенного автомата с помощью соответствующего отношения эквивалентности .
Для приведенного выше примера набора строк {1, 10, 100}, на рисунке внизу показан недообобщенный автомат A a,b,c,d серым цветом , состоящий из состояний a , b , c , и d . На наборе состояний {a,b,c,d} существует в общей сложности 15 отношений эквивалентности, образующих решетку. Отображение [примечание 2] каждой эквивалентности E в соответствующий язык фактор-автомата L ( A a,b,c,d / E ) дает частично упорядоченный набор, показанный на рисунке. Язык каждого узла обозначается регулярным выражением. Язык может быть распознан фактор-автоматами относительно различных отношений эквивалентности, все из которых показаны под узлом. Стрелка между двумя узлами указывает, что язык нижнего узла является собственным подмножеством языка верхнего узла.
Если даны как положительные, так и отрицательные строки примеров, Дюпон и др. строят решетку из положительных примеров, а затем исследуют границу разделения между автоматами, которые генерируют некоторые отрицательные примеры, и теми, которые этого не делают. Наиболее интересны автоматы, расположенные непосредственно под границей. [1] На рисунке показаны границы разделения для отрицательных строк примеров 11 ( зеленый ), 1001 ( синий) , 101 ( голубой ) и 0 ( красный ).
Косте и Николас представляют собственный метод поиска в решетке, который они связывают с парадигмой пространства версий Митчелла . Чтобы найти границу разделения, они используют алгоритм раскраски графа на отношении неравенства состояний, вызванном отрицательными примерами. [2] Позже они исследуют несколько отношений упорядочения на множестве всех возможных слияний состояний. [3]
Кудо и Шимбо используют представление с помощью автоматных факторизаций, чтобы дать уникальную основу для следующих подходов (описанных ниже):
Показано, что каждый из этих подходов соответствует определенному виду отношений эквивалентности, используемых для факторизации. [5]
Angluin рассматривает так называемые " k -обратимые" регулярные автоматы, то есть детерминированные автоматы, в которых каждое состояние может быть достигнуто из не более чем одного состояния, следуя цепочке переходов длины k . Формально, если Σ, Q и δ обозначают входной алфавит, множество состояний и функцию перехода автомата A соответственно, то A называется k -обратимым, если: ∀ a 0 , ..., a k ∈ Σ ∀ s 1 , s 2 ∈ Q : δ * ( s 1 , a 0 ... a k ) = δ * ( s 2 , a 0 ... a k ) ⇒ s 1 = s 2 , где δ * означает гомоморфное расширение δ на произвольные слова. Angluin дает кубический алгоритм для обучения наименьшего k -обратимого языка из заданного набора входных слов; для k = 0 алгоритм имеет почти линейную сложность. [6] [7] Требуемая уникальность состояния после k + 1 заданных символов заставляет унифицировать состояния автомата, что приводит к правильному обобщению, отличному от тривиального недообобщенного автомата. Этот алгоритм использовался для изучения простых частей английского синтаксиса; [8] позже была предоставлена инкрементная версия. [9] Другой подход, основанный на k -обратимых автоматах, — это метод хвостовой кластеризации . [10]
Из заданного набора входных строк Вернадат и Ришетин строят так называемый автомат-последователь , состоящий из одного состояния для каждого отдельного символа и перехода между состояниями двух соседних символов. [11] Например, одноэлементный набор входных данных { aabbaabb } приводит к автомату, соответствующему регулярному выражению ( a + ⋅ b + ) * .
Расширением этого подхода является метод предшественника-последователя , который обобщает каждое повторение символа немедленно до Kleene + и затем включает для каждого символа множество его возможных предшественников в его состояние. Автоматы-последователи могут выучить точно класс локальных языков . Поскольку каждый регулярный язык является гомоморфным образом локального языка, грамматики из первого класса могут быть изучены путем подъема , если предоставлен подходящий (в зависимости от предполагаемого применения) гомоморфизм . В частности, такой гомоморфизм существует для класса языков, изучаемых методом предшественника-последователя. [12] Изучаемость локальных языков может быть сведена к изучению k -обратимых языков. [13] [14]
Хомский и Миллер (1957) [15] использовали лемму накачки : они угадывают часть v входной строки uvw и пытаются построить соответствующий цикл в автомате, который должен быть обучен; используя запросы на членство , они спрашивают, для соответствующего k , какая из строк uw , uvvw , uvvvw , ..., uv k w также принадлежит языку, который должен быть обучен, тем самым уточняя структуру своего автомата. В 1959 году Соломонофф обобщил этот подход на контекстно-свободные языки , которые также подчиняются лемме накачки . [16]
Câmpeanu et al. изучают конечный автомат как компактное представление большого конечного языка. Учитывая такой язык F , они ищут так называемый покрывающий автомат A такой, что его язык L ( A ) покрывает F в следующем смысле: L ( A ) ∩ Σ ≤ l = F , где l — длина самой длинной строки в F , а Σ ≤ l обозначает множество всех строк не длиннее l . Если такой покрывающий автомат существует, F однозначно определяется A и l . Например, F = { ad , read , reread } имеет l = 6 и покрывающий автомат, соответствующий регулярному выражению ( r ⋅ e ) * ⋅ a ⋅ d .
Для двух строк x и y Кампеану и др. определяют x ~ y , если xz ∈ F ⇔ yz ∈ F для всех строк z такой длины, что и xz, и yz не длиннее l . [17] На основе этого соотношения, отсутствие транзитивности которого [примечание 3] вызывает значительные технические проблемы, они дают алгоритм O ( n 4 ) [примечание 4] для построения из F покрывающего автомата A с минимальным количеством состояний. Более того, для объединения, пересечения и разности двух конечных языков они предоставляют соответствующие операции на своих покрывающих автоматах. [18] [19] Паун и др. улучшают временную сложность до O ( n 2 ). [20]
Для множества строк S и строки u производная Бжозовского u −1 S определяется как множество всех остаточных строк, которые можно получить из строки в S путем отрезания ее префикса u (если это возможно), формально: u −1 S = { v ∈ Σ * : uv ∈ S } , см. рисунок. [21] Денис и др. определяют остаточный автомат как недетерминированный конечный автомат A , где каждое состояние q соответствует производной Бжозовского его принятого языка L ( A ), формально: ∀ q ∈ Q ∃ u ∈Σ * : L ( A , q ) = u −1 L ( A ), где L ( A , q ) обозначает язык, принятый из q в качестве начального состояния.
Они показывают, что каждый регулярный язык генерируется уникально определенным минимальным остаточным автоматом. Его состояния являются ∪ -неразложимыми производными Бжозовского, и он может быть экспоненциально меньше минимального детерминированного автомата. Более того, они показывают, что остаточные автоматы для регулярных языков не могут быть изучены за полиномиальное время, даже при условии оптимальных входных образцов. Они приводят алгоритм обучения для остаточных автоматов и доказывают, что он обучает автомат по его характерному образцу положительных и отрицательных входных строк. [22] [23]
Регулярные языки не могут быть изучены за полиномиальное время, используя только запросы членства [24] или используя только запросы эквивалентности. [25] Однако, Angluin показал, что регулярные языки могут быть изучены за полиномиальное время, используя запросы членства и запросы эквивалентности, и предоставил алгоритм обучения, названный L*, который делает именно это. [26] Алгоритм L* был позже обобщен для вывода NFA ( недетерминированных конечных автоматов ), а не DFA ( детерминированных конечных автоматов ), с помощью алгоритма, названного NL*. [27] Этот результат был дополнительно обобщен, и был разработан алгоритм, который выводит AFA ( альтернирующие конечные автоматы ), названный AL*. [28] Отмечено, что NFA могут быть экспоненциально более лаконичными, чем DFA, и что AFA могут быть экспоненциально более лаконичными, чем NFA, и вдвойне экспоненциально более лаконичными, чем DFA. [29] Алгоритм L* и его обобщения имеют важное значение в области теории автоматов и формального изучения языков, поскольку они демонстрируют возможность эффективного обучения более выразительных моделей автоматов, таких как NFA и AFA, которые могут представлять языки более лаконично и фиксировать более сложные закономерности по сравнению с традиционными DFA.
Брилл определяет сокращенное регулярное выражение как любое из
Учитывая входной набор строк, он строит шаг за шагом дерево , в котором каждая ветвь помечена сокращенным регулярным выражением, принимающим префикс некоторых входных строк, и каждый узел помечен набором длин принятых префиксов. Он нацелен на изучение правил исправления ошибок правописания в английском языке [примечание 5] , а не на теоретические соображения об изучаемости языковых классов. Следовательно, он использует эвристику для сокращения наращивания дерева, что приводит к значительному улучшению времени выполнения. [30]