Метод формализованных моделей как альтернатива нейронным сетям
На этот вброс меня подталкивает доминирование статистических методов, особенно нейронных сетей — да, я именно так их буду классифицировать. С одной стороны я ничего не имею против них, но в то же время чувствуется явный перекос, иногда даже нейронные сети едва ли не отождествляют с неопределённым понятием искусственного интеллекта, хотя так ли хуже SVM, HMM и т.д. В вопросе обработки естественных языков я всегда был сторонником лингвистических методов в противовес статистическим, но чувствуется их существенный недостаток — трудоёмкость моделирования вручную по сравнению с машинным обучением. А может для лингвистических методов машинное обучение тоже применимо?
Я не берусь дать ответ на этот вопрос в этом описании, но предлагаю некоторые размышления. Замечу, что основная идея возникла у меня давно и оформлена в виде патента №2392660, половина срока действия которого уже почти прошла. Но что, если чуть расширить изложенное в этом патенте решение?
Что мне придумалось прежде
Патент описывает семантическую модель естественного языка, но некоторая модификация позволяет создать семантическую модель изображений. Так что если выделить общую часть, то потенциальная область применения расширяется.
Начну с ранее придумавшейся семантической модели. В данном случае именно обобщённой семантической, но не онтологической. Но в то же время многоуровневой, примерно как слова, предложения, абзацы, главы и т. п., только с другими единицами для естественного языка и другими единицами для других случаев, но об этом позже. Итак, один уровень включает (цитата из ранее опубликованных статей):
- множество связующих элементов для этого уровня (всегда конечное);
- множество типов атомарных элементов (всегда конечное);
- множество одноместных операторов (всегда конечное);
- множество ограничений сочетаемости связующих элементов, атомарных элементов и одноместных операторов (всегда конечное);
- множества каждого из типов атомарных элементов (конечные или бесконечные);
- множества классификаторов каждого из множеств связующих элементов (всегда конечные) и каждого из типов атомарных элементов (конечные или бесконечные).
Теперь чуть подробнее о том, что это такое, на примере естественных языков. Поскольку одну и ту же фразу можно выразить разными словами, деление на слова не имеет смысла в семантической модели. Аналогичная ситуация и со сложными предложениями, но простые выделять имеет смысл; клаузы — их устоявшееся название. Рассмотрим семантическую модель внутри клауз.
Известны также понятия лексем и семантических классов. Часто лексемы соответствуют словам, но в общем случае соотношение много ко многим. Сами по себе лексемы сохраняют многозначность, но семантический класс фиксирует определённое значение. Обзор методов разметки семантических классов сейчас делать не буду, в случае надобности оставлю на потом — на эту тему уже написано немало. Для самих лексем с семантическими классами есть разные наименования, здесь пусть они зовутся денотатами.
Есть надобность разделить их (денотаты) на два вида: объекты и предикаты. Первые сами по себе имеют определённое значение, вторые требуют дополнения другими денотатами, здесь будем их (дополняющие денотаты) звать актантами.
Денотаты всё равно не решают проблему возможности выражения смысла разными словами, поэтому разделим их на базовые и составные, подробнее о критериях в предисловии к "Новому объяснительному словарю синонимов" и других работах того же автора. Именно деление составных денотатов на базовые призвано решить эту проблему. Собственно, на этом уровне, т. е. внутри простых предложений, множество базовых предикатов и будет множеством связующих элементов.
Денотаты-объекты в чистом тексте, т. е. без рисунков, схем, формул, листингов и т. п., будут двух видов — дискретные и непрерывные, вторые — преимущественно непосредственно числа. Множества базовых объектов-денотатов, разумеется, будут бесконечными.
Несколько забегая вперёд, следует отметить, что составные денотаты включают дифференциальные и характеристические составляющие — используем здесь такое их название, в данном случае это единственные одноместные операторы. Они позволяют отличать логическое (полное) отрицание от лингвистического, где отрицание распространяется только на дифференциальные составляющие.
Классификаторы в данном случае будут относиться только к денотатам-объектам, и ими будут упомянутые ранее семантические классы. Предполагается использование параллельных иерархий и наличие верхнего универсального класса. Сами иерархии могут начинаться с любых семантических классов, но к универсальному семантическому классу они относятся полностью. Ограничение сочетаемости будет относиться только к составным денотатам-предикатам (см. далее) и для конкретных актантов включать множество сочетаний семантических классов и иерархий. Т. е. для конкретного актанта ограничение включает потенциально бесконечное множество семантических классов, выражаемое конечным множеством сочетаний семантических классов и иерархий. В этом случае актантом может быть только объект, принадлежащий к одному из подходящих семантических классов. Актанты базовых предикатов всегда универсального семантического класса.
Множества составных элементов (тоже цитата из ранее опубликованных статей):
- множество закрытых (несвязующих) составных элементов (всегда бесконечное);
- множество связующих составных элементов (всегда бесконечное);
- множество ограничений на использование атомарных элементов в связующих составных элементах по классификаторам (конечное или бесконечное);
- множество правил замены элементов, входящих в составные элементы (всегда конечное).
Связующими элементами оказываются тоже денотаты-предикаты, но в данном случае составные. Несвящующие элементы могут быть как составными объектами, так и распространяться на всю клаузу или фрагменты, соответствующие словосочетаниям, главное требование — указание всех актантов.
Каждый составной предикат, объединяя базовые предикаты и объекты, может накладывать ограничения на подмножества семантических классов своих актантов в сторону детализации — это множество ограничений, разумеется, бесконечное.
Составной предикат целесообразно представлять в конъюнктивной нормальной форме, где дизъюнктивные члены имеют одноместный оператор, являются ли они дифференциальными и характеристическими. В соответствии с ними лингвистическое отрицание возможно привести к логическому. Кроме этого предполагается возможность общего логического упрощения, например, исключение тождественных объектов, объединённых логическим оператором. Вторая группа правил замены будет относиться к базовым предикатам, такие, как возможность исключения противоположных действий, например, вербализация существительного и субстантивизация глагола в значении действия. Третья группа правил — одновременно к базовым предикатам и объектам, подразумевая возможность исключения присоединяющих предикатов для актантов составного предиката, когда объект соответствует заданному множеству семантических классов.
Несколько слов о других множествах. Для уровня клауз затрудняюсь провести детализацию этих множеств, очевиден лишь тот факт, что именно они будут составлять естественно-языковый текст. При этом составные денотаты-объекты описанного выше уровня, выражающие клаузы полностью, будут базовыми объектами этого уровня.
Для изображений тем более возможны разные подходы, атомарными элементами могут быть числовые множества для характеристик фильтров или текселы в случае текстур, в других случаях тоже есть варианты. Некоторые возможные решения для остальных семантических моделей последуют в продолжении.
Что теперь
Далее имеет смысл вернуться к первоначальному вопросу о применении машинного обучения. Ясно, что составление словаря объектов, семантических классов и т. д. вручную чрезвычайно трудоёмко. Но современные методы машинного обучения в случае естественных языков умеют решать задачу не только сопоставления слов, но и статистического выявления денотатов, которые в случае нейронной сети остаются "чёрным ящиком". В то же время другие статистические методы, например, кластеризация, позволяют получить чёткие результаты.
Бесконечные множества, ясное дело, являются таковыми лишь в теории, на практике это означает, что машинное обучение призвано постоянно обновлять их состав. Поскольку речь идёт о семантической модели, а не об онтологической, поддержание актуальности тоже является одной из задач.
Теперь некоторые размышления о возможности реализации. Возьмём, к примеру, семантические векторы, предлагаемые "Яндексом", и вспомним о понятии корпуса текстов. Допустим, есть некий корпус запросов в контексте алгоритмов "Яндекса" и набор неких семантических матриц документов, хотя мне самому не понятно полностью, о какой именно во всех деталях структуре данных идёт речь. Но, полагаю, есть данные и о словах, входящих в документы и запросы, значит, можно классическими средствами поиска сопоставить наличие слов в документах и запросах, а на основе сематических векторов сопоставить релевантность. Что именно использовать — слова, N-граммы или другие модели для кластеризации — вопрос скорее открытый, но тем или иным способом возможно выделение семантических классов на основе кластерного анализа.
Ещё одну статистическую модель нужно получить в виде направленного несимметричного графа связей между словами, т. е. насколько одно слово может заменять другое в релевантных запросах. Базовые денотаты, очевидно, будут иметь ярко выраженный несимметричный вес дуг. Конкретный алгоритм обхода полученного графа для выявления базовых денотатов — вопрос скорее открытый, особенно если учесть большую вычислительную сложность.
Упомянутые варианты используют предложенные ранее нейронные сети в качестве промежуточного звена, но если учесть, что многие алгоритмы кластеризации сами по себе итеративные, то определённо возможно упрощение. Пока что оставлю некоторые вопросы открытыми.
В чём смысл
Несколько слов о том, зачем это всё может понадобиться. По большому счёту это типичные преимущества явной модели перед "чёрным ящиком" нейронной сети. Во-первых, это возможность оптимизации. В случае, если поиск по смыслу основан на нейронной сети, то денотаты оказываются без чётких границ, что серьёзно затрудняет возможность оптимизации эквивалента любого шага, будь то разметка семантических классов или сопоставление базовых денотатов. Во-вторых, когда происходит обновление имеющихся понятий, в случае нейронной сети набор изменений остаётся тем более неопределённым с точки зрения возможности интерпретации, что затрудняет отладку в случае переобучения. В третьих, если задачу поиска заменить, к примеру, на задачу реферирования, тоже остаётся сложность выделения той части нейронной сети, которая занимается непосредственно решением задачи поиска после первоначального семантического анализа. Если ошибаюсь — поправьте.