Приложения для церковного языка программирования
Кто-нибудь работал с языком программирования Church? Кто-нибудь может порекомендовать практическое применение? Я только что открыл это, и, хотя это звучит так, как будто оно решает некоторые давние проблемы в области ИИ и машинного обучения, я скептически отношусь к этому. Я никогда не слышал об этом, и с удивлением обнаружил, что он действительно существует уже несколько лет, будучи объявленным в газете " Церковь: язык для генеративных моделей".
4 ответа
Я не уверен, что сказать по поводу практического применения. Является ли моделирование когнитивных способностей с помощью генеративных моделей "практическим приложением" в вашем уме?
Ключевое значение Церкви (по крайней мере, прямо сейчас) заключается в том, что она позволяет тем из нас, кто работает с вероятностными решениями проблем ИИ, более простым способом моделирования. По сути, это подмножество Lisp.
Я не согласен с Крисом С, что это вообще игрушечный язык. Хотя некоторые из этих проблем логического вывода могут быть воспроизведены на других языках (я построил несколько в Matlab), они, как правило, не очень многократно используются, и вы действительно должны любить работать в 4 и 5 для глубоких циклов (я ненавижу это).
Вместо решения этой проблемы Черч использует рекурсивные преимущества lamda calaculus, а также допускает так называемое запоминание, которое действительно полезно для порождающих моделей, поскольку ваша порождающая модель часто не одно и то же одно испытание за пробой - хотя для тестирования вы действительно нужно это.
Я бы сказал, что если то, что вы делаете, имеет какое-либо отношение к байесовским сетям, иерархическим байесовским моделям, вероятностным решениям POMDP или динамическим байесовским сетям, то я думаю, что Церковь - это большая помощь. Что бы это ни стоило, я работал с Ноем и Джошем (два из авторов Черча), и ни у кого сейчас нет лучшего подхода к вероятностному выводу (ИМХО).
Черч является частью семейства вероятностных языков программирования, что позволяет отделить оценку модели от ее определения. Это делает вероятностное моделирование и умозаключения намного более доступными для людей, которые хотят применить машинное обучение, но сами не являются хардкорными исследователями машинного обучения.
Долгое время вероятностное программирование означало, что вам придется придумывать модель для ваших данных и самостоятельно оценивать модель: у вас есть некоторые наблюдаемые значения и вы хотите изучить параметры. Структура модели тесно связана с тем, как вы оцениваете параметры, и вам необходимо иметь достаточно глубокие знания в области машинного обучения, чтобы правильно выполнять вычисления. Недавние вероятностные языки программирования - это попытка решить эту проблему и сделать вещи более доступными для исследователей данных или людей, выполняющих работу, в которой применяется машинное обучение.
В качестве аналогии рассмотрим следующее:
Вы программист, и вы хотите запустить некоторый код на компьютере. Еще в 1970-х вы должны были писать ассемблер на перфокартах и передавать их в мэйнфрейм (для которого вам нужно было бронировать время), чтобы запустить вашу программу. Сейчас 2014 год, и существуют высокоуровневые, простые для изучения языки, на которых можно писать код, даже не зная, как работает компьютерная архитектура. По-прежнему полезно понимать, как компьютеры работают для написания на этих языках, но вам это не нужно, и гораздо больше людей пишут код, чем если бы вам приходилось программировать с помощью перфокарт.
Вероятностные языки программирования делают то же самое для машинного обучения со статистическими моделями. Кроме того, Церковь не единственный выбор для этого. Если вы не приверженец функционального программирования, вы также можете проверить следующие рамки для байесовского вывода в графических моделях:
- Infer.NET, написанный на C# исследовательской лабораторией Microsoft в Кембридже, Великобритания
- stan, написанный на C++ Статистическим отделом Колумбии
Вы знаете, что лучше описать церковь, чем то, что я сказал? Эта статья MIT: http://web.mit.edu/newsoffice/2010/ai-unification.html
Это немного более гиперболично, но тогда я не застрахован от оптимизма, представленного в этой статье.
Скорее всего, статья должна была быть опубликована в Первоапрельский день. Вот еще одна статья, датированная поздним маршем прошлого года. http://dspace.mit.edu/handle/1721.1/44963