Посетил Стенфордский симпозиум, посвященный пересечению deep learning и neurosciencе, получил массу удовольствия.


image


Рассказываю про интересное — например, доклад Дэна Яминса о применении нейросетей для моделирования работы зрительной коры головного мозга.


Disclaimer: пост написан на основе изрядно отредактированных логов чата closedcircles.com, отсюда и стиль изложения, и уточняющие вопросы.


Вот линк на полный доклад, он клевый, но смотреть, пожалуй, лучше после чтения поста.


Дэн занимается computational neuroscience, т.е. пытается вычислительными методами помочь исследованию мозга. И там, как и везде, случается deep learning.


Вообще, устройство зрительной коры на высоком уровне мы чуть-чуть понимаем


image


Когда мы видим какое-то изображение, глаз вызывает активации нейронов, активации проходят через разные участки мозга, которые выделяют из них все более высокоуровневое представление.


V1 еще называется primary visual cortex и он неплохо исследован — там есть нейроны, которые прогоняют некие фильтры над изображением, и активируются на линиях под разными углами и простеньких градиентах.
(кстати, паттерны, на которых нейроны активируются в этом участке часто похожи на первые выученные уровни в CNN, что само по себе очень круто)


Есть даже успехи в моделировании этой части — мол, придумать какую-то модель, посмотреть как нейроны активируются на входном изображении, зафиттитить, и потом эта модель вполне себе предсказывает активации этих нейронов на новых картинках.


С V4 и IT (более высокими уровнями обработки) так не получается.


Откуда вообще берутся данные про биологические нейроны?


Типичный эксперимент выглядит так — берется обезьянка, ей в некоторую часть мозга втыкаются электроды, которые снимают сигналы с нейронов, в которые они попали. Обезьянке показывают разные картинки и снимают сигнал с электродов. Так делают на нескольких сотнях нейронов — количество нейронов всего в исследуемых долях мозга огромно, меряют всего сотни.


Оказывается, если попытаться зафиттить модель на активацию биологических нейронов в V4 и IT, происходит оверфиттинг — данных мало и для новых картинок модель уже ничего не предсказывает.


Дэн-сотоварищи пробуют сделать по-другому


Давайте возьмем модель и натренируем ее на какую-то задачу распознавания, чтобы искусственные нейроны в ней распознавали что-то на этих картинках.
Вдруг они будут предсказывать активации биологических нейронов лучше?


Вот теперь внимательно следим за руками.


Они тренируют модели (CNNs и более простые модели из обычного computer vision) распознавать объекты на синтетических картинках.


Картинки вот такие:


image


Объект не коррелирует с бэкграундом — может быть и самолет на фоне озера, и голова на фоне какого-то дикого леса (я так понимаю, чтобы исключить prior в обучении).
Всего на картинках 8 категорий объектов — головы, машины, самолеты, что-то еще.


И вот тренируют модели разной структуры и глубины распознавать категорию объекта. В числе прочих моделей есть и CNNs pretrained на Imagenet, и они убирают из тренировочного датасета категории объектов, которые они использовали в своих синтетических картинках.


Далее, на основе натренированной CNN они "предсказывают" активации биологических нейронов следующим образом.
Берут некий training set (отдельные категории объектов), выбирают какой-то уровень в CNN и нейроны в какой-то части мозга и строят линейный классификатор, который предсказывает активации биологических нейронов на основе искусственных.


То есть, пробуют приблизить активацию биологического нейрона как линейную комбинацию из активаций искусственных нейронов в каком-то слое (ведь один к одному их точно никак не совместить, их совсем разное количество). А потом проверяют насколько оно обладает предсказательной силой на тестовом наборе, где были совсем другие объекты.


Надеюсь, объяснить получилось.


То есть у них в качестве выхода CNN — что-то типа идентификации биологического нейрона?
Нет! Выход CNN — это классификатор объектов на картинках.
CNN тренируется классифицировать изображения, про биологические нейроны она ничего не знает. Размеченные данные для сетки — это какой объект на картинке, без знания о биологических нейронах.
А потом зафиксировали веса в CNN, и фиттим активации биологических нейронов как линейную комбинацию активаций нейронов искусственных.


а почему линейная комбинация, а не еще одна сетка?
Предсказание биологических по искусственным хочется сделать как можно более простым, чтобы система не переучивалась и брала основной сигнал из активаций нейронов в CNN.
А потом на новых тестовых картинках проверяем, получилось ли у нас предсказать активацию в биологических нейронах.


Так вот, картинка c результатами!


image


Каждая точка на этом графике — это какая-то опробованная модель.
По оси X — насколько она хорошо классифицирует, по оси Y — насколько она хорошо предсказывает биологические нейроны.
Синее облако — это модели, которые или не тренировались вообще, или тренировались с нуля и там много не очень глубоких, а красные точки вверху справа — это модели pretrained на imagenet и тотальный deep learning.


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


Вопрос может в сторону, но все же. А нельзя ли тогда учить модель классифицировать что-то, используя в качестве учителя — нейроны в мозгу? Типа показали картину + взяли данные из мозга и скормили это в CNN?
Это то самое, о чем я говорил раньше — так как нейронов ты знаешь мало, такая модель начинает оверфиттить и предсказательной силой не обладает.
То есть, обучение на активациях нейронов не генерализируется, а обучение на выделении объектов — это значительно более мощный constraint.


А теперь термояд.


Можно посмотреть как разные уровни нейросети предсказывают активации разных участков мозга:


image


Оказывается, что последние уровни хорошо предсказывают IT (последнюю стадию), но не V4 (промежуточную). А V4 лучше всего предсказывают промежуточные уровни сети.
Таким образом, иерархическое представление фич в нейросети "соприкасается" не только в конце, но и в середине процессинга, что снова наталкивает на мысль, что есть какая-то общность того, что происходит там и там.


То есть у них нейронная сеть выглядит примерно так же, как биологические нейроны в мозгу?
Скорее, есть что-то похожее в том, через какие этапы проходит процесс распознавания.
Сказать, что "архитектура" та же, конечно, нельзя (разумеется, это нисколько нельзя считать доказательством, итд итп)


Следующий этап — ну ок, предположим получили возможность моделировать неизвестно как работающий мозг какой-то другой непонятно как работающей коробкой. Какая в этом радость?


Дальнейшая работа — как можно это использовать, чтобы что-то новое понять про работу мозга.


Я расскажу про один пример, в самом выступлении есть еще два.
Давайте попробуем вытащить не только классификацию, а еще какие-то сигналы из картинки — угол наклона, размер, позицию итд.


image


Казалось бы, это более "низкоуровневые" фичи, чем класс объекта, и можно ожидать, что они определяются на более низких уровнях распознавания в мозгу — давайте проверим это на модели.


Оказывается, фиг там!
Даже вот такие "низкоуровневые" фичи лучше коррелируют с высокоуровневыми активациями, а не низкоуровневыми. Потом они провели дополнительные эксперименты на живом мозге и увидели то же самое — те линии и уголки, которые мы привыкли видеть в паттернах первых слоев не имеют отношения к "линиям" ориентации высокоуровневых объектов.
Информация о позиции и взаимном расположении объектов вполне себе доходит до высокого уровня.


Это подтверждает уже до этого существующую теорию, что последняя стадия (IT) — работает со сформированной высокоуровневой моделью, где есть объекты, их расположение, взаимные отношения итд итп и преобразует их во что-то нужное мозгу дальше.
(другие примеры, если кому интересно, про проверку гипотезы про выделенное место в мозгу для распознавания лиц через тренировку виртуального мозга, который никогда в жизни лиц не видел, и про распознавание звуков)


