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

Языки шаблонов были первоначально продвинуты Кристофером Александром для описания архитектуры предприятий и городов. Эти идеи, которые позже были приняты практиками объектно-ориентированного программирования (ООП) для описания дизайна программ ООП, были названы шаблонами проектирования. Они были расширены на другие области, такие как SOA (http://www.manageability.org/blog/stuff/pattern-language-interoperability/view) и High Scalability (http://www.manageability.org/blog / stuff / patterns-for-infinite-scaleability / view ).

В области машинного обучения (ML) появляется новая практика под названием «Deep Learning». В ML есть много новых терминов, с которыми можно встретиться, таких как искусственные нейронные сети, случайные леса, машины опорных векторов и неотрицательная матричная факторизация. Однако они обычно относятся к определенному типу алгоритма. Однако глубокое обучение (DL) на самом деле не является одним из видов алгоритмов, это скорее целый класс алгоритмов, которые, как правило, демонстрируют похожие «шаблоны». Системы DL - это искусственные нейронные сети (ИНС), состоящие из нескольких слоев (иногда называемых многоуровневыми персептронами). Идея не совсем нова, поскольку она была впервые предложена еще в 1960-х годах. Однако интерес к этой области резко возрос благодаря развитию аппаратных технологий (например, GPU). С 2011 года системы DL демонстрируют впечатляющие результаты в этой области.

Путаница с DL возникает, когда понимаешь, что на самом деле существует множество реализаций, а не только один вид алгоритма. Существуют обычные сети прямого распространения (также известные как полностью подключенные сети), сверточные сети (ConvNet), рекуррентные нейронные сети (RNN) и менее используемые машины Больцмана с ограничениями (RBM). Все они имеют общую черту в том, что эти сети построены с использованием иерархии слоев. Одним из распространенных паттернов, например, является использование дифференцируемых уровней, это ограничение на построение систем DL ведет к постепенному развитию сети во что-то, что обучается классификации. Есть много таких паттернов, которые были обнаружены недавно, и для практиков было бы очень полезно иметь в своем распоряжении компиляцию этих паттернов. В следующие несколько недель мы поделимся более подробной информацией об этом языке шаблонов.

Языки шаблонов - идеальное средство для описания и понимания глубокого обучения. Хочется верить, что глубокое обучение имеет прочную фундаментальную основу, основанную на продвинутой математике. Большинство академических исследовательских работ вызывают в воображении сложные математические выражения, такие как интегралы по путям, тензоры, гильбертовы пространства, теория меры и т. Д., Но не позволяйте математике отвлекаться от реальности, которую мы понимаем минимально. Математика, как вы видите, имеет присущие ей ограничения. Ученые-физики знали это на протяжении веков. Мы формулируем теории таким образом, чтобы структуры были математически удобными. Например, гауссово распределение распространено не потому, что это некая магическая конструкция, подаренная нам реальностью. Это распространено, потому что это удобно с математической точки зрения.

Языки шаблонов используются во многих нечетких областях. Исходный язык шаблонов вращался вокруг обсуждения архитектуры (то есть зданий и городов). Существуют языки шаблонов, которые ориентированы на пользовательские интерфейсы, на удобство использования, на дизайн взаимодействия и на программный процесс. Все это не имеет четкой математической основы, но мы извлекаем реальную ценность из этих языков шаблонов. Фактически, спецификация языка шаблонов не так уж далека от создания новой алгебры в математике. Алгебры строго согласованы, но они чисто абстрактны и могут не иметь никакой связи с реальностью. Однако языки шаблонов связаны с реальностью, однако правила согласованности более мягкие. В наших попытках понять сложный мир машинного обучения (или обучения в целом) мы не всегда можем прыгнуть в математику. Реальность может быть такой, что наша нынешняя математика совершенно неспособна описать происходящее.

Посетите www.deeplearningpatterns.com для получения текущих обновлений.

Первоначально опубликовано на blog.alluviate.com.