Содержание статьи
Картина сетевым маслом. Как нейросеть видит новостную повестку России
Подкаст «Про Приватность»
Каждый “нейрон” передает свое выходное значение следующему, который делает свой вывод, уже основываясь на выходе предыдущего. Например, если бы целью нашей нейросети было сделать вывод о том, стоит ли строить отель в определенном месте, то следующий нейрон использовал бы информацию о примерной цене за ночь в отеле, чтобы сделать свой вывод о рентабельности отеля. “Нейроны” объединяются в группы , которые анализируют какие-то конкретные характеристики , а группы “нейронов” — в слои, каждый из которых выполняет определенную задачу в процессе обработки информации. В нейросетях существует три основных типа слоев:
Примечание: В нашей статье мы будем рассматривать градиентный спуск в классическом виде, однако следует заметить, что когда речь идет об анализе изображений в виду большой размерности градиентный спуск в изначальном виде может быть невозможен, поэтому приходится использовать приближенные к нему методы, которые руководствуются похожей логикой.
Процесс визуализации признаков начинается со случайного изображения или шума, которое затем подвергается оптимизации, чтобы максимизировать активацию конкретного “нейрона” или группы “нейронов” в определенном слое нейросети. Это достигается путем изменения пикселей изображения таким образом, чтобы они максимально активировали выбранные “нейроны”.
И вообще, не то это я так обучила нейросетку, не то у меня просто мозги немного искусственноинтеллектные, но у нас с Kandinsky сходятся взгляды на русскую классику. Вроде задала сетке запрос «Обыкновенная история», даже не стала писать, что это роман Гончарова . И что?
Ужас, тлен и разруха. Причем на первой картине на заднике какие-то античные, кажется, развалины. Типа, от развалин до развалин. Что тут странного? Обыкновенная же история! Вы как хотите, граждане, а я как-то тудыть, ближе к нашему времени, к современной литературе.
Тут сдаю монстров без зазрения совести, интрига всё равно не в них. Лангольеры — это существа, которые пожирают время. Отражения реального времени остаются на временной цепочке, а лангольеры идут вслед за нами по временной линии, и пока вы читаете эти строки, они там в прошлом пожирают пол пятого. Kandinsky увидел их так.
Милахи, не? На последней фотке вообще персонаж из мультфильма «Делай ноги 2», сейчас начинает отплясывать под «Андер Прешшу». Воооот! Удивительно неподходящее имя для монстров придумал Кинг. Мы-то с вами знаем, как должны выглядеть пожиратели времени, потому что существа, пожирающие время, это книги и котики. И кто скажет, что книги — это не существа, на того я натравлю свои зубастые гримуары по теневой магии (о да, у меня такие есть).
На более поздних слоях нейросети, изображения становятся менее похожими на исходные фотографии, потому что на этапе обработки нейросеть сосредотачивается на абстрактных и сложных признаках и понятиях, которые она выучила из тренировочных данных. Вот почему это происходит:
Вот как это может происходить: представим, что у нас есть набор фотографий человека для обучения нейросети. Этот набор может содержать различные фотографии с разных углов, в разном освещении и с разными выражениями лица. Нейросеть старается выделить общие черты лица , которые помогут ей распознавать человека на других изображениях. Однако, если в обучающей выборке были какие-то уникальные особенности этого человека, которые не были представлены в достаточном количестве, нейросеть может «запомнить» эти детали и использовать их для классификации в будущем. В таком случае, если мы визуализируем то, что “видит” нейросеть, на экране будет кусочек фотографии этих деталей в первоначальном виде, так как его значение было сохранено в весах и смещениях, а значит именно он будет наибольшим образом активировать “нейроны”, а не усредненное значение всех обучающих фотографий.
1. Входной слой: Это начальный слой, на котором сеть получает внешние данные. Каждый нейрон в этом слое представляет характеристику или атрибут входных данных. Таким образом, если нейросеть получает на вход фотографию, “нейроны” на входном слое разбивают ее на кусочки, которые потом будут анализироваться.
Строительные блоки нейронных сетей
Часто также выделяют отдельно сверточные слои (convolution layers): Когда фотография проходит через сверточный слой, происходит что-то похожее на сканирование изображения. Нейросеть на этом слое ищет определенные узоры или фигуры, например, края, углы, или текстуры, которые помогают понять, что на картинке изображено. После сверточного слоя фотография разбивается на кусочки из найденных объектов, которые будут меньше размером и их легче будет анализировать.
Попытка испытать на нейросетке классику зарубежную выдала более похожие на запрашиваемое варианты, чем те, что были с русской классикой.
На первой картинке конкретно Пип, да еще и теневая фигура сзади. Помести на обложку книги, никто и не скажет, что это нейросетка сделала, напротив, решат — «как глубоко задумано». Над второй картинкой глубоко думали и я, и Kandinsky. Представления не имею, на что мог надеяться человек на переднем плане картины? Судя по окружающему его пейзажу — тупо выжить. Это что-то между Гербертом Уэллсом и «Затерянным миром» Артура Конан Дойля (аналог Парка Юрского периода стопятидесятилетней давности).
Мы все пляшем вокруг нейросеток, как персонажи мультсериала вокруг инопланетянина: «Он родился!» Впервые человечество столкнулось с интеллектом, который не является человеческим, но при этом является достаточно развитым, чтобы можно было с ним общаться. Мы исследуем не искусственный интеллект, а себя самих: кто мы, чем мы отличаемся от других.
Чтобы визуализировать, что «видит» нейросеть, на какие вещи она обращает внимание, можно использовать технику, называемую визуализацией признаков (feature visualization) . Эта техника позволяет воссоздать изображения, которые максимально активируют определенные нейроны в нейросети.
Важно понимать, что после завершения обучения нейросеть и все связанные с ней параметры, включая итоговые веса и смещения, сохраняются в файле, который отправляется заказчику. Таким образом, данные, которые были использованы для обучения нейросети, фактически сохраняются (правда, в преобразованном виде) внутри файла и будут отправлены дальше.
Когда нейросеть обучается на данных, она стремится извлечь наиболее важные признаки из этой информации, которые помогут ей делать точные прогнозы или принимать решения в будущем. Однако в процессе этого обобщения она может «помнить» определенные детали обучающих данных в своих весах и смещениях.
Как эти данные оттуда извлечь?
Вот тут не смогла пройти мимо, захотелось похвастаться: все три генерации блестящи. Глаза Kandinsky даже не всегда делает хорошо (иногда страдает симметричность), но тут, даже если сделать скидку на недостатки сетки, у всех трех барышень очень умный взгляд.
Мне больше всего нравится первая картинка. Лицо юное и взгляд не сфокусирован, но при этом чувствуется упрямый характер девушки.
Представьте себе нейронную сеть, которой поручено проанализировать Вашу фотографию, и сделать выводы относительно ее содержания. Например, какого пола человек изображен на фотографии, во что он одет и сколько ему лет. По мере того, как Ваша фотография начинает свое путешествие по этой нейронной сети, она проходит ряд сложных вычислений.
Вторая картинка удивила нас гораздо больше. Мы задали нейросети такие ключи: санкции в отношении нефтепродуктов из России, танки «Леопард», Эфиопия, цены на электрокары, Фёдор Шаляпин (150 лет со дня рождения). А теперь посмотрите, как много интересных деталей она добавила! В запросе нигде нет слова «Украина», но дьявольские глаза леопарда окрашены в цвета украинского флага. Нейросеть увидела печально известный танк как гибрид машины и животного, которое пьёт из канистры с нефтью. При этом сам танк странным образом на танк-то и не похож, так как у него нет пушки. А то, что есть, больше похоже на скрученный ключ консервной банки. Честно говоря, пробирает до мурашек.
Так, например, первые скрытые слои могут отвечать за распознавание базовых характеристик изображения, таких как грани, текстуры и цвета. “Нейроны” в первом слое могут реагировать на вертикальные или горизонтальные линии на изображении , а другие могут определять области с определенным цветом.
Нейросети состоят из связанных узлов, иногда называемых “нейроны” (в англоязычной литературе часто используется термин nodes). Эти “нейроны” служат фундаментальными вычислительными единицами , которые обрабатывают и передают информацию по всей нейросети. Подобно биологическим нейронам в нашем мозге, искусственные “нейроны” работают совместно для решения сложных задач. Давайте разберем их работу на примере.
Данные, которые «видит» нейросеть, хранятся в ее весах и смещениях. Обучение нейросети заключается в том, чтобы настроить эти веса и смещения таким образом, чтобы они лучше всего соответствовали задаче классификации или распознавания объектов. Когда нейросеть “видит” какой-то признак, который она уже обучена распознавать, определенная группа “нейронов” в ней “загораются” : подобно связям в мозгу, через которые проходит сигнал. То, насколько сильно нейросеть “реагирует” на какое-то изображение, можно увидеть по значениям функций активаций: чем они больше, тем активнее “нейроны” реагируют на изображения, а значит, они его “узнают” .
1. Пулинг : Пулинговые слои уменьшают размер изображения, сохраняя только важные характеристики (например, для определения, изображен ли на фотографии человек, нейросеть может решить, что ей не важен фон фотографии и “размыть его”). В результате изображение становится менее детализированным, но сохраняет основные признаки. Можно сказать, что это «обобщенная» версия изображения, которая помогает упростить обработку для нейронной сети, не теряя важной информации.
Процесс визуализации признаков начинается со случайного изображения или шума, которое затем подвергается оптимизации, чтобы максимизировать активацию конкретного “нейрона” или группы “нейронов” в определенном слое нейросети. Это достигается путем изменения пикселей изображения таким образом, чтобы они максимально активировали выбранные “нейроны”.