Спикер о работе: Старый опыт может быть поврежден после изучения новой информации. Биологический мозг может изучать новую информацию непрерывно. Эксперименты показали что сон играет важную роль в непрерывном обучении. Я начну доклад с описания особенностей и механизмов сна. После этого я представлю новые результаты моей лаборатории по применению принципов сна для моделей искусственного интеллекта.
Материалы:
https://ucsdnews.ucsd.edu/pressrelease/can-sleep-protect-us-from-forgetting-old-memories
https://elifesciences.org/articles/51005
https://arxiv.org/abs/1908.02240
https://www.kommersant.ru/doc/4458729
Статьи, которые упоминались во время вебинара:
https://arxiv.org/abs/2106.11908
https://arxiv.org/abs/2106.08446
https://arxiv.org/abs/2104.04132
https://arxiv.org/abs/2103.04780
https://arxiv.org/abs/2011.09526
Запись: https://youtu.be/r2O7UMlTDJY
00:00:00 (Начало записи)
Николай Михайловский: Снова добрый день. Я Николай Михайловский, генеральный директор компании NTR. Я с удовольствием приветствую на нашем очередном вебинаре который NTR проводит с Высшей IT-школой Томского государственного университета, Максима Баженова, UCSD, University of California, San Diego, с рассказом про сон, память и искусственный интеллект. Максим, передаю Вам слово.
Максим Баженов: Спасибо за приглашение. Я должен заранее, наверное, извиниться за то, что я буду возможно смешивать слегка терминологию, и вообще за некую возможную корявость речи, я должен признаться, что в последний раз я делал доклад на русском шталде, двадцать пять лет назад. Но буду стараться.
Тема доклада, как было уже объявлено, — сон, память и искусственный интеллект. Наверное, попытаюсь сделать доклад в несколько, может быть, в общем, таком ключе, не всегда вдаваясь в детали, детали могут быть найдены в наших публикациях или еще где-то. Собственно, первый вопрос – какая, собственно, проблема с искусственным интеллектом и зачем ему может быть сон, если, в общем-то, мы знаем, что многие вещи он решает очень успешно. То есть, есть миллион приложений или попыток приложений, от навигации в селф-драйве, машинах, всевозможные медицинские диагностики, и так далее и так далее. И, в общем, все это работает довольно хорошо. Действительно, с точки зрения, скажем так, различения кошек и мышек, без сомнения, искусственный интеллект – все эти существующие модели работают сильно лучше, чем эксперт, и в общем даже в более серьезных приложениях: приложениях в медицине, с точки зрения диагностики каких-то заболеваний, и так далее. Но при этом есть задачи, которые искусственный интеллект решает исключительно плохо, и плохо по сравнению даже с очень примитивными биологическими системами, в смысле какой-нибудь дрозофилы или что-нибудь подобного летающего, ползающего, и так далее. И среди их проблем это не единственное. Те, которыми мы интересуемся в плане нашей деятельности. Три, которые написаны здесь, на этом слайде. Одна проблема называется Catastrophic forgetting, собственно, это такая классическая известная проблема искусственного интеллекта, что при обучении новой задаче, как правило, предыдущие памяти будут успешно забыты. Существующие модели также, в общем-то, очень плохо дженерализуют то, на чем они обучались, скажем, так. Я сейчас покажу пример, но где и что если данные какого-то типа были использованы для обучения, то слегка отличающийся тип данных, предложенный для тестирования, может привести к очень непредсказуемым результатам. Ну и в общем related проблема, это связанная с этим проблема, это adversarial attacks, это тоже известный факт, когда можно изменить несколько пикселей, например в картинке, и модель будет предсказывать что-то совершенно отличающееся от того, что она должна предсказывать.
Например, Catastrophic forgetting. Есть намного более интересные иллюстрации, но это то, что я попросил моих студентов сделать как бы на коленке. То есть, например то, что написано слева – это, так называемое, anamnese dataset, наверняка многие с ним знакомы, это от руки нарисованные цифры, и можно тренировать neural network, распознавать их с точностью выше человека. Можно писать очень короткую программу и прекрасно она будет распознавать все десять цифр. Но, если разбить, например, эту задачу на две, таким образом что, не знаю, видите мою мышь или нет, что например первые пять цифр от нуля до четырех будут обучаться как первая задача, а с пяти до девяти как вторая, то то, что происходит, показано здесь, то есть очень быстро можно научить на первых пяти цифрах, но как только network начинает учиться вторым пяти, она очень спешно забывает первые пять. Дальше все, что она будет предсказывать, будут правильно предсказанные цифры с пяти до девяти, и от нуля до четырех тоже будут показаны как что-то типа от пяти до девяти. (00:05:21)
Проблема дженерализации отсутствие, точнее, Inability to Generalize. Очень интересная статья была в восемнадцатом году опубликована, которая мне очень нравится, когда обсуждают, например, self-driving cars, что-нибудь такого типа. То есть показан пример, что neural networks, тут, кстати, таблица довольно сложная, но идея очень простая, то есть neural network, вот они ровно на определенном типе данных, например на цветных попугаях или на других птичках, а дальше их тестируют на inmate, на картинках, которые ну либо черно-белые, либо добавлен шум. Первая колонка – это то, что делают люди, то есть performance у людей, например, хуже чем у этой network, но в принципе если людей научили распознавать попугаев цветных, то дальше они довольно успешно распознают их во всех других вариантах. Например, искусственная модель прекрасна при цветных, но почти случайным образом не распознает попугаев, которым добавили какие-то виды шума. При этом проблема не в том, что она не может их опознать, например можно натренировать ту же самую network, распознавать прекрасно попугаев такого пупырчатого типа с шумом, и она будет делать это очень хорошо, но тогда performance на цветных опять же, будет очень низкой. То есть, эта модель не способна generalize, если ее тренировали на определенном типе данных, она не может это распространить на другой тип данных. И проблема очевидна, что если self-driving car учат распознавать пешеходов в нормальных условиях солнечного дня, то где-нибудь во время дождя или тумана, что эта модель предскажет – совсем непонятно.
И я не буду очень много об этом говорить, но, собственно, я покажу, наверное, только один слайд, о котором рассказывал в конце, но тоже известная проблема adversarial attacks. Это классическая картинка, которую можно найти, если прогуглить, это первое, что появляется, если изменить несколько пикселей в картинки панды, network предсказывает панду как gibbon. И есть алгоритмы, которые успешно это делают: stop-signs, может быть, который классифицируют как stop-signs после небольшого добавления шума, который мы вообще не замечаем, он будет распознаваться как другой знак. Тоже очевидная проблема.
После такого введения я попытаюсь слегка затронуть три топика. Как я уже сказал, я буду стараться, так сказать, может быть, немножко поверхностно обсуждать их, но, с другой стороны, опять же если есть интерес, то детали все можно найти. Я немножко скажу о сне и вообще структура сна, и какие как бы ритмы присутствуют во время сна, и то, что мы знаем, собственно, о том, как устроен сон биологических систем. Потом я собираюсь рассказать о том, как то, что мы знаем, почему сон вообще играет роль в обучении, в формировании памяти у животных и у людей. И в конце я, опять же довольно поверхностно, скажу про наши некие результаты недавние, где мы пытались применить определенные идеи, связанные со сном, для neural networks с точки зрения борьбы с теми недостатками, которые я только что обсуждал на предыдущих слайдах.
Может быть, наиболее такой для меня самого самый показательный аргумент в плане того, что сон – это не просто состояние, когда ничего полезного не происходит. Примерно треть жизни, например, люди проводят во время сна, и это количество варьируется у животных от меньше до больше, но всем известные биологические системы имеют ту или иную норму сна. И более того, если посмотреть на таких продвинутых животных, начиная от крыс, мышей – чего-нибудь подобного и до человека, то те, у которых есть структуры мозга, которые как-то (…) друг на друга, то структура сна будет тоже очень похожей. (00:10:25) Здесь нарисована такая характерная структура сна, например человеческого. Мы начинаем с wake, потом мы довольно быстро попадаем в состояние глубоко сна, то есть это стадии три и четыре, и этот цикл дальше длится примерно час, может быть, плюс-минус, потом мозг переходит… Это глубокий сон, он также называется non-rapid eye movement sleep. За ним следует период REM-сна, и снова через две ступеньки мы переходим в глубокий сон и так далее. При этом в первой половине ночи, как правило, REM-Sleep, non-rapid eye movement sleep присутствует не очень много. А во время второй половины ночи он доминирует, и, собственно, все потом сны, которые мы помним, они являются во время REM-Sleep. Опять же, эта структура она очень типична, ее можно найти у мышей, у крыс, у каких-то лягушек, и, в общем-то, это еще раз говорит о том, что зачем-то природа создала такого рода организацию.
Эти разные стадии сна, о которых я говорил, характеризуются разными типами осцилляции, я совсем не собираюсь много об этом говорить, об этом можно сделать много отдельных докладов и слайдов о них. Но, например, во время глубоко сна есть характерная осцилляция, называется Spindle oscillations, поскольку они такие, похожие как веретено. Во время глубокого сна, так называемые Slow oscillations. Point, который я хочу здесь сделать, что сон – это в общем-то совсем не случайная активность мозга, это очень структурированная активность, и разные системы мозга очень активно взаимодействуют во время сна, основные три, которые я немножко буду упоминать – это Thalamus, Hippocampus и Cortex. Каждый из них генерирует свой некий ритм, и эти ритмы определенным образом взаимодействуют друг с другом и это меняется от одной стадии сна к другой, например, во время глубоко сна, кора генерит Slow Осцилляции и Спиндлы. Гиппокампус генерит, так называемые, еще высокочастотные осцилляции, Sharp и Ripples, и так далее. Месседж, который я хочу из этих слайдов вам доставить – зачем-то во время сна в биологическом мозге разные структуры очень активно генерят разные типы осцилляций, которые прямым образом взаимодействуют между собой. И если что-то в этой координации нарушено, то это ведет к очень серьезным проблемам высшей нервной деятельности, например во время шизофрении, в случае шизофрении, нарушена координация spindles и slow осцилляций, есть много проблем, связанных с памятью, обучением и так далее.
Что мы знаем по поводу того, какую роль играет сон в memory learning. Мы можем спросить разных специалистов из биологии neuroscience, зачем вообще нужен сон. Если спросить десять человек, то будут десять разных ответов, и все будут в какой-то степени правильные. Но вот один из них, то, что сон – и в этом есть большое количество данных, теорий и убежденности, — играет роль в обучении. Это имеет интересный печальный пример. То есть где-то примерно двести лет назад произошла случайная мутация в Италии в одной из семей, в результате чего некие протеины в таламусе стали неправильно сворачиваться. И в результате те люди, у которых это происходит, они потеряли возможность испытывать глубокий сон. Причем странным образом этот эффект проявляется в тридцать с чем-то лет. В каком-то смысле был целый documentary по ВВС об этом, я кусочек из него вырезал, некие discrepancy. То есть люди, которые знают, что у них есть это нарушение в этих семьях, и им еще нет тридцати. Они знают, что в какой-то момент этот эффект проявится и после этого в течение нескольких месяцев люди, у которых это произошло, они умирают. И первое, что наблюдается у них – это потеря памяти, они находятся в таком все время каком-то полусне-полубодрствовании, они не могут впасть в глубокий сон, но не могут и как бы перейти в состояние бодрствования и это очень печальный эффект. (00:15:58)
Если сделать search на гугле, то можно найти это видео. Это такое введение. То есть то, что мы знаем по поводу роли сна, что об этом говорить. Во-первых, нужно сказать, что есть разные типы памяти, которые довольно хорошо характеризованы в neuroscience, в психологии. Такое основное разделение, я просто буду упоминать несколько терминов. Во-первых, памяти делятся на declarative. Я не знаю, как переводится. Это память о фактах, о явлениях. Например, то, что я тут сейчас сижу в каком-то синем t-shirt – это будет вот такого типа. Другой тип – это non-declarative и наиболее главный из них это, может быть, procedural memories – это так называемые памяти, связанные с разными умениями: кататься на велосипеде, играть на гитаре, играть в теннис – вот такого типа.
И есть большое количество исследований в основном в психологии. Например, одно из типичных таких исследований, где, например, subject заставляют учить пары слов, например «река-лодка», и много еще подобных. А потом называют первое слово и предлагают закончить пару. Можно это протестировать сразу после обучения, можно протестировать через какое-то время позже, и это время может включать в себя или не включать сон. Естественно, что со временем происходит некое забывание. Если этот кусок времени после обучения включает в себя глубокий сон, то забывание существенно меньше. Показано то, что сразу после обучения, это то, что слегка забылось при наличии сна, а если сна не было, то забывание сильно больше. Это пример declarative memories. В случае procedural memories конкретно вот эта работа показывала, что глубокий сон особо не влияет, но REM-sleep, опять же, улучшает опять же, performance после периода REM-сна, когда тестирование производилось по истечении того времени, которое включало в себя REM-sleep.
Есть много studies, которые используют разные типы pharmacology, например, можно использовать какие-нибудь лекарства, которые будут усиливать определенные типы, в этом случае, например Zolpidem, он усиливает spindle oscillations. И здесь показана опять же performance на похожей задаче, запоминание, где performance у subject-ов, которые получили Zolpidem. Значит это те, которые нет – здесь стало даже хуже, там другое drug давали.
И это связано с увеличением spindle, которые я упоминал. Их становится больше, если в случае, когда drug давался.
Еще одна целая большая группа исследований, где всевозможные стимулы, например, звуковые или запахи используются сначала, например, при обучении, а потом во время сна их используют как cues для того, чтобы реактивировать эти памяти. И общая идея, что если это делать, то те subjects, памяти которых были реактивированы с помощью такого типа cues, они работают лучше.
(00:20:10) Здесь похожие стадии, где это, YanBum – группа из Германии, они использовали групповую стимуляцию. В этом случае просто белый шум, который был синхронизирован с волнами глубокого сна, и если в нужной фазе подавать такой стимул, что будет усиливать эти волны, то опять же, на похожие задачи, которые я описал, где люди запоминали пары слов, performance тоже увеличится.
Те памяти, которые были, скажем так, недавно выучены, если после этого следует период сна, то в целом они могут улучшаться, этот процесс называется Sleep related memory consolidation. То есть, консолидация памяти во время сна. Даже разные типы сна, скажем, NREM vs REM-Sleep предположительно оказывают немножко разный эффект на разные типы памяти, declarative vs procedural, но здесь нет такого черного – белого. В принципе, определенные тенденции наверняка есть, но мы до конца не понимаем, насколько они абсолютны и в какой степени относительны. И третий point, что есть разные варианты, как можно усилить, улучшить консолидацию, например, использовать какие-то стимулы и тому подобное.
Почему сон вообще играет какую-то роль в памяти и в обучении? То есть в принципе есть определенные понимания из мира science, о том, что происходит, и на нескольких следующих слайдах я попытаюсь это описать. Если посмотреть на какую-то биологическую network, она немножко напоминает такого тип network. Здесь есть вход, есть выход и есть необязательно fit какой-то, какая-то такая recover network, которая что-то из себя представляет. (00:22:30) И, в принципе, некая память в этой network можно представить себе как последовательность активации от входа до выхода определенных нейронов, которая произошла в силу каких-то их собственных связей, и тому подобного. И в результате обучения эти связи усилились, то есть это известный факт, я опять же еще упомяну об этом через пару слайдов. То есть, то, что в принципе мы предполагаем и знаем, что происходит во время обучения, что те нейроны, которые (…) в определенной последовательности – связи между ними будут возрастать. Например, если вот опять же все эти вот они так вот по очереди. Farine – в этом случае называю то, что они сгенерировали спайки, потенциалы действия. Другая память может быть представлена другой группой нейронов, между которыми есть другие связи – они могут пересекаться, и в результате есть другая память, которая тоже сформировалась. Соответственно, есть большое количество запоминаний, которые представлены такими последовательностями нейронов, между которыми связи в результате обучения усилились, и теперь, соответственно, если простимулировать что-нибудь где-нибудь вначале, то в итоге эта активация может побежать по этой network и привести к правильному ответу.
Пример того, что я сказал – это такой классический пример из мира science, это мышь, бегущая, ищущая сыр в лабиринте. Но в этом случае лабиринт очень простой. В гиппокампусе есть клетки, называются place cell, то есть эти клетки делают спайки, когда животные находятся в определенной точке того пространства, которые она у себя нарисовала. Собственно, у людей то же самое. Если как бы человек ходит по комнате, то в каждой точке этой комнаты какие-то нейроны будут производить спайки – это называется receptive field. Но, если мышь бежит по дорожке, то у нее клетка четыре файрит, потом два, потом один, потом три и, соответственно, что здесь важно – что они файрят в такой последовательности. (00:24:57) Как я уже сказал, в результате определенных механизмов пластичности в мозгу, связь от клетки четыре к два, от два к один и от один к три усилится. То есть, в следующий раз, когда ей нужно будет найти этот кусочек сыра, она может следовать тому, как у нее пытаются эти нейроны в голове производить спайки, и в итоге они приведут ее туда, куда ей нужно, чтобы съесть этот сыр.
Тот механизм пластичности, который отвечает за эти изменения – это собственно вот важный момент, потому что это то, что в принципе мы имплементировали, применили в тех алгоритмах, которые мы добавили к алгоритмам таким стандартным искусственного интеллекта. То есть обучение, изменение связей между нейронами в биологических системах происходит совсем не так, как в artificial neural networks. То есть как бы в стандартных deep learning networks мы все знаем, что back propagation – это классический алгоритм. Лучше него, в общем-то, ничего не работает, когда descend, когда эта ошибка распространяется назад и меняет все возможные веса, все подряд, чтобы минимизировать loss. И это global rule, что, в общем-то, хорошо и плохо. В отличие от таких вот global rules, которые используются в искусственных моделях, модель искусственного интеллекта, learning – правила обучения в биологических системах – они все локальные. Если две клетки связаны между собой и они, например, производят спайки в определенной последовательности: первая, потом вторая, — связь между ними будет усиливаться. И, в общем-то, эти изменения… Кажется никакого влияния, это немножко не совсем так, но в первом приближении так, на остальные связи. То есть опять же возвращаясь к примеру мыши, бегущей по лабиринту, если клетка один и потом клетка два файрят, потому что мышка убежала по такой дорожке, то связь между ними усилится.
Соответственно, возникает вопрос. Еще раз – память в биологической network представлена в виде связей, которые усилились по сравнению с base lines, с тем, чем они были изначально. И возникает вопрос: можно ли организовать так, что эти паттерны, эти вот последовательности нейронов, которые спайкают, повторялись сами собой, без внешнего возбуждения, без внешнего входа. Во время процесса обучения, еще раз, то есть, когда мышь бежит по лабиринту, например, скажем, пять клеток делают спайки в определенном порядке. Теперь мышь спит. Она никуда не бежит. Но поскольку связи между этими нейронами стали сильнее, то в случае некого случайного такого шума, попадающего на систему, эти пять клеток будут, скорее всего, производить спайки в той же самой последовательности. Это, собственно, основной принцип, вся идея того, как сон влияет. Сон делает очень много всего для обучения, но базовой идеей почему, что происходит – это то, что если какие-то нейроны имеют усиленную связь между ними, то во время сна они с большой вероятностью будут производить спайки в той же самой последовательности.
Вот иллюстрация того, что я сказал. Это мышь, которая спала, еще до этого ничего не знала, теперь она бегала по лабиринту и эти пять клеток: красная, синяя, зеленая, желтая и фиолетовая – они производили спайки, в той последовательности, в какой ей было нужно, чтобы найти кусочек сыра. Теперь идея в том, что когда эта мышь спит, то поскольку связи между этими клетками стали сильнее, чем они были, чем какие-то основные связи, то без какого-то внешнего входа от зрительной системы, от чего угодно, эти же клетки будут производить спайки в той же самой последовательности. И, в результате, то же самое правило, те же самые механизмы изменения связей, которые работали во время обучения, во время бодрствования, они по-прежнему будут, если нужно, усиливать связи между ними во время сна. Еще одно наблюдение, которое тоже было показано, это то, что такой replay – это явление называется replay, — и то, что во время сна он происходит в таком ускоренном ритме. Есть такое кино, оно называется Inception, там показывают героев популярных. Они спят периодически и у них происходят разные actions во время сна. И они все время во время сна они ускорены по отношению к тому, что происходит во время изначального обучения. То есть в принципе то, что показано здесь – это реальные биологические данные. Например, если посмотреть в гиппокампусе это лучше видно. Здесь показано несколько клеток и когда мышь бегала по лабиринту из клетки они значит файрили в таком вот порядке. Дальше во время сна эти же самые клетки файрят в той же самой последовательности. Немножко есть ошибки, не совсем так идеально, но опять же это много таких паттернов, это только один пример. И здесь видно, что тоже один паттерн такой более сжат по времени.
(00:31:03) Еще раз, это явление, суммируя то, что я сказал, что если во время обучения какие-то клетки производят спайки в определенной последовательности, и собственно работа всей нашей нейронной сети на этом и построена. Когда какой-то visual stimulus, еще что-то, нейроны производят спайки и эти спайки организованы неким образом по времени, то это меняет связи между ними и дальше во время сна уже при отсутствии какого-либо внешнего воздействия, те же самые нейроны будут повторять все те же самые паттерны в нужной последовательности. И в результате этого всякие полезные вещи могут происходить в плане обучения.
Еще пара биологических слайдов. Опять же, немного упрощенная картина. Я не разделял эти две модели о том, что я сейчас рассказал про replay, declarative и procedural memories. Но, в принципе, если посмотреть на то, как происходит формирование памяти в случае declarative memories, то тут картина немножко сложнее. Поскольку вначале идея такая, что когда мы учимся чему-то в течение дня, то эта информация через таламус и кору в итоге запоминается в гиппокампусе изначально. Гиппокампус – это такая как flash memory, то есть, где формируются такие памяти о событиях, которые только что произошли. Дальше, во время сна, когда никакого входа в систему нет, происходит вот это взаимодействие между осцилляциями в гиппокампусе и коре, и эти недавние памяти они перекачиваются в кору. Если подумать, почему это сделано – в принципе это очень логично, потому что в принципе если мы хотим что-то запомнить новое и будем сразу это писать в нейронную сеть, которая уже переполнена нашими предыдущими знаниями, то произойдет, скорее всего, то, что я показал, то что называется Catastrophic forgetting, то что новые связи будут сформированы, а старые связи могут исчезнуть. Вместо этого природа решила, что нужно сначала записать в гиппокампус, во время сна. Опять же, в принципе тоже есть опасность того, что перезаписывание из гиппокампуса в кору может что-то здесь повредить но, по крайней мере, есть сильно больше времени, чтобы использовать некие механизмы, которые я тоже собираюсь немножко упомянуть, записать это более аккуратно. И эти новые памяти вставить в эту нейронную сеть, не повредив старые. И идея что для этого требуется серьезное количество времени, то которое мы спим.
Это пример опять же из медицины, очень известный Patient H.M. То есть, у этого человека что-то сделалось сильно неправильно с гиппокампусом, и в результате гиппокампус перестал функционировать. И он долго жил, и интересно то, что он абсолютно был не способен запоминать declarative memories, то есть можно было войти в комнату сто раз, сказать типа «Здравствуйте», и он каждый раз будет знакомиться заново. Но при этом памяти, которые были сформированы где-то за год до этого и дальше в прошлое они были успешно сохранены, то есть это идея то, что для этих памятей, для этих запоминаний гиппокампус уже был не нужен. Уже все было записано в кору. И так же он был способен успешно обучаться. Он научился играть на пианино, но, правда, не мог запомнить, что он научился играть на пианино, в силу того, что одна из них гиппокампус-independent memory, независящая от гиппокампуса, а вторая гиппокампус-зависящая память.
(00:35:17) В случае гиппокампус-независимых памятей… С procedural memories идея немножко другая – гиппокампус не вовлечет и вроде бы напрямую происходит запись в кору, но в этом случае изменения связанные с новыми знаниями сильно медленнее. Мы с вами знаем, что научиться таблице умножения можно за один день, а научиться, например, играть на пианино за один день вряд ли, или что-то такое. Можно учиться всю жизнь и не научиться. То есть идея, что здесь каждый новый элемент обучения чуть-чуть меняет что-то в нейронной сети, но при этом изменения настолько малы, что старая память не повреждена или имеет по крайней мере время успешно восстановиться за тот сон, который будет происходить после такого немедленного обучения.
Я знаю, что я тут очень много всего рассказываю, то есть надеюсь, что я еще не всех потерял слушателей.
Николай Михайловский: Нет-нет, слушателей вы не потеряли, но у нас есть вопросы. Как вам удобнее: дождаться конца, или сейчас попробовать отвечать?
Максим Баженов: Я, собственно, хотел сейчас перейти к следующей фазе, поэтому в принципе сейчас если биологические больше вопросы, может быть хорошо на них ответить сейчас.
Николай Михайловский: Я зачитаю вопросы и, пожалуйста, тогда у нас логический перерыв, — есть чат, есть QNА, задавайте вопросы. О.Л. говорит, что все вы уже ответили. О.Л. спрашивал по слайду с мышками. Как это переносится из гиппокампа в кортекс – в долговременную память?
Максим Баженов: Да, то, что во время сна. Ripples, которые я упоминал, они, собственно, являются элементами, которые эту память формируют. Собственно говоря гиппокампус сформировал эту память, ripples – это вот эти высокочастотные ивенты, они ее представляют. И они так посылаются в кору, и дальше в коре определенные клетки файрят в правильном порядке, и происходит это много раз. И те же самые правила обучения, которые я упоминал, они формируют эту новую память. Опять же, механизмы я, понятно, называю очень поверхностно и не совсем точно, но идея, что во время взаимодействия между этими двумя структурами во время сна, происходит передача из гиппокампуса в кору. Но что важно, при этом я хотел подчеркнуть, что во время сна кора имеет возможность, если какая-то память сидит где-то близко к тому, что ее пытаются записать, и эта память потенциально может быть потеряна, у нее есть возможность ее тоже проиграть и избежать ее забывания. Собственно этот момент, он довольно критический для объяснения, почему у людей вообще нет проблемы catastrophic forgetting. То есть даже если мы запишем что-то новое, что очень похоже на предыдущие запоминания и это может повредить старой памяти, то, что во время сна мозг имеет время эти старые памяти проиграть в силу того, что они по-прежнему записаны в виде весов. То есть, старые имеется в виду не то, что выучено было сегодня, или двадцать лет назад, или два месяца назад, это позволяет сохранить и ту и другую память. Их совместить и позволить нейронной сети вмещать и новую, и старую – без потери старого.
Николай Михайловский: Спасибо. Валерий Homini спрашивает, будет ли запись. Запись будет. Все записи выкладываем. Не все, а все записи, которые выступающие согласились выложить, они выкладываются на нашем сайте )…). (00:39:14) Также, через некоторое время выкладываются расшифровки. И то и другое через некоторое время. Записи выкладываются примерно через неделю, а позже. Пожалуйста, еще вопросы. Так, кажется, больше пока что вопросов нет. Давайте двигаться дальше.
Максим Баженов: Да, собственно, осталась последняя часть. Поскольку тема про искусственный интеллект, а пока я про него совсем ничего не говорил. И последние несколько слайдов будут, по идее, как раз об этом. (00:40:02) Возвращаясь к проблеме Catastrophic forgetting, о которой я упомянул вначале – этот же пример (…), который должен был научиться первой половине, то эта модель успешно выучит все эти цифры. Но если дальше учить вторую половину, то успешно забудет первую группу. Понятно, что эта проблема хорошо известна, есть разные методы ее решения, и то, что я буду рассказывать чуть позже, о роли сна, которую сон может играть в этом – это в принципе один из подходов. В целом все подходы делятся на два типа. Один называется… Я, кстати, не послал link, я могу послать. Тут написали review по поводу всех таких разных подходов, которое только что был опубликовано, и там это все описано подробно в деталях, но в принципе есть два главных подхода. Один называется rehearsal methods. Подходы, связанные с тем, что, ну, окей, то есть проблема с новым обучением в том, что мы учимся новым цифрам и старые цифры нам недоступны. Давайте мы их как-то сохраним. И когда мы будем учиться новым цифрам: от пяти до девяти, давайте мы туда добавим какое-то количество цифр от нуля до четырех. Это такой самый простейший метод, то есть в принципе для этого совершенно необязательно сохранять все картинки, которые были использованы для начального обучения. Где-то десяти процентов того, что было использовано для обучения изначального, будет достаточно. Если мы добавим десять процентов от task zero к task one, то есть task – это обучение будет состоять из всех новых images и еще где-то 10% старых, то, в общем, network ничего не забудет. Она успешно будет помнить и последние пять цифр, и первые пять цифр. Метод, конечно, не очень такой, скалируемый, поэтому есть успешные подходы, связанные с более интересными и сложными вариациями. В общем-то, это уже (…) и можно сделать какую-нибудь (…), какой-нибудь gun, который создаст модель, и эта модель будет способна генерить фактически старый images. (00:42:31) Или какой-нибудь out-in-coder написать, который тоже потенциально может генерить картинки, или что-то такое. Не обязательно даже на уровне пикселов, а какие-то более на уровне high-level features. Идея одна и та же – то есть какое-то количество старых данных можно либо сохранить, либо воспроизвести, создав правильную модель, и добавлять их все время к новому обучению. И таким образом тогда предотвратить забывание. В принципе эти методы работают очень хорошо, с точки зрения performance, но проблема в том, что они имеют ограниченную scalability, то есть в какой-то момент становится невозможным либо запомнить, либо создать модель всего. Другой тип подходов, к которому в принципе относится, может быть, немножко больше в том плане, что никакие данные не сохраняются – это так называемые regularization approaches. Наиболее известные из них так называемый EWC – elastic weight consolidation был опубликован года, наверное, четыре назад, google deepmind. Идея тоже довольно простая и красивая. Скажем, мы натренировали network на первых пяти цифрах, при этом какие-то веса в этой network явно были более важны для этой задачи, чем другие веса. Вот если мы поймем, какие из них изменились больше всего в процессе этого обучения – там немножко более сложные алгоритмы, — то мы можем эти веса заморозить или, по крайней мере, замедлить их изменение. И тогда новое обучение будет их повреждать меньше, а будет в основном изменять те веса, которые не столь важны для старых задач. И этот подход тоже работает в принципе неплохо, но он работает хорошо в основном, когда задачи сильно отличаются. Например, в случае того, что я здесь показываю, половина MNIST-а и вторая половина MNIST-а работают плохо. Хорошо работает, например, когда, например одна задача – в это MNIST, а вторая – какой-нибудь fashon- MNIST, то есть когда показывают штаны, рубашки и тому подобное. Идея, что при этом сильно другое подмножество пикселей используется и легче реализовать эту идею.
(00:45:00) Окей, то, что мы использовали идею из сна. Два ключевых момента, которые я описал, связаны со сном. Первый – то, что, во время сна происходит спонтанная активность network, которая позволяет реактивировать предыдущую память. И вторая идея, — что во время этой реактивации синоптические веса меняются, на основе вот тех локальных правил, которые я сказал, и позволяет, таким образом, например, если новая память пытается стереть старую, старая память может пытаться сама playback – проиграться и веса, отвечающие за нее, могут сами по себе восстановиться. То есть такая, conceptual идея.
Собственно, эту идею мы используем в алгоритме, который вот я тут в виде такого animation показываю. То есть идея такая, что, например, модель… Мы с вами показывали, скажем, такая довольно простая, deep learning network, несколько hidden layers, convolution layers, как правило, можно ничего с ними не делать, поскольку features в принципе они и остаются features. И, например эта network научилась какому-то количеству задач. Например, она изучила N-классов и хочет теперь выучить еще один класс – кошку. Кошка у меня иллюстрирует, что это awake, что мы эту модель приучим еще к одному классу в состоянии бодрствования, в нормальном состоянии, как мы обычно ее учили. Но это приведет к некоему повреждению старой памяти и обучению новой памяти. Но, дальше идея, что мы после этого эмулируем сон, и этот сон позволяет сделать то, что я только что описал – что network будет спонтанно активирована, что те веса, которые отвечают за старую память, если они еще не совсем стерлись, но они стали уже недостаточно сильными, чтобы проявиться во время распознавания. То есть если мы представим какие-то старые классы, то в этот момент они могут не реализоваться. Но поскольку эти трейсы еще вставлены в network, если теперь заставить ее спонтанно повторить вот эти вот паттерны, которые отвечают старым памятям, то эта network их может восстановить, и в итоге она будет успешно знать старые задачи и новую задачу.
Как мы это делаем? Поскольку мы не умеем делать, поскольку я уже сказал, что сон оперирует локальным (…).(00:47:46) Мы не может использовать propagation, который использовался для обучения этой network предыдущим классом, собственно, up to this point. То есть когда мы эмулируем сон мы, в той версии, в которой мы начинали мы ее explicitly, то есть напрямую отображали в спайковой neural network. И в этой спайковой neural network мы подавали шум и эмулировали локальные синоптические правила, которые меняли веса, после этого network возвращалась снова в artificial neural network и использовалась для последующих изменений. Еще раз, если у вас есть вопросы – спросите, пожалуйста. Идея такая. Мы берем стандартную deep learning network, мы ее тренируем на каких-то задачах, то есть она их знает, дальше мы учим ее новой задаче. И в этот момент старые памяти могли быть повреждены. После этого мы берем эту стандартную deep network, в которой есть веса: notes, bytes и так далее. Мы ее как бы мэпаем в спайковую neural network, где мы теперь эмулируем локальные learning rules. На вход ее подается просто шум, и этот шум, пробегая много раз по этой network, он меняет веса неким образом. Потом мы ее снова отображаем назад в artificial neural network и тестируем. И при этом оказывается, что старые памяти, которые были забыты перед сном, они восстанавливаются. Я сейчас покажу пример.
Например, вот тот же самый MNIST, можно взять все десять цифр, разбить на пары. Одна задача, например, мы учим четыре-пять, потом задача шесть-семь, и так далее. И эта матрица она немножко сложно выглядит, но идея очень простая, — что вот эти пять задач. Каждая задача – это две цифры обучения. То есть, например мы начали с того, что мы учим задачи три, которые есть четыре и пять. То есть теперь, в этот момент network прекрасно распознает четыре и пять, все остальные цифры она, естественно, не распознает, поскольку она никогда их не видела. Дальше мы эмулируем сон, как я его описал. Собственно, в этот момент еще ничего не забыто, и все что реально происходит – на самом деле, производительность немножко падает на той задаче, которая только что была выучена. (00:50:18) Следующее, мы учим эту network задаче четыре, которая есть цифра шесть и семь, и происходит то, что является Catastrophic forgetting. То есть сейчас эта network прекрасно знает шесть и семь, она распознает их без проблем, но четыре и пять с предыдущей задачи – ее performance падает до нуля. В смысле, то, что четыре или пять она будет все равно называть шесть или семь, она будет все называть шесть или семь. Дальше, следующая колонка показывает, что произошло после этого, если мы проэмулировали сон. То есть мы слегка потеряли performance, может быть даже не так слегка. На задаче новой, на четыре, performance упала до семидесяти процентов, но при этом мы восстановили от нуля до девяноста четырех процентов производительность на задаче три. То есть в этот момент network теперь с такой спешностью распознает четыре пять и шесть, и семь. И так далее. Дальше мы тренируем еще одну задачу, опять же network ее успешно учит, но забывает все предыдущее. Снова фаза сна, мы восстанавливаем и теряем процент на последней задачи, но при этом восстанавливаем большую часть performance на предыдущей задаче, и так далее. И в конце performance общее – порядка семидесяти процентов, а иначе она была бы порядка двадцати, потому что network помнила бы только последнюю задачу. Здесь, в этой статье, ее версия лежит тоже в rk, и мы сравнивали дальше на fashion-MNIST, на CUB-2000, это такие птички, dataset CIFAR10 и также сравнивали с разными еще методами, которые я упоминал:EWC, Synoptic Intelligence, и так далее. Об этом нет времени говорить, то же самое с Fashion MNIST, тоже это ускоренно пропущу.
Собственно, дальше: следующие четыре или пять слайдов иллюстрируют то, что мы пытались этот алгоритм применить к разному типу задач. Например, это случай, когда мы применяем его к dataset такого типа с разными птичками, их примерно двести классов, и мы их разделили на два класса, на две задачи. Первая половина сто классов и вторая – сто классов. Но идея такая же, что после обучения второй задаче, network успешно распознает все классы, относящиеся к этой задаче, но успешно забывает все предыдущие. После сна performance ее восстанавливается не полностью, но в значительной степени.
Один интересный момент – то, что происходит, в результате вот этой фазы сна – это то, что… Здесь нарисована корреляционная матрица активации в одном из hidden layer. Это network, то есть до сна, это вот в случае MNIST-а, то есть каждый блок представляет собой корреляцию, а если возьмем какой-нибудь hidden layer и возьмем все notes и сделаем, скоррелируем их. Например, в этом случае, мы подали на вход цифру ноль, и другой image ноль, и скоррелируем между ними. Поскольку активации будут похожие, корреляция будут высокая. То есть, диагональ показывает когда мы коррелируем эту усредненную корреляцию между картинками из того же самого класса, а off-диагональ будут те, которые соответствуют когда мы коррелируем активацию если мы подали цифру пять и цифру четыре. И вот то, что видно здесь – то, что корреляции остаются очень высокими. То есть network в силу всех изменений, которые там произошли, хотя диагональные корреляции, в общем-то, максимальные, off-диагональные многие из них все равно, сильно значительные. После сна происходит такая сильная декорреляция этой матрицы, то есть можно видеть, что диагональ осталась значительной, а все элементы вне диагонали упали корреляции. Теперь, например, сравнить то, что я показывал до этого – это шестьдесят пять здесь, стало двадцать пять. Это, конечно, не самый хороший пример, ну то есть это шесть и два скоррелировались на уровне 0,65 – корреляция была до сна, стала 0,25. Корреляция пять и два 0,63 — упала меньше чем 0,1.
(00:55:02) Мы, в принципе, еще раз показали, что этот алгоритм довольно успешно работает в случае проблемы catastrophic forgetting. То есть, если мы обучаем новый класс и мы хотим, чтобы старый класс не был забыт, то идея что мы, предполагая, что синаптические веса по-прежнему еще что-то представляют из себя, но уже не реализуются при тестировании. Если мы имплементируем фазу сна, то эти старые задачи в значительной степени оказываются восстановлены. Я упоминал другую проблему – дженерализации, связанной с тем, что если, например, тренировать network на каких-то images, типа вот этого велосипедиста, а показывать какие-то очень другие, то в общем performance очень сильно будет падать. Опять же, была у нас статья, ее можно найти, это ICLR, я не помню 2020 или 2019. Эти graphs, они оттуда, но в принципе они показали, что если мы применяем сон, то generalization улучшается у network, то есть это benefit generalization и также в случаях adversarial attacks. Скажем так, если network, которая натренирована на каком-то классе задач, и дальше, например, проблема – какое количество пикселов нужно переставить, чтобы сделать такой adversarial example, который будет ее full network, что она начнет предсказывать, что это gibbon, а не панда. То есть если network пропущен через фазу сна, то ее resistance к таким изменениям оказывается выше, то есть нужно больше поменять пикселей, чтобы в итоге image, который пытается обмануть эту network, чтобы он действительно успешно это сделал. Опять же, не буду вдаваться в детали, но в этой статье Generalization и adversarial attacks все эти картинки нарисованы, и они все обсуждаются.
Мы немножко пытались, но у нас не очень много времени было на это. Мы занимались немножко также recurrent neural networks. В этом случае мы тренировали network на sequences, не просто на отдельных цифрах, а на последовательностях, и опять же – есть две задачи и каждая имеет определенное количество классов. Recurrent networks бывают также успешны как и structural network. То есть, если ее тренировать на другом классе, то она забудет – вот здесь показано, например, task one восемьдесят процентов performance, на вот этих вот классах, а новый sequence она еще не знает. Дальше мы применяем этот сон – performance падает, и это всегда происходит. И здесь я могу тоже отдельно, если будет время, на эту тему философствовать, performance падает. После сна здесь происходит то, что здесь вот нарисовано. Теперь тренируем вторую задачу этой последовательности. Мы выучили сорок процентов, но при этом performance первой задачи упал до нуля, то есть она полностью забыла все эти предыдущие sequences. Ну и дальше, если мы применяем сон, то мы теряем здесь уже меньше на новой задаче, но восстанавливаем тридцать процентов старой задачи. Могу еще сказать, что эти цифры здесь сильно зависят от того, насколько мы пытаемся тем, как правильно сон имплементировать, и здесь мы не очень-то сильно старались. Это такой был, просто пример попробовать и посмотреть, что получится.
И немножко мы пытались в активной проектной лаборатории что-то для reinforcement learning, вот такого же типа применить. В случае reinforcement learning replay – в принципе это известный, вот например альфа-goa, который успешно выиграл goa. (00:59:16) То есть этот алгоритм успешно использовал replay, но в случае существующих моделей replay, фактически, данные во время обучения они сохраняются. И дальше во время replay просто случайные эпизоды из database вынимаются, и network на них продолжает обучаться. То есть, в этом случае мы показываем, что можно не сохранять никаких данных, а вместо replay, построенного на сохраненных данных, использовать replay как я его описал, и тут мы можем немножко уменьшить время обучения и улучшить performance.
Собственно, вот два conclusions, один такой более specific, а один более general. То есть тот алгоритм, который мы предложили, он работает лучше, чем regularizations-алгоритмы, которые я упомянул, скажем, WC или synoptic intelligence. Обычно то, что мы видим, он менее аккуратный, чем решения, которые используют сохранение данных. То, что я обсуждал: методы, которые либо сохраняют данные explicitly, либо создают модель, которая генерирует данные, то есть, то что SRA – алгоритм, который ступает этим методам, но преимущество в том, что мы не должны сохранять никаких данных. (01:00:55) Дальше я совсем не обсуждал бы, если, например, количества данных недостаточно для того, чтобы получить хороший performance, то, как я показал, что если network тренирована overtrained в каком-то смысле, на максимальный performance, тогда применение sleep replay-алгоритма, как правило, ухудшает performance немножко. Или больше, чем немножко. Но если количественных данных недостаточно, тогда, скажем, мы тренировали на MNIST-е, что performance типа сорок процентов. Тогда, если мы дальше применяем sleep replay, то performance job увеличивается где-то до семидесяти процентов, то есть без какого-то нового обучения. И еще такой интересный момент, что этот алгоритм применяется для очень разных networks: convolution neural nets, recurrent, reinforcement learning, также для разных проблем. Как раз тот же catastrophic forgetting, generalization, adversarial robustness.
И последний слайд — это общие conclusions. Собственно, что я хотел сказать вообще, что все биологические системы имеют sleep-фазу, и это период offline, период активности, когда вход в систему отсутствует. И этот период он очень похож между разными животными: от мышей до людей. Что мы believe, — верим – происходит во время этого периода, это так называемый replay, то есть когда в силу каких-то… Понятно, что памяти, которые сохранены, их очень много. И replay всех из них сделать невозможно. Но, некоим образом мозг выбирает во время сна, какие из них, может быть в силу того, что они больше шансов имеют быть повреждены новым обучением, в силу похожести на новое обучение, и так далее. Эти паттерны будут спонтанно повторяться, и это повторение не требует никакого входа, оно происходит просто в силу того, что эти паттерны уже представлены синаптическими весами в этой network. И дальше, что вот этот sleep-replay, он, в принципе, может быть вовлечен в очень много функций, не только continual learning – то есть то, что network не будет забывать старые задачи при обучении новых, но также увеличить robustness. Увеличить ее сопротивляемость шуму, позволить… Я всем об этом не говорил, но есть такая очень большое направление в этой field. Если мы учим что-то новое, то, как правило, мы не только не забываем старое, но наоборот, мы можем дальше старую информацию обрабатывать даже лучше, поскольку мы можем использовать это, то есть backward transfer. Или если мы чему-то научились, и мы учимся чему-то еще, то это что-то еще может обучаться лучше, если мы уже научились чему-то. Это называется forward transfer. Опять же, существующие искусственные модели интеллекта, они к этому совершенно не способны, и вот одна из идей, что сон он также вовлечен во все эти функции.
Ну и, собственно, вот моя лаборатория, все люди, которые это делали. Немножко дольше, чем нужно, но… Всем спасибо!
Николай Михайловский: Максим, спасибо большое за очень интересный рассказ. У нас здесь есть вопросы, довольно много, да и у меня есть кое-какие вопросы, поэтому давайте я сейчас позачитываю то, что у нас коллеги спрашивают. Пол Эйл спрашивает: «Нет ли работ по продолжительности сна у разных животных, и, в зависимости от этого, изменению объемов памяти? Это вопрос к потенциалу скэйлинга нейросетей. Это к вопросу, в каких случаях проще увеличивать объем памяти vs более плотной записи в существующей, так как уплотнение требует более долгое проигрывание старых данных, более длинный сон. Например, может быть есть какие-то животные с уникально коротким сном?»
Максим Баженов: Вот, я пытаюсь вспомнить. Известный факт, что, как правило, животные типа хищников – вот у меня собака, она спит, мне кажется, часов шестнадцать в день, как минимум. А животные, которые должны много ходить, и есть траву – типа коров и жирафов, они спят сильно меньше. Но я, честно говоря, не знаю сильно сравнительных… Поскольку в основном все эксперименты, которые вовлекают какую-то физиологию и так далее, они делаются, понятное дело, на мышах, в лучших случаях на кошках, на чем-то таком, поэтому у всех у них. То есть я не могу так конкретно сказать по поводу вот того, что было бы хорошо известно о корреляции. Но, как я уже сказал, сон явно играет много разных функций. Почему, например, лев спит долго. Например, не совсем обязательно обозначает, что ему нужно дольше спать, чтобы концентрировать его память. Более того, известно, что вот, например, replay, вот, что я говорил hypocampus cortex interaction, он в принципе происходит в первые два часа, плюс-минус, в начале сна. И дальше он начинает угасать. То есть, вполне возможно, что минимальное количество сна, которое необходимо для того, чтобы, в общем-то, восстановить память, оно может быть не двенадцать часов, а значительно меньше. И почему хищники, включая людей, спят достаточно долго, могут быть другие физиологические причины, которые играют также роль здесь.
Николай Михайловский: (01:07:11) Второй вопрос: исследовали ли вы вопрос исправления ошибок, выученных нейросетями? Например, вы знаете, что в training set попала ошибка, но переобучать модель невыгодно. Как забыть ошибочные данные?
Максим Баженов: Это очень интересная проблема, и даже были статьи по поводу того, что модели, которые, как правило, учатся очень хорошо – сложные модели, они имеют эту проблему более сильно выраженную, чем такие более простые модели, поскольку они очень легко учатся этим ошибочным данным. И, соответственно, дальше все это начинает производить неприятные последствия. То есть мы не изучали этот вопрос напрямую. Я могу себе вообразить, что если, например, известно, что какой-то subset был ошибочным, какие-то там данные в training subset, то если использовать правильную версию этого subset, если дальше train только на нем, то естественно возникнет catastrophic forgetting. То есть, дальше network прекрасно выучит то, что нужно исправить, но успешно будет пытаться забыть все остальное. И в этой ситуации если использовать sleep replay, или какие-то другие алгоритмы, то это позволит переучить ту отдельную часть, но, при этом, не забыв остальные. То есть мой ответ, что мы: А) Это не пытались сделать explicitly, но Б) это будет эквивалентно в каком-то смысле обучению новому классу, который в итоге… Я понимаю, что новое обучение будет напрямую конфликтовать с предыдущим, поэтому я до конца не знаю, как это сработает, но да, есть guess, что это будет хорошо.
Николай Михайловский: Давайте я немножечко здесь, наверное, прокомментирую и, может быть, доуточню вопрос. На самом деле все dataset, на которых мы учим, ну, почти все, — кроме, может быть, MNIST-а и fashion- MNIST-а – они «грязные», то есть, в них имеется некоторый уровень ошибок. Более того, есть такая очень важная тема, называемая semi-supervised learning. Да, когда мы, например, обучаем сети на небольшом dataset размеченном, когда разметка у нас дорогая, дальше берем большой dataset неразмеченных, размечаем нейросетью с ошибками. Потом на этом dataset обучаем заново нейросеть, она обучается немного лучше и так по кругу, по кругу, это называется iterative sinda-labeling. Вот, то есть, мы обучаем нейросеть зачастую на данных, заведомо содержащих ошибки. При этом известно, что сначала сеть не очень хорошо выучивает правильные данные, хорошо генерализуемые, а потом она начинает выучивать ошибки. Соответственно, может быть имеет смысл где-то в этом месте действительно устроить сон нейросети?
Максим Баженов: В принципе, это относится, на мой взгляд, опять же, здесь я просто начинаю немножко hand-wave, потому что мы такого явно не делали, но это связано с проблемой generalization, в каком-то смысле. Поскольку недостаток generalization в таких очень хороших моделях, которые всему хорошо научились, состоит в том, что они прекрасно выучили все statistics – то, что им показывали. Там, где какие-то отдельные не очень представленные даже samples того что, в общем-то, не нужно было учить, они, тем не менее, успешно выучились. Обратная сторона этого дела, что network плохо generalize. И то, что мы показываем, что сон может улучшать generalization, но это две стороны медали: с одной стороны, улучшает generalization, с другой стороны – падает точность на тех классах, которые были точно использованы для обучения. И в принципе, может быть, это неизбежный процесс, возможно, невозможно решить эти проблемы одновременно. Может быть, когда мы чему-то обучаемся, у нас есть неизбежная некая потеря точности. Но, в результате то, что мы получаем взамен – это возможность лучше generalize, это dataset на остальные ситуации. То есть, все эти ошибки я могу себе вообразить. Это было бы интересно попробовать. Если они как-то сильно отличаются от того, что network в целом учила, то они могут усредниться и их эффект может уменьшиться после всех этих эффектов, связанных со сном, просто в силу того, что у network станет менее precise на отдельных каких-то примерах, которые, может быть, не стоило ей учить.
Николай Михайловский: (01:12:32) Здесь еще две вещи, наверное, стоит отметить. Одна вещь состоит в том, что имеется, так называемый эффект double-descend, когда сеть сначала учится в режиме аппроксимации, а потом уже в режиме интерполяции. И, что удивительно, в режиме интерполяции сеть продолжает обучаться и лучше генерализовать со временем. Вторая вещь, действительно такие эксперименты провести можно, и это тема для отдельного, может быть, более узкого обсуждения. У нас есть аж семь вопросов от UNA. Я не знаю как вы там, выдержите ли вы, в полвторого все это, но тем не менее.
Максим Баженов: У меня будет, по крайней мере, будет excuse, что если что-то я не смогу ответить, то я скажу, что я просто уже сплю.
Николай Михайловский: Хорошо. Анастасия Батулина спрашивает: «У живых организмов запоминание коррелируется интенсивностью их биохимических реакций, эмоциями – у людей. Есть ли какой-то аналогичный механизм подкрепления у сетей?»
Михаил Баженов: Если вопрос «у сетей», в смысле искусственных сетей, то насколько я знаю – нет, а у биологических, у neural network, действительно например, во время сна те области мозга, которые были активно вовлечены в какое-то обучение предшествующее, например там motor или visual, что-нибудь, они более активны во время сна. И здесь большую роль играют, возможно, все вот эти нейромодуляторы, которые в целом отвечают за переход от сна к бодрствованию, и так далее, и в том числе изменяют активность отдельных кусков сети. То есть, это, если очень примитивно говорить, это shift-base некий в отдельных частях этой network, который может сделать более-менее активным, или что-то такое. То есть, на самом деле, это нейромодуляции и обучении и catastrophic forgetting и так далее, это еще одна huge-field. То есть, тут есть много разных интересных работ. Например, недавно сейчас статья Терри Синовского, они там использовали cable neural networks и симулировали эффект нейромодуляторов, изменяя… Можно сказать, bices в каком-то смысле, и показали, что если каждую новую задачу, когда изучается слегка изменять такой bice, то ее обучение будет меньше конфликтовать с предыдущей памятью, и так далее. Но это явно не исследованная, я считаю, даже близко в той степени, в какой нужно, в применении к искусственным моделям.
Николай Михайловский: Спасибо. Валерий Хаменя спрашивает. Много вопросов. Во-первых, как мозг различает, через какую память работать: через декларативную или процедурную?
Максим Баженов: В каком смысле это связано с pass ways, то есть когда мы например изучаем visual processing, он идет через таламус, идет в visual кору. Наверное, я не смогу дать очень определенного ответа. И ответ, наверняка, достаточно простой. Окей, я, может быть, вернусь к этому вопросу, если у меня что-то будет в голове, но вот так вот я… It’s a dishonest question.
Николай Михайловский: Также Валерий спрашивает: почему пути для запоминания для декларативной и процедурной информации настолько разные?
Максим Баженов: Здесь можно только в принципе спекулировать. То есть понятно, что есть некоторые типы информации, которым мы должны обучаться быстро. То есть, если мы можем учиться играть в теннис месяцами и годами и никогда этому не выучиться, то если какие-то… То есть, возможно происходит некая приоритезация того, что нужно запомнить немедленно и того, что можно запоминать на более длинном промежутке времени. Поэтому, с моей точки зрения вот эта dual-memory system модель, которую я описал, когда новые декларативные памяти записываются в гиппокампус и потом проигрываются чтобы отразить. Причем, это проигрывание происходит явно не за одну ночь. То есть в принципе идея такая, что гиппокампус очень plastic, что в него можно записать это, и при этом не бояться стереть что-то старое. Но переписывание в кору может по-прежнему происходить как в том примере с пациентом, у которого гиппокампус был разрушен, то есть памяти, которые не пострадали, были год или больше назад сформированы, более recent-памяти были, в принципе, повреждены этим. То есть явно, что процесс взаимодействия между гиппокампусом и корой происходит на протяжении длительного достаточно промежутка времени. Есть даже модели и идеи, что гиппокампус по-прежнему сохраняет индексы того, в случае каких-то декларативных памятей. Идея такая, что кора формирует какие-то… Скажем так, мы хотим изучить новую концепцию, которую мы никогда не знали, концепцию например, alien ship, что-то такое. Мы никогда не видели их. Но, в принципе мы видели какие-то вещи, из которых он состоит. Он состоит из колес каких-то, турбин торчащих, крыльев и так далее. То есть все эти элементы у нас в принципе уже сформированы и представлены в коре как такие базовые элементы. Теперь мы хотим создать новый класс, alien ship, который соединит те dots, которые до этого не были соединены: то есть правильные колеса, крылья, турбины, еще способность летать, исчезать и появляться и так далее. Это все вместе будет представлять класс, который мы никогда не знали: alien ship. То есть, соответственно, гиппокампус будет сохранять индексы того, что в коре будет отвечать за элементы, которые уже известны, соединив их вместе. И вот эта структура будет отвечать за вот эту новую декларативную память. И только после какого-то очень длинного времени она может стать гиппокампус-независимой совсем. С другой стороны, какие-то медленные… Возвращаясь к тому, почему это медленные skills, которые мы учим… То есть, это интересный вопрос на самом деле, тоже да. (01:20:00) Было бы неплохо научиться ходить или играть в теннис за один день. Но биологические системы это делать не умеют, возможно, это связано с тем, что все такие skills, как правило, были в muscles, и так далее. То есть тоже начинают спекулировать здесь. Но явно есть какая-то приоритезация по времени, то есть какие задачи мы должны запомнить сразу. И, если мы не запомнили сразу, то, в общем-то, может быть уже будет слишком поздно: нас кто-то съест или что-то еще произойдет, а какие-то мы можем запоминать, учиться сильно медленнее. Опять же, я думаю, related к первому вопросу, о котором я еще по-прежнему хочу подумать.
Николай Михайловский: Спасибо.
Максим Баженов: Не знаю, ответил ли я до конца.
Мужчина: Я думаю это такой вопрос, на который до конца ответить нельзя никогда. И еще один от Валерия вопрос. «Можно ли вызвать сонливость, назойливо переполняя гиппокамп декларативной информацией?»
Максим Баженов: Это тоже нечестный вопрос. На самом деле вот эта картина, которую я описал так красиво, что вот есть чисто сон и чисто обучение, и как бы они отвечают такому переходу, эта ситуация тоже достаточно упрощенная. Как раз сейчас один из проектов, который мы пытаемся сделать, коллаборируясь с несколькими экспериментальными группами. В принципе, мозг часто бывает в состоянии, когда какие-то части мозга больше спят, а какие-то части мозга могут бодрствовать. То есть, например, те волны, которые отвечают за сон, могут наблюдаться в одной части мозга, а при этом другие части, будут находиться в состоянии awake. У меня сейчас такая связность немножко угасает в голове, но, если, например, sleep deprivation, то есть когда людям не дают спать, — да, это не совсем может быть то, что имеется в виду, — как бы переполняя мозг какой-то информацией. Но, в принципе, это ситуация, когда мозг не имеет возможности попасть в состояние сна. И вот то, что происходит тогда, какие-то в то же время, когда в целом, человек ещё бодрствует, какие-то или кошка, или мышка, то какие-то части мозга начинают показывать волны, соответствующие сну. Они начинают проваливаться в сон. Если активно увеличивать такую сенсорную стимуляцию, то я не думаю, что надо делать такие эксперименты, или по крайней мере их сложно очень как бы проконтролировать, но… В принципе, я не могу исключить, что это вся potentiation, которая будет связана с большим количеством обучения, может триггер-эффект в регуляторной системе, который будет вызывать сон раньше. Но здесь это не связано. Это процессы вовлечены другие. То есть, вся подкорковая система, которая нейромодулятор, которая отвечает за переход от сна к бодрствованию, она должна в какой-то момент решить, что нужно триггер-сон раньше. И она сама по себе напрямую не связана с тем, насколько активно обучалась кора, поэтому в принципе, здесь ответ и «да» и «нет». Оно может так происходить, но не обязательно, потому что сон не вызывается сам по себе тем, что слишком много какой-то информации был обучен. То есть, сон-триггер, когда homeostatic pressure как бы… Но с другой стороны, опять же я так рассуждаю вслух, homeostatic pressure может привести к тому, что происходит такая депрессия, скажем, каких-то синоптических связей, будут происходить отдельные slow waves. Нет, я думаю, что локальный сон – да, может быть вызван быстрее, если какие-то элементы, по крайней мере, сенсорной стимуляции и так далее, будут переполнять…
Николай Михайловский: Скажем так, чисто анекдотически, многие мои знакомые, чтобы заснуть, например, слушают аудиолекции какие-нибудь, например, по философии. И таким образом, видимо, гиппокамп свой переполняют.
Максим Баженов: Может, да, собственно, сам по себе transition – переход ко сну, связан со многими процессами. Например, есть идеи, что определенные типы ингибиторных нейронов становятся более активными. Это начинает триггеровать первые медленные волны, и так далее. (01:25:07) И эти ингибиторные клетки такой баланс shift в сторону ингибиции может происходить в силу того, что длительное обучение будет депрессировать синапсы, и они становятся… В целом excitation немножко будет уменьшаться, баланс сдвигается в сторону ингибиции, и вероятность того, что сон может быть триггер – он придет раньше. Я знаю, что я сам себе немного противоречу, потому что я до этого говорил, что саппортная система все определяет, но все определяется каким-то балансом между ними. Есть нейромодуляторы, которые пытаются что-то сделать, есть синоптические изменения, депрессии и так далее, которые связаны с homeostatic pressure, и вот как их баланс сыграет роль, в какой момент, как произойдет переход от awake ко сну, вот, собственно, тогда и произойдет. И поэтому, если один из этих элементов он более активен в силу, например, активного обучения, то да, в этом может триггер – более ранний сон, как в вашем примере было сказано.
Николай Михайловский: Мы 10 минут еще вас помучаем и отпустим спать.
Максим Баженов: Тогда у меня будет активный consolidation.
Николай Михайловской: Хорошо, более простой вопрос. Дмитрий Башкирцев спрашивает: «Влияет ли как-то цвет шума на поведение сети?»
Максим Баженов: Единственное, что мы пробовали. Я имею в виду, что первый вопрос соотносится вот с той ситуацией, когда мы эмулируем сон и подаём шум. То есть мы, в общем, использовали такой poison distributing. Поскольку мы симулировали спайковую network, то фактически в качестве шумового хода мы использовали такие spike trains, которые распределены по Пуассону. При этом, средний этого Пуассона мы брали из того, что network видела во время awake. То есть, в принципе, если это делать на уровне отдельных пикселов, то есть, например, если всё время запоминать среднюю активность на каждом пикселе и потом во время сна эмулировать вход на этот пиксель по Пуассону распределённый, но со средним. Вот то, что было средним за всю предыдущую жизнь этого входного элемента, то это работает лучше. Если это не делать, то работает всё равно, но немножко хуже. Но вот онлайн, мы используем только poison distributing. Я, честно говоря, не думаю, что это играет роль, но мы не тестировали ничего, кроме вот такого распределения, как я сказал.
Николай Михайловский: Спасибо. Дмитрий Прохоров спрашивает. «В примере с задачами на обучение сети парами чисел использовались конкретные пары чисел, то есть задачи классификации класс А или класс Б? Проводился ли эксперимент, в котором в такой паре при обучении использовалось одно конкретное число в качестве класса А и вместо второго класса любые другие числа, то есть задача классификации класс А или не класс А? Мог ли такой подход дать большую или меньшую эффективность сна, за счёт того, что примеры прочих классов стали известны сети заранее в категории «всё остальное?»
Максим Баженов: Я сейчас скажу то, что делалось, и то, что мы делали, может быть, это частично ответит на этот вопрос. В принципе, в случае, например, MNIST, можно сделать как бы 10 классов в конце, и когда обучаем network, каждый класс должен отвечать за правильную цифру, а можно, например, весь этот сет из пяти задач – каждая, состоящая из двух классов, в конце сделать свой два класса ответа: А или Б. Например, для первой задачи, где учится четыре и пять, четыре будет правильный ответ А, а значит пять В, если семь восемь, то опять же семь будет А.
Николай Михайловский: Понятно, одно чётное, например, другое нечетное.
Максим Баженов: Да, так даже лучше сказать, чем я пытался. Интересно, что как раз так, например, и EWC – elastic weight consolidation работает в этой ситуации как раз очень хорошо. И в той статье, которую упомянул Варкави, у нас есть даже discussion, мы обсуждаем почему, я сейчас не смогу это воспроизвести в деталях. Но, в принципе, эта задача чем-то легче. (01:30:05) Кстати, была еще одна статья тоже вот по поводу catastrophic forgetting, по-моему, в девятнадцатом-двадцатом году тот же Nature communications, я могу послать ссылку потом. И там такого типа классификация сравнивалась с той, которую я описывал, когда каждый класс имеет свой label. В принципе, наш метод связан со сном, он также хорошо работает, если мы используем, по крайней мере чётные-нечётные решения, тогда он будет работать. В принципе, это более простая задача и, например, EWC работает тоже очень хорошо, но если разбить её, иметь каждый лейбл, но идея в каком-то смысле такая. Сейчас я хотел воспроизвести часть данных, но, может быть, я не буду пытаться. То есть, в принципе вот то, что мы пробовали, то, что я описал, если это точно отвечает на вопрос или нет, но…
Николай Михайловский: Собственно, Дмитрий, если я правильно его понимаю, я надеюсь на это, говорит, что вы использовали задачи типа «четыре» или «пять», а он говорит, не пробовали ли использовать «четыре» или «всё остальное»?
Максим Баженов: Собственно, в конце, когда мы в той таблице, которую я рисовал, когда подается любое число, то учитывая все остальное, в конце стоит два класса.
Николай Михайловский: Вот такое вот «четыре» или «все остальное»? «Пять» или «всё остальное», у вас там четыре или пять, а Дмитрий там немного другую постановку предварительных экспериментов предлагает.
Максим Баженов: Так, наверное, точно не делали, у нас всегда было 10 лейблов, и в начале, когда мы учим четыре или пять, да, соответственно, после обучения network будет успешно четыре называть четыре, а пять или пять, шесть или семь, если ей показать, то тоже будет называть или четыре, или пять, как ей уж там захочется. И так далее. То есть то, что было спрошено, наверное, так мы точно не делали.
Николай Михайловский: Спасибо. Анонимный посетитель спрашивает. «Пробовали записать волны ЭЭГ во время сна и использовать их в качестве шума?»
Максим Баженов: Мы не пробовали в artificial neural networks, но мы что-то подобное делали. Я сегодня рассказывал это. Помимо ситуации, когда берем какую-то artificial neural networks, и любую другую, propagation и так далее. Мы также занимались, в общем-то, лаборатория занималась тем, что называется computation neural science, когда делали такие модели, детальные. Мы моделируем нейроны, и тому подобное. И в этих задачах мы не проигрывали, не записывали конкретно, например slow waves, но мы их эмулировали slow waves, в случае того, что я описал у нас просто шум и шум. А вот в этих биофизических моделях мы использовали не синусоидальный, но что-то подобное вот этим slow waves. Статья была, я послал её в «Alive», когда меня спросили про какие-то статьи. Она описывает как раз биофизическую модель. И выяснилось, что если попытаемся моделировать ситуацию, когда гиппокампус никакого отношения не имеет к этому. Собственно, всё, что я рассказывал, про artificial neural networks, если помните, никакого отдельного блока памяти я не упоминал. И, таким же образом можно сделать биофизическую модель. Тогда, в принципе, мы биофизически сравнивали непрерывный такой шум или синусоидальный шум. И разницы не было, что, в общем-то, имеет смысл, потом что для такого рода задач, как гиппокампус не играет роли, вроде бы REM-sleep важен, а REM-sleep, в принципе, не имеет такой структуры. Но когда мы пытались симулировать гиппокампус и во время сна одновременно, чтобы гиппокампус скопировал память в кору, и это было как раз в биофизической модели только сделано. Мне очень хочется сделать это в artificial, но пока там есть некие вещи, которые я не понимаю, как сделать. Там существование таких волн очень критично, потому что выяснилось, что в начале волны – это тот период, когда кора получает ход от гиппокампа, и она успешно запоминает новое что-то. (01:35:02) А дальше, во время пика этой волны, кора проигрывает свои старые памяти. На каждом цикле она успевает сделать две вещи: она успевает получить толчок от гиппокампуса с кусочком новой памяти и его отыграть. Дальше этот пик исчезает, потому что вход в гиппокампус очень короткий, и кора находится в состоянии такой активации временной на пике синусоиды, и тогда она начинает проигрывать старые памяти, и из-за этого они не забываются. И такой очень интересный эффект: на каждом цикле она успевает получить новое и проиграть старое, и это повторяется, опять же, много-много раз. Интересно, что все так делается очень долго. В какой-то момент эта новая память начнет доминировать, то есть некий баланс на продолжительность этого дела, и он как раз совпадает. Несколько часов, что, в общем-то, и есть время сна. То есть идея, что если спать очень долго, то может быть произойдёт что-то неправильное с балансом между старой и новой памятью.
Николай Михайловский: Богатырь, уснувший на триста лет. Последний, наверное, сейчас вопрос, я уж свой как-нибудь вам по e-mail задам, чтобы не задерживать вас. Валерий Хамини, опять же, спрашивает: хотя бы в двух словах, пожалуйста, что вы думаете про висцеральную теорию сна Пигарева, спасибо.
Максим Баженов: Знаете, я должен про это почитать, я, честно говоря, ничего об этом не думаю, и, если кто-то мне пришлёт ссылку, я с удовольствием об этом узнаю больше.
Николай Михайловский: Хорошо, обязательно вам пришлём.
Максим Баженов: У меня остался вопрос по поводу двух типов памяти, я, наверное, вам напишу e-mail по этому поводу, потому что сейчас я сам заинтересовался.
Николай Михайловский: Большое спасибо, очень интересно для меня и для слушателей, 25 человек у нас по максимуму было, что для такой сложной темы и московского утра достаточно немало. Большое спасибо. С новыми работами приходите, рассказывайте нам, пожалуйста. А я еще вам напишу, и что-нибудь, может быть, тоже выясним с вами.
Максим Баженов: Да, большое спасибо, и очень интересная дискуссия была. Обычно эти вопросы часто сворачиваются сильно быстрее. И даже остался вопрос, на который мне самому стало интересно ответить, что, в общем-то, означает, что что-то я и сам в итоге узнаю новое.
Николай Михайловский: В этом и цель, на самом деле. Спасибо.
Максим Баженов: Да, вам большое спасибо и всем присутствующим.