Чему научилась моя нейронная сеть? Какие особенности это волнует и почему?


30

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

Ответы:


28

Это правда, что трудно понять, что изучает нейронная сеть, но в этом направлении было проделано много работы. Мы определенно можем получить представление о том, что ищет наша сеть.

Давайте рассмотрим случай сверточной нейронной сети для изображений. У нашего первого слоя есть интерпретация того, что мы перемещаем фильтры по изображению, поэтому наш первый скрытый слой соответствует соглашению между небольшими порциями изображения и нашими различными фильтрами. Мы можем визуализировать эти фильтры, чтобы увидеть, каков наш первый уровень представления:K

алекснет слой 1

Это изображение первого слоя фильтров из AlexNet и взято из этого замечательного урока: http://cs231n.github.io/understanding-cnn/ . Это позволяет нам интерпретировать первый скрытый слой как обучающийся для представления изображения, состоящего из необработанных пикселей, как тензор, где каждая координата является соглашением фильтра с небольшой областью изображения. Следующий слой затем работает с этими активациями фильтра.

Не так сложно понять первый скрытый слой, потому что мы можем просто посмотреть на фильтры, чтобы увидеть, как они ведут себя, потому что они непосредственно применяются к входному изображению. Например, предположим, что вы работаете с черно-белым изображением (поэтому наши фильтры являются 2D, а не 3D), и у вас есть фильтр, похожий на

[010141010].

Представьте себе, что вы применяете это к области изображения 3х3 (игнорируя термин смещения). Если бы каждый пиксель был одного цвета, вы бы получили так как они отменили бы. Но если, скажем, верхняя половина отличается от нижней, вы получите потенциально большое значение. Этот фильтр, по сути, является детектором краев, и мы можем понять это, просто применив его к изображениям и посмотрев, что произойдет. Но намного сложнее понять более глубокие слои, потому что вся проблема в том, что мы не знаем, как интерпретировать то, к чему мы применяем фильтры.0

Эта статья Erhan et al. (2009) согласуется с этим: они говорят, что визуализация первого скрытого слоя является обычной (и это было еще в 2009 году), но труднее представить визуализацию более глубоких слоев. Из этой статьи:

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

Крис Олах и др. ( Https://distill.pub/2017/feature-visualization/ ) основываются на этом и обсуждают, как в целом вы можете (1) генерировать изображения, которые приводят к большим активациям, чтобы получить представление о том, что сеть ищет; или (2) сделать реальные входные изображения и посмотреть, как разные части изображения активируют сеть. Этот пост посвящен (1).

На изображении ниже, взятом из этой связанной статьи Olah et al., Авторы обсуждают различные аспекты сети, которые вы можете проверить. Самое левое изображение показывает результат оптимизации активации определенного нейрона в пространстве входного изображения и так далее.

C. Olah et al.

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

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


2
+1 особенно за последний абзац. Лично я думаю, что люди видения перестают делать визуализации по большому количеству параметров.
Haitao Du

конечно +1 для хорошо написанного длинного ответа с заслуживающими доверия ссылками.
Haitao Du

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

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

Olah et al. сообщение в блоге приятно, но они делают ошибку - они «оптимизируют для максимальной активации» (не совсем так, но близко), находят картинку, которая не похожа на картинки из учебного набора, и приходят к выводу, что CNN «видят» иначе, чем мы. Хотя вывод, очевидно, верен, рассуждения ошибочны - мода многомерного распределения не похожа на типичную выборку из этого распределения. Другими словами, именно потому, что CNN должны классифицировать кошек, способ распространения должен быть не кошкой, а кошкой-кошмаром.
DeltaIV

7

Нейронная сеть - это одна из моделей черного ящика, которая не дает «простых для понимания» правил / или того, что было изучено.

В частности, то, что мы узнали, это параметры в модели, но параметры могут быть большими: сотни тысяч параметров - это очень нормально.

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


Фактически, однослойная нейронная сеть (без скрытого слоя) с логистической функцией в качестве функции активации идентична логистической регрессии. Логистическая регрессия очень богата интерпретациями. Вот один пример. Но со сложной нейронной сетью / более скрытыми слоями такая интерпретация не будет применяться.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.