Современный Хопфилдовские Сети, или модели Плотной Ассоциативной Памяти, представляют собой нейронные сети с набором фиксированных точек аттракторов к которым сходится реккуррентная динамическая траектория в пространстве нейтронных состояний. В отличие от классических Хопфилдовских сетей, их современная модификация позволяет записывать и хранить экспоненциально большое количество памятей. Благодаря этому, с их помощью можно решать многие интересные задачи в машинном обучении и использовать эти математические модели для описания биологической памяти. Я расскажу про математическую теорию этих моделей и про конкретные задачи где эти идеи оказываются полезными. Я также приведу примеры этих моделей которые сводятся в предельных случаях к нейронным сетям которые используются на практике (например механизм внимания в трансформерах).
Дополнительные материалы от спикера:
Идеи, которые Дмитрий будет обсуждать на вебинаре, были упомянуты в нескольких статьях ранее. Две наиболее актуальные статьи:
1. Krotov & Hopfield “Large Associative Memory Problem in Neurobiology and Machine Learning”, ICLR 2021, https://arxiv.org/abs/2008.06996
2. Krotov & Hopfield “Dense Associative Memory for Pattern Recognition”, NeurIPS 2016, https://arxiv.org/abs/1606.01164
Статьи, которые менее актуальны для вебинара, но имеют большое отношение к теме:
3. Demircigil et al, “On a model of associative memory with huge storage capacity”, J. Stat. Phys. 2017, https://arxiv.org/abs/1702.01929
4. Ramsauer et al., “Hopfield Networks is All You Need”, ICLR 2021, https://arxiv.org/abs/2008.02217
5. Widrich, et al., “Modern Hopfield Networks and Attention for Immune Repertoire Classification”, NeurIPS 2020, https://arxiv.org/abs/2007.13505
6. Krotov & Hopfield «Dense Associative Memory Is Robust to Adversarial Inputs», Neural Computation 2018, https://direct.mit.edu/neco/article/30/12/3151/8426/Dense-Associative-Memory-Is-Robust-to-Adversarial
Запись: https://youtu.be/UHMVjnw-8ko
Презентация: https://drive.google.com/file/d/1YFw_lZzGOLh3pkkYB20zbsrvZgVx7PrI/view?usp=sharing
(00:00:00) (Начало записи)
Николай Михайловский: Добрый день всем. Я Николай Михайловский, генеральный директор компании «НТР», и я приветствую всех на нашем очередном научно-техническом вебинаре, который «НТР» проводит с Высшей IT-школой Томского государственного университета. У нас в гостях сегодня Дмитрий Кротов, IBM Researcher MIT-IBM Watson AI Lab, который расскажет нам про современное состояние хопфилдовских нейронных сетей, машинном обучении в нейробиологии. Еще раз прорекламирую, что Дмитрий в течение многих лет был соавтором самого Джона Хопфилда, работая в Принстоне, правильно я понимаю?
Дмитрий Кротов: На самом деле, я был аспирантом в Принстоне, и когда я был аспирантом, я с Джоном не работал, а я стал с ним работать после того, как я уже вышел из университета, я пошел в другое место, которое называется Institute for Advanced Study. Это тоже в Принстоне находится, но…
Николай Михайловский: Понятно, здорово. В общем, Дмитрий, передаю вам полностью слово.
Дмитрий Кротов: Да, спасибо большое. Спасибо за приглашение, во-первых. Я еще хотел сказать, что я очень извиняюсь, что мои слайды в основном написаны по-английски, я просто их приготовил для англоязычной аудитории, и просто много времени я должен был потратить…
Николай Михайловский: Все нормально, английские слайды отлично заходят.
Дмитрий Кротов: Хорошо, замечательно. Да, и я планирую начать с такого сорта общих вопросов, что такое модели ассоциативной памяти, причем здесь Хопфилд, почему их интересно использовать для разных задач в машинном обучении, и постараюсь привести какие-то примеры задач, где использование таких моделей оказывается полезным.
Что такое модели ассоциативной памяти? Когда люди говорят про модели Хопфилда, обычно они описываются двумя математическими объектами. Первый объект – это уравнение движения или то, что называется update row, (00:02:24) когда у вас есть состояние нейронной сети в момент времени T, и вы хотите почитать состояние всех нейронов в момент времени T+1. Это первый математический объект.
А второй математический объект – это так называемая функция энергии. Идея состоит в том, что вы хотели бы построить нейронную сетку, в которой есть эта скалярная функция энергии, которая устроена таким образом, что у нее есть много локальных минимумов. Идея состоит в том, что каждый локальный минимум этой функции энергии, он отвечает какой-то конфигурации нейронов, которая чему-то отвечает с точки зрения той задачки, которую мы пытаемся решить, с точки зрения Data Science. Например, вы можете положить в локальные минимумы энергии какие-то картинки или какие-нибудь графы, или еще какую-нибудь дату. Идея состоит в том, что если вы будете думать про состояние нейронной сети как про такой шарик, который показан здесь… Кстати, вы видите мой курсор, если я его двигаю, да?
Николай Михайловский: Да, да отлично видно.
Дмитрий Кротов: Хорошо. Если вы думаете про состояние нейронной сети как такой шарик, то можно думать про всю эту хопфилдовскую динамику как про такую динамику релаксации, когда этот шарик катится по энергетическому ландшафту по направлению к одному из локальных минимумов.
Картинка, которую вы здесь видите, она такая немножко упрощенная, потому что реально хопфилдовские сети работают в пространстве очень большой размерности, а здесь я все спроецировал на плоскость. Но эта картинка отражает идею, что когда вы показываете какое-то начальное состояние нейронной сети, то она должна ассоциировать это начальное состояние с одним из локальных минимумов. В хопфилдовской терминологии локальные минимумы называются «памяти». Идея состоит в том, что если вы показываете, например, человеку что-то, что человеку напоминает про какой-то ужин или какой-то опыт, experience, который этот человек имел из прошлого, то его нейронная сеть, которая в мозгу существует, в состоянии извлечь всю информацию, которая ассоциируется с тем начальным, что ли, состоянием, которое мы нейронной сетке показали.
(00:04:55)
Здесь, на этом слайде, я хотел просто показать два таких классических примера использования хопфилдовских сетей, когда, например, мы можем взять какое-то количество картинок и положить их в локальные минимумы этой функции энергии, и затем мы можем показать картинку, например, которая показана здесь. Вы видите, что на картинке нарисован какой-то клюв какой-то птицы, но больше вы ничего про птицу не знаете, потому что она такая закрытая черными пикселями. Но если мы дадим это начальное состояние хопфилдовской сети, и хопфилдовская сеть знает, что она должна работать с каким-то набором картинок, то можно этот шарик отпустить и разрешить ему катиться по энергетическому ландшафту, и тогда сетка восстановит всю картинку. Это один пример использования этих сетей, когда мы хотим делать какой-нибудь ___, (00:05:52) когда у нас есть какая-то картинка, затем мы что-то закрываем на этой картинке, и хотим, чтобы нейронная сетка восстановила нам всю картинку.
Другой классический пример использования таких сетей – это denoising, когда вы опять же берете какие-то какую-то дату и добавляете в нее огромное количество шума. Это второй пример, который вы видите здесь справа. Опять же, есть какая-то картинка, и если вы на нее посмотрите, то даже сложно понять, что на ней нарисовано. Но если мы сетке разрешим эволюционировать, то картинка превращается в нормальную, high resolution image. Что интересно здесь, что если я эту симуляцию возьму, и остановлю где-нибудь посредине, вы увидите, что в процессе восстановления нейронная сетка сначала не может решить, к какому локальному минимуму она хочет катиться. Здесь вы видите немножко такую тень этого попугая, и в то же время лодку. Сначала она начинает катиться ко многим локальным минимум, что на этой картинке двумерной трудно отразить, но в многомерии это возможно, и потом она решает, что на самом деле начальное состояние было ближе к лодке, чем к попугаю, и поэтому она динамически перестраивается таким образом, чтобы катиться в правильный минимум.
Это общая идея того, что такое модели Хопфилда, и что такое модели ассоциативной памяти, более широко. На таком чуть более математическом языке обычно люди думают про классические сетки Хопфилда в контексте этой формулы, которая показана слева. То, что вы видите здесь, это функция энергии, и это функция энергии зависит от вектора нейронных состояний, которые обозначены буквами σi и σj. σi и σj – это такие длинные бинарные вектора, то есть это вектор из N элементов, и каждый элемент этого вектора равен либо +1, либо -1. Tij – это такая симметричная матрица, которая может быть бинарная, может быть представлена действительными числами. Я не знаю, есть ли в аудитории физики, но если есть физики, то я одним словом скажу, что про такую функцию энергии можно думать как про такую модель Изинга, в которой каждый нейрон представляет спин, и все спины связаны со всеми другими спинами, то есть такая матрица связи, она all-to-all. Оказывается, что можно написать динамическое правило, такую динамическую систему, которая решает, как вы апдейтите состояние каждого нейрона. Если у вас есть какой-то вектор на момент времени Т, вы можете лишь решить, нужно ли перевернуть состояние какого-то нейрона, или оставить его таким, какое оно есть. Вы можете сделать этот апдейт таким образом, чтобы энергия постоянно уменьшалась, что каждый раз, когда вы решаете перевернуть спин или апдейтить состояние нейрона, то энергия будет либо оставаться той же самой, что она была до этого, либо уменьшаться. Если вы эту процедуру повторите много-много раз, в конечном итоге, вы придете в локальный минимум этой энергии. В принципе, это такая очень приятная модель ассоциативной памяти, модели Хопфилда из 80-х годов, и, в принципе, это очень хорошая и интересная модель. Но у нее есть одна теоретическая проблема, и проблема состоит в следующем, что если у вас есть сетка из N нейронов, то оказывается что, в такую систему невозможно записать очень много памяти. Математически точное утверждение состоит в следующем, что если у вас есть сетка из N нейронов, то максимальное количество некоррелированных состояний, некоррелированных локальных минимумов, которые вы можете в эту функцию энергии закодировать, равно 0,14N.
(00:10:10)
Этот размер сетки, 0,14 – это такая математическая константа которая возникает из некоего такого вычисления, то есть вы должны посмотреть на случайные ансамбли памяти и усреднить некоторым образом, если вы правильно все это сделаете, то возникнет эта численная константа 0,14.
В принципе, эти модели были очень-очень популярны в 80-х и 90-х годах, и люди в основном из Statistical Physics Community над ними очень много работали и доказали много всяких разных интересных теорем. Оказывается, что, грубо говоря, что бы вы с этими моделями ни делали, если вы ставите такую задачу, как можно увеличить capacity этой системы, как можно увеличить количество памяти, которое эта система может помнить, оказывается, что очень сложно преодолеть этот линейный скейлинг, то есть невозможно его преодолеть. Грубо говоря, вы можете немножко улучшить эту константу 0,14, и вы можете сделать намного более сложную модель, в которой эта константа будет равна 2, например, но больше, чем 2N, сделать нельзя, есть такие теоремы.
Это то, что называется «классические сетки Хопфилда». Что такое современные сетки Хопфилда? Мы с Хопфилдом задали такой вопрос где-то в районе 2016 года: нельзя ли вообще хоть как-то эту систему прореформировать таким образом, чтобы этот линейный скейлинг побороть? И оказывается, что ответ на этот вопрос положительный, и на самом деле решение очень простое. То, что нужно разрешить, нужно разрешить добавлять в эту функцию энергии члены, которые не квадратичные по состояниям нейронной сети σ, а более высокого порядка. Опять же, в таком физическом языке это соответствует тому, что если вы берете гамильтониан вашей системы и добавляете в него вместо квадратичных членов члены четвертого порядка или члены пятого порядка по σ. Эту идею мы назвали Dense Associative Memory, что по-русски, наверное, переводится как «модель плотной ассоциативной памяти». Идея состоит в том, что вы в то же самое пространство, в котором работает классическая хопфилдовская сетка, пытаетесь положить намного-намного больше памяти, и поэтому память в ней плотная.
Математически эта модель описывается следующей функцией энергии. Вы можете взять такую свертку между вектором состояния σ и одной из памятей ξ, здесь есть сумма по индексу i, и ответ после этой свертки для каждого значения памяти, индекс μ бежит в этом примере по четырем индексам, μ равно 1, 2, 3, 4, то есть после того, как вы возьмете свертку по индексу i, вы возводите эту свертку в какую-то степень или применяете какую-то другую нелинейную функцию. Оказывается, что если вы сделаете такое честное вычисление, то если вы возьмете эту функцию F от x как функцию степени, xn, то оказывается, что теперь количество памяти, которое в эту систему можно положить, шкалируется как Nn-1, то есть когда n равно 2, что отвечает классической системе Хопфилда, вы можете восстановить этот линейный скейлинг, но если n больше 2, то вы можете закодировать намного-намного больше памяти в эту систему.
В 2017 году была другая интересная статья группы математиков, первый автор этой статьи ___, (00:14:14) и они даже показали, что можно сделать экспоненциально количество памяти, и то, что для этого нужно, нужно эту функцию F сделать экспоненциальной. Вообще, с тех пор много люди всяких интересных результатов доказали про эти системы. Оказывается, что, например, несмотря на то, что вы кладете намного-намного больше памяти, чем в классическую систему Хопфилда, размеры этих локальных минимумов, basins of attraction вокруг них, они такого же примерно размера, как в классической системе Хопфилда, то есть они примерно O(n), где n –это количество нейронов.
(00:14:55)
В принципе, эти модели плотной ассоциативной памяти, или, как их сегодня называют, «современные модели Хопфилда», они действительно решают эту задачу про то, как вы можете закодировать в такую стандартную модель ассоциативной памяти намного-намного больше состояний.
Я, пожалуй, немножко не буду углубляться в математику этого вопроса, но интуитивно идея состоит в следующем, что, грубо говоря, вы делаете функцию энергии намного более нелинейной. Если в классической системе Хопфилда у вас есть такая функция энергии, в которой минимумы не очень глубокие, система может иногда запутаться в них, то в современной сетке Хопфилда эти минимумы намного более глубокие и лучше друг от друга отделены. В этом состоит интуитивная идея. Если вы хотите более, что ли, математически про нее почитать, вы можете взглянуть на одну из этих двух статей, которые здесь в правой части слайда процитированы.
Я не знаю, как дела обстоят с вопросами. но если есть какие-то вопросы, то, пожалуйста, не стесняйтесь задавать их.
Николай Михайловский: Да, у нас есть в чате несколько вопросов, пока больше идеологического толка. Денис Змеев спрашивает: «Сеть Хопфилда решает в основном генеративные задачи?»
Дмитрий Кротов: Необязательно. Может генеративные задачи решать, может какие-нибудь другие. Может, например, задачи про классификацию решать. Про генеративные, я думаю, понятно, как их решать, здесь я более или менее привел пример того, как можно задачи генеративного сорта решать. Но представьте себе, что вы, например, хотите задачу классификации решить. Тогда вы можете думать про это следующим образом. Представьте что, у вас есть картинки и для каждой картинки есть метка, это кошка или собака, или самолет. Тогда вы можете метку закрыть этими черными пикселями, и подать на вход этой сетке только картинку, то есть картинка, это будет то, что называется Q, как в механизме внимания. Вы можете так же этот шарик отпустить и разрешить ему катиться к локальному минимуму, и попросить его восстановить метку. В принципе, таким образом, вы можете сформулировать задачу классификации в этом пространстве модели Хопфилда. На самом деле, в принципе, можно более-менее любую задачу таким образом сформулировать.
В самом таком общем смысле сетки Хопфилда – это сетки, в которых состояние эволюционирует какое-то время, но в конечном итоге сходится к фиксированной точке. Если вы можете задачу сформулировать в такой форме, то сетки Хопфилда оказываются довольно интересным способом на эту задачу смотреть.
Николай Михайловский: Олег Левашов спрашивает: «Дмитрий, как вы считаете, Deep Learning – это тупиковый путь для построения «умного зрения», или есть шанс?»
Дмитрий Кротов: Вы знаете, честно говоря, мне всегда очень сложно отвечать на такие глобальные вопросы. Я как-то люблю больше такие, что ли, решать конкретные задачи с помощью каких-нибудь новых методов. Но нет, я не думаю, что это тупиковый путь, но в то же время, если… Бесспорно, если мы думаем про человеческий мозг или какую-то такую high ___ (00:18:51) cognitive system, то это не Feedforward Neural Network. Если вы посмотрите даже на самые простейшие области головного мозга, в них есть огромное количество feedback connections, даже если вы посмотрите на visual cortex, например, это ни в каком приближении ни Convolutional Neural Network. Convolutional Neural Network имеет действительно какой-то такой очень wake inspiration, который приходит из neurosciense, но этот wake inspiration настолько высокого уровня, что только он очень-очень в первом приближении напоминает то, как реально зрение работает. Поэтому в этом смысле, конечно, это большой, интересный вопрос, как строить какие-то новые архитектуры, придумывать новые алгоритмы для обучения, которые не буквально back propagation, а что-то более интересное и более биологическое, для того чтобы эти задачи решать. Я думаю, что в конечном итоге мы откроем, мы, ученые, в целом, откроем какие-то новые интересные подходы к компьютерному зрению и более-менее к любым задачам VR.
(00:20:01)
Кстати, хопфилдовские сетки, я думаю, что это очень интересный способ, очень интересный, что ли, approach в этом направлении, потому что, по крайней мере, в хопфилдовских сетках есть эти ___ connections, которые… Если вы посмотрите просто на любую систему в neuroscience, они абсолютно повсеместны. Очень трудно эти хоть какую-то область в мозге, где feedback connections оказывались бы неважными. В этом смысле хопфилдовские сетки в каком-то смысле богаче, чем обычные feedforward-сетки, которые люди используют в Deep Learning.
Николай Михайловский: Леонид Ганжа спрашивает: «В чем важное сходство и отличие ассоциативной памяти в сети Хопфилда и латентного пространства в GAN?»
Дмитрий Кротов: Да, латентное пространство… GAN – это опять же Feedforward Neural Network. Да, там есть neurator, есть discriminator, но эта сетка, она абсолютно feedforward. Сетка Хопфилда, она рекуррентная. Это означает что, она в этом смысле немножко более похожа на системы типа LSTM или GRU, то есть когда у вас есть какое-то начальное состояние, вы считаете другое состояние в следующий момент времени, и дальше это состояние итеративно подкручиваете на каждом шаге итерации. В этом смысле это другая система. Это не означает опять же, что вы не можете каким-нибудь образом хопфилдовские сети использовать в GAN, может быть, это и возможно. Я никогда про это не думал, но, в принципе, может быть, какое-то есть естественное применение. Но, в принципе, это немножко другого сорта вычисления. Обычно, я не знаю, если вам такой аналогия понравится, вообще, любая Feedforward Neural Network в Deep Learning – это что-то типа как, знаете, делаете регрессию, у вас есть дата по оси x и какая-то дата по оси y, и вы хотите какую-то кривулину зафикировать. (00:22:12) Это то, что Deep Learning делает.
Сетка Хопфилда делает немножко другой, что ли, способ вычисления, она оперирует с фиксированными точками. У вас есть какая траектория, которая падает в фиксированную точку, и вы пытаетесь двигать эти фиксированные точки таким образом, чтобы вашу задачу каким-то образом интересно решить, то есть немножко другая система.
Николай Михайловский: Роман Шуцкий спрашивает: «Число минимумов при F экспоненциальной равно О от экспоненты, от n, но бассейнов притяжения О от n. Значит ли это, что число эффективной памяти – О от N?»
Дмитрий Кротов: Нет, не значит, по следующей причине. Давайте про это таким образом подумаем. Если у вас есть бинарный вектор из n элементов, и вы можете каждый элемент независимо выкинуть, либо +1, либо -1, то в целом конфигурационное пространство такой системы равно 2n, это полный набор состояний. Максимальное, что ли, количество памяти, которое в эту систему можно записать, ведет себя вот таким образом, то есть это Е в степени какая-то константа, умножить на n, и эта константа ограничена сверху другой константой, логарифм 2 делить на 2. Реально, если вы эту альфа, максимальную альфа подставите в эту формулу, то вы увидите, что максимальная storage capacity – это 2n/2. У вас размер всего пространства – это 2n, а количество памяти – 2n/2. 2n/2 – это конечно тоже экспоненциальная функция, но она намного-намного меньше, чем 2n. Поэтому, несмотря на то, что памяти у вас экспоненциально много, каждая память по-прежнему вокруг себя имеет какое-то абсолютно безумное количество конфигурационного пространства. Интуиция в многомерных пространствах, она всегда немножко может быть контринтуитивна в каком смысле.
Николай Михайловский: Михаил Монтрель пишет: «Дима, привет. У меня есть ряд вопросов по практическому применению сетей Хопфилда. Во-первых, используются ли такие нейросети в отрасли бурения скважин на нефть и газ? В данной области есть очень большая проблема дешифровки получаемого с забоя сигнала, и мне кажется, сети Хопфилда могут быть весьма эффективно применены.
Второй вопрос. Насколько ресурсоемкий алгоритм в бурении скважин?
(00:25:05)
Существует значительное ограничение по вычислительным мощностям, применяемым внутри скважины, и хочется понять, можно ли данную сеть спустить вниз.
В-третьих, можно ли использовать данные сети для упаковки данных?»
Дмитрий Кротов: Да, замечательные вопросы. Во-первых, я хочу сказать такую общую вещь, что вообще, в принципе, современные сетки Хопфилда – это такой довольно новый сюжет, и пока что есть только очень небольшое количество таких результатов, что ли, когда люди действительно взяли какой-то стандартный алгоритм из Machine Learning, и сделали его сравнение с алгоритмом, который inspired этими идеями. Я приведу несколько примеров на более поздних слайдах. Но идея состоит в том, что, в принципе, это новая область, и я просто нисколько не сомневаюсь, что никто эти сетки не применял к каким-то специальным задачам, связанным с бурением скважин, это уж заведомо, но даже более какие-то такие задачи, которые, казалось бы, абсолютно, не знаю, ImageNet Classication, даже к такого сорта задачам эти сетки, насколько мне известно, не применялись. Поэтому это все такая новая, неизведанная область в каком-то смысле.
С точки зрения вычислительных мощностей. Опять же, это нужно немножко смотреть на конкретную задачу. Есть два типа вычислительных мощностей: сколько вычислительной мощности нужно для того чтобы такую сетку натренировать, и сколько вычислительной мощности нужно чтобы делать inference. Для inference, я, честно говоря… это очень такие легкие модели, то есть в них ничего такого сверхъестественного нет. Для того чтобы их натренировать, это вопрос интересный. Есть много разных способов, как их можно натренировать, и опять же, какие-то способы более оказываются competition efficient, чем какие-то другие способы. Но, в принципе, опять же, не сложнее, чем типичную модель в Deep Learning, я бы я сформулировал это таким образом.
А третий вопрос я немножко забыл.
Николай Михайловский: Можно ли использовать данные сети для упаковки данных?
Дмитрий Кротов: А, для упаковки данных, да. Хороший вопрос. Да, я думаю, что можно. Если упаковкой данных, например, называть какой-то такой способ, например, автоинкодеров, когда вы что-то погружаете в латентное представление, и затем делаете expansion. Если упаковка данных понимается таким способом, то да, конечно, можно, потому что реально… Представьте себе, что вы думаете про это таким образом. У вас есть, например, какое-то количество локальных минимумов, и у вас есть много каких-то картинок, которые очень похожи друг на друга. Например, EMNIST, ___, (00:28:25) и там много есть картинок, которые просто практически идентичны, есть не так много вариантов, как вы можете цифру 6 написать. Тогда вы можете сделать следующее. Вы можете в один локальный минимум положить все картинки, которые очень-очень друг на друга похожи, а в другой локальный минимум положить другую кучу картинок, которые все друг на друга похожи. Таким образом, действительно, когда вы получаете pointer на локальный минимум, то вы мгновенно можете сказать, как большое количество картинок такого сорта примерно выглядит. Да, можно использовать эти сетки для упаковки данных.
Николай Михайловский: Спасибо. У нас уже довольно много вопросов. Булат Загидуллин спрашивает: «Можно пару примеров интересного использования хопфилдовских сетей или Associative Memory Energy Function-based Models?»
Дмитрий Кротов: Да, вы знаете, давайте я, может быть, немножко сдвинусь с этой точки, потому что я как раз хотел немножко еще поговорить про такие общие вещи, а потом я расскажу про примеры применения к конкретным задачам. Я думаю, что если вы мне дадите еще примерно 10 минут, то я до конкретных задач дойду.
Николай Михайловский: Да, давайте тогда продолжим. Я предупреждал, что при большом количестве вопросов у нас вся эта штука…
(00:30:00)
У нас сейчас есть семь вопросов в Q&A, я извиняюсь перед всеми, кто их задал, но мы на них будем отвечать чуть позже. А ежели Дмитрий в ходе дальнейшего рассказа на ваши вопросы ответит, вы их снимите, чтобы мы потом на них не потеряли время. А еще у нас штук пять вопросов в чате.
Дмитрий Кротов: Хорошо, замечательно.
Николай Михайловский: И почти 70 человек участников, между прочим, что немало.
Дмитрий Кротов: О’кей, большое спасибо за интерес. Да, давайте я немножко расскажу про немножко другой взгляд на эти сетки, и на самом деле, в каком смысле, на мой взгляд, этот взгляд, он более правильный. Если вы хотите почитать про эту часть этого общего направления, то можно взглянуть на эту работу, которая пару недель назад была опубликована в ICLR. В самой общей формулировке про сетки Хопфилда, на мой взгляд, правильно думать следующим образом: правильно думать про них с точки зрения дифференциальных уравнений или динамических систем. Вы можете думать про них так. Представьте себе, что у вас есть… До этого мы разговаривали про этот параметр N, который отвечает количеству нейронов. То, что я сейчас делаю, я вдобавок к этим N нейронам, которые описывают состояние, то, что называется visible neurons или feature neurons, которые на этом слайде показаны синенькими кружочками, я в эту систему добавлю большое количество зелененьких кружочков. Зелененькие кружочки – это будут hidden neurons. На эту общую систему я напишу такую систему нелинейных дифференциальных уравнений, которую вы видите здесь на этом слайде. Переменная, которая отвечает синеньким кружочкам, обозначена буквой Vi, и индекс i бежит от 1 до N, как и на предыдущих слайдах. Но вдобавок к ним у нас теперь есть hidden neurons, которые обозначены буквой hμ, и индекс μ бежит от 1 до Nh. H stands for hidden and F stands for features. Здесь, в этой системе, я введу такие параметры, которые обозначены буквами ξ. ξμi – это матрица размера Nh на Nf, и эта матрица описывает веса в нейронной сетке, которые связывают эти нейроны, синенькие нейроны и зелененькие нейроны. Обратите внимание, что эта сетка рекуррентна, есть стрелочка, которая отображает состояние синих кружочков в зеленые, и есть стрелочка, которая отображает зеленые кружочки в синие. Еще один момент, Ii – это ток, который втекает в эти визуальные нейроны. Например, этот ток может кодировать какое-то начальное состояние. Нелинейность в этой системе возникает из-за этих параметров fμ и gi. Эти буквы в neuroscience и в Machine Learning они называются activation function. Грубо говоря, если вы возьмете, например… Да, то есть это что-то типа rectified linear unit, например, в Machine Learning. Оказывается, что правильно, что очень интересный и удобный, математически удобный способ думать про эти сетки состоит в следующем, что можно ввести вместо этих нелинейных функций fμ и gi, можно ввести соответствующие функции Лагранжа для этих нейронов, которые я обозначу буквами lh и lv. Это опять же для тех из вас, кто знаком с физикой, например. когда мы изучаем классическую механику, у нас есть Лагранжев формализм, есть Гамильтонов формализм. Грубо говоря, про эти функции Лагранжа нужно думать примерно как про лагранжиан какой-то динамической системы, и вы сейчас увидите, почему это полезно. Если вы напишете произвольную систему нелинейных дифференциальных уравнений такого сорта, то, в принципе, если вы напишете в правую часть этих уравнений просто совершенно какие-то случайные функции, то окажется, что такая система может иметь очень-очень много всяких сложных решений.
(00:34:56)
Она может иметь фиксированные точки, она может иметь limit cycles, она может иметь кучу всяких-разных аттракторов, которые в динамических системах люди изучают. Но оказывается, что если вы введете функцию энергии, или, как мы по-русски ее называем, функцию Ляпунова, таким образом, чтобы функция Ляпунова постоянно убывала, если вы следуете динамической траектории этих систем, и функция энергия ограничена снизу, то единственным возможным решением для траектории такой системы оказываются фиксированные точки. Это интересный хопфилдовский режим, когда у вас есть действительно какая-то сложная нелинейная система, но все поведения сводятся к фиксированным точкам. Система что-то делает в течение какого-то времени, но в конце концов она устаканивается и сваливается в фиксированную точку.
Оказывается, что функция энергии для такой системы описывается такой формулой, которая показана здесь. Что интересно, если вы посмотрите, например, на эти выражения в квадратных скобках, это не что иное, как преобразование Лежандра от лагранжиана. Вы берете лагранжиан, дальше определяете эти функции fμ как partial derivatives, частные производные от лагранжиана по соответствующим переменным, и делаете преобразование Лежандра по этим переменным. Если вы это сделаете, вы получаете функцию энергии для такой системы. Оказывается, что можно просто математически показать, что действительно, какие бы вы нелинейные функции сюда ни написали, система всегда достигает фиксированных точек. Это то, что необычно относительно этой системы, потому что опять же, как я повторюсь, если вы пишете случайные функции, то этого свойства у системы не будет. Поэтому эту систему можно использовать как хопфилдовскую сеть.
Что интересно, что если вы в этой системе теперь сделаете следующую вещь, вы возьмете эту систему с двумя уровнями и исключите зелененькие кружочки, исключите hidden neurons, что математически означает следующее, что вы просто возьмете это уравнение, приравняете правую часть к нулю, и решите его в фиксированной точке. Это разумно делать, если временна́я константа, которая отвечает эволюции hidden neurons, намного более быстрая, чем временна́я константа, которая отвечает эволюции ___. (00:37:29) Если вы это сделаете, во-первых, вы можете воспроизвести мгновенно теории, которые я обсуждал на предыдущих слайдах. Грубо говоря, вы можете взять какие-то специальные примеры этих функций Лагранжа, которые здесь написаны, на этом слайде, и вы можете посмотреть в этой статье для бо́льших деталей, и вы можете показать, что эта система действительно сводится к той системе, которую мы в 2016 году предложили, или которую ___ (00:37:59) изучали. Это первый интересный предел.
Второй интересный предел состоит в следующем. Эта модель изучалась в этой статье. Здесь я почему-то неправильно написал ссылку, это в 2001 году было. Это статья Hopfield Networks Is All You Need, которая довольно много шума сделала, и в ней идея состоит в следующем, что вы в качестве одной из функций активации fμ рассматриваете softmax, и оказывается, что эта система имеет некоторое отношение к механизму внимания в трансформерах. Я про это скажу немножко позже. Но, что опять же интересно, что вы можете взять эту общую систему динамических уравнений, и просто каким-то специальным выбором функция Лагранжа в этой системе свести ее к этой другой системе, которую люди тоже изучали в каких-то других работах.
На самом деле, можно много других интересных систем из этой общей системы вывести. Грубо говоря, если я пропущу всю математику, идея состоит в следующем, что вас есть такая общая теория, в которой есть синенькие кружочки и зелененькие кружочки, которые отмечают нейроны. Если вы исключите зелененькие кружочки, просто решите уравнение для них, и подставите решение в уравнение для синеньких кружочков, то вы можете получить либо модели плотной ассоциативной памяти, либо модели, которые изучались в этой статье Hopfield Networks Is All You Need, или другие модели, которые тоже очень интересны, и которые обладают некоей такой красивой сферической симметрией, но я про них говорить не буду, опять же, вы можете посмотреть эту статью, которую я процитировал раньше, если вам интересно.
(00:40:00)
Возникает такая интересная, что ли, конструкция, что у нас есть какая-то такая микроскопическая теория, и если вы исключаете разные переменные из этой теории, то вы получаете много всяких-разных моделей, которые люди изучали по каким-то другим причинам. Это с одной стороны что интересно.
Что с другой стороны интересно, состоит следующем, что эта система уравнений имеет очень понятную нейробиологическую структуру по следующей причине, потому что вы можете думать про эти параметры ξ как про параметры, которые отвечают synaptic connections between the neurons. В биологии, если у вас есть какая-то биологическая нейронная сетка, и вы берете в ней два нейрона, то один нейрон производит спайк, дальше этот спайк распространяется вдоль аксона, и дальше дендриты другого нейрона подходят к аксону, и есть то, что называется synaptic junction между дендритом нейрона, который downstream, и аксоном нейрона, который upstream. Величина этого синапса, то, насколько этот синапс сильный, обозначается обычно каким-то параметром, каким-то численным параметром. В artificial нейронных сетях, которые в Machine Learning используется, люди тоже эти параметры используют, это веса нейронной сети. Что действительно приятно, если вы смотрите на эту систему уравнений, то она имеет структуру такой обычной нейронной сети, в ней ничего нет такого противоестественно, нет никаких членов, которые бы, например, требовали, чтобы у вас пять нейронов соединялись в одном синапсе, что биологически иногда бывает, но обычно не бывает. Поэтому, что тоже приятно про эту теорию, у нее есть такой приятный биологический аспект, потому что про нее можно думать как про математическую модель и биологической нейронной сети тоже.
Давайте я немножко расскажу про всякие способы применения этой сетки. Здесь я расскажу про несколько работ, и очень поверхностно, но сначала давайте рассмотрим такое простое применение. Есть такой датасет ___, (00:42:35) это датасет японских или китайских иероглифов. В принципе, если вы поговорите с таким образованным, хорошо начитанным человеком, который живет в Японии, который может спокойно, свободно говорить на японском и читать газеты и книги, то этот человек обычно знает примерно от 3 до 5 тысяч иероглифов. Конечно, эти иероглифы могут быть написаны самым разным способом, 3-5 тысяч – это набор классов. В этом датасете каждый из этих иероглифов представлен такой картинкой, 8-битовой картинкой, такой, что интенсивность каждого пикселя меняется от 0 до 255, и размер картинки – это 64 на 64. Если вы возьмете и попытаетесь решить, например, задачу распознавания этих иероглифов классической сеткой Хопфилда, то у вас не получится, потому что количество памяти, которое вам нужно запомнить, что отвечает примерно 3-5 тысяч памятей, оказывается недостаточно. Современной сеткой Хопфилда такую задачку легко можно решить.
Это такой игрушечный пример, конечно, задачи, естественно, эту задачу можно решить многими разными способами. Можно использовать Convolutional Neural Network, можно даже ее решить с помощью Multi-Ware Perceptron, это очень простая задача. Но если вы хотите ее решить с помощью сеток Хопфилда, то такой default choice для вас был бы, это современные сетки, а не классические. Такой один простой пример.
Чуть более нетривиальные примеры. Я хотел бы здесь поговорить про эти две работы, которые пришли из группы Sepp Hochreiter. Sepp Hochreiter – это человек, который придумал LSTM. Они написали две очень интересные работы, в которых применяют эти идеи плотной ассоциативной памяти или современных сетей Хопфилда для решения двух задач. В первой статье обсуждается задача классификации иммунного репертуара. Я в двух словах объясню, в чем суть состоит.
(00:45:00)
Представьте себе, что вы берете какое-то количество людей, и, например, какие-то люди болели COVID, какие-то люди не болели COVID в вашем датасете. Вы берете кровь у этих людей, и можете просиквенсить репертуар Т-клеток, T-cell receptors, и для каждого человека вы получите какое-то огромное количество genomic sequences, которые возникают из каждого конкретного человека. При этом среди этих genomic sequences большинство sequences абсолютно иррелевантны к тому, болел человек COVID, или нет. Большинство этих последовательностей отвечает тому, каким гриппом человек болел десять лет назад, не знаю, чем он болел в детстве и так далее, и так далее, и так далее, то есть какая-то такая индивидуальная история болезни данного конкретного человека, и к COVID очень небольшой процент этих последовательностей имеет хоть какое-то отношение. При этом на каждого человека у вас есть только одна метка: либо человек болел COVID, либо не болел, то есть у вас есть один бит информации. У вас есть такой огромный input, который состоит из всех-всех-всех последовательностей, и только один бит информации. Можно ли как-то предсказать, насколько, если у вас есть какой-то новый набор этих последовательностей, либо человек болел COVID, либо не болел. Представьте себе, что вы решаете такую задачу.
Обычными методами Deep Learning такую задачу решить очень сложно по этой простой причине, что количество последовательностей, которые отвечают за предсказывание метки, очень-очень маленькое, и оно настолько разбавлено последовательностями, которые абсолютно иррелевантны для вашей задачи, что очень сложно выделить сигнал из шума. То, что группа Хохрейтера показала, что действительно Hopfield Networks в такой модной современной их формулировке, это действительно state of the art в этой задаче, и что действительно они правильно скейлятся, если вы идете в предел, когда этих последовательностей очень-очень много. Этот класс задач называется Multiple Instance Learning Problems. Это один пример, где современные сетки Хопфилда оказываются очень-очень полезными.
Вторая статья, которая тоже очень интересна, которая называется Hopfield Networks Is All You Need, в ней люди обнаружили следующее, что если вы посмотрите на одну из этих эффективных теорий, которая возникает, когда функция Лагранжа выбрана специальным образом, чтобы функция активации совпадала с софтмаксом, если вы работаете в этом классе моделей, то вы можете написать уравнение движения или уравнение апдейта на синенькие кружочки, на visible neurons. Если вы посмотрите на это уравнение, то вы увидите, что это не что иное, как механизм внимания, который используется просто повсеместно на сегодня в трансформерах и во многих других нейронных сетках.
Почему это интересно? Это интересно по многим причинам. Во-первых, вы можете задавать всякие-разные вопросы такого сорта, что модели Хопфилда, они рекуррентны, модель внимания и трансформеры – это все Feedforward Neural Networks, это очень простые системы. Возникает один интересный вопрос. Если действительно механизм внимания обобщить на такой более рекуррентный способ уточнения внимания на том, что нужно, может ли это как-то помочь каким-то интересным задачкам в Natural Language Processing или в Visual Transformers и так далее? Это один интересный класс вопросов.
Второй интересный класс вопросов состоит в следующем, что, в принципе, есть такая большая научная задача про то, как вообще понять, что глубокие нейронные сети выучили. Если вы их тренируете на каком-то датасете, то дальше хотелось бы как-то заглянуть в них и понять вообще, что они делают. Оказывается, что это задача очень сложная в большинстве случаев, и она в каком-то смысле ничуть не менее сложная, чем то, что реально люди делают в neuroscience, когда люди вставляют электроды в мозг какого-то организма, обезьяны или кошки, или какого-то более простого организма типа мухи, и пытаются понять, что там нейроны делают. Оказывается, что, казалось бы, эти две задачи очень разные, но задача про искусственные нейронные сети ничуть не менее сложная, чем такая биологическая задача.
С этой точки зрения оказывается очень полезным взглянуть на механизм внимания с точки зрения этой хопфилдовской математической структуры, потому что тогда вы можете взглянуть на разные heads of attention в трансформерах, а просто понять, в каком они режиме находятся.
(00:50:07)
В сетях Хопфилда, я про это не говорил, но есть много всяких режимов. Вы можете обсуждать режим, когда вы можете вытащить памяти из сетки, а можете обсуждать режим, когда, например, вы находитесь в том, что называется spin-glass state, и в этом состоянии система усредняет некоторым образом по большому количеству память. То, что группа Хохрейтера сделала в этой статье, они просто взглянули на pre-trained transformers типа BERT, и просто проанализировали каждую из heads of attention, и поняли, в каком хопфилдовском классе они лежат. Оказывается, что там есть интересная история, потому что там те heads of attention, которые в начальных слоях BERT, они ведут себя совершенно не таким образом, как heads of attention в более поздних слоях BERT, и это тоже имеет интересную интерпретацию. Это вторая интересная статья, которую я хотел бы тоже быстро упомянуть.
Я хотел бы оставить время на вопросы, поэтому я, наверное, на этом закончу. Можно, я скажу одну последнюю вещь? Последняя вещь – это идея такого сорта, что, в принципе, то, что я обсуждал, это математическая модель. Это математическая модель искусственной нейронной сети. Но вы можете задать себе вопрос: после того, как мы построили эту модель, можно ли представить себе какую-то область человеческого мозга или мозга какого-то такого модельного организма типа мухи или червяка, в которой что-нибудь, моделька вот такого сорта могла бы объяснить какую-то нейробиологию? Оказывается, что есть интересная область, которая живет в гиппокампе головного мозга, и она взаимодействует с другой областью, которая называется entorhinal cortex, и оказывается, что анатомическая диаграмма этой системы в каком-то смысле не безумно отличается от математической модели, которую я здесь пытался предложить с помощью этой картинки и этих урввнений.
Вы знаете, Николай, я, наверное, здесь остановлюсь, потому что мне кажется, что намного более важно, чтобы я ответил на вопросы, чем чтобы я еще что-то рассказал.
Николай Михайловский: Хорошо. В любом случае, спасибо. Давайте вернемся к вопросам. Спрашивают про интересные использования Хопфилд-сетей или Associative Memory Energy Function-based Models, тот вопрос, на котором мы прерывались в прошлый раз.
Дмитрий Кротов: Да. Я немножко повторюсь, что тема довольно новая, и, в принципе, результатов не так много. Эти две статьи, которые я показываю, эта статья была опубликована в Neurex прошлого года, эта статья была опубликована несколько недель назад в ICLR. В принципе, это все довольно новые сюжеты, и результатов пока что не так много. На самом деле, эти две статьи появились на архиве где-то прошлым летом, то есть они такие не совсем новые, но и не совсем старые. Поэтому, в принципе, на мой взгляд, просто более-менее, если вы хотите решить ту задачу, над которой вы работаете, вы работали над какой-то специфичной задачей, например, граф, и всегда, мне кажется, интересно подумать, на секунду остановиться и подумать, а нельзя ли как-то эту задачку сформулировать с точки зрения attractor networks. Если ответ на этот вопрос положительный, то Hopfield Networks, я бы сказал, что это the thing that you need to try first, потому что, действительно, это очень такой хороший класс моделей, где благодаря функции энергии действительно есть очень много контроля над тем, что вы можете сделать с этой сеткой.
Но, грубо говоря, те применения, с которыми я знаком, которые до сих пор были сделаны, я более-менее про них поговорил, поэтому…
Николай Михайловский: Хорошо, мы сейчас ответим на некоторое количество вопросов, если вы не возражаете, из Q&A, потом из чата, а потом у нас еще есть люди, поднявшие руку. Это я чтобы никто не обижался, что его игнорирует. «Доктор, меня все игнорируют». Михаил Бурцев – Михаил, приветствую – пишет: «Если развернуть сеть Хопфилда во времени, рассматривая каждый момент времени как отдельный слой, то она будет ли эквивалентна feedforward-сети с shared weights?»
(00:55:09)
Дмитрий Кротов: Хороший вопрос. Ответ: да и нет. Во-первых, если вы хотите тренировать сетку Хопфилда таким способом, то вы можете это делать. Действительно, можно ее развернуть во времени и использовать back propagation fulltime, например, для того чтобы ее тренировать. В этом смысле она эквивалентна. Но после того, как вы ее натренируете таким образом, вы можете задать себе вопрос. Представьте себе, вы ее развернули на двадцать шагов по времени, вы ее натренировали, и дальше вы подали ей на вход какой-то input, и после двадцати шагов считали output. Поскольку вы ее натренировали end-to-end, ___ (00:55:50) fulltime, то, скорее всего, после двадцати шагов вы получите какой-то очень разумный результат. В этом смысле вы можете думать про нее как про такой эквивалент, что ли, feedforward нейронных сетей. Но дальше вы можете задать себе такой вопрос: а если я теперь после двадцати шагов, никак не меняя веса, разрешу эволюционировать еще сто шагов, мой ответ изменится или нет? В хорошей сетке Хопфилда он не должен изменяться, потому что ваши параметры должны быть такими, чтобы вы после двадцати шагов, когда ее уже натренировали, вы уже находились в локальном минимуме. А если вы свои параметры выбрали таким образом, что после двадцати шагов вы не находитесь в локальном минимуме, тогда после двадцати шагов вы получите хороший ответ на свой вопрос, который мы задавали. А дальше ответ станет хуже, еще после ста шагов. Хопфилдовские сети интересны действительно этим свойством, что это attractor net, что после того, как если вы работаете в правильном режиме, то вы можете про них… после того, как вы их натренировали на каком-то количестве шагов, аттракторы находятся в том же месте, если вы ждете и намного большее количество шагов.
Я не знаю, Миша, я хорошо объяснил, или нет, если нет, то простите, пожалуйста.
Николай Михайловский: Михаил пишет, что ответили.
Дмитрий Кротов: О’кей, замечательно. Спасибо.
Николай Михайловский: Роман Шуцкий спрашивает: «В чем отличие хопфилдовских сетей от Restricted Boltzmann machine?»
Дмитрий Кротов: Хороший вопрос. Действительно, и, может быть, я немножко должен даже немножко расширить этот вопрос. Когда, действительно, я показывал такую диаграмму, то действительно, Restricted Boltzmann machine – это слово, которое действительно немедленно возникать в ассоциативной памяти слушателей, потому что, действительно, эта диаграмма соответствует Restricted Boltzmann machine. В чем разница? А разница состоит в следующим, что Restricted Boltzmann machine – это термодинамическая система. Несмотря на то, что анатомия, архитектура и связи очень похожи, задачи. для которых эти системы используются, абсолютно разные. В Restricted Boltzmann machine обычно вы их тренируете с помощью методов типа Contrastive Divergence или с помощью какого-то термодинамического сэмплинга, с помощью Markov chain Monte Carlo.
Здесь ничего такого не происходит. Система, про которую я рассказывал, абсолютно детерминистическая. У вас есть начальное состояние, где этот шарик находится на энергетическом ландшафте, у вас есть конечное состояние, куда этот шарик скатывается. Это система, которая, с одной стороны, абсолютно детерменистическая, с другой стороны, она описывается траекторией. В Restricted Boltzmann machine они всегда живут в температурной… in some temperature bath, есть какая-то ___ (00:59:01) temperature, и вы делаете какой-то сложный гипсовский сэмплинг, procedure, для того чтобы с ними работать. В этом смысле это сетки, которые очень сильно отличаются.
Но, конечно же, архитектура, она очень-очень похожа, в этом смысле действительно есть связь с Restricted Boltzmann machine, но Restricted Boltzmann machine – это не attractor network, это система, когда вы используете функцию энергии для того чтобы сгенерировать новые данные. В принципе. Вы хопфилдовскую сетку тоже таким образом можете использовать, но есть это отличие, про которое я сказал. Это первый момент.
Второй момент. Даже если вы, например, интересуетесь Restricted Boltzmann machine, это очень интересное наблюдение, что на самом деле Restricted Boltzmann machines, когда люди их изучали, и они были очень популярны примерно с 2006-го по 2012 год в machine learning community, люди обычно изучают довольно такой узкий класс функций активации.
(01:00:13)
Если вы посмотрите на аналоги этого уравнения для E of T для литературы по Restricted Boltzmann machine, то обычно функции f и g, которые используются в них, они намного более узкого класса, чем те функции, которые мы здесь рассматриваем. Поэтому даже если вы абсолютно не интересуетесь сетями Хопфилда, а интересуетесь наукой про Restricted Boltzmann machine, то, на мой взгляд, очень интересно ознакомиться с этим формализмом функций Лагранжа, потому что он позволяет, что ли, изучать Restricted Boltzmann machine намного более широкого класса.
Николай Михайловский: Спасибо. Анор Таскинов, видимо, спрашивает: «Есть ли связь хопфилдовской сети с механизмом внимания в трансформерах? Можно ли их объединить с трансформерами?»
Дмитрий Кротов: Да, опять же, замечательный вопрос. Я думаю, что можно. Я думаю, что можно много больше чем одним способом. Но давайте я один такой простой способ скажу, и, насколько я знаю, я как-то разговаривал с Хохрейтером на эту тему, и насколько я понимаю, даже такой простой способ еще люди не сделали. Но простой способ состоит в следующим, что механизм attention – это один шаг в моделях Хопфилда. Вы берете эту умную рекуррентную сеть, которая может делать много шагов, и вы говорите: «А я ее ограничу одним шагом». Грубо говоря, вы просто используете правую часть этого уравнения, и не используете уравнение целиком. Возникает вопрос: а что если вы сделаете много апдейтов, это чем-то улучшит механизм внимания или нет? Кажется, что может улучшить, по следующей причине. Представьте себе, что вы делаете NLP, и вам нужно сфокусироваться на какие-то слова в предложении. Очень может так оказаться, что когда вы это делаете один раз, внимание оказывается недостаточно заостренным на правильных концептах, а если вы сделаете эту подкрутку механизма внимания несколько раз, то внимание станет более, что ли, сконцентрированным на том, что вам интересно. Это один способ про то, как можно улучшить трансформеры с помощью этих идей, и, насколько мне известно, это не было сделано до сих пор.
Но есть более интересные способы, можно вообще подумать про то, как более фундаментально поменять архитектуру трансформеров так, чтобы в них включить модельки такого сорта, и это тоже интересный вопрос, но это большая отдельная дискуссия.
Николай Михайловский: Спасибо. Иван Тучков спрашивает: «Хопфилдовские сети явно описывают динамическую систему. В задачах предсказания коллективного поведения очень хорошо работают методы не локального, а глобального анализа данных типа персистентных гомологий. Значит ли это, что хопфилдовские сети хорошо бы взаимодействовали с персистентными гомологиями или другим любым методом глобального, а может быть, даже топологического анализа данных?
Дмитрий Кротов: Да, хороший вопрос. Я, честно говоря, про это никогда не думал. Действительно, persistent homology methods обычно отвечают на вопросы такого сорта, что вас есть какая-то сложная система, и в ней есть какая-то структура какого-то многообразия, которое нелинейным образом погружено в эти данные, и многообразие более, что ли, малый… живет в core-размерности (01:03:57) большого пространства, и задача в том, чтобы восстановить, какие-то числа, бэки посчитать или посчитать какие-то топологические свойства этого многообразия.
Я про это никогда не думал. Может быть, возможно хопфилдовские сетки как-то применить здесь. Я не знаю ответа на этот вопрос. Это интересная идея. Действительно, может быть, можно как-то действительно topological data analysis сформулировать с точки зрения моделей Хопфилда, я про это никогда не думал. Поэтому если вы придумаете, как, то было бы очень интересно узнать. Пошлите мне email, я с удовольствием бы поговорил на эту тему.
Николай Михайловский: Спасибо и Ивану, и Дмитрию, вот вам соавтор. Шучу. Федор Носков спрашивает: «Есть теоретические результаты, показывающие, что Deep Neural Networks приблизительно являются kernel machines? Это похоже на то, что вы показываете в качестве сети Хопфилда, очень напоминает эти kernel machines. Есть ли связь?».
(01:05:07)
Дмитрий Кротов: Да, про это можно так думать, про это можно думать, можно думать про… Когда вы говорите kernel machines, вы имеете в виду что-то типа RBF Networks, я так понимаю?
Николай Михайловский: Если честно, я не знаю, что Федор имеет в виду.
Дмитрий Кротов: Я думаю, что это имеется в виду. Да, действительно, можно про это думать таким образом. Это правда. Из моего опыта я бы сказал следующее. В какое-то время у меня была такая идея, я пытался применять хопфилдовские сетки для распознавания картинок таким образом, чтобы они были ___. (01:05:53) Вообще, хорошо известный факт, что RBF-сетки с таким экспоненциальным кернелом, они относительно ___ по отношению к ___. Я тоже обнаружил, что какие-то такие простые варианты моделей ассоциативной памяти тоже могут для этой задачки использоваться. У меня всегда был такой вопрос, а не связаны ли эти два утверждения каким-то более глубоким способом. Ответ, к которому я в каком-то смысле сошелся в моей динамической системе, состоит в следующем, что RBF Networks работают в режиме очень-очень нелинейного Хопфилда. Грубо говоря, правильно про это думать, на мой взгляд, следующим образом. Если вы посмотрите на какую-то сетку с такими мягкими активационными функциями, как rectified linear unit, например, которые очень медленно растут, они линейно растут для положительных значений, то это режим, если вы работаете с сетками такого сорта, то они очень сильно отличаются от RBF Networks. Если вы возьмете один пример, один предел, это такие, что ли, модели со слабой нелинейностью, и другой предел, это модели с такой очень сильной нелинейностью, как гауссовый кернел, то оказывается, что модели ассоциативной памяти живут в каком-то смысле между ними. Они обобщаются лучше, чем RBF-модель, в том смысле, что обобщаются лучше в том смысле, что они лучше работают с данными, которые они никогда не видели. Оказывается, что они более robust, чем сетки со слабыми нелинейностями типа rectified linear unit. В этом смысле они находятся между этими двумя пределами. Да, то есть это мое понимание.
Я опять же не уверен, что я ответил на вопрос, который вы задавали.
Николай Михайловский: Мы можем, например, Федору дать возможность говорить, тогда он, возможно, нам что-то скажет, если захочет.
Федор Носков: Спасибо. Я спрашивал, необязательно сетки могут сходиться к какому-то специфическому ядру, необязательно. Где-то было, что они к гауссовским процессам могут сходиться, то есть тогда, наверное, это да, как раз RBF, но, в принципе, необязательно.
Дмитрий Кротов: Да, вы можете про них так думать. Но я говорю, когда обычно люди говорят про kernel network, опять же, насколько в такой, что ли, традиционной формулировке люди говорят про feedforward neural nets. Насколько я понимаю, вам все равно нужно что сделать, чтобы сделать их рекуррентными. Но, в принципе, да, в каком-то смысле вы можете думать про эти сетки тоже как про в некотором пределе как про kernel, как про какие-то kernels.
Николай Михайловский: Хорошо, спасибо. Дмитрий Пензарь спрашивает: «А получается ли, что есть аналогия с Support Vector Machines?» Все хотят каких-то аналогий.
Дмитрий Кротов: Да, хороший вопрос. Вы знаете, я, честно говоря, опять же про это никогда не думал, но, в принципе, наверное, вы можете думать про… Я, пожалуй, скажу, что я не знаю ответа на этот вопрос. Наверное, вы можете думать про памяти как про какие-то аналоги Support Vectors в каком-то смысле. Я так этот вопрос никогда для себя не формулировал, и над ним глубоко не думал.
(01:09:59)
Поэтому я, пожалуй, скажу, что… Если вам кажется, что такой взгляд что-то полезное про эти сетки или про Support Vector Machines, позволяет какие-то результаты получить, это было бы интересно. Но я про это не думал.
Николай Михайловский: Дмитрий Иванов спрашивает: «Добрый день. А можно ли как-то добавить в хопфилдовскую сеть спайки, например, через пороговую функцию активации? Если да, то были ли уже такие попытки?»
Дмитрий Кротов: Да, хороший вопрос. Насколько мне известно, не было таких попыток. Спайки можно… Опять же, все немножко зависит от того, каким образом вы хотите добавить спайки. Например, в каком-то смысле вы можете думать про эти бинарные хопфилдовские сети, которые могут быть либо классическими, либо современными. Давайте я эту картинку покажу. Это update rule для современной сетки, но с бинарными переменными. В принципе, вы можете думать про бинарные переменные как если она равна -1, то нейрон silent, он не стреляет, да, спайк, а +1 – когда нейрон стреляет. Вы можете моделировать спайки таким образом. В этом смысле бинарные хопфилдовские сети в каком-то смысле очень похожи на Spiking Neural Networks. Опять же, похожесть на таком метафорном уровне – это одна вещь, какие-то такие интересные результаты – это другой вопрос. Насколько мне известно, я не видел ничего такого, чтобы люди обнаружили какие-то реально, что ли, прорывные результаты в области Spiking Neural Networksс помощью моделей Хопфилда. Но, может быть, действительно, в будущем это произойдет. Но в каком-то смысле вы можете думать про них как про Spiking Neural Networks, indeed.
Николай Михайловский: Спасибо. Давайте немножечко отступим от Q&A и посмотрим, что нас спрашивают в чате. Так, Лео Шерстюк спрашивает: «Как сеть Хопфилда концептуально связана с вниманием? Второе – разновидность первого? Можно ли сказать, что Хопфилд – это внимание, которое мы запоминаем по всему датасету, тогда как внимание работает внутри одного объекта/батча?»
Дмитрий Кротов: Можно, я отвечу сначала на второй вопрос? Хопфилдовские сетки, они очень такие, что ли, гибкие, flexible. Их можно использовать в самых разных, что ли, контекстах. Действительно, в обычном трансформере, когда у вас есть keys, queries, есть values, вы действительно эти памяти динамически подстраиваете. Это абсолютно тривиально сделать с точки зрения Хопфилда, в этом смысле, может быть, те примеры, которые я обсуждал в этом докладе, они больше говорят про… они больше, что ли, создают впечатление, что памяти должны быть как-то выучены раз и навсегда, но, в принципе, это не так. Памяти могут быть динамические, меняться для каждого батча, с точки зрения Хопфилда в этом нет абсолютно никакой проблемы. В этом смысле сетка Хопфилда в формулировке этой статьи или в формулировке статьи Hopfield Networks Is All You Need – это более общий способ думать про механизм внимания, он просто более общий по более или менее любому измерению, в котором вы хотите на него посмотреть. Не надо думать про Хопфилда как про какой-то такой очень, что ли, restricted объект, который требует, чтобы обучение было сделано в прошлом, а в процессе инференса памяти не меняются, это не так. Очень легко использовать эти сетки самыми разнообразными способами.
Ответ на первый вопрос. Я действительно думаю, что что хопфилдовская конструкция – это в каком-то смысле такой математически правильный способ думать про механизм внимания, потому что он намного более концептуальный, чем просто думать про него как про softmax, который мы динамически подстраиваем, и с точки зрения keys, queries and values.
(01:15:03)
Николай Михайловский: Хорошо. Спасибо. Булат Загидуллин спрашивает: «А как находить это количество локальных минимумов, если оно априори неизвестно?» Видимо, вопрос относился к конкретному месту в докладе. Дмитрий, вы понимаете, о чем конкретно речь?
Дмитрий Кротов: Да, я думаю, что вопрос в каком-то смысле общий, то есть, грубо говоря, ответ на этот вопрос, он такой, довольно, что ли, стандартный в Machine Learning. Если у вас есть какая-то задачка, которую вы решаете, то количество памяти в этой задачке – это будет гиперпараметр, то есть вы тренируете сетку с каким-то одним количеством памяти, с другим количеством памяти, с третьим количеством памяти, и затем смотрите на то, как хорошо ваша сетка работает на validation set, и дальше вы выбираете тот параметр, который лучше всего работает на validation set, и вы надеетесь, что он тоже будет хорошо работать на hold-out test set. В каком-то смысле эта задача всегда решается вот таким образом. Количество памяти – это просто гиперпараметр в этой сетке, вы работали с ним как с обычным гиперпараметром в Machine Learning моделях, с которыми вы обычно работаете.
Николай Михайловский: Спасибо. Павел Адаменко у нас поднимал руку. Павел, пожалуйста. Алло. Все прошло. Ладно, случайно поднял. Все, хорошо. Тогда мы оставляем это, ничего, ничего, ничего, продолжаем с вопросами. Пол Эйл спрашивает: «Хотелось бы услышать чуть больше ваших комментариев про работу с моделью гиппокампа».
Дмитрий Кротов: Хорошо, спасибо большое за вопрос. Тогда я про нее немножко что-нибудь скажу. В гиппокампе такая классическая, что ли, картинка, которую люди в neuroscience используют, она состоит в следующем, что у вас есть область, которая называется entorhinal cortex, которая на этой диаграмме этим прямоугольником показана, и дальше информация… Entorhinal cortex – это не часть гиппокампа, а эта часть – это гиппокамп. В гиппокампе есть несколько областей, которые называются dentate gyrus, СА-3, СА-1 и так далее. Есть такая система, когда информация, она вдоль этого гиппокампа пропагирует в нейронной сетке. Это такая очень упрощенная картинка.
Чуть более детальная картинка показана справа, и здесь есть очень интересная область гиппокампа, которая называется СА-3. Что интересно про СА-3, что в ней есть много очень рекуррентных связей. Эти стрелочки, которые показаны красными линиями, они отвечают следующему, что вы берете какие-то нейронные клетки в СА-3, и они аксоны посылают назад в СА-3, есть какая-то такая петля, в которой очень много рекуррентности содержится. По причине того, что это действительно такая очень рекуррентно связанная область, и по многим другим таким более, что ли, психологическим причинам, потому что, как, наверное, вы знаете, есть всякие интересные эксперименты, когда, например, если… Сейчас такие операции не делают, но когда-то давно, пока люди не поняли, к чему они приводят, такие операции делали. Если у человека, например, была эпилепсия, то хирург открывал головной мозг и вырезал гиппокамп, и после этой операции человек, в принципе, нормально функционировал. Но у него возникала такая очень сильная, что ли, deficiency, которая состояла в следующем, что он абсолютно не помнил, что в новой памяти. Он прекрасно помнил все, что с ним происходило до процедуры, когда гиппокамп был извлечен, но он не мог создавать долговременной памяти, которая связана с событиями, которые происходили после операции.
(01:20:04)
Например, есть такой известный пациент, за которым доктор наблюдал 20 лет, и каждый день, когда доктор встречался с этим пациентом, доктор представлял себя, как будто это случалось в первый раз, и это продолжалось на протяжении 20 лет каждый день, потому что человек просто не помнил того, что он разговаривал с доктором вчера. Есть, действительно, очень много всяких причин, которые позволяют прийти к заключению, что гиппокамп – это очень важная область для памяти.
Что интересно, интересно следующее, что есть такой интересный pathway (01:20:47) в гиппокампе, который идет между областью СА-1 и entorhinal cortex, и есть connections, которые показаны синенькой стрелочкой здесь, которые посылают информацию из entorhinal cortex в СА-1, и есть стрелочки, которые идут в обратном направлении. Если вы думаете про эту систему с точки зрения этой математической модели, то вы могли бы думать про область entorhinal cortex как про синенькие нейроны на этой диаграмме, которую я показывал на предыдущих слайдах, а про нейроны СА-1 как про зелененькие нейроны в этой математической модели. Это один способ эту модель вложить в эту известную архитектуру.
Второй способ состоит в том, что можно думать про разные группы клеток в СА-1 как про зелененькие нейроны или про синенькие нейроны. Например, в СА-3 есть такие клетки, которые называются place cells, которые начинают стрелять, когда животное находится в каких-то определенных положениях пространства, в котором это животное бегает, например, мышка. Есть другие клетки, которые никак не связаны с пространством вообще, есть тоже такая возможность думать про разные клетки в этих областях как про разные нейроны в той математической модели, которую я обсуждал на предыдущих слайдах. В этом основная идея.
Николай Михайловский: Спасибо. Age Adol спрашивает: What are the privileges of using of Hopfield Networks over attention mechanism? Do they suffer from the same progress of RNN Networks such as Vanishing and Exploding Gradients?
Дмитрий Кротов: Да, я думаю, что на первую часть вопроса я в каком смысле уже ответил, что одно из преимуществ, над которым можно было бы думать, состоит в том, что сетка Хопфилда, в отличие, от механизма внимания, это рекуррентная сетка, и вы можете на механизм внимания взглянуть итеративным способом, что вы сначала фокусируетесь на каком-то таком высоком уровне, что ваше внимание очень дефокусировано, а потом в течение рекуррентных апдейтов вы постоянно это внимание более уточняете. Кажется, что это интересный способ обобщить механизм внимания, и есть интересный вопрос, насколько в практических задачах это полезное обобщение. Это вопрос эмпирический, я его не изучал лично, и я не знаю ответа. Я думаю, что никто не знает.
Теперь про Vanishing and Exploding Gradients. Это рекуррентная сетка, поэтому, в принципе, действительно, могут быть Vanishing Gradients запросто. Но это действительно какой-то прайс, который нужно платить за рекуррентность. Но опять же, в каких-то таких простых задачках, с которыми я личные игрался, у меня никогда не было, что ли, сложностей эти сетки натренировать. Я применял к каким-то задачкам какую-нибудь банальность типа EMNIST classification или ___, (01:24:22) или к каким-то простым задачкам на графах, и, в принципе, да, нужно следить за Vanishing Gradients, иногда это может быть проблемой. Но, в принципе, всегда можно выбрать гиперпараметры таким образом, чтобы система тренировалась. Это такая общая проблема рекуррентных сетей, конечно, и в каком-то смысле в Хопфилде я не вижу никакой причины, по которой она была бы менее severe, но в то же время ее можно избежать.
(01:24:58)
Николай Михайловский: Спасибо. Григорий, привет, Григорий Сапунов спрашивает: «Какие типичные размеры современных сетей Хопфилда?»
Дмитрий Кротов: Хороший вопрос. Опять же, все упирается в то, что применений пока что очень мало. В тех применениях, которые… Если вы про какую-нибудь такого сорта задачку разговариваете, про классификацию каких-то иероглифов, например, то количество памяти должно быть, по крайней мере, не меньше, чем количество классов в этой задачке, а желательно больше.
Если вы говорите про эту систему с иммунной классификацией, я, честно говоря, забыл, какие гиперпараметры у них были, но вы можете взглянуть на статью. Они были не очень безумные, не очень большие. Но в этой задаче сетка Хопфилда так применяется более, что ли, как сказать, онлайн, да? Она действительно применяется больше в контексте механизма внимания, то есть она подстраивается на каждый батч. Да, это зависит от задачи, зависит от задачки, в каждой задачи эти параметры будут варьироваться.
Давайте я какой-нибудь такой простой пример скажу. Если вы, например, хотите решить задачу об EMNIST classification, то разумно количество hidden neurons держать… Допустим, вы хотите решить EMNIST classification на fully connected, pixel permitation environment EMNIST task. (01:26:51) Тогда разумно держать параметр о количестве памяти в районе 2 тысяч нейронов, такого сорта. Он не должен быть каким-то безумно большим, не должен быть каким-то очень маленьким. Это всегда гиперпараметр, и вы должны с ним поиграться на той задаче, над которой вы работаете.
Николай Михайловский: О’кей, спасибо. Вадим Каликин спрашивает вопрос, который я хотел уже спросить в конце. «Спасибо за очень интересный доклад. Подскажите, есть ли открытые имплементации сетей Хопфилда в открытом доступе?»
Дмитрий Кротов: Да, вы знаете, есть, и много. Если вы просто… Во-первых, обе эти статьи имеют GitHub repository. Я, на самом деле, я сейчас заканчиваю еще одну статью тоже на эту тему, и я очень надеюсь ее положить в архив в ближайшие несколько недель, я тоже планирую вместе с этой статьей положить в репозиторий, который я написал, в котором эти сетки тренируются, применяются и так далее, и так далее, и так далее, к несколькими разным задачам. Да, но, в принципе, если вам прямо сегодня хочется поиграться, то взгляните на репозиторий, в который группа Хохрейтера положила. Они написали несколько блогов очень хороших.
Потом, есть еще, знаете, что? Есть еще такой человек, ___, (01:28:28) который написал несколько очень интересных блогов на эту тему. Он сделал разные коллабы, в которых вы можете сделать memory retrieval, можете выбрать ваши памяти. По-моему, он не писал шаг для тренировки, но действительно, он сделал очень-очень приятные такие коллабы, в которых можно с этими моделями легко поиграться. Поэтому, да, просто посмотрите на GitHub. Если у вас есть вопрос, какая лучше, какая хуже, пошлите мне e-mail, и я постараюсь помочь с этим тоже.
Николай Михайловский: Спасибо. Анонимный посетитель спрашивает: «В разборе статьи Hopfield Networks Is All You Need прочитал, что сеть запоминает и пример, и его инверсию, то есть у них одинаковая результирующая энергия. Значит, можно сказать, что reflection symmetry определенным образом уже присутствует в схеме. Можно ли как-то дополнить архитектуру, чтобы получить, например, rotational symmetry для изображений?»
Дмитрий Кротов: Да. Можно, я немножко объясню математическую причину, откуда reflection symmetry возникает? Reflection symmetry возникает собственно из этой формулы. Если вы посмотрите на эту формулу, и возьмете вектор сигма, и умножите все элементы этого вектора на -1, то есть возьмете, все -1 замените на +1, а +1 – на -1, если вы это сделаете, то видно, что энергия не поменяется.
(01:30:14)
Это происходит в такой очень самой-самой простой модели Хопфилда с квадратичными. Если вы посмотрите на более нелинейные версии этих моделей, то это свойство уже не выполняется. Простой пример. Представьте себе, что у вас функция f – это функция x cubed, кубическая функция, то есть вместо квадратичной вы смотрите на функцию третьего порядка. Тогда это уже не так, и тогда у вас если вы сделаете рефлекцию от… умножите вектор сигма на -1, то энергия поменяет знак. Поэтому это свойство немножко зависит от того, в каком классе моделей вы работаете.
В контексте стандартных моделей Хопфилда это свойство, скорее, обычно воспринимается как негативный аспект модели, чем как позитивный, по следующей причине, потому что если вы хотите запоминать какие-то памяти, то у вас помимо памятей, которые вы хотите запомнить, будут еще их отражения. Не очень понятно, зачем это нужно, и не понятно, чему это соответствует. Это что касается reflection symmetry. Но ваш вопрос, он очень глубокий и интересный по следующей причине, что вы можете поставить более, что ли, концептуальный вопрос: как вообще любую симметрию, которая уважается задачкой, с которой мы работаем, закодировать в эту систему? Это очень правильный и интересный вопрос, на мой взгляд. Опять же, это вопрос исследования, то есть я не знаю на него ответа, но, в принципе, это очень интересный вопрос про то, действительно, как можно написать функции энергии так, чтобы они уважали какую-то симметрию задачи. Я думаю, что это возможно. Конкретно с rotational symmetry – я не знаю.
Можно, я еще один пример приведу? Например, даже в таких моделях, как то, что мы называем модель b, это модель софтмакса, в этих моделях есть симметрия. Математические вы можете ее видеть следующим образом. если вы посчитаете производную от энергии, то оказывается, что эта производная пропорциональна матрице гессиана от матрицы вторых производных от лагранжиана в некотором смысле. Оказывается, что эта матрица вторых производных в большинстве моделей практически положительно определенная, но не всегда, в ней часто возникает нулевая мода. Эта нулевая мода как раз и отвечает симметрии задачи. Действительно, уже во всех этих моделях есть какая-то такая, что ли, остаточная симметрия, которая, скорее, пока что воспринимается как какой-то такой артефакт задачи. Но действительно, это очень интересный вопрос про то, как этот артефакт обратить во что-то полезное. На мой взгляд, над этим очень-очень интересно подумать.
Николай Михайловский: Спасибо. Дмитрий, у меня еще есть вопрос, как мне кажется, практически очень важный: а как учить современные хопфилдовские сети? Со старыми хопфилдовскими сетями, там было множество разных методов обучения – и Storkel (01:33:37) learning rules, и back propagation, и чего только нет, я не большой специалист, но их там, условно, было бы десятки, разных методов обучения классических хопфилдовских сетей. Как учить современные хопфилдовские сети?
Дмитрий Кротов: Да, замечательный вопрос. Опять же, ответов много. Во-первых, можно ли учить каким-то простым способом, например, следующим. Представьте себе, что вы делаете few-shot learning task, тогда у вас есть какой-то набор, небольшое количество примеров, и вы можете просто их положить в памяти, просто взять дату, которую вы видите, и положить в память, как есть, такой самый простой способ учить.
Чуть более сложный способ учить – с помощью, например, back propagation fulltime, это то, что Миша Бурцев спрашивал. С помощью back propagation fulltime можно учить следующим образом. Вы берете хопфилдовскую сетку, вы развертываете ее по времени на какое-то количество шагов, и дальше возникает такая Feedforward Neural Network с shared weights, которая анфолдит на finite number of steps ___.
(01:34:54)
Вы просто тренируете ее с помощью back propagation на той задаче, которая вам интересна. Это второй класс методов, которые могут использоваться.
Есть третий класс методов, которые больше относятся… Они в том же, что ли, universality class находятся как модели типа способы обучения с помощью Hebbian learning, с помощью Storkel (01:35:19) Rule и так далее, и так далее, и так далее, такие методы, которые, что ли, более такие биологические в каком-то смысле, потому что… Биологические в том смысле, что это не back propagation. Такой способ обучения тоже существует. Например, опять же, мы с Джоном предложили некий способ обучать Feedforward Neural Network на каких-то простых задачах, вы можете посмотреть статью, на ней есть два автора, я и Хопфилд, она опубликована в PNS в 2019 году. В этой статье мы предлагаем некий метод, который inspired by Hebbian learning, то есть такой биологический способ тренировки нейронных сетей, и оказывается, что его можно очень хорошо применять к современным сетям Хопфилда тоже.
В принципе, я бы сказал, что есть много разных способов, по крайней мере, эти три класса способов, и в каждом из этих трех классов есть еще много разных особенностей. Как минимум три класса есть.
Николай Михайловский: Спасибо. У меня еще, наверное, если больше у слушателей наших не возникнет вопросов, еще последний вопрос, и будем закругляться. Вопрос следующий. Значительная часть успеха глубокого обучения состоит в том, что, с одной стороны, у нас выразительная способность самого подхода очень высокая, а с другой стороны, в том, что мы можем конструировать различные как функции потерь, так и подходы к обучению, которые позволяют решать задачи разного толка: распознавание речи, какой-нибудь CTC Loss, какой-нибудь для множественной классификации Triplet Loss, Cross Entropy и так далее. Можно ли подобный некий аналог функций потерь применить для обучения современных хопфилдовских сетей?
Дмитрий Кротов: Да, можно. Опять же, давайте подумаем таким способом, опять же, вернемся к тренировке этих сеток с помощью back propagation fulltime. Вы берете эту сетку, вы развертываете ее на двадцать шагов вперед во времени, например, и дальше вы применяете ту loss function, которая вам кажется наиболее правильной. Если вы хотите Cross Entropy, вы применяете Cross Entropy, если вы хотите Mean Squared Error, вы применяете mean squared error. В принципе, loss function абсолютно независимо от хопфилдовской сети существует. Любая loss function, которая вам кажется правильной для той конкретной задачи, которую вы хотите решить с помощью хопфилдовской сети, может быть применена для ее тренировки. Тогда сетка будет натренирована end-to-end, и вы можете ее применять на test set, в inference time и так далее.
Да, здесь никаких ограничений нет, то есть основные объекты в сети Хопфилда – это уравнение движения, я выскажусь на этот слайд, это уравнение движения, это первый объект важный, и второй объект важный – это функция энергии. В обычном Deep Learning уравнения движения более простые, чем эти, они более простые, потому что там нет уравнения, это просто конечное количество апдейтов, это просто вы берете дату, умножаете на веса, пропускаете через нелинейность и так далее, это просто какая-то функция, это не динамика. В этом смысле эта сетка немножко более богатая. То, чего нет в глубоком обучении, это второй формулы, нету функции Е. Это действительно необычный аспект сетей Хопфилда, потому что, когда вы можете написать такую функцию Ляпунова, то тогда вы можете интересным образом анализировать динамику этих нелинейных уравнений, и она становится tractable, и это позволяет с ней работать. Но, в принципе, все те трюки и технологии, которые люди изобрели в Deep Learning, loss function, не знаю, butch norm, это все абсолютно можно применять к хопфилдовским сетям без всяких проблем.
(01:40:04)
Dropout, просто любой метод, который вы обычно применяли бы в машинном обучении, какие-нибудь регуляризаторы, ___ и так далее, это все можно подключить к хопфилдовской сети тоже. Про хопфилдовскую сеть правильно думать как про такую новую архитектуру. Это первый вопрос.
Второй, конечно же, вопрос тоже очень важный, что в машинном обучении есть тоже какой-то набор нетривиальный архитектур, есть multi-ware perceptrons, есть Convolutional Neural Networks, есть attention, это все разные архитектуры. Хопфилд – это четвертый набор архитектур, еще один набор архитектуры, которые люди обычно не использовали до текущего момента, но сейчас начинают использовать. Он интересен для какого-то класса задач.
Дальше, конечно, вы можете Хопфилд сделать Convolution, это тоже довольно прямолинейно, то есть действительно нужно матрицу connection сделать не в ___, (01:41:14) а сделать более структурированной, Хопфилд можно сделать Convolution.
Связь Хопфилда с вниманием, мы ее уже обсуждали, то есть это такая система, которая действительно в каких-то пределах может редуцироваться к разным архитектурам, которые люди уже изучали.
Знаете, еще что можно сделать? Можно сделать pulling очень интересным образом в Хопфилде. Pulling можно делать следующим образом, когда эту функцию f вы выбираете таким образом, чтобы она наоборот была не очень нелинейная, а очень плоская. Если вы берете ее очень плоскую, тогда эта система сделает просто pulling по всем памятям. Эта система довольно flexible, и вы можете ее применять к разным задачам, с разными loss function. Вы можете, например, изучать задачи, когда вы берете какой-нибудь frontend и (01:42:10) Convolutional Neural Network, а затем наверху ставите ассоциативную память, такого сорта гибриды возможны. Здесь фантазия в каком-то смысле безгранична, и действительно, можно эти сетки применять самым-самым разнообразным образом.
Николай Михайловский: Я в порядке диалога скажу лишь, что есть же еще такая область, тоже не очень популярная, Neural ODE, Neural Ordinary Differential Equations. Которая, судя по всему, тоже каким-то образом с хопфилдовскими сетями рифмуется, потому что там у нас набор слоев заменяет… Мы говорим: набор слоев есть просто дискретизация некоего differential equation, а здесь у нас differential equation first, а набора слоев нет, то есть мы куда-то растягиваем в набор слоев, как вы предлагаете, при дерекуррентизации сети, когда мы back propagation in time делаем.
Дмитрий Кротов: Да, да.
Николай Михайловский: Возможно, там какая-то идеологическая рифма тоже есть.
Дмитрий Кротов: Да, я думаю, что идеологическая рифма, конечно же, есть. Действительно, когда я говорю про сетки Хопфилда, я всегда определяю их следующим образом, что это attractor networks with the energy function, все, что падает в эту большую категорию задач, с моей точки зрения, они имеют ту структуру, которая важна для того чтобы работать с ней таким образом, который я описал. Действительно, Neural Ordinary Differential Equations, это действительно нелинейные уравнения, но они могут иметь energy function, а могут не иметь. Если они имеют energy function, тогда это действительно Hopfield Network. Это даже не вопрос семантики, это, скорее, вопрос математики в каком-то смысле, потому что причина, по которой приятно иметь функцию энергии, состоит в том, что если вы функцию энергии не можете написать, то система может стать очень-очень сложной и неконтролируемой. Тогда, когда вы ее будете тренировать, вы, скорее всего, получите какую-то белиберду. Если у вас система допускает какие-нибудь странные аттракторы, например, то, когда вы ее начинаете тренировать, она может делать все, что ей задумается. Действительно, этот constraint, если вы можете ее, что ли, сузить из общей системы нелинейных дифференциальных уравнений в такого хопфилдовскую, когда у вас есть функция Ляпунова, которая гарантирует, что это attractor networks, и ничего другого, тогда она просто становится намного, что ли, более attractable, более…
(01:45:03)
С ней легче работать. На мой взгляд, это такой правильный шаг на пути усложнения по сравнению с Feedforward Neural Network, не сразу прыгать в общие нелинейные дифференциальные уравнения, а остановиться на этом промежуточном шаге, когда есть какая-то такая структура, которая позволяет, по крайней мере, гарантировать, что эти уравнения описываются фиксированными точками.
Николай Михайловский: Я сам виноват, у нас посыпались вопросы. Вадим Каликин спрашивает: «Если эта архитектура более общая, хопфилдовские сети, можно ли применить ее для Neural Architecture Search? То есть можно ли рассматривать ее как мета-архитектуру над известным нейросетевыми решениями?»
Дмитрий Кротов: Да, хороший вопрос, Вадим. Опять же, я никогда не пытался. Звучит как интересная идея. Если вы что-то интересное в этой области обнаружите, то, на мой взгляд, это было бы просто замечательно. Но я видел никаких работ по Meta Learning, (01:46:14) которые бы использовали Neural Architecture Search, которые использовали бы эти идеи, пока что. Но это звучит очень разумно, так что…
Николай Михайловский: Сергей Червонцев спрашивает: «Насчет Neural ODE, верно ли, что при использовании хопфилдовских сетей должна сохраняться размерность, если обобщить один hidden слой в несколько?»
Дмитрий Кротов: Сохраняться размерность чего?
Николай Михайловский: Давайте мы Сергею дадим возможность сказать человечьим голосом. Сергей, можете пояснить, что вы имели в виду? Кажется, что-то со звуком.
Сергей Червонцев: Да, в ___ (01:47:17) это все скаляры, правильно, если смотреть на эту формулу?
Дмитрий Кротов: ВИ, да, в смысле, это вектор, да? Индексы i бежит от единицы до n, nf в данном случае, то есть v – это вектор. Это векторное уравнение, если вы смотрите на первое уравнение, то в нем nf уравнений, и если вы посмотрите на второе уравнение, то в нем nh уравнений. Это такие нелинейные уравнения, которые все друг с другом взаимодействуют, и одна группа нейронов, она называется буквами vi, а другая группа нейронов называется буквами…
Сергей Червонцев: О’кей, смотрите, я так тогда сформулирую, через связь с RBF, то есть мы RBF можем стакать, и мы можем сделать те зеленые слои, которые у нас получились, хидденами, но инпутами поставить еще один слой, там будут свои хидден-слои, будет такая стака из двух. Как я понимаю, здесь одно из требований, которое вроде как нужно для того чтобы эта система была вообще сходящейся, это symmetry, чтобы веса μi были такими, же как веса iμ. Это, в том числе, подразумевает, что…
Дмитрий Кротов: Кстати, в RBM то же самое, в RBM эта симметрия есть.
Сергей Червонцев: Да, а есть ли требование того, что если я добавляю еще хидден-слои после этих зеленых, их должно быть столько же, юнитов, сколько в…
Дмитрий Кротов: Сколько хотите, хотите, в 10 раз больше, хотите в 10 раз меньше.
Сергей Червонцев: Просто я конкретно про эту связь с Neural ODE, когда я строю Neural ODE, у меня прямо требование, что если у меня есть какой-то слой, у меня выход должен иметь такую же размерность, как и вход, потому что я иначе не напишу динамику…
Дмитрий Кротов: Это все то же самое, что в RBM Literature, (01:49:23) вы можете рассматривать RBM с разным количеством hidden нейронов, и это абсолютно… вы просто строите эту башню онтоп…
Сергей Червонцев: Получается, что это обобщает еще как раз Neural ODE именно тем, что необязательно размерность должна сохраняться между хидден-слоями?
Дмитрий Кротов: Да.
Сергей Червонцев: Спасибо.
Николай Михайловский: У нас истекает уже второй час. Дмитрий, мы вас замучили уже.
(01:49:56)
Дмитрий Кротов: Нет, очень приятно так мучиться.
Николай Михайловский: Тогда я еще один задам вопрос. Глядя на эти уравнения, если я правильно их понимаю, мы видим, что у нас синие нейроны связаны с зелеными, и зеленые с синими, но не синие с синими и зеленые с зелеными. Какой в этом глубинный смысл?
Дмитрий Кротов: Вы знаете, никакого. Глубинный смысл только такой, что это очень простая модель. Вы можете запросто добавить в эту систему Lateral Connections, вы можете связать синие нейроны с синими и зеленые с зелеными, вы можете добавить стрелочки, которые идут вот так. Для такой системы тоже можно написать уравнение, и тоже можно написать функцию энергии. Опять же, этого нигде не написано, но, в принципе, если вы сядете и немножко попишите формулы, это легко сделать.
На самом деле, это очень интересно по многим причинам. Во-первых, опять же, если вы посмотрите на биологические сети, то в них очень много Lateral Connections, в каком-нибудь visual cortex. В visual cortex намного больше Feedback Connections и Lateral Connections, чем Feedforward Connections, биологически. В принципе, математически ничего не стоит их туда добавить, в эту модель. В смысле, не ничего не стоит, это некая математика, но это можно сделать.
Николай Михайловский: Нет, меня, например, это ведет в ту сторону, что ведь в обычных современных Feedforward-сетях у нас внутри слоя связаны нейроны в каком-то смысле.
Дмитрий Кротов: В каком смысле? Обычно они как раз не связаны, они связаны, может быть, в том смысле, что вы берете софтмакс от них или что-нибудь такого сорта, вы в этом смысле имеете в виду, связаны?
Николай Михайловский: Сейчас, нет… Ладно, Бог с ним, может быть, я эти формулы неправильно пока вижу. О’кей. Можно добавить такие Lateral Connections…
Дмитрий Кротов: Да, можно добавить Lateral Connections. Даже с точки зрения такого, что ли, computational principles, что ли, это тоже очень разумно, потому что вы можете эти Lateral Connections организовать таким образом, например, что вы что-нибудь показываете своей нейронной сетке, она возбуждает всякие-разные зелененькие кружочки, и вы можете эти Lateral Connections сделать такими, чтобы она создавала Sparcer Presentation. (01:52:37) Грубо говоря, вы можете это сделать так, когда вы что-то показываете нейронной сетке, чтобы вместо того, чтобы производить Tensor Presentation этого представления в пространстве памяти, возникало Sparcer-представление. Оказывается, что это, кстати, очень полезный мотив в Machine Learning. Я, может быть, пользуясь случаем, раз вы про это спросили, прорекламирую еще одну статью, которую мы тоже опубликовали в ICLR, которая называется так: Can a fruit fly learn word embeddings? Там мы буквально это используем, мы используем некую систему, которая inspired by fruit fly learning, для того чтобы построить систему, которая решает какую-то NLP-задачу. В ней как раз такого сорта connections оказываются очень важными.
Николай Михайловский: У нас здесь есть Григорий Сапунов, который даже задавал вопрос, который в своем довольно популярном в узких кругах Telegram-канале эту статью некоторое время назад разбирал.
Дмитрий Кротов: А, да? Понятно, понятно. Есть такой веб-сайт, мы его сделали, ___ (01:53:51) .org, если вы на него пойдете, там можно прямо с этой системкой поиграться, там можно всякие-разные ее вопросы спрашивать, и она показывает всякие-разные… что она делает. Грубо говоря, система устроена следующим образом, что у вас есть система таких нейронов, которые отвечают разным модальностям, и про эту систему правильно думать как про синие кружочки на предыдущий слайде. А эти кружочки – это зелененькие кружочки. Lateral Connections, во-первых, можно сделать прямо Lateral Connections, это ничего не стоит, но в этой системе, в «мухе» конкретной, вместо того, чтобы делать Lateral Connections так, чтобы все зелененькие кружочки были соединены со всеми другими кружочками, «муха» выбрала, или это эволюция «мухи» выбрала немножко другую стратегию. Она посылает connections от зеленых кружочков в один специальный нейрон, который обозначен этим серым кружочком, а тот серый кружочек посылает inhibitory signal к зеленым кружочкам.
(01:54:56)
Но, в принципе, это та же самая идея, что вы можете реализовать Sparcer Presentation в пространстве зеленых кружочков. Да, то есть, в принципе, говорю, тут фантазия в пространстве хопфилдовских сетей, она в каком=то смысле безгранична, потому что можно писать самые разнообразные модели, и для каждой конкретной задачи оптимальная модель, скорее всего, будет отличаться от модели в предыдущей задаче. В том же смысле, когда мы делаем Neural Architecture Search, мы не всегда… иногда мы применяем Comvolutional Neural Networks, иногда мы применяем трансформеры, а здесь еще Хопфилд появляется. Это тоже класс архитектур, который для чего-то полезен, но это такой очень flexible класс архитектур.
Николай Михайловский: Хорошо, спасибо большое. Если у нас нету больше вопросов, на самом деле, даже если есть вопросы, давайте закругляться, мы уже два часа разговариваем. Это безумно интересно, но половина народных масс у нас уже разбежалась, и не могу их винить.
Дмитрий Кротов: Да. Спасибо большое, что присоединились. Очень приятно поговорить, и очень интересные вопросы.
Николай Михайловский: Спасибо, до свидания, и всем до новых встреч.
(01:56:17) (Конец записи)