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

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

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

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

Я считаю, что обе эти точки зрения прекрасно уживаются в области вероятностных языков программирования.

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

По мере развития этих языков можно надеяться, что вместо того, чтобы относиться к машинному обучению как к черному ящику, появится систематическая и по своей сути проверяемая парадигма.

На недавней встрече стипендиатов Института Алана Тьюринга в Эдинбурге и некоторых других местах я продвигал точку зрения о том, что необходимо сделать больше, чтобы сделать спецификации моделей машинного обучения прозрачными. Что касается неопытного пользователя, то есть данные и шаблоны, за которыми нужно следовать. Что касается программиста, то существуют данные, общие формализации паттернов, модульная парадигма программирования, объясняющая применение паттернов к данным.