Size: a a a

Язык программирования Julia / Julia programming language

2020 January 09

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Интересная штука, товарищи китайцы сначала делают промежуточное представление между высокоуровневым языком описания квантовых схем и низкоуровневыми операциями. Таким образом, одно и то же промежуточное представление может давать разный код для GPU, CPU и в будущем для квантовых компьютеров )

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

m

motique in Язык программирования Julia / Julia programming language
Есть какая-нибудь хорошая статья с введеним в differential programming?
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Хороший вопрос, я бы тоже почитал, а то больше в применении к нейросетям, а не само по себе )
источник

AM

Aleksey Maksimov in Язык программирования Julia / Julia programming language
motique
Есть какая-нибудь хорошая статья с введеним в differential programming?
Если введение, то, наверное, стоит просто с автоматическим дифференцированием разобраться. Или это освоено?
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Как я понимаю эту идею (поправьте, если это все неправда). Программа -- это некоторый граф вычислений. Что-то на входе, что-то на выходе. Алгоритм можно рассматривать как одну большую функцию, которая перерабатывает входы в выходы.

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

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Поэтому я определяю loss function и запускаю оптимизацию этой loss function
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
По сути происходит автоматический поиск лучшего алгоритма среди некоторого подмножества возможных путем оптимизации. Код пишет сам себя, сам подбирает лучшие веса и тд
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Ну а это автоматическое дифференцирование позволяет с помощью дуальных чисел довольно нетрудно получать производные, нужные для градиентов. А в Julia это все так популярно, потому что внезапно multiple dispatch позволил в несколько строк кода модифицировать исходные "обычные" функции в функции, которые хорошо справляются с дуальными числами
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Чем больше возишься с этим dispatch и типами, тем больше кажется, что это какая-то магия. Дар, который мы не понимаем и не заслуживаем, как писал один товарищ про математику )
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Возможно я не прав, но описанное - это Forward Diff?
Есть ещё Reverse Diff, в котором должен chain rule применяться обычный.
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Кажется да, я в эти дебри не лезу обычно, там ещё какие-то вещи возникают часто в связке типа cassette.jl
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Точнее так - с дуальными числами мы берём обычные функции, прогоняем через них дуальные числа и получаем градиент.
В Reverse Diff как раз делаем то, что ты выше написал - модифицируем исходную функцию.
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
С Cassette какая-то странная история, я так понял, что создатель там золотые горы обещал, но так в результате ничего и не сделал. По крайней мере где-то я встречал слова vaporware
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
И в результате создатель Flux сейчас пишет Zygote, который должен делать то, что нужно.
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
Вообще конечно на мой взгляд хайп какой-то огромный вокруг нейросетей и дифференцируемого мира )) особенно устрашающе в этом контексте выглядят всякие примеры, когда изменяем пару пикселей, и кот распознаётся как собака. Как бы не оказалось так в итоге, что программы пишут сами себя, но мы не понимаем, почему они работают и в каких случаях могут внезапно дать сбой
источник

KT

Kirill Tsaregorodtsev in Язык программирования Julia / Julia programming language
А корни растут ещё наверное из философских споров индуктивизм против классической логики и тд
источник

АО

Андрей Оськин in Язык программирования Julia / Julia programming language
Вот тут немного обсуждается автоматическое дифференцирование и в первом комментарии пан Ракаукас даёт несколько ссылок, которые могут быть потенциально интересны.

https://discourse.julialang.org/t/trying-to-understand-the-gradient-function-from-the-flux-jl-zygote-jl-package/31328
источник

✵M

✵ Muhammed ✵ in Язык программирования Julia / Julia programming language
Добрый вечер. Возможно кто то сталкивался с созданием расписания занятий в университете? может быть какую то примерную документацию видели. Заранее спасибо!
источник

m

motique in Язык программирования Julia / Julia programming language
✵ Muhammed ✵
Добрый вечер. Возможно кто то сталкивался с созданием расписания занятий в университете? может быть какую то примерную документацию видели. Заранее спасибо!
Microsoft Excel
источник

✵M

✵ Muhammed ✵ in Язык программирования Julia / Julia programming language
нужна оптимизация на языке julia
источник