Растущий объем данных и растущая сложность контекста приложения, который генерирует эти данные, создают серьезные проблемы для специалистов по машинному обучению.
С одной стороны, мы хотим разделить сложность модели, используя разделяй и властвуй. Подобно парадигмам языков программирования в 70-х и 80-х годах, мы хотели бы, чтобы небольшие фрагменты кода и модели хорошо работали с другими фрагментами для реализации конвейера приложения.
Теперь, когда такие языки, как Python, имеют доступ к огромной библиотеке модулей машинного обучения, требуется значительный опыт программирования, чтобы понять, как приложение должно быть разбито, чтобы объединить обработку данных, обмен информацией и машинное обучение, и, наконец, как использовать результат. этого процесса обучения в остальной части приложения.
С другой стороны, мы ожидаем, что индуктивные задачи, то есть учебные задачи, будут определяться разнообразным набором пользователей, поэтому спецификация должна обеспечивать четкое разделение данных и закономерностей, которые мы ищем, повестку дня, которая имеет свои истоки. в парадигме декларативного программирования ИИ.
Я считаю, что обе эти точки зрения прекрасно уживаются в области вероятностных языков программирования.
Среди многих решений, описанных в литературе, те, с которыми я больше всего знаком, включают
- ProbLog, который может обеспечить четкое разделение между имеющейся дискретной структурой и вероятностным характером;
- Это расширение для обработки сложных распределений, таких как дискретное распределение Пуассона в бесконечном пространстве и непрерывное распределение, которое мы недавно использовали для автоматизированного планирования;
- Golog, который мы недавно использовали для структурирования нетривиальных статистических динамических моделей для автоматического планирования и высокоуровневого программирования управления.
По мере развития этих языков можно надеяться, что вместо того, чтобы относиться к машинному обучению как к черному ящику, появится систематическая и по своей сути проверяемая парадигма.
На недавней встрече стипендиатов Института Алана Тьюринга в Эдинбурге и некоторых других местах я продвигал точку зрения о том, что необходимо сделать больше, чтобы сделать спецификации моделей машинного обучения прозрачными. Что касается неопытного пользователя, то есть данные и шаблоны, за которыми нужно следовать. Что касается программиста, то существуют данные, общие формализации паттернов, модульная парадигма программирования, объясняющая применение паттернов к данным.