В этой статье я расскажу вам, что такое индуктивное смещение, зачем оно нужно и где оно встречается в машинном обучении.
Спойлер: везде.
Любая нейронная сеть имеет индуктивное смещение (даже та, что в человеческом мозге, хе-хе) Вы также узнаете:
- почему индуктивное смещение очень хорошо
- способы реализации индуктивного смещения в моделях машинного обучения
- что такое индуктивное смещение в сверточных нейронных сетях и как успех архитектуры Image Transformer связан с индуктивным смещением
Картинка для привлечения внимания
Что такое индуктивное смещение
Термин «индуктивное смещение» я сознательно не буду переводить на русский язык: общепринятого перевода не существует, и все разумные варианты перевода, на мой взгляд, не передают сути термина.Кроме того, в профессиональной среде все используют англицизм.
Термин «индуктивное смещение» имеет множество определений в литературе.
Все они неформальны.
Формального определения вообще не существует, а самое строгое из возможных основано на формальной математической логике.
Здесь мы ограничимся следующим определением: Индуктивное смещение — это априорное знание о природе данных, которые человек каким-то образом вкладывает в модель машинного обучения.
.
Чтобы лучше понять суть индуктивного смещения, рассмотрим примеры:
- Модель линейная регрессия .
Линейная регрессия основана на предположении, что существует линейная связь между целевой переменной и зависимыми переменными (признаками).
Модель как бы «встроена» в знание того, что данные имеют линейный характер.
Из-за этого ограничения линейности модели линейная регрессия плохо обучается для любых данных, в которых целевая переменная не зависит линейно от признаков (см.
рисунок ниже).
Это предположение о линейной зависимости между характеристиками ответа и есть его индуктивная предвзятость (точнее, одна из его индуктивных предвзятостей, как мы увидим позже).
Ось X — значение атрибута, ось Y — значение целевой переменной.
Видно, что зависимость Y от X носит нелинейный характер.
Из-за этого модель линейной регрессии, которая пытается построить линейную связь между X и Y, очень плохо справится с описанием данных.
- Модель К ближайших соседей (k-ближайшие соседи) .
Эта модель действует в предположении «компактности», то есть «значение целевой переменной для неизвестного объекта однозначно определяется значениями целевой переменной для k ближайших (в некотором смысле) к ней объектов.
» Это предположение является индуктивным смещением алгоритма k-ближайших соседей.
Модель KNN содержит знания о том, что ответ для любого объекта должен рассчитываться только на основании того, какие значения ответа имели ближайшие к этому объекту элементы обучающей выборки.
Иллюстрация классификации объектов (зеленая точка) по алгоритму KNN. Синие точки — объекты одного класса, оранжевые — объекты другого класса.
При k=3 зеленая точка будет присвоена «синему» классу.
- Нелинейная регрессия: Позвольте мне иметь данные, полученные в результате какого-нибудь физического эксперимента.
Пусть в данных есть две переменные - И .
Я хочу построить модель машинного обучения, которая могла бы с помощью переменных прогнозировать стоимость .
Подскажите из теоретической физики, что уравнение зависимости й от Икс должно выглядеть определенным образом: как функция
.Тогда все, что мне нужно сделать, это обучить модель машинного обучения находить подходящие значения коэффициентов.
И
на основе данных моего датчика.Я могу сделать это, например, используя градиентный спуск (см.
картинку).
Это знание того, что модель машинного обучения, описывающая наши данные, должна принять форму определенной функции.
и есть индуктивное смещение.
Иллюстрация поиска оптимальных коэффициентов функции y = w1*exp(w2*x) + w3 для описания данных (синие точки).
Итак, подведем итог: индуктивное смещение — это некоторое априорное предположение о характере данных, которые человек «передаёт» модели машинного обучения, накладывающее ограничения на форму, в которой модель будет искать зависимость значения целевой переменной от входных данных.
.
Здесь мы рассмотрели довольно тривиальные примеры индуктивного смещения — те, которые достигаются за счет наложения ограничений на тип самой модели.
В общем, «переносить» в модель априорные знания (наделять модель индуктивным смещением) можно разными способами: не только с помощью определенного устройства архитектуры модели.
Мы поговорим об этом ниже.
А пока отметим, что.
Без индуктивного смещения не обойтись
Из примеров линейной регрессии и KNN может показаться, что индуктивное смещение — это плохо.Ведь это ограничивает модели! Индуктивное смещение линейной регрессии не позволяет ей хорошо обучаться на данных, которые не имеют линейной зависимости между целевой переменной и признаками.
Индуктивный уклон алгоритма KNN не позволяет ему хорошо работать на данных, в которых целевая переменная объекта не определяется однозначно значениями целевых переменных «близких» элементов.
Только недостатки! Можно ли сделать модель вообще без каких-либо ограничений? Но Без индуктивного смещения модель машинного обучения не может существовать .
Вот почему: Цель модели машинного обучения — использовать набор обучающих данных для вывода общего правила, которое можно использовать для создания ответа на любой элемент из предметной области (а не только на элементы из обучающего набора).
Пример задания - имея 100 000 изображений лиц людей, научиться решать задачу распознавания лиц и уметь распознавать лица любого человека в мире.
Этот процесс вывода общего правила для всех элементов области на основе ограниченного числа наблюдений называется обобщение (обобщение) модели машинного обучения.
https://bit.ly/31bvCvP Такое обобщение невозможно без наличия индуктивного смещения в модели.
Почему? Потому что обучающий набор всегда конечен.
Конечно, он не охватывает все возможные наблюдения в реальном мире.
А из конечного набора наблюдений, без каких-либо дополнительных предположений о данных, общее правило можно вывести бесконечным числом способов.
Ведь в общем случае значение целевой переменной для элементов вне обучающего набора может быть каким угодно.
Индуктивное смещение — это дополнительная информация о характере данных модели; способ показать моделям, «как думать» , в какой форме искать решение, по какому принципу строить алгоритм обобщения.
Это позволяет модели отдавать предпочтение одному способу обобщения над другим .
Это загоняет модель в рамки при выборе метода обобщения, в рамках которых практически все варианты обобщения будут вполне адекватны.
Модель становится как бы «сдвинутой» в сторону решения определенного типа.
Иллюстрация того, как индуктивное смещение подсказывает моделям, «как думать».
Например, индуктивное смещение линейной регрессии заставляет модель из всех вариантов функций, описывающих данные, выбирать ту, которая имеет линейный характер.
А индуктивное смещение модели из третьего примера подсказывает модели, что необходимо искать зависимость ответа от входных данных в виде некоторой функции, а модели остается подобрать подходящие параметры для этой функции.
И при выборе модели для обучения для решения определенной задачи нужно выбирать модель, индуктивное смещение которой лучше соответствует характеру данных и будет лучше решать эту задачу.
Вообще говоря, изобретение новых архитектур моделей машинного обучения (например, нейронных сетей) заключается в изобретении архитектуры, которая будет обладать необходимым индуктивным смещением для решения конкретной задачи.
Так, мы поняли, что индуктивное смещение — хорошая и полезная вещь .
Давайте поговорим о том, как можно ввести в модель индуктивное смещение.
Мы увидим, что манипулирование архитектурой модели — это лишь один из многих способов введения индуктивного смещения.
Способы введения индуктивного смещения в модель.
Выше мы рассмотрели примеры моделей индуктивного смещения линейной регрессии и KNN. Обе эти модели имеют индуктивное смещение, встроенное в саму архитектуру модели — в сам механизм того, как эти модели получают значение целевой переменной на основе входных данных.
Убедимся, что в модель можно внести априорные знания о данных и другими способами.
Для этого Рассмотрим нейронные сети и индуктивное смещение в них.
.
Прежде всего, каждая нейронная сеть имеет архитектура (здание).
Архитектура нейронной сети — это какие слои в ней присутствуют (полносвязные, сверточные, рекуррентные,.
), сколько нейронов в каждом слое, какая функция активации на каждом слое, используется ли дропаут и внимание, и т. д. Архитектура нейронной сети описывает тип функций, которые может выражать нейронная сеть.
Да, нейронная сеть по своей сути — это просто функция, описывающая зависимость выхода от входа, точно так же, как линейная регрессия или функция y = w1*exp(w2*x) + w3 из третьего примера.
Только нейросеть — это гораздо более сложная функция, с большим количеством обучаемых параметров и нелинейностей.
Отсюда понятно, что архитектура нейронной сети – это уже ее индуктивный уклон.
При этом каждый тип сетевого слоя — сверточный, полносвязный, рекуррентный — имеет свое индуктивное смещение, определяемое структурой этих слоев.
Более того, их индуктивное смещение помогает им обрабатывать данные того типа, для которого они предназначены: сверточный слой — изображения, рекуррентный слой — данные, представленные в виде последовательностей.
Об индуктивном смещении сверточного слоя мы поговорим ниже.
Дальше, алгоритм обучения нейронной сети также накладывает ограничения на модель.
Мы обучаем нейронную сеть, используя алгоритм обратного распространения ошибки, а не какой-либо другой метод. А это также привносит в модель некоторые знания о том, как должен быть структурирован предпочтительный метод обобщения.
А именно: алгоритм обратного распространения ошибки минимизирует среднюю ошибку модели на обучающем наборе по некоторой метрике качества.
То есть заставляет модель из всех возможных методов обобщения выбирать тот, который покажет лучшее значение некоторой метрики в среднем на обучающей выборке.
Здесь становится понятно, что выбор скорости обучения, алгоритма оптимизации ( Адам , РМСПроп , .
) — все это также способствует индуктивному смещению: оно заставляет модель искать способ обобщения определенным образом.
Дальше: данные .
Посредством обучающих данных вы также можете внести свой вклад в индуктивное смещение.
(то есть передавать знания о данных в модель через данные, хе-хе) Пример: давайте обучим нейронную сеть задаче классификации изображений яблок и груш.
И допустим, что на всех картинках из обучающей выборки яблоки и груши расположены ровно вертикально:
Обучив нейросеть на такой выборке, мы, скорее всего, получим модель, которая будет плохо классифицировать фрукты, лежащие на боку.
Это легко объяснимо: во время обучения модель не увидела ни одного плода, расположенного не вертикально, и просто не научилась их классифицировать.
Мы хотим избежать этого и заставить модель выбрать метод обобщения, при котором она сможет хорошо классифицировать фрукты, повернутые на любое количество градусов.
Для этого мы можем изменить обучающий набор: дополнить его так, чтобы он содержал изображения повернутых фруктов:
При обучении на таком дополненном наборе данных модель будет вынуждена выбрать метод обобщения, при котором она сможет хорошо классифицировать не только вертикальные, но и повернутые изображения фруктов.
Таким образом, мы ввели индуктивное смещение в нейронную сеть с помощью увеличения набора данных.
Теперь данные обучения и алгоритм обучения нейронной сети (обратное распространение ошибки) устроены так, что модель в процессе обучения «понимает», что данные (картинки фруктов) не только расположены строго вертикально, но и повернуты на произвольное число.
градусов.
И он одинаково хорошо учится классифицировать фрукты, повернутые по-разному.
Обратите внимание, что необходимое индуктивное смещение – понимание того, что картинки фруктов не только вертикальны – появляется в модели не только из-за наличия в обучающем наборе данных изображений фруктов, повёрнутых на разное число градусов, но и из-за определённого структура процесса обучения нейронной сети .
Обратное распространение ошибки заставляет нейронную сеть научиться одинаково хорошо классифицировать все изображения из набора обучающих данных, и поэтому нейронная сеть учится также классифицировать повернутые фрукты.
Это важное замечание для понимания сути индуктивного смещения, поскольку чаще всего, когда говорят о введении индуктивного смещения в нейронную сеть, упоминают лишь манипуляции с архитектурой нейронной сети и/или обучающими данными.
Это происходит потому, что все нейронные сети по умолчанию обучаются с использованием обратного распространения ошибки и о роли этого алгоритма во внесении индуктивного смещения в нейронную сеть можно умалчивать.
Однако без конкретной разработки алгоритма обучения манипулирование обучающими данными может не дать желаемого эффекта.
Проиллюстрируем это на примере: представьте, что мы изменили алгоритм обучения нейронной сети.
Давайте используем следующий алгоритм обучения сети вместо обратного распространения ошибки:
- Выбрать случайные значения параметров нейросети 100 раз;
- для каждого значения параметра рассчитать значение метрики качества на тестовом наборе данных;
- «обученная» нейронная сеть — это нейронная сеть с параметрами, для которых было получено лучшее значение метрики на тестовом наборе данных.
Более того: дизайн архитектуры также играет роль в том, дадут ли манипуляции с набором данных желаемый эффект. Например, какое бы индуктивное смещение вы ни вложили в данные и алгоритм обучения, вы никогда не научите линейной регрессии хорошо решать задачу распознавания лиц.
Таким образом, введение любого индуктивного смещения в модель машинного обучения основано на определенных характеристиках архитектуры модели, алгоритма обучения и данных обучения.
.
Все это вместе влияет на то, как алгоритм выбирает метод обобщения и какое индуктивное смещение он получает. Иногда случается, что ограничения, которые человек наложил на модель с целью получения определенного индуктивного смещения, не дают ожидаемого эффекта.
Происходит это потому, что человек не учел всех особенностей структуры модели, данных и метода ее обучения: чаще всего это сделать просто невозможно.
Мы поговорим об этом в разделе, где обсуждаем индуктивное смещение сверточной нейронной сети.
Далее в этой статье мы также будем предполагать, что при обучении нейронных сетей используется алгоритм обратного распространения ошибки и умолчим о его роли в формировании индуктивного смещения.
Мы поговорим об индуктивном смещении, которое модель получает от устройства конкретной архитектуры и данных обучения.
Итак, мы поняли, что Внести индуктивное смещение в модель можно любым способом — манипулируя архитектурой модели, данными и методом ее обучения.
Главное — разобраться, каким из возможных способов передать нужную вам информацию о данных в модель, чтобы она получила желаемое индуктивное смещение.
Индуктивное смещение и размер обучающей выборки
Выше мы обсуждали, что обучающие данные также являются способом внесения в модель индуктивного смещения.Теперь обратите внимание: чем больше и разнообразнее обучающий набор, тем больше знаний о природе данных получает модель во время обучения.
Это означает, что тем меньше вероятность того, что модель выберет «плохой» метод обобщения, который будет плохо работать с данными вне обучающего набора.
Короче говоря, чем больше данных, тем лучше обучается модель.
И наоборот: чем меньше данных, тем больше вероятность, что модель выберет плохой метод обобщения.
Вы, наверное, знаете, что если обучающая выборка мала, нейронные сети часто переобучаются.
Например, при решении задачи классификации изображений кошек и собак иногда внимание уделяется фону, а не самим животным.
Переподготовка модели — это не что иное, как выбор неудачного метода обобщения из-за отсутствия достаточной информации в обучающих данных.
Чтобы модель не переобучилась, «знания» о природе данных, отсутствующих в наборе данных, нужно передать ей другим способом — например, путем введения в архитектуру модели более сильного индуктивного смещения путем создавая большие ограничения на конструкцию модели.
Отсюда вывод: чем меньше обучающая выборка и чем сложнее задача, тем сильнее индуктивное смещение необходимо вложить в модельное устройство для успешного обучения модели .
Другими словами, тем большие ограничения необходимо наложить на модель, чтобы она «не ушла слишком далеко в сторону».
Кстати, если вы спросите, почему люди, в отличие от нейронных сетей, могут быстро освоить задачу по классификации кошек и собак, имея в обучающем наборе всего десяток картинок – это потому, что у людей есть индуктивный уклон: мы знаем, что существует фон на картинке, но есть объект, и при классификации картинок нужно обращать внимание только на сам объект. И до обучения нейросеть не знает ни о каких «фонах» и «объектах» — ей просто дают разные картинки и просят научиться их различать.
Давайте Давайте посмотрим, как работает принцип «чем меньше данных, тем больше индуктивного смещения необходимо в архитектуре» на примере.
.
Для этого рассмотрим две архитектуры нейросетей для работы с изображениями: сверточные нейронные сети и Visual Transformer. Давайте разберемся, как их успех связан с индуктивным смещением и в чем разница между их принципами обработки изображений.
Индуктивное смещение слоя свертки
Давайте рассмотрим сверточный слой (свертка).
Как работает свертка
https://brandinho.github.io/mario-ppo/ Индуктивное смещение сверточного слоя – предположение о компактности и нечувствительности к передаче (трансляционная инвариантность).
Фильтр свертки предназначен для захвата компактной части всего изображения за раз (например, квадрата 3х3 пикселя, как показано в GIF), не обращая внимания на удаленные пиксели изображения.
Также в сверточном слое для обработки всего изображения используется один и тот же фильтр (как и в GIF — тот же фильтр обрабатывает все квадраты изображения 3х3).
Эти индуктивные смещения помогают сверточным нейронным сетям (CNN) обрабатывать изображения так, как их «обрабатывает» человек: предположение о компактности соответствует представлению человека о том, что каждый объект на изображении расположен компактно, т.е.
в определенной области изображения, и не разреженно по всей площади изображения; а нечувствительность к переносу заставляет нейросеть обрабатывать один и тот же объект на изображении одинаково, вне зависимости от того, в какой части картинки он расположен (см.
рисунок ниже):
Предмет на картинке (собака) расположен компактно.
Плюс, обрабатывая обе картинки сверточной нейронной сетью, мы хотим получить один и тот же результат (например, ответ в задаче на классификацию, что на картинке есть собака).
Оказывается, сверточный слой устроен таким образом, что его индуктивное смещение идеально коррелирует с характером изображений и объектов на них, поэтому сверточные нейронные сети так хорошо справляются с обработкой изображений.
Какой вид индуктивного смещения имеют другие слои: рекуррентное, полносвязное и т. д., предлагаю вам подумать самим =) И упомянем такое явление, как «неявное индуктивное смещение»:
Скрытое индуктивное смещение
Часто бывает, что устройства нейронных сетей или обучающие данные генерируют не только необходимые индуктивные смещения, но и «скрытые» - те, которые человек не хотел сознательно вкладывать в модель и которые сложно выявить при первом взгляде на структуру модели.Исследователи проводят множество экспериментов с нейронными сетями, пытаясь выявить наличие и суть подобных скрытых эффектов.
Пример со свертками: сверточные нейронные сети были построены таким образом, чтобы наделить их двумя индуктивными смещениями, которые описаны выше: предположение о компактности и нечувствительности к передаче.
Смещения — это те, которые люди хотели внести в сверточные сети, и они явно порождены самой структурой операции свертки.
Но оказалось, что помимо этих двух индуктивных смещений архитектура свертки порождает и другие, которые не так-то просто выявить, просто взглянув на то, как работает свертка.
Например, не так давно один изучать показали, что свертки имеют индуктивный уклон в отношении текстуры изображений: оказывается, сверточные сети устроены таким образом, что при обработке изображений они уделяют больше внимания текстурам, а не формам объектов.
Это пример вредного индуктивного смещения: нам бы хотелось, чтобы было наоборот: чтобы нейросеть делала выводы не на основе текстур, а на основе форм объектов.
Из-за такого «перекоса» в сторону текстур сверточные сети плохо умеют распознавать картинки, на которых текстуры объекта сильно отличаются от текстур картинок, входивших в обучающую выборку.
Чтобы избавиться от такого нежелательного поведения извилин, нужно ввести в нейронную сеть еще одно индуктивное смещение, которое заставит модель уделять больше внимания формам объектов, а не их текстурам.
Это индуктивное смещение возникает за счет изменения обучающих данных, а не архитектуры модели.
Изображения из обучающего набора данных дополняются так, чтобы набор данных содержал больше изображений одной и той же формы (например, изображений слонов), но с разными типами текстур (см.
рисунок ниже).
https://arxiv.org/pdf/1811.12231.pdf
Пример расширения изображений обучающего набора для уменьшения влияния текстуры изображения на производительность CNN. Слева — исходное изображение; справа — дополненные версии левого изображения с разными текстурами, но одинаковой формы.
Это еще один пример того, как различные индуктивные смещения можно внести в модель с помощью разных методов — не только путем изменения архитектуры модели, но и путем манипулирования обучающими данными.
А также пример того, что наличие любого индуктивного смещения зависит не от одного компонента — архитектуры модели, устройства обработки данных или алгоритма обучения — а от всех их сразу.
Понимание того, какие скрытые индуктивные искажения имеет модель, помогает лучше понять, как модель обрабатывает данные, и делает модель более эффективной, если выявленные скрытые индуктивные смещения окажутся вредными.
По-английски «скрытое» индуктивное смещение называется скрытый .
А те, которые человек сознательно заложил в модель - явный .
Итак, мы выяснили, как индуктивное смещение сверточных слоев помогает CNN эффективно обрабатывать изображения.
Давайте посмотрим на другую архитектуру нейросети для работы с картинками — Visual Transformer — и поймем, как ее недавний успех связан с индуктивным смещением.
Визуальный трансформатор и индуктивное смещение
Возможно, вы слышали об архитектуре Визуальный трансформер .Это НЕсверточная архитектура нейронной сети для обработки изображений, которая показывает лучшие результаты, чем сверточные сети, на некоторых задачах: например, на задаче классификации изображений из набора данных ДЖФТ-300М .
В этом наборе данных 300 миллионов изображений.
Модель Visual Transformer основана на той же идее, что и архитектура Transformer из области обработки естественного языка (NLP): движок Внимание .
По сути, Visual Transformer — это адаптация модели Теги: #Машинное обучение #искусственный интеллект #нейронные сети #трансформеры #Обработка изображений #обучение нейронной сети #индуктивное смещение #теория нейронных сетей
-
Windows + Google Android В Нетбуках От Acer
19 Oct, 24 -
20 Полезных И Красивых Веб-Приложений
19 Oct, 24