Pull to refresh
15
0
Юра Перов @YuraPerov

User

Send message
Для моей, на данном всё еще начальном этапе достаточно успешной IT-карьеры (я каждый день могу заниматься приложениями машинного обучения и основ искусственного интеллекта, и эта работа оплачивается), одной из важных частей была мечта и работа над ней. Я рассказал об этом, и некоторым людям это интересно. Карьере в IT предшествовала учеба в IT, которая, опять же, получилась во многом благодаря мечте и ее воплощению. Для того, чтобы «доводить дела до завершения» (GTD), нужна всё та же мечта и работа над ней.
Одна из самых важных мыслей, которую я осознал, это то, что создание искусственного интеллекта — это большая ответственность, так же как и быть родителем, например.

Зачем жертвовать, когда можно не жертвовать? :)
Спасибо большое. Это не секреты успеха, просто подумал, что кому-нибудь может быть интересно :). 12 человек занесли в закладки, значит, это было не зря.
Спасибо. Я считаю, что можно совмещать все эти направления. С помощью вероятностного программирования можно создать компьютерную программу (таким образом, текст), которая будет порождать другие компьютерные вероятностные программы (таким образом, модели нашего мира). Модель будет отражать и «обдумывать» часть мира. Для того, чтобы осознать мир, подобной модели обязательно будет необходимо строить в своей памяти копию нашего мира. Статистический вывод и оптимизация для такой модели может быть ускорена с применением нейронных сетей. Примерно месяц назад я представлял эту идею на конференцию по вероятностному программированию в Бостоне, в MIT: arxiv.org/pdf/1810.01190.pdf
Спасибо. Работаю в области порождающих вероятностных моделей, с использованием вероятностного программирования, в том числе с байесовскими сетями. Применяю нейронные сети для ускорения статистического байесовского вывода. Применял эти методы для анализа текстов и видео изображений. Сейчас использую эти направления с коллегами для медицины. Мои работы можно посмотреть в моем резюме: yuraperov.com/docs/YuraPerovCV.pdf
Искусственный интеллект всё еще в процессе :). Сначала, как оказалось, нужно «дом построить», по крайней мере я сам к такой мысли пришел.
Прошу прощения, что это затрудняет чтение, я просто сам люблю «книжки» с картинками :).
На изображениях просто люди, без какого-то умысла :).
Ответственность за привычки, конечно, на самом человеке всегда. Близкие могут немного поддержать, но самое главное — это собственная сила воли и собственное осознание необходимости иметь «хорошие» привычки.

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

Что касается второго, то число не добавляется в количество плюсов, а просто собирается для личной статистики :). Я так и не понял, плюс это или нет (если без любимого партнера и нередко, то, скорее всего «минус», согласно моему текущему субъективному пониманию).
Часто интроверт и иногда серьезный зануда :). Серьезные приступы одиночества были, но последнее время, пока, всё хорошо благодаря духовным практикам.
Каких-то особенно выдающихся примеров использования вероятностных языков программирования пока нет.

Есть публикации, где используют вероятностные языки программирования, но это пока больше научные вещи, например:
  1. www.mrc-bsu.cam.ac.uk/software/bugs/the-bugs-project-bugs-resources-online/
  2. research.microsoft.com/en-us/um/cambridge/projects/infernet/papers.aspx

Приложения в бизнесе это пока план, а не полученный результат :).

***

В вероятностных языках ведь есть механизмы для того, чтобы загружать и обрабатывать много данных, как это обычно в жизни бывает?..

Да, например, есть OBSERVE-CSV: www.robots.ox.ac.uk/~fwood/anglican/language/

Реализовать что-то подобное для других форматов — дело нескольких часов.

Для Venture ввод данных можно осуществлять с помощью Python, подгружая Venture как модуль Python.
Несколько примеров есть здесь:
  1. www.robots.ox.ac.uk/~fwood/anglican/examples/index.html
  2. www.robots.ox.ac.uk/~fwood/anglican/teaching/mlss2014/index.html
  3. probmods.org/


Но пока они по скорости (и часто асимптотически) уступают вручную написанному статистическому выводу.

По поводу вопроса про логистическую регрессию: извините, к сожалению, не знаю хорошего решения.
Прошу прощения за поздний ответ.

В Anglican основан на Scheme (хотя и без set!), и в нем можно задать любую функцию. Например, если бы не было геометрического распределения, его можно было бы очень просто задать функций

(define geom
  (lambda (weight) (if (= (bernoulli weight) 1) 1 (+ 1 (geom weight)))))

То есть практически любое распределение можно задать через его генератор.

Что же касается скорости, то скорость в общем случае будет ниже. Однако, например, Probabilistic C компилирует вероятностные программы, поэтому там скорость будет сравнима с обычной скоростью любого генератора, который можно написать на C/C++.
Прошу прощения за поздний ответ.

Вы правы, особенно с позиции человека, который профессионально занимается машинным обучением. Ничто не заменит собственное понимание, и чем оно больше, тем лучше результат.

Пока платформы вероятностных языков программирования очень медленные и громоздкие, и они не выигрывают ни при каком рассмотрении.

Мы рассчитываем, что для решения части задач в конечном счете будет быстрее использовать их, чем писать вывод самому, по крайней мере на первом этапе тестирования модели или при умеренном количестве наблюдений. Например, для приложений в бизнесе.
Здравствуйте! Спасибо Вам большое за комментарий и вопросы!

>>> Верно ли я понял, что «вероятностное программирование» — это именно такая реализация?

