В этой статье я расскажу, что такое inductive bias, зачем он нужен и где встречается в машинном обучении. Спойлер: везде. Любая нейросеть имеет inductive bias (даже та, что в человеческом мозге, хе-хе) Также вы узнаете: почему inductive bias — это очень хорошо способы внедрить inductive bias в модели машинного обучения какой inductive bias в сверточных нейросетях и как успех архитектуры Image Transformer связан с inductive bias  Ну что, поехали: Я намеренно не буду переводить термин "inductive bias" на русский язык: общепринятого перевода нет, а все разумные варианты перевода, на мой взгляд, не передают суть термина. К тому же, в профессиональной среде все используют англицизм.  У термина inductive bias в литературе есть много определений. Все они — неформальные. Формального определения вообще не существует, а наиболее строгое из возможных опирается на формальную математическую логику. Мы здесь ограничимся следующим определением: Inductive bias — это априорные знания о природе данных, которые человек некоторым образом вкладывает в модель машинного обучения. Чтобы лучше понять суть inductive bias, рассмотрим примеры: Модель линейной регрессии. Линейная регрессия строится в предположении, что между целевой переменной и зависимыми переменными (признаками) существует линейная зависимость. В модель как бы "вложены" знания о том, что данные имеют линейную природу. Из-за этого ограничения линейности модели линейная регрессия плохо обучается под любые данные, в которых целевая переменная от признаков зависит не линейно (см. рис ниже). Это предположение о линейной связи между признаками о ответом — и есть ее inductive bias (точнее, один из ее inductive bias'ов, как мы увидим далее) Модель K ближайших соседей (k-nearest neighbours). Эта модель работает в предположении "компактности", то есть "значение целевой переменной для неизвестного объекта однозначно определяется значениями целевой переменной для k ближайших (в некотором смысле) к нему объектов". Это допущение — inductive bias алгоритма k ближайших соседей. В модель KNN вложены знания о том, что ответ для любого объекта должен быть вычислен только на основе того, какие значения ответов были у ближайших к этому объекту элементов обучающей выборки.  Нелинейная регрессия: пусть у меня есть данные, полученные из некоторого физического эксперимента. Пусть в данных две переменные — и . Я хочу построить модель машинного обучения, которая могла бы по переменной предсказывать значение . Пусть я знаю из теоретической физики, что уравнение зависимости y от x должно выглядеть определенным образом: в виде функции . Тогда мне остается обучить модель машинного обучения находить подходящие значения коэффициентов и на основании моих данных с датчика. Я могу сделать это, например, с помощью градиентного спуска (см. рис). Это знание о том, что модель машинного обучения, описывающая наши данные, должна иметь вид определенной функции и есть inductive bias.  Итак, подведем итог: inductive bias — это некоторые априорные допущения о природе данных, которые человек "передает" модели машинного обучения, накладывая ограничения на то, в каком виде модель будет искать зависимость значения целевой переменной от входящих данных. Здесь мы рассмотрели довольно тривиальные примеры inductive bias — те, которые достигаются наложением ограничений на сам вид модели. Вообще "передать" модели априорные знания (наделить модель inductive bias) можно разными способами: не только с помощью определенного устройства архитектуры модели. Об этом мы поговорим ниже. А пока что давайте заметим, что... Из примеров о линейной регрессии и KNN может показаться, что inductive bias  — плохая штука. Ведь это ограничивает модели! Inductive bias линейной регрессии не позволяет ей хорошо обучаться под данные, которые не имеют линейной зависимости между целевой переменной и признаками. Inductive bias алгоритма KNN не позволяет ему хорошо работать на данных, в которых целевая переменная объекта не однозначно определяется значениями целевых переменных "близких" элементов. Одни недостатки! Можно ли сделать модель совсем без ограничений? Но без inductive bias модель машинного обучения существовать не может. Вот почему:  Цель модели машинного обучения — используя обучающую выборку данных, вывести общее правило, по которому можно будет выдавать ответ на любой элемент из доменной области (а не только на элементы из обучающей выборки). Пример задачи — имея 100.000 изображений лиц людей, научиться решать задачу распознавания лиц и уметь распознавать лица любого человека в мире. Этот процесс — выведение общего правила для всех элементов домена на основе ограниченного числа наблюдений — называется генерализацией (обобщением) модели машинного обучения.  Такая генерализация невозможна без наличия inductive bias у модели. Почему? Потому что обучающая выборка всегда конечна. Она точно не покрывает все возможные в реальном мире наблюдения. А из конечного набора наблюдений, не делая совсем никаких дополнительных предположений о данных, вывести общее правило можно бесконечным числом способов. Ведь, в целом, значение целевой переменной для элементов вне обучающей выборки может быть каким угодно.  Inductive bias — это дополнительная информация о природе данных для модели; способ показать модели, "в какую сторону думать", в каком виде искать решение, по какому принципу строить алгоритм генерализации. Он позволяет модели приоритизировать один способ генерализации над другим. Он загоняет модель в рамки при выборе метода генерализации, внутри  которых практически все варианты генерализации будут достаточно адекватные. Модель становится как бы "сдвинута" (biased) в сторону решения определенного вида.  Например, inductive bias линейной регрессии заставляет модель из всех вариантов функций, описывающих данные, выбирать ту, которая имеет линейную природу. А inductive bias модели из третьего примера говорит модели, что искать зависимость ответа от входных данных нужно в виде определенной функции, и модели остается подобрать для этой функции подходящие параметры.  И при выборе модели для обучения для решения определенной задачи нужно выбрать такую модель, чей inductive bias лучше проходит под природу данных и лучше позволит решить эту задачу. Вообще говоря, изобретение новых архитектур моделей машинного обучения (например, нейросетей) и состоит в том, чтобы изобрести такую архитектуру, которая будет иметь нужный inductive bias для решения конкретной задачи. Итак, мы поняли, что inductive bias — хорошая и полезная штука. Давайте поговорим о том, какими способами можно внедрить inductive bias в модель. Мы увидим, что манипулирование устройством архитектуры модели — лишь один из многих способов внедрения inductive bias.  Выше мы рассматривали примеры inductive bias моделей линейной регрессии и KNN. У обеих этих моделей  inductive bias "встроен" в саму архитектуру модели — в сам механизм того, как эти модели получают значение целевой переменной на основе входных данных. Давайте убедимся, что внедрить в модель априорные знания о данных можно и другими способами. Для этого рассмотрим нейронные сети и inductive bias в них. Прежде всего, каждая нейронная сеть обладает архитектурой (строением). Архитектура нейросети  — это то, какие слои в ней присутствуют (полносвязные, сверточные, рекуррентные, ...), сколько нейронов в каждом слое, какая функция активации на каждом из слоев, используется ли dropout и attention и т.д.  Архитектура нейросети описывает вид функций, которые может выражать нейросеть. Да, нейронная сеть по своей сути — это просто функция, описывающая зависимость выхода от входа, как и линейная регрессия или функция y = w1*exp(w2*x) + w3 из третьего примера. Только нейросеть — сильно более сложная функция, с большим числом обучаемых параметров и нелинейностей. Отсюда понятно, что архитектура нейросети — это уже ее inductive bias. Более того, каждый вид слоев сетей — сверточный, полносвязный, рекуррентный — имеют свой inductive bias, обусловленный строением этих слоев. Причем их inductive bias помогают им обрабатывать данные того вида, для которых они предназначены: сверточному слою — изображения, рекуррентному — данные, представленные в виде последовательностей. Об inductive bias сверточного слоя мы поговорим ниже. Далее, алгоритм обучения нейросети тоже накладывает на модель ограничения. Мы обучаем нейросеть с помощью алгоритма обратного распространения ошибки (backpropagation), а не с помощью какого-либо другого метода. И это тоже внедряет в модель некоторые знания о том, как должен быть устроен предпочтительный способ генерализации. А именно: алгоритм backpropagation минимизирует среднюю ошибку модели на обучающей выборке с точки зрения некоторой метрики качества. То есть заставляет модель из всех возможных способов генерализации выбирать такой, который будет показывать лучшее значение некоторой метрики в среднем на обучающей выборке.  Тут становится понятно, что выбор learning rate, алгоритма оптимизации (Adam, RMSProp, ...) — все это тоже вносит вклад в inductive bias: заставляет модель искать способ генерализации определенным способом. Далее: данные. Через обучающие данные тоже можно внести вклад в inductive bias. (то есть, через данные передать модели знания о данных, хе-хе) Пример: пусть мы обучаем нейросеть на задачу классификации изображений яблок и груш. И пусть на всех картинках из обучающей выборки яблоки и груши расположены ровно вертикально: Обучив нейросеть на такой выборке, мы, скорее всего, получим модель, которая будет плохо классифицировать фрукты, лежащие на боку. Это легко объяснимо: при обучении модель не видела ни одного фрукта, расположенного не вертикально, и просто не научилась их классифицировать. Мы хотим избежать такого и заставить модель выбрать тот способ генерализации, при котором она смогла бы хорошо классифицировать фрукты, повернутые на любое число градусов. Для этого мы можем изменить обучающую выборку: аугментировать ее так, чтобы она содержала изображения повернутых фруктов:  При обучении на таком аугментированном датасете модель будет вынуждена выбрать тот способ генерализации, при котором хорошо сможет классифицировать не только вертикальные, но и повернутые картинки фруктов.  Таким образом мы внедрили inductive bias в нейросеть с помощью аугментации датасета. Теперь обучающие данные и алгоритм обучения нейросети (backpropagation) устроены так, что модель в процессе обучения "понимает", что данные (картинки фруктов) бывают не только расположенными строго вертикально, но и повернутыми на произвольное число градусов. И учится одинаково хорошо классифицировать фрукты, повернутые по-разному.  Обратите внимание, что нужный inductive bias — понимание, что картинки фруктов бывают не только вертикальные — появляется у модели не только благодаря наличию повернутых на разное число градусов картинок фруктов в обучающем датасете, но и благодаря определенному устройству процесса обучения нейросети. Backpropagation заставляет нейросеть учиться одинаково хорошо классифицировать все картинки из обучающего датасета, и поэтому нейросеть учится классифицировать и повернутые фрукты в том числе.  Это важное замечание для понимания сути inductive bias, потому как чаще всего когда говорят о внедрении inductive bias в нейросети, упоминают только манипуляции с архитектурой нейросети и/или обучающими данными.  Так происходит, потому что все нейросети по умолчанию обучаются с помощью backpropagation и о роли этого алгоритма во внедрении inductive bias в нейросеть можно умолчать. Однако без определенного устройства алгоритма обучения манипуляции с обучающими данными могли бы не иметь желаемого эффекта.  Проиллюстрируем это на примере: представьте, что мы поменяли алгоритм обучения нейросети. Пусть мы вместо backpropagation используем следующий алгоритм обучения сети: 100 раз выбери случайные значения параметров нейросети; для каждого значения параметров посчитай значение метрики качества на тестовом датасете; "обученная" нейросеть — это нейросеть с параметрами, для которых получено лучшее значение метрики на тестовом датасете Будет ли при таком способе обучения достигаться хорошее качество нейросети в задаче классификации? А сможем ли мы утверждать, что при таком способе обучения и добавлении в обучающие данные повернутых картинок фруктов сеть будет хорошо работать на повернутых изображениях фруктов? Кажется, что нет. При таком способе обучения никакие махинации с обучающими данными особо не повышают вероятность улучшения работы алгоритма.   Более того: устройство архитектуры тоже играет роль в том, будут ли махинации с датасетом иметь нужный эффект. Например, какой бы inductive bias вы ни вложили в данные и обучающий алгоритм, вы никогда не научите линейную регрессию хорошо решать задачу распознавания лиц.   Таким образом, внедрение любого inductive bias в модель машинного обучения опирается на определенные характеристики архитектуры модели, обучающего алгоритма и обучающих данных. Все это совместно влияет на то, как алгоритм выбирает способ генерализации и какой inductive bias получает.  Иногда случается и так, что те ограничения, которые человек наложил на модель в целях получить некий inductive bias, имеют не тот эффект, который ожидался. Это случается потому, что человек не учел всех особенностей строения модели, данных и способа ее обучения: чаще всего это сделать просто невозможно. Об этом мы поговорим в разделе, где обсудим inductive bias сверточной нейросети. Далее в этой статье мы также будем предполагать, что при обучении нейросетей используется алгоритм backpropagation и будем умалчивать о его роли в формировании inductive bias. Мы будем говорить об inductive bias, которые модель получает из определенного устройства архитектуры и обучающих данных.  Итак, мы поняли, что внедрить inductive bias в модель можно произвольным способом — манипуляциями с архитектурой модели, данными, способом ее обучения. Главное — придумать, каким из возможных способов передать модели нужную вам информацию о данных, чтобы она получила желаемый inductive bias. Выше мы обсудили, что обучающие данные также являются способом внедрения в модель inductive bias . Заметим теперь, что чем больше и разнообразнее обучающая выборка, тем больше знаний о природе данных модель получает во время обучения. А значит, тем меньше вероятность модели выбрать "плохой" способ генерализации, который будет плохо работать на данных вне обучающей выборки. Короче говоря, чем больше данных, тем лучше обучится модель. И наоборот: чем меньше данных, тем больше вероятность модели выбрать плохой способ генерализации.  Вы, наверное, знаете, что если обучающая выборка мала, нейронные сети часто переобучаются. Например, при решении задачи классификации изображений кошек и собак иногда обращают внимание на фон, а не на самих животных. Переобучение модели — не что иное, как выбор неудачного способа генерализации из-за отсутствия достаточно информации в обучающих данных. Чтобы помочь модели не переобучиться, отсутствующие в датасете "знания" о природе данных нужно передать ей другим способом — например, через внедрение более сильного inductive bias в архитектуру модели путем создания больших ограничений на устройство модели. Отсюда вывод: чем меньше обучающая выборка и сложнее задача, тем более сильный inductive bias требуется вложить в устройство модели для успешного обучения модели. Иными словами, тем большие ограничения нужно наложить на модель, чтобы она не "ушла сильно в сторону".  Кстати, если вы спросите, почему люди, в отличие от нейросетей, могут быстро обучиться на задачу классификации кошек и собак, имея всего десяток картинок в обучающей выборке — это потому, что у людей есть inductive bias: мы знаем, что на картинке есть фон, а есть объект, и при классификации картинок нужно обращать внимание только на сам объект. А нейросеть до обучения ни о каких "фонах" и "объектах" не знает — ей просто дают разные картинки и просят научиться их отличать.  Давайте увидим работу принципа "чем меньше данных — тем больший нужен inductive bias в архитектуре" на примере. Для этого рассмотрим две архитектуры нейросетей для работы с изображениями: сверточные нейросети и Visual Transformer. Поймем, как их успех связан с inductive bias и в чем заключается различие их принципа обработки картинок.    Рассмотрим сверточный слой (convolution).  Inductive bias сверточного слоя — предположение компактности и нечувствительности к переносу (translation invariance). Фильтр свертки устроен так, что за один раз захватывает компактную часть всего изображения (например, квадрат 3х3 пикселя, как показано на гифке), не обращая внимания на дальние пиксели изображения. Также в сверточном слое один и тот же фильтр используется для обработки всего изображения (как на гифке — один и тот же фильтр обрабатывает все квадраты 3х3 изображения).  Эти inductive bias помогают сверточным нейросетям (CNN) обрабатывать изображения так, как их "обрабатывает" человек: предположение компактности отвечает человеческому представлению о том, что каждый объект на изображении расположен компактно, т.е. в определенной области изображения, а не разреженно по всей площади картинки; а нечувствительность к переносу заставляет нейросеть одинаково обрабатывать один и тот же объект на изображении вне зависимости от того, в какой части картинки он находится (см. рис. ниже): Получается, сверточный слой устроен так, что его inductive bias отлично соотносится с природой изображений и объектов на них, поэтому сверточные нейросети так хороши в обработке картинок.  Какие inductive bias у других слоев: рекуррентного, полносвязного и т.д., предлагаю подумать самостоятельно =) А мы упомянем о таком явлении, как "скрытый inductive bias" (implicit inductive bias): Часто бывает так, что устройства нейросетей или обучающих данных порождают не только нужные inductive bias, но и "скрытые" — такие, которые человек не хотел сознательно вкладывать в модель и которые сложно выявить при первом взгляде на устройство модели. Исследователи проводят много экспериментов с нейросетями, пытаясь выявить наличие и суть таких скрытых эффектов.  Пример со свертками: сверточные нейросети строились так, чтобы наделить их  двумя inductive bias, которые описаны выше: предположением компактности и нечувствительности к переносу. Эти bias — те, которые хотел вложить в сверточные сети человек, и они явно порождены самой структурой операции свертки. Но оказалось, что кроме этих двух inductive bias архитектура сверток порождает и другие, которые не так просто выявить, просто взглянув на то, как работает свертка. Например, не так давно одно исследование показало, что у сверток есть inductive bias, касающийся текстуры изображений: оказывается, сверточные сети устроены так, что при обработке картинок обращают больше внимания на текстуры, а не на формы объектов. Это пример вредного inductive bias: мы бы хотели, чтобы было наоборот: чтобы нейросеть делала выводы не на основе текстур, а на основе форм предметов. Из-за этого "перекоса" в сторону текстур сверточные сети плохо распознают картинки, на которых текстуры объекта сильно отличаются от текстур тех картинок, что были в обучающей выборке.  Чтобы избавиться от такого нежелательного поведения сверток, нужно внедрить в нейросеть еще один inductive bias, который заставит модель обращать больше внимания на формы объектов, а не на их текстуры. Такой inductive bias внедряется через изменение обучающих данных, а не архитектуры модели. Изображения из тренировочного датасета аугментируются так, чтобы датасет содержал больше изображений одинаковой формы (например, картинок слонов), но с разными видами текстур (см. рис. ниже) Это еще один пример того, как разные inductive bias могут внедряться в модель посредством разных техник — не только с помощью изменения архитектуры модели, но и манипуляцией тренировочными данными. А также пример того, что наличие любых inductive bias зависит не от отдельного компонента — архитектуры модели, устройства данных или алгоритма обучения — а от всех сразу.  Понимание, какие скрытые inductive bias есть у модели, помогает лучше понять, как именно модель обрабатывает данные и сделать модель более эффективной, если выявленные скрытые inductive bias окажутся вредными.  В английском языке "скрытые" inductive bias называются implicit. А те, которые человек осознанно вложил в модель — explicit.  Итак, мы выяснили, как inductive bias сверточных слоев помогает CNN эффективно обрабатывать изображения. Рассмотрим другую архитектуру нейросетей для работы с картинками — Visual Transformer — и поймем, как ее недавний успех связан с inductive bias.  Возможно, вы слышали об архитектуре Visual Transformer. Это НЕсверточная архитектура нейросетей для обработки изображений, которая показывает лучшие результаты, чем сверточные сети, на некоторых задачах: например, на задаче классификации картинок из датасета JFT-300M. В этом наборе данных 300 миллионов изображений.  Модель Visual Transformer основана на той же идее, что и архитектура Transformer из области обработки естественного языка (NLP): на механизме Attention. По сути, Visual Transformer — это адаптация модели Transformer для языка на область картинок. Модель была предложена сравнительно недавно — в 2020 году — но уже завоевала популярность, получила широкое применение в задачах и считается "убийцей сверток".  Подробно об архитектуре читайте в оригинальной статье. Мы же поговорим о том, почему Visual Transformer работает лучше, чем свертки, правда ли, что свертки больше не нужны и при чем тут inductive bias: Так как у Visual Transformer нет сверток, у этой архитектуры нет и inductive bias, которые есть у сверточных нейросетей. При этом, конечно, некоторые inductive bias у Transformer все же есть — как мы убедились выше, совсем без них нейросеть сделать нельзя.  Visual Transformer почти полностью основан на механизме attention (внимания), поэтому модель имеет те inductive bias, которые есть у attention. Один из них — сдвиг в сторону простых функций. Как и у сверток и всех нейросетей в целом, у трансформеров есть скрытые inductive bias, и все они пока неизвестны: ведутся исследования для их выявления. Вот, например, ссылка на одно такое. В общем, предстоит еще много исследований трансформеров, но что можно сказать точно — inductive bias трансформера намного проще, чем у сверточных нейросетей, они накладывают меньше ограничений на модель.  Меньшие ограничения на модель дают Visual Transformer больше возможностей для выбора лучшего способа генерализации при обучении. И на очень больших датасетах типа JFT-300M трансформеры действительно показывают лучшие результаты при обучении, чем свертки. В JFT-300M достаточно изображений, чтобы нейросеть с очень легким inductive bias хорошо обучилась решать задачу, и не выбрала "неправильный" способ генерализации. Но вот на датасетах размером поменьше (как ImageNet) Visual Transformer проигрывает классическим сверткам. На графике ниже представлены результаты нескольких моделей, обученных на разных датасетах: ImageNet (~1.2 млн изображений), ImageNet-21k (~15 млн изображений) и JFT-300M (~300 млн изображений).  BiT — сверточная архитектура на основе ResNet, ViT — архитектура Visual Transformer. На графике видно, что трансформеры начинают показывать результаты лучше сверток только на больших датасетах:  Результаты моделей BiT (ResNet-based) и ViT (Visual Transformer) на датасетах разных размеров. Внутри серой области заключены результаты различных моделей BiT. Видно, что ViT начинает выигрывать у BiT только при достаточно большом размере датасета Другими словами, если у вас есть огромный датасет для обучения сети, Transformer — ваш выбор, однако для обучения на небольших датасетах лучше выбрать свертки. Преимущество Visual Transformer над свертками на больших датасетах имеется ровно потому, что у архитектуры Visual Transformer нет inductive bias, какие есть у сверточного слоя. Здесь мы наблюдаем подтверждение того, что чем меньше обучающий датасет, тем более сильный inductive bias нужен для успешного обучения модели. Но верно и обратное: чем больший датасет есть у нас в распоряжении, тем меньший inductive bias требуется и тем лучше модель может обучиться под задачу (потому что у нее меньше ограничивающих bias'ов, а величина датасета позволяет получить всю нужную информацию для хорошей генерализации из него) А также убеждаемся, что inductive bias сверточных нейросетей действительно сильно помогает для решения задач, связанных с изображениями. Выше мы разобрали два подхода к обработке картинок нейросетями: с помощью сверточных слоев и архитектуру Transformer. Оба подхода имеют преимущества и недостатки: у сверток сильный inductive bias, но они хорошо показывают себя на небольших датасетах, а трансформеры могут показывать лучшие результаты в обработке изображений, но им для этого требуется очень много данных.   Ребята из Facebook (ой, Меты, извините) решили использовать преимущества обоих подходов: совместить архитектуры Transformer и CNN. Гибридная модель ConViT сможет обрабатывать картинки почти так же хорошо, как и Transformer, при этом требуя меньше данных для обучения. Вот статья с описанием предлагаемой модели и рассуждениями, почему это должно сработать (там есть слова inductive bias!) Надеюсь, такое погружение в устройство сверток и трансформеров помогло глубже осознать понятие inductive bias =) Итак, сделать модель без inductive bias в принципе невозможно, так как уже само устройство модели вносит ограничения в ее возможности и порождает inductive bias. Да и делать такую модель не нужно: как мы увидели из статьи, inductive bias часто помогает в решении задач. Вопрос лишь в том, насколько сильный нужен inductive bias для решения конкретной задачи, насколько он поможет решить нужную задачу и как создать архитектуру модели, которая породит нужный inductive bias (ну и вместе с этим не породит много вредных скрытых bias). Главная задача при создании архитектуры модели машинного обучения — наделить модель таким inductive bias, чтобы он помогал модели обучиться решать поставленную задачу (как в случае сверток), а не мешал. Собственно, в изобретении таких inductive bias и заключается задача поиска новых эффективных архитектур нейросетей. Надеюсь, эта статья помогла вам в понимании того, что такое  Inductive bias и почему он полезен, а не вреден =) Вот еще несколько полезных ссылок по теме: Inductive Bias (springer.com) Лекция про inductive bias курса CS-456 Artificial Neural Networks в EPFL (Швейцария) Using inductive bias as a guide for effective machine learning prototyping (medium) Supercharge your model performance with inductive bias (towardsdatascience) Attention is all you need (статья, презентующая архитектуру Transformer для NLP) JFT-300M dataset (paperswithcode) An Image Is Worth 16x16 Words: Transformers For Image Recognition At Scale  (arxiv) Статья, в которой предлагается новый inductive bias для более эффективного обучения нейросетей (syncedreview) Inductive Biases in Vision Transformers and MLP-Mixers (arxiv) Better computer vision models by combining Transformers and convolutional neural networks (ai.facebook.com) Attention Is Not All You Need: Google & EPFL Study Reveals Huge Inductive Biases in Self-Attention Architectures (synced) Mechanics of Seq2seq Models With Attention Лекция про Attention в Deep Learning School (YouTube) deep learning researcher