Нейронные сети с векторными потоками
Dec. 14th, 2019 01:21 amИдея эта, как и идеи, про которые я писал в предыдущем постинге, тоже простая, как первый трактор. Все "нейроморфные" вычисления устроены так, что чередуются, что-то, напоминающее линейное преобразование (где берётся нечто вроде "суммы с коэффициентами"), и что-то, напоминающее нелинейное преобразование.
Вот так они и идут: линейное - нелинейное - линейное - нелинейное - линейное - нелинейное - ...
Это означает, что необязательно делать "нейроморфные" вычисления с потоками чисел. Можно делать их с какими угодно потоками, лишь бы можно было брать "нечто вроде суммы этих потоков с коэффициентами". Могут быть потоки векторов и тензоров, в том числе, очень разреженных и бесконечномерных, могут быть потоки функций и распределений. Не удивительно, что если рассматривать такое, то выразительная мощность возрастает с нездешней силой, и вопрос в том, как эту вновь обретённую выразительную мощность оседлать.
Вот, по моим представлениям, люди должны были бы обнаружить это обстоятельство где-то во второй половине 1980-ых годов. (И я сам это должен был тогда сделать, и я знаю ещё людей, для которых было бы естественно сообразить это в 1980-е.)
Вместо этого, похоже, наша работа 2015-го года ("dataflow matrix machines"), это и есть первая работа такого рода (по моему опыту, если работа является переоткрытием (или частичным переоткрытием), то процесс реферирования/рецензирования быстро обнаруживает это обстоятельство; в данном случае, мы получили десятки рецензий на наши тексты, и никто не сказал, что это или что-то похожее, возможно, сделано там-то и там-то).
Вот, в соответствии с предыдущим постингом, естественное состояние дел в этой науке состоит в том, что работа делается на десятки лет позже, чем ей было вы естественно возникнуть, и обычно остается не особо замеченной несколько дольше, чем 10 лет. Это - обычное, стандартное состояние дел, вот там это всё и находится, в состоянии "остается не особо замеченной несколько дольше, чем 10 лет" (пока что, ещё не прошло 10-ти лет, может быть, если повезёт, можно сократить этот период).
Эта штука крайне интересна, как платформа для машинного обучения, и как платформа для программирования. С точки зрения "быстрого громкого успеха", группе, которая захотела бы этим пользоваться, наверное, стоит сосредоточиться на машинном обучении с помощью этих штук.
Но, в некотором смысле, смотреть на это, как на изящный программистский формализм, родственный некоторым известным вполне замечательным программистским парадигмам, но, всё же, иной, - может быть, на этом интереснее сосредоточиться, чем на машинном обучении (особенно, если заниматься этим совсем "малыми силами").
Я допишу кое-какие подробности в комментариях...
Вот так они и идут: линейное - нелинейное - линейное - нелинейное - линейное - нелинейное - ...
Это означает, что необязательно делать "нейроморфные" вычисления с потоками чисел. Можно делать их с какими угодно потоками, лишь бы можно было брать "нечто вроде суммы этих потоков с коэффициентами". Могут быть потоки векторов и тензоров, в том числе, очень разреженных и бесконечномерных, могут быть потоки функций и распределений. Не удивительно, что если рассматривать такое, то выразительная мощность возрастает с нездешней силой, и вопрос в том, как эту вновь обретённую выразительную мощность оседлать.
Вот, по моим представлениям, люди должны были бы обнаружить это обстоятельство где-то во второй половине 1980-ых годов. (И я сам это должен был тогда сделать, и я знаю ещё людей, для которых было бы естественно сообразить это в 1980-е.)
Вместо этого, похоже, наша работа 2015-го года ("dataflow matrix machines"), это и есть первая работа такого рода (по моему опыту, если работа является переоткрытием (или частичным переоткрытием), то процесс реферирования/рецензирования быстро обнаруживает это обстоятельство; в данном случае, мы получили десятки рецензий на наши тексты, и никто не сказал, что это или что-то похожее, возможно, сделано там-то и там-то).
Вот, в соответствии с предыдущим постингом, естественное состояние дел в этой науке состоит в том, что работа делается на десятки лет позже, чем ей было вы естественно возникнуть, и обычно остается не особо замеченной несколько дольше, чем 10 лет. Это - обычное, стандартное состояние дел, вот там это всё и находится, в состоянии "остается не особо замеченной несколько дольше, чем 10 лет" (пока что, ещё не прошло 10-ти лет, может быть, если повезёт, можно сократить этот период).
Эта штука крайне интересна, как платформа для машинного обучения, и как платформа для программирования. С точки зрения "быстрого громкого успеха", группе, которая захотела бы этим пользоваться, наверное, стоит сосредоточиться на машинном обучении с помощью этих штук.
Но, в некотором смысле, смотреть на это, как на изящный программистский формализм, родственный некоторым известным вполне замечательным программистским парадигмам, но, всё же, иной, - может быть, на этом интереснее сосредоточиться, чем на машинном обучении (особенно, если заниматься этим совсем "малыми силами").
Я допишу кое-какие подробности в комментариях...
no subject
Date: 2019-12-14 08:06 am (UTC)С одной стороны, стандартный цифровой аудио-синтез, как его придумали 60 лет назад в Bell Labs, и как им все теперь пользуются, через композицию преобразователей потоков чисел - это важный подкласс этих машин, есть огромный опыт по синтезу звуков и музыки в этом стиле. Вот, на первых двух страничках этого 4-страничного текста я записал, как это хорошо бы начать двигать, для начала, в сторону синтеза анимаций и виртуальной реальности с помощью этих штук, и "далее везде" (в последнее время возникла прикладная наука про то, как делать алгоритмы над immutable структурами данных - "functional data structures" - вот это очень актуально):
https://github.com/anhinga/2019-design-notes/blob/master/research-notes/research-notes-dec-2019.pdf
Но, дальше, на что это ещё похоже, что мы знаем?
- Dataflow programming, with data flowing across the links connecting processing nodes in a "dataflow graph" (как раз наши потоки и текут по ребрам этого графа, и обрабатываются в его узлах);
- "Functional reactive programming" (this is more modern, I especially like the functional variety like Yampa in Haskell, which defines "signals" as functions from "time" and works with them (это, как раз наши потоки и есть; but then there is this whole huge field of related things: https://github.com/ivanperez-keera/Yampa and https://github.com/gelisam/frp-zoo );
- Вот, мы недавно глядели на concatenative languages вроде языка Factor здесь в комментариях: https://juan-gandhi.dreamwidth.org/4642575.html ; вот если композиция была бы не чисто линейная, а можно было бы разветвлять, чтобы получать какие-нибудь интересные directed acyclic graphs, ну хотя бы в стиле вот этих обобщений обычных threading macros, которые позволяют кое-какое ветвление: https://github.com/rplevy/swiss-arrows ; это было бы тоже похоже (может, Factor это уже умеет, он выглядит очень мощным для языков этого класса, а я его совсем не знаю, вот распечатал себе читать эту статью: https://factorcode.org/littledan/dls.pdf )
Мне кажется, ценителям всего этого "функционального языкового разнообразия", эта тема должна быть крайне интересна.
Одно из изменений моего личного статуса этой осенью, что я познакомлся гораздо ближе с здешними тусовками вокруг таких языков, как Haskell, Elm, а также Elixir (современный функциональный язык для Erlang VM, который совершенно замечательный и, вообще, может быть, то, что надо (он теперь обошёл Erlang по популярности)).
no subject
Date: 2019-12-14 01:31 pm (UTC)no subject
Date: 2019-12-14 02:11 pm (UTC)no subject
Date: 2019-12-14 02:19 pm (UTC)no subject
Date: 2019-12-14 03:24 pm (UTC)