(Продолжаем дилетантские вопросы) А они в своей CNN использовали модель с таким же количество слоев? Ну то есть, а если уменьшить количество слоев эффекты похожести исчезают?
Нет, количество "слоев" в мозге штука сложная — там есть и сквозные связи, и фидбек. Количество слоев в CNN принципиально меньше, чем в мозге.


А как тогда идет разговор про IT и V4?
Ну, в мозгу IT и V4 — это много-много уровней, а в нейросети уровней мало. Биологические нейроны из IT и V4 — это те, в которые попал электрод. Из какого "биологического лейера" внутри них получилось — из того получилось.


Интересно еще следующее. Если верить Рамачандрану, то visual cortex — это не просто feed-forward сеть, все слои общаются со всеми слоями в обоих направлениях. Есть даже пример, когда можно зрительную систему вывести из равновесия через разного рода оптические иллюзии.


То есть никто не гарантирует, что активация биологических нейронов как-то связана с самим процессом распознавания, а не с тем, что из-за вида самолетика у обезьяны начинает чесаться нога, а нейроны уже реагируют на то, что у нее нога чешется?
Нет, это нейроны из области, которая известно, что связана с visual cortex (эту часть про мозг мы худо-бедно знаем — почесаться там быть не может, это дальше по стеку).


Подытожив — прямое направление работ скорее про использование новых моделей для изучения работы мозга, но есть некие непрямые намеки, что как-то это слишком хорошо работает, возможно есть общие механизмы.
Надеемся, сойдутся в сингулярность!

