Визуализация цикла обучения нейронной сети
Команда инженеров проекта Graphcore построила графы активности узлов нейронной сети и их связи в процессе обучения по распознаванию образов, о чем исследователи рассказали в своем блоге.
Изображение выше демонстрирует полный цикл обучения и распознавания нейронной сети Microsoft Research RESNET-34 в декабре 2016 года. Саму систему развернули на базе IPU — интеллектуального графического процессора, как его называют создатели, еще в середине 2016 года. Полученные данные раскрасили для того, чтобы выделить различную плотность вычислений, производящиеся нейронной сетью.
Все полученные исследователями изображения оказались не только весьма сложными, но и пугающе схожими с реальными биологическими объектами. Целью инженеров было наглядно показать, что происходит внутри нейронной сети и почему даже некоторых ученых принцип их работы ставит в тупик.
Построенные Graphcore изображения представляют из себя технические графики нейронной сети RESNET производства Microsoft. В 2015 году RESNET выиграла соревнования по распознаванию изображений под названием ImageNet.
Следующее изображение было получено после проведения 50 циклов тренировки нейронной сети Graphcore по распознаванию изображений:
IPU-система Graphcore работает при помощи фреймворка Poplar. Фреймворк написан на C++ и ориентирован на работу с графами в ходе машинного обучения нейронной сети. Библиотеки Poplar является open source-разработкой, которые в перспективе можно будет применять в связке с TensorFlow и MXNet, которые смогут практически «из коробки» работать с IPU Graphcore. Набор инструментов отладки и анализа можно настраивать с использованием как C++, так и Python.
IPU Graphcore применим не только для распознавания изображений, но и для обработки большого массива данных. Например, разработчики приводят визуализацию процесса обработки астрофизических данных на своем IPU под управлением нейронной сети:
Или вот изображение глубинной нейронной сети AlexNet, построенной с использованием TensorFlow:
AlexNet также является победителем ImageNet, но 2012 года. Для сравнения дается структура нейронной сети на базе Microsoft Research RESNET:
IPU разрабатывался специально для работы с нейронными сетями, и разработчики надеются, что результат их трудов положит начало новому этапу в машинном обучении. Команда Graphcore отмечает большую эффективность сетей на IPU, а также большую, чем у конкурентов, скорость обучения.
Комментарии (24)
perfect_genius
18.02.2017 19:32+3Надеюсь, когда-нибудь увижу визуализацию и своей головной неросети.
ustaspolansky
19.02.2017 12:10+1А я вот побаиваюсь такого, вдруг это будет картинка обезьянки стучащей в бубен.
QDeathNick
18.02.2017 21:30Объясните пожалуйста, поподробнее, что это значит:
conv2.x — 3x3
[64in — 64out]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/
Sadler
19.02.2017 00:04+3Имхо, не самый читаемый вариант визуализации. Паттерны активации свёрточной сети прекрасно визуализируются на любом слое, так, что зачастую вполне понятно, какие признаки вычленяются сетью, а вот что делать с этими изображениями мне лично не очень ясно. Но красиво, конечно. Ещё очень интересно было бы посмотреть в динамике.
AFakeman
19.02.2017 00:07+6По какому принципу строился рисунок, и что можно из него понять? Как-то непонятно.
fruit_cake
19.02.2017 01:07Было бы неплохо создать отдельную среду разработки нейронных сетей, визуализации в реальном времени и её контроля в процессе обучения, плюс возможности представления её в понятном виде для человека, если это связано с изображениями то пусть это будет изображение. Для примера информация из глаз или воспоминания для нашего сознания имеют определённую понятную форму, но глядя на мозг мы видим миллиарды нейронов из которых понять что-то сложно. Может искусственная нейронная сеть для себя и понимает все картинки и сравнивает их, но для стороннего наблюдателя это просто каша. Разве что свой мозг соединить с ней, что пока что из области фантастики.
perfect_genius
19.02.2017 13:18То же самое с двоичным кодом и ассемблером. Да и код на Си тоже каша из текста для стороннего человека.
Проблема в том, что программисты, нейробиологи и другие учёные — не художники.ankh1989
20.02.2017 07:17Хорошая аналогия. Можно было бы визаулизировать программу — примерно как это делает IDA, только в большем масштабе — и раскрасить. Получилась бы прикольная картинка, но толку от неё было бы мало.
perfect_genius
20.02.2017 15:40Можно поставить в центре образ человека, а вокруг него визуализация потребностей — еда, люди, комфортные условия., и разнести схему по нему и наружу к ним.
leocat33
19.02.2017 10:17Ляпота!
А как с отладкой ПО? ( Просмотр как работают алгоритмы, где какие данные… )
MiksanDr
19.02.2017 13:31+1Вот если бы они сделали видео, как меняется структура нейронной сети в процессе ее обучения. Вот это было бы действительно наглядно.
lash05
19.02.2017 16:30+3Чёрный ящик заменили цветными кружочками). Тот, кто научится толковать эти рисунки, будет признан великим шаманом)
BlindGuy
19.02.2017 16:30+1Я один немного не понимаю, каким образом ячейки нейронной сети преобразовались в красивые пикчи а-ля сюрреализм? Если я один такой недалекий, прошу знающих пояснить принцип работы такого визуализатора
leocat33
19.02.2017 17:34lash05 уже написал — черный ящик…
Пока что сами разработчики плохо представляют, как оно работает… И в какую сторону выстрелит… Ну а про пошаговую отладку…
Читал статью, что вначале обучения автомобиля предполагалось, что он будет ориентироваться по дорожным знакам. Все было Ок до инцидента: автомобиль резко свернул с дороги перед мостом. Долго разбирались, оказалось, что он обучился ехать по краю дороги. Т.е. с отладкой софта пока что большие проблемы…
binariti
20.02.2017 11:04Перемотал статью до того места, где интересно и понятно объясняется смысл этих картинок. К сожалению такого места в статье нет.
Далее мои предположения:
Я так понимаю, что данные подаются и снимаются в центре цветных областей. В сети образуются отдельные области, никак не связанные друг с другом. На границах областей образуется мусор и «оболочки», отделяющие одни области от других.
В ходе обучения сети на нее с самого начала, видимо, подается информация, причем в каждую точку сети информация подается как бы равномерно. Далее благодаря обратной связи участки, в которые поступала менее значимая для критерия отбора информация отмирают, вокруг тех участков, где поступает более значимая информация, формируются блоки нейронных связей. В итоге получается вот такая нейросеть, которая концентрируется вокруг значимой информации и игнорирует не значимую. Когда все области нейросети формируют приемлемый ответ на поступающую информацию мы говорим, что нейросеть обучена. В результате и получается вот такая картинка, состоящая из точек, где нейросеть особенно бурно реагирует на поступающую информацию и точек, где она эту информацию игнорирует.
GreyPhantom
Судя по картинкам- упомянутая сеть сама по себе пугающе сложная.