Верхний ряд — 2D-фотографии человеческих лиц; средний ряд — результат 3D-моделирования в программе MIT; нижний ряд — результат 3D-моделирования в одной из предыдущих программ

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

Данная область бурно развивается в последнее время, а сфера применения машинного обучения становится шире. Неудивительно, что в 2013 году DARPA запустило четырёхлетний исследовательских проект для поиска более эффективных способов разработки приложений, в частности — для разработки языков так называемого вероятностного программирования.

Уже получены первые многообещающие результаты. Например, группа исследователей из Массачусетского технологического института на конференции Computer Vision and Pattern Recognition в июне собираются подробно рассказать о применении вероятностного программирования для компьютерного зрения. По заявлению авторов, короткая программа на новом ЯП (около 30 строк кода) выдаёт вполне сравнимый результат с обычными системами из тысяч строк кода.

Разработчики говорят, что это первый пример использования вероятностного программирования в компьютерном зрении.

Например, одна из задач состояла в генерации 3D-моделей из подборки 2D-фотографий лица. Программа MIT описывает всего лишь базовое расположение объектов: два симметричных объекта (глаза), два центральных объекта между ними (нос и рот), и это практически всё. Затем в неё загружают подборку 2D-фотографий и соответствующих 3D-моделей для обучения, а остальное она научится делать сама.

Для этого эксперимента в MIT разработали язык программирования Picture, расширение языка Julia, тоже созданного в MIT. Он идеально подходит для решения таких «вероятностных» задач, когда следует предсказать оптимальный результат с неизвестными переменными.

Код программы на Picture для генерации 3D-лиц


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

Научная работа “Picture: A Probabilistic Programming Language for Scene Perception” пока не опубликована в научных журналах, но один из авторов выложил её в онлайне.

Комментарии (1)


  1. xvilka
    14.04.2015 15:36

    Мне больше нравится язык общего назначения в терминах вероятностного программирования — webppl. Базируется на javascript (nodejs) и легко интегрируется с сууществующим js-кодом. Активно развивается, причем на GitHub