Комментарии (18)


  1. leshabirukov
    23.04.2016 11:51
    +1

    Я так понимаю, они рассматривают только вентральный (канал «что?») зрительный путь, игнорируя дорсальный («где?», «как?» и «насколько быстро?»). Типа если картинка одна, объект на ней один, а фон левый, то мы достаточно абстрагировались от «дорсальных свойств». На мой взгляд, очень сильное упрощение, в живом эти пути не изолированы друг от друга, и «помогают» друг другу как в работе так и в обучении. И кстати, функция вычленения поворота объекта относится скорее к дорсальному пути.
    И можно абстрагироваться от реализации, выражаясь другим языком: режим обучения не естественный. Живые сети обучаются на видео а не на фотоальбомах.
    Но тем более интересно, что за сходство они там намерили.


    1. sim0nsays
      23.04.2016 19:24

      Да, безусловно это крайне упрощённая модель и цели повторить метод обучения в мозге не стоит — мы про это слишком мало пониманием. Скорее, аналогия проводится на уровне «если у нас система научилась неким способом, то она начинает быть больше похожа на живые нейроны которые научились неким неизвестным способом». Т.е сравнивается результат обучения, а не процесс.


  1. darkAlert
    23.04.2016 15:36

    До чего техника дошла — реальный мозг изучают с помощью ИНС :)
    А вообще, к теме превосходства роботов над человеком — в некоторые задачах по computer vision машины уже обходят человека. Например, то же распознавание лиц. Хотя мозг еще очень устойчив к масштабированию и поворотам изображения. Когда ИНС получат такие же возможности, это будет прорывом.


    1. sim0nsays
      23.04.2016 19:27
      +1

      Superhuman performance нейросетей в некоторых задачах не очень относится к обсуждаемой теме. Но у меня ощущение, что просто у нас датасета хорошего пока нет, чтобы объекты были повёрнуты всеми возможными способами. Масштабирование RCNN уже прилично решают, мне кажется.


    1. sim0nsays
      23.04.2016 20:35

      Superhuman performance нейросетей в некоторых задачах не очень относится к обсуждаемой теме.
      Но у меня ощущение, что просто у нас датасета хорошего пока нет, чтобы объекты были повернуты всеми возможными способами. Масштабирование RCNN уже прилично решают, мне кажется.


    1. Maxmaxmaximus
      25.04.2016 10:07

      Ну братья Райд тоже брали для вдохновления крылья птиц. а теперь мы запускаем ракеты в космос вообще без крыльев. Но нужно было с чего-то начать. Мы можем лучше распознать изображения чем мозг, но хотим для начала именно мозг повторить, даже в тех местах где он хуже, ведь вдруг, раз у нас лучше, то мы что-то упускаем?


  1. DrZlodberg
    23.04.2016 22:38

    А вот любопытно… Помнится была статья про оптические иллюзии для нейронных сетей. Когда на вход сети подавался специально подобранный мусор, который разпознавался ей как определённое изображение.
    Можно ли с помощью такой штуки найти подобные иллюзии для человека (и существуют ли они вообще)?


    1. sim0nsays
      23.04.2016 22:39

      Я о таком не слышал, и это было бы очень странно — adversarial examples для CNN приспосабливается к деталям конкретных обученных весов, без полной с точностью до конкретных параметров модели кортекса такое не подобрать.

      Ну и вообще, не следует проводить аналогии между искусственными и биологическими нейросетями слишком далеко


      1. DrZlodberg
        23.04.2016 22:54

        Сходу нагуглилась вот эта: http://www.newit.info/neyronnyie-seti-opticheskie-illyuzii-obman-ili-obuchenie/
        Вроде тут она тоже была, не помню.

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

        Однако (думаю все иногда на это попадались) бывают ситуации когда кажется, что видишь что-то одно и только присмотревшись понимаешь свою ошибку. Быть может реально подобрать такие условия в которых этот эффект будет более навязчивым.


        1. sim0nsays
          23.04.2016 23:03

          Не, что такое adversarial examples (то, о чем статья по вашему линку) — достаточно понятно.
          Я не слышал именно том, чтобы таким методом получилась что-то, на чем ошибается человек. Обычно adversarial examples приводят в пример как раз обратного — мол, что это за обучение такое, если его обмануть гораздо проще человека.


          1. DrZlodberg
            23.04.2016 23:10

            Как уже писали выше — мозг человека опознаёт объект более комплексно, так что и иллюзия очевидно должна быть гораздо сложнее. Я имел ввиду не конкретно эту систему, а саму принципиальную возможность. Например если со временем расширить метод одновременно на все части, ответвенные за зрение. Обычно чем лучше знаешь, как оно работает, тем проще понять как это сломать.


            1. sim0nsays
              24.04.2016 00:16

              Про принципиальную возможность будущими методами комментировать сложно :)
              Можно только сказать, что текущие методы нахождения таких примеров применимы плохо — они требует точного знания всех параметров модели, симулировать и сканировать мозг с такой точностью можно будет очень нескоро.


            1. sim0nsays
              24.04.2016 03:57

              тест


    1. leshabirukov
      24.04.2016 12:11

      Неужели вы в детстве не смотрели на облака?


      1. DrZlodberg
        24.04.2016 12:25

        Облака и т.п. — это не то. Там не возникает сомнений, что это именно облака, а не то, что в них можно увидеть. Инетересна именно полная иллюзия что это и есть то, чем кажется.


        1. leshabirukov
          24.04.2016 12:37

          Есть данные, что вспоминание и воображение объекта активирует те же области мозга, что и непосредственное восприятие.


        1. sim0nsays
          24.04.2016 21:47
          +1

          Второй день забываю прислать смешной пример в тему:
          http://imgur.com/a/K4RWn (Chihuahua or muffin особенно жжот)

          Спрашивается, насколько это путает нейросеть?
          Оказывается, что не очень:
          https://imgur.com/a/zLWre


          1. DrZlodberg
            25.04.2016 08:28

            Не очень, однако иногда путает. Кот — завтрак больше всего понравился, хоть есть и другие забавные примеры. Попугаи — еда, кекс — растение, яблоко — лампочка, булка — блондинка и т.д.
            Кстати и с собакой кекс один раз перепутан.
            Ну и это как раз наглядный пример того, что под каждую систему нужны примеры оптимизированные именно под неё. Мы тоже легко различаем то, что ставит в тупик нейронку.