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

Так писал Пол Черчленд в своей основополагающей работе 2007 года Камера Платона о многоуровневых автоассоциативных сетях, за много лет до нынешнего повального увлечения глубоким обучением. Фактически, нейронные сети составляют значительную часть книги, которая якобы посвящена тому, как человеческий мозг -, а не машины - учится понимать мир.

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

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

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

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

В чем смысл моделирования сети для выполнения чего-то, что уже решено общими алгоритмами, например, кодирования и декодирования изображения? Вернемся к Полу Черчленду, который обсуждает эксперимент ученых Усуи, Накауичи и Накано, в котором они «построили сеть прямой связи« винный бокал », 81 входная« конусная ячейка »отобрала входной профиль отражательной способности на 81 различных точках. длины волн ».

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

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

Видите ли, обучение нейронной сети означает, что вы должны найти способ измерить, насколько хорошо эта сеть работает. Мы распространяем обратную ошибку в нашей сети, используя модифицированную версию правила цепочки, которое представляет собой метод для выполнения производных над составными функциями (функциями, которые вызывают другие функции). Чтобы найти ошибку, мы используем функции потерь уравнения , которые говорят нам, насколько далеко выходы нашей сети от выходных данных, которые мы моделируем. Затем мы используем эту потерю для изменения параметров модели, начиная с самых глубоких слоев и возвращаясь назад. Поскольку производные говорят нам, насколько изменить наши веса по каждому отдельному параметру, каждый параметр изменяется в зависимости от его прогнозируемого влияния на конечные потери.

Но как измерить потерю между двумя изображениями? Один из способов - использовать потерю пикселей или какой-либо механизм для измерения попиксельной разницы между изображениями. Поначалу это кажется естественным и лучшим решением. В конце концов, если вы хотите восстановить изображение, близкое к точному, разве вы не захотите тренироваться, используя меру точной визуальной разницы?

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

В конце концов, какими бы могущественными ни были наши воспоминания, они несовершенны. «Память может изменить форму комнаты; он может изменить цвет автомобиля. И воспоминания могут искажаться. Это просто интерпретация, это не запись, и они не имеют значения, если у вас есть факты », - говорит персонаж в Memento. Тем не менее, люди сохраняют выразительные и многофункциональные воспоминания на всю свою жизнь. Они могут использовать особенности своей памяти, ее основное содержание, чтобы выполнять задачи, изучать дополнительные задачи, размышлять о мире и реконструировать его с высокой степенью точности. Другими словами, они могут извлекать из своего сенсорного восприятия сильные и актуальные черты, чтобы сохранить их для дальнейшего использования. И все это без попиксельного сохранения памяти и без специально подобранных ярлыков, подобных тем, которые мы используем при классификации изображений, форме контролируемого обучения.

К счастью, мы можем сделать то же самое с нейронными сетями, и это будет обсуждаться во второй части.