Визуализация цикла обучения нейронной сети

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

Изображение выше демонстрирует полный цикл обучения и распознавания нейронной сети Microsoft Research RESNET-34 в декабре 2016 года. Саму систему развернули на базе IPU — интеллектуального графического процессора, как его называют создатели, еще в середине 2016 года. Полученные данные раскрасили для того, чтобы выделить различную плотность вычислений, производящиеся нейронной сетью.

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

Построенные Graphcore изображения представляют из себя технические графики нейронной сети RESNET производства Microsoft. В 2015 году RESNET выиграла соревнования по распознаванию изображений под названием ImageNet.

Следующее изображение было получено после проведения 50 циклов тренировки нейронной сети Graphcore по распознаванию изображений:

image

IPU-система Graphcore работает при помощи фреймворка Poplar. Фреймворк написан на C++ и ориентирован на работу с графами в ходе машинного обучения нейронной сети. Библиотеки Poplar является open source-разработкой, которые в перспективе можно будет применять в связке с TensorFlow и MXNet, которые смогут практически «из коробки» работать с IPU Graphcore. Набор инструментов отладки и анализа можно настраивать с использованием как C++, так и Python.

IPU Graphcore применим не только для распознавания изображений, но и для обработки большого массива данных. Например, разработчики приводят визуализацию процесса обработки астрофизических данных на своем IPU под управлением нейронной сети:

image

Или вот изображение глубинной нейронной сети AlexNet, построенной с использованием TensorFlow:

image

AlexNet также является победителем ImageNet, но 2012 года. Для сравнения дается структура нейронной сети на базе Microsoft Research RESNET:

image

IPU разрабатывался специально для работы с нейронными сетями, и разработчики надеются, что результат их трудов положит начало новому этапу в машинном обучении. Команда Graphcore отмечает большую эффективность сетей на IPU, а также большую, чем у конкурентов, скорость обучения.
Поделиться с друзьями
-->

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


  1. GreyPhantom
    18.02.2017 19:00
    +1

    Судя по картинкам- упомянутая сеть сама по себе пугающе сложная.


  1. perfect_genius
    18.02.2017 19:32
    +3

    Надеюсь, когда-нибудь увижу визуализацию и своей головной неросети.


    1. ustaspolansky
      19.02.2017 12:10
      +1

      А я вот побаиваюсь такого, вдруг это будет картинка обезьянки стучащей в бубен.


  1. vintage
    18.02.2017 19:46
    +4

    Эти нейронки только и думают, как бы закинуться роллами.


  1. QDeathNick
    18.02.2017 21:30

    Объясните пожалуйста, поподробнее, что это значит:
    conv2.x — 3x3
    [64in — 64out]


    1. daiver19
      18.02.2017 22:17

      Сверточный слой какой-то. Оперирует батчами 3х3.


    1. i-aztec
      19.02.2017 16:30

      Второй сверточный слой с размером ядра свертки 3x3.
      На вход поступает матрица весов в 64 байта — на выходе матрица такого же размера.

      Вот что такое сверточные нейронные сети вообще:
      https://habrahabr.ru/post/309508/

      А вот цикл про эволюцию архитектур нейронных сетей для распознавания изображений соревнования ImageNet:
      https://habrahabr.ru/post/301084/
      https://habrahabr.ru/post/302242/
      https://habrahabr.ru/post/303196/


      1. BelBES
        20.02.2017 08:48

        в 64 байта

        64 канала (нейрона)


  1. Sadler
    19.02.2017 00:04
    +3

    Имхо, не самый читаемый вариант визуализации. Паттерны активации свёрточной сети прекрасно визуализируются на любом слое, так, что зачастую вполне понятно, какие признаки вычленяются сетью, а вот что делать с этими изображениями мне лично не очень ясно. Но красиво, конечно. Ещё очень интересно было бы посмотреть в динамике.


  1. AFakeman
    19.02.2017 00:07
    +6

    По какому принципу строился рисунок, и что можно из него понять? Как-то непонятно.


    1. mindcaster
      19.02.2017 01:32

      Вот да, сильно не хватает пояснений. А так-то красиво, конечно :)


    1. perfect_genius
      19.02.2017 13:12
      +1

      Наверно, они сами не поняли.


  1. fruit_cake
    19.02.2017 01:07

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


    1. perfect_genius
      19.02.2017 13:18

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


      1. ankh1989
        20.02.2017 07:17

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


        1. perfect_genius
          20.02.2017 15:40

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


    1. G12
      19.02.2017 16:30

      Уже не фантастика


  1. Denkenmacht
    19.02.2017 05:25

    Красиво и непонятно.


  1. leocat33
    19.02.2017 10:17

    Ляпота!
    А как с отладкой ПО? ( Просмотр как работают алгоритмы, где какие данные… )


  1. MiksanDr
    19.02.2017 13:31
    +1

    Вот если бы они сделали видео, как меняется структура нейронной сети в процессе ее обучения. Вот это было бы действительно наглядно.


  1. lash05
    19.02.2017 16:30
    +3

    Чёрный ящик заменили цветными кружочками). Тот, кто научится толковать эти рисунки, будет признан великим шаманом)


  1. BlindGuy
    19.02.2017 16:30
    +1

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


    1. leocat33
      19.02.2017 17:34

      lash05 уже написал — черный ящик…
      Пока что сами разработчики плохо представляют, как оно работает… И в какую сторону выстрелит… Ну а про пошаговую отладку…
      Читал статью, что вначале обучения автомобиля предполагалось, что он будет ориентироваться по дорожным знакам. Все было Ок до инцидента: автомобиль резко свернул с дороги перед мостом. Долго разбирались, оказалось, что он обучился ехать по краю дороги. Т.е. с отладкой софта пока что большие проблемы…


  1. binariti
    20.02.2017 11:04

    Перемотал статью до того места, где интересно и понятно объясняется смысл этих картинок. К сожалению такого места в статье нет.
    Далее мои предположения:
    Я так понимаю, что данные подаются и снимаются в центре цветных областей. В сети образуются отдельные области, никак не связанные друг с другом. На границах областей образуется мусор и «оболочки», отделяющие одни области от других.
    В ходе обучения сети на нее с самого начала, видимо, подается информация, причем в каждую точку сети информация подается как бы равномерно. Далее благодаря обратной связи участки, в которые поступала менее значимая для критерия отбора информация отмирают, вокруг тех участков, где поступает более значимая информация, формируются блоки нейронных связей. В итоге получается вот такая нейросеть, которая концентрируется вокруг значимой информации и игнорирует не значимую. Когда все области нейросети формируют приемлемый ответ на поступающую информацию мы говорим, что нейросеть обучена. В результате и получается вот такая картинка, состоящая из точек, где нейросеть особенно бурно реагирует на поступающую информацию и точек, где она эту информацию игнорирует.