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

Когда я впервые узнал о глубоком обучении, я начал спрашивать себя, зачем любому специалисту по данным больше использовать классическое машинное обучение? Эти алгоритмы более слабые, более требовательные и менее крутые. Пора рассказать всем, Imagenet и учебники по классификации кошек для всех.

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

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

Вы говорите, что с бегемотами легко, и может быть, мы можем легко сделать несколько их фотографий и повторно обучить модель, а количество видов в мире ограничено, но что происходит, когда мы обучаем модель определять пользователя? по изображению лица? В нашем наборе данных есть 10 в силе чего-то человека, и мы обучаем модель, красивую модель, а затем продаем SDK или API, которые найдут свой путь к мобильному телефону человека, которого наша модель никогда не встречала.

Тогда что нам делать? Собрать много изображений для каждого пользователя и заново обучить модель для каждого покупателя? Это требует больших затрат вычислений, требует от нас сбора большого количества изображений для каждого нового пользователя и вызывает множество юридических проблем.

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

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

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

Как?

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

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

Вот простой пример, реализация в tf.keras, работает не очень хорошо, а зачем? в их простой теоретической форме (в большинстве случаев) интересные вещи просто плохо тренируются.

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

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

Следите за обновлениями - в следующем посте я покажу разницу в производительности между двумя методами с точки зрения уменьшения потерь.

Спасибо, что прочитали здесь все. Посетите нас на shai-tal.com для получения более релевантного содержания и здесь для исходного сообщения.

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

Большое спасибо талантливой Ортал Даян (Мэн) за ее помощь в написании этого поста.