Самостоятельные методы […] будут основным методом обучения нейронных сетей, прежде чем мы будем обучать их сложным задачам, — Ян ЛеКун

Хорошо! Давайте посмотрим на это самоконтролируемое обучение! Темная материя интеллекта.

Но сначала давайте сделаем шаг назад.
Все мы знаем, что на левом изображении изображена собака, а на правом — кошка.

Но мы также знаем, что на этих двух изображениях изображены разные животные.

Важно то, что мы знаем это, даже не зная, как они называются. Мы знаем, как различать разных животных или, в более общем смысле, разные объекты, даже не зная и не обучаясь связанным с ними именам или ярлыкам классов.

На самом деле мы знаем не только, как различать разных животных, но и то, что два изображения содержат одно и то же, хотя и выглядят несколько по-разному. Один может быть повернут, а другой нет.
Таким образом, очевидно, должна быть какая-то основная информация, например, определенные цвета или узоры краев, которые мы и модели ML можем научиться различать, не требуя конкретных имен, или, скорее, меток классов или даже подробных карт сегментации.

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

Давайте посмотрим на самоконтролируемое обучение.

Итак, что мы только что обнаружили?

Мы обнаружили, что мы интуитивно распознаем, когда два объекта выглядят одинаково, и думаем, что они, вероятно, представляют один и тот же объект, а объекты, выглядящие по-разному, вероятно, не являются одним и тем же объектом.

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

Он обучен задаче сопоставления изображения с ярлыком.

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

Как насчет следующей идеи: у нас уже есть наш образ, и теперь мы можем разделить его на патчи.

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

Вот почему оно называется Обучение с самостоятельным наблюдением.
У нас есть своего рода ярлык истинности, поэтому это обучение с учителем, но мы сгенерировали его автоматически.

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

Если эта концепция кажется вам знакомой, это одна из двух основных задач, используемых для предварительного обучения всех мощных моделей больших языков, таких как ChatGPT, Googles Bard и других! Моделирование маскированного языка также является подходом к обучению с самоконтролем, когда у нас уже есть полное предложение, мы автоматически маскируем некоторые слова и обучаем модель предсказывать эти пропущенные слова.

Хорошо, вернемся к моделированию зрения. Таких задач, конечно, больше, например. перекрашивание черно-белого изображения (которое мы сделали черно-белым автоматически) или прогнозирование поворота изображения (где мы знаем угол, поскольку мы автоматически повернули изображение).

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

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

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

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

Но… Какие предтекстовые задания лучше? Кажется несколько случайным, какой из них мы используем для предварительной тренировки, верно?

Нужны ли нам эти предтекстовые задачи?

Я имею в виду, в конце концов, мы просто хотим осмысленных представлений, верно?!

Мы знаем, что эти два изображения содержат один и тот же объект.
(Кстати, это милое животное называется квокка!)
Итак, мы просто хотим, чтобы наша Нейросеть предсказывала очень похожий, если не один и тот же вектор представления для обоих вариантов одного и того же изображения.

Итак… Почему бы не обучить нашу нейронную сеть прямо на этой цели?!

У нас есть исходное изображение Quokka, и мы можем немного изменить его с помощью случайных дополнений, таких как вращение и некоторые искажения цвета. Поскольку эти две разные вариации, называемые в литературе разными представлениями, создаются из одного и того же исходного изображения, они должны содержать один и тот же объект. Это означает, что представления, предсказываемые одной и той же нейронной сетью, должны быть очень похожими!

Удивительная идея, правда?! Если мы теперь обучим нашу нейронную сеть на больших объемах данных, следуя этому подходу, заключающемуся в получении изображения, дополнении его в два разных вида и минимизации расстояния между векторами представления, мы можем в значительной степени напрямую оптимизировать для осмысленного пространства представления! Все одинаковые объекты, даже если они выглядят несколько иначе, будут иметь одинаковое представление.

Самостоятельный контроль и машинное обучение в целом решены!

Или они?! Может ли быть проблема с этим подходом к обучению?

Может ли быть проблема с таким подходом к обучению?
Что ж, давайте еще раз посмотрим, что мы оптимизируем. Наша цель — максимизировать сходство или, другими словами, минимизировать расстояние между двумя векторами представления. Ну и какое решение было бы оптимальным? Правильно, всегда предсказывая один и тот же постоянный вектор! Это оптимальное решение, допускаемое нашим подходом, но определенно нежелательное по понятным причинам. В литературе это называется Коллапс представления!

Итак, как мы можем это исправить?

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

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

Здесь мы рассматриваем идею Contrastive Learning, которая является частью семейства SSL для «Deep Metric Learning». В статье «Простая структура для контрастного обучения визуальным представлениям» (или SimCLR), опубликованная только в 2020 году исследователями Google Brain (Т. Чен, С. Корнблит, М. Норузи, Г. Хинтон), реализуется простая структура, которая следует именно та идея, которую мы только что обсуждали!

Но, конечно же, дьявол кроется в деталях!

SimCLR — одна из самых важных статей в области SSL! Поэтому, если вы хотите посмотреть, как это работает, и начать интуитивно понимать SSL, я рекомендую вам прочитать следующий пост. И если он еще не вышел, не забудьте подписаться на меня, чтобы не пропустить загрузку!

P.S.: Если вам нравится этот контент и визуальные эффекты, вы также можете заглянуть на мой канал YouTube, где я публикую похожий контент, но с более качественной анимацией!

СТАНЬТЕ ПИСАТЕЛЕМ на MLearning.ai //БЕСПЛАТНЫЕ инструменты ML// Clearview AI