- PVSM.RU - https://www.pvsm.ru -
Несколько дней назад на хабре вышла статья Что скрывают нейронные сети? [1]. Она является вольным пересказом английской статьи The Flaw Lurking In Every Deep Neural Net [2], а та в свою очередь рассказывает об конкретном исследовании некоторых свойств нейронных сетей (Интригующие свойства нейронных сетей [3]).
В статье, описывающей исследование, авторы выбрали несколько сенсационный подход к подаче материала и написали текст в духе «в нейронных сетях найдена серьезная проблема» и «мы не можем доверять нейросетям в проблемах, связанных с безопастностью». Ссылку на пост на Хабре среди моих знакомых много кто расшарил, в фейсбуке завязалось сразу несколько дискуссий на эту тему. При этом у меня сложилось впечатление, что за два пересказа часть информации из начального исследования потерялось, плюс возникло много вопросов, связанных с нейронными сетями, которые в изначальном тексте не рассматривались. Мне кажется, что есть потребность подробнее описать, что же делали в исследовании, а заодно попробовать ответить на изначальные вопросы. Формат фейсбука для таких длинных текстов не подходит совсем, так что я решил попробовать оформить свои размышления в пост на Хабре.
Исходная статья под названием «Интригующие свойства нейронных сетей» написана группой из 7 ученых, трое из которых работает в отделе исследований нейронных сетей в Google. В статье обсуждается два неочевидных свойства нейронных сетей:
Давайте попробуем разобраться подробнее, что же эти два свойства значат.
Первое свойство постараемся разобрать побыстрее.
Есть предположение, популярное у фанатов нейронных сетей, которое заключается в том, что нейронная сеть внутри себя разбирает исходные данные на отдельные понятные свойства и на глубоких уровнях нейронной сети каждый нейрон отвечает за некоторое конкретное свойство исходного объекта.
Проверяется это утверждение обычно визуальным просмотром:
Что сделали исследователи в статье: они вместо того, чтобы рассматривать отдельные нейроны, стали рассматривать линейные комбинации нейронов и искать для изображений, активирующих конкретную комбинацию, общие семантические свойства. У авторов получилось – они из этого делают вывод, что данные о предметной области в нейронной сети хранятся не в конкретных нейронах, а в общей конфигурации сети.
Обсуждать серьезно эту часть статьи вообще говоря не очень хочется, потому что она относится скорее к области религии, чем науки.
Первоначальное рассуждение о том, что конкретные нейроны отвечают за конкретные признаки берется из весьма абстрактных рассуждений о том, что нейросеть должна по своей работе напоминать человеческий
Пример изображений с одинаковым свойством из оригинальной статьи.
Общий вывод в этой части статьи при этом действительно выглядит закономерным – в нейросети знание о предметной области действительно скорее содержится во всей архитектуре нейросети и параметрах ее нейронов, а не в каждом конкретном нейроне в отдельности.
Исследователи провели следующий эксперимент – они задались целью найти неправильно классифицирующиеся сетью объекты, расположенные как можно ближе к объектам обучающей выборки. Для поиска таких авторы разработали специальный алгоритм оптимизации, который отходил от исходной картинки в сторону ухудшения ответов нейросети, до тех пор, пока классификация объекта не ломалась.
В результате эксперимента получилось следующее:
Собственно, про эти слепые пятна и идут в основном разговоры, так что давайте попробуем ответить на вопросы которые при этом появляются. Но для начала разберем несколько базовых возражений, которые появляются у людей, читающих описание исследования:
То, что у нейросети могут быть слепые пятна рядом с объектами обучающей выборки – это на самом деле не большая новость. Дело в том, что в нейросети никто никогда не обещал локальной точности.
Есть методы классификации (к примеру Support Vector Machines [5]), которые в основе своего обучения ставят максимальное отделение объектов обучающей выборки от границ изменения классов. В нейронных сетях никаких требований подобного рода нет, более того в силу сложности нейронных сетей итоговое разделение исходного множества обычно не поддается нормально интерпретации и исследованию. Поэтому то, что в сетях можно найти области локальной нестабильности – это не новость, а подтверждение факта, который и так был достаточно известен.
Что здесь реально новость – это то, что искажения, приводящие к ошибкам, сохраняют свои свойства при переходе к другой архитектуре сетей и при смене обучающей выборки. Это действительно очень неожиданное открытие, и я надеюсь, что авторы в следующих работах найдут ему объяснение.
Нет, нейросети это не тупик. Это очень мощный и сильный инструмент, который решает некоторый набор совершенно конкретных задач.
Популярность нейросетей построена в основе на двух идеях:
Поэтому нейросеть – это средство быстро получать приемлемые решения для очень сложных задач распознавания. Ничего другого никто для нейросетей никогда не обещал (хотя было много попыток). Ключевые слова здесь «быстро» и «сложные задачи»:
Основное заключение статьи, обсуждающей оригинальное исследование было: «Пока этого не произойдёт, мы не может полагаться на нейронные сети там, где безопасность критически важна…». Потом еще в отдельных обсуждениях часто всплывал Google Car, по каким-то причинам (видимо из-за места работы авторов и картинки машины в статье).
На самом деле нейросетям доверять можно, и для этого есть несколько причин:
Так что к нейросетям в любой критической системе нужно относится как к еще одному виду датчиков, который в целом дает правильные данные, но иногда ошибается и на его ошибки нужно закладываться.
Казалось бы – если никаких великих откровений в статье не нашли, то зачем ее вообще писали?
На мой взгляд в статье есть один главный результат – это продуманный способ заметного увеличения качества нейронной сети при обучении. Часто при обучении систем распознавания применяют стандартный трюк, когда для обучения используют кроме оригинальных объектов обучающей выборки еще те же объекты с добавленным шумом.
Авторы статьи показали, что вместо этого можно использовать объекты с искажениями, которые приводят к ошибкам нейронной сети – и таким образом и устранять ошибки на этих искажениях и одновременно повышать качество работы всей сети на тестовой выборке. Это важный результат для работы с нейросетями.
Под конец могу только порекомендовать не читать статьи с «сенсационными» заголовками, а лучше находить первоисточники и читать их – там все гораздо интереснее.
Автор: TonyMas
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/61643
Ссылки в тексте:
[1] Что скрывают нейронные сети?: http://habrahabr.ru/post/225095/
[2] The Flaw Lurking In Every Deep Neural Net: http://www.i-programmer.info/news/105-artificial-intelligence/7352-the-flaw-lurking-in-every-deep-neural-net.html
[3] Интригующие свойства нейронных сетей: http://cs.nyu.edu/~zaremba/docs/understanding.pdf
[4] мозг: http://www.braintools.ru
[5] Support Vector Machines: http://en.wikipedia.org/wiki/Support_vector_machine
[6] Теорема сходимости перспетрона: http://ru.wikipedia.org/wiki/Теорема_сходимости_перцептрона
[7] Источник: http://habrahabr.ru/post/225349/
Нажмите здесь для печати.