Грубо говоря, да. Вместо MCMC также используется SMC, например, и другие методы вывода. Но в основном обычно речь идет об MCMC.

>>> Если да, то применять MCMC к линейной регрессии — это очень странная идея, разве нет?

Я согласен, что это странная это идея с точки зрения эффективности. Зачем копать землю ложкой, если есть лопата, которой копать быстрее? Но с другой стороны, почему так много людей используют Python, если он значительно медленее, чем C++?

Пример линейной регрессии — это просто чтобы показать то, что можно делать, на самом простом возможном примере.

Как я отмечаю в комментарии ниже, сейчас движки вероятностного программирования в 5-1000 раз медленее, чем вручную реализованные алгоритмы вывода. 1000 — цифра пугающая. Но есть частично обоснованная надежда, что с помощью различных оптимизаций на большинстве моделей получится уменьшить эту цифру до 3-10 раз, а это уже будет хороший результат, мне кажется.

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

Согласен, но ведь всегда вопрос (1) в степени понимания (например, все ли программисты понимают, как именно работает процессор? Мешает ли это им решать задачи?), (2) в том, как система помогает пониманию (например, можно разработать удобные и информативные методы отладки статистического вывода).

>>> Например, на простом фактор-графе без циклов будет ли он делать всё-таки message passing, как было бы логично? И если да, то как он поймёт, надо ли делать expectation propagation и если надо, то чем приближать?..

Venture/Anglican/Church в основном делают сейчас MCMC/SMC. Infer.Net позволяет работать с менее широким классом моделей, но при этом как раз реализует чаще более эффективные алгоритмы, как раз включая expectation propagation и message passing.

>>> Но если это всё, то не надо, наверное, таких громких слов про «новое программирование». :)

Название «вероятностное программирование» — это спорное название. Можно назвать направление «вероятностным моделированием с автоматически универсальным выводом», например. «Вероятностное программирование» — это не новое «программирование». Это просто игра слов, которую можно логически обосновать :).

>>> А что было бы супер-полезно — это хорошая стандартная библиотека базовых алгоритмов машобуча, как lapack/blas для линейной алгебры. То есть всё уже написано, конечно, но есть пока что ситуация «14 competing standards» в каком-то смысле, особенно если на разных языках посмотреть; а базовая библиотека должна быть единой и над ней уже должны быть обёртки для языков, как над lapack'ом.

Подскажите, пожалуйста, что Вы имеет в виду под уже написанными?
Здравствуйте! Благодарю Вас за интересные вопросы.

1) Я грубо предполагаю, что в Venture/Anglican это будет в 50-500 раз медленнее, чем в C.

Probabilistic-C, скорее всего, по выводу может быть в 3-10 раз медленее, чем C.

Спасибо за эту статью, записал себе в план протестировать, чтобы были точные результаты. В целом можно отметить, что сейчас движки вероятностных языков программирования очень значительно медленнее, чем вручную написанный вывод на C / Python. Мы надеемся, что с помощью различных оптимизаций (в том числе оптимизаций подобных оптимизациям при компиляции) мы нам удастся уменьшить различия в скорости в разы.

2) Пока заданных распределений очень мало. Но так как движки этих вероятностных языков программирования реализованы на обычных языках программирования (Clojure ("=>" Java), C++, Python), то добавить новое распределение — дело нескольких десятков минут или по крайней мере нескольких часов.

3) Это будет просто код на C++ / Python / Clojure. Вот, например, реализация нормального распределения; всего 17 строчек. Нужно указать функцию генерации элемента выборки и функцию плотности распределения.

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

>>> «Смешивание фактов и предположений в одну конструкцию...»

Я не знаю способов отличить факты от предположений. Для меня философски любой факт о мире — это предположение. Любая теория для меня — это предположение и предположение неточное.

>>> Вот мы к нему и подошли. Смотрите, NP-полнота требует вычисления всех предикатов, которые растут экспоненциально. К примеру, если делать медицинскую диагностику на такой логике (1000 болезней, 3000 симптомов в среднем по 10 в каждой), на вычисление уйдут ресурсы, сопоставимые с вечностью. А это не самая сложная задача…

А нужно ли вычислять все предикаты? Можно ли вычислить только часть предикатов и таким образом получить удовлетворительный, пусть и не самый лучший ответ? Ведь любой самый лучший врач, например, никогда не сможет постоянно давать самые лучшие ответы и будет иногда ошибаться, к сожалению. Я не совсем понимаю, в рамках какой модели мы говорим о 3000 симптомах и какой алгоритм для диагностики болезней предлагается использовать. Но что я пытаюсь спросить, а можем ли мы всегда рассчитывать на самый лучший ответ? Что вообще такое самый лучший ответ? Я не знаю ответа на этот вопрос…

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

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

Решит ли вероятностное программирование проблему «сильного» искусственного интеллекта? Скорее всего нет, по крайней мере само по себе не решит.

Я прошу прощения, что я не отвечаю на Ваш вопрос, и честно признаюсь, что я не знаю на него ответа. На сегодня я удовлетворен приблизительным решением проблем машинного обучения и необходимостью указывать априорные вероятности. Как обойтись без этого и/или решать проблемы точно? Я не знаю :).
Я планирую, что это будет отдельная, новая, немаленькая статья. Я аккуратно добавлю ссылку на нее в нужное место в этой статье, чтобы заинтересованные читатели могли сразу же найти ее.
1

Information

Rating
Does not participate
Location
Oxford, England - South East, Великобритания
Registered
Activity