Как стать автором
Обновить

Комментарии 5

Отличная статья.

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

Я тоже так думал, но затеял проверить.

Стал создавать исскуственные картинки из примитивов ( отрезки прямые ) и их комбинаций ( проекции многоугольников, полигоны )

Потом просто выкинул примитивы и раскрасил полигоны шумом, только с разными характеристиками.

Сеть всё равно отличала проекцию семиугольника от проекции квадрата заполненные одинаковым(!) шумом.

Т.е. линий нет, примитивов нет, есть области разной формы. Но она всё равно их отличает.

Позвольте узнать. Уже давно (относительно) задаюсь вопросом - а зачем в принципе человеку знать, что внутри себя выделяет нейронка?

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

Почему такое непонимание - потому что лично я вижу сразу две глобальных проблемы. Два ограничения.

Первое - "что мы понимаем". Человек сильно ограничен в своем познании, и если не использовать то что мы не понимаем, то это огромное упущение. Попытки понять что внутри это подсознательное желание не выходить за эти рамки "непонимаемого". Зачем?

Второе - использование слоев. Почему условный нейрон нельзя соединить с тремя нейронами следующего, с четырмя через слой и с восемью через 20 слоев? Ведь если брать тот же мозг, то там нейроны не слоями соединены, а с условно "ближайшими". Вот например реккурентные сети - и ведь неплохо работают. Почему бы не рассматривать что то типа первичного бульона - напихать (псевдо)случайным (нет, псевдо не про псевдорандом, а про то что алгоритм должен выглядеть ближе к случайному, чем к "слой<->слой").

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

По поводу первого вопроса "зачем". Одной из причин можеть быть задача "обяснимости/интерпретируемости результатов". Без этого модели часто не могут применяться в некоторых областях - типа крдитного скоринга.

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

Есть у меня двое знакомых в кредитном скоринге, и я буквально через пару часов после прочтения посидел, покурил на эту тему с одним из них. И он довольно четко сказал, что в кредитных моделях нейронки не используются, потому что даже банальную "задачу xor" с нейрнокой 2-2-1 уже не объяснить. Есть конечно некоторые исключения, но там обычно и нету регулятора в виде цб, и, соответственно, нет задачи "объяснить как модель работает".

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий