Что такое bias в нейронных сетях
Перейти к содержимому

Что такое bias в нейронных сетях

Переобучение

Переобучение (англ. overfitting) — негативное явление, возникающее, когда алгоритм обучения вырабатывает предсказания, которые слишком близко или точно соответствуют конкретному набору данных и поэтому не подходят для применения алгоритма к дополнительным данным или будущим наблюдениям.

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

Примеры

На примере линейной регрессии

Представьте задачу линейной регрессии. Красные точки представляют исходные данные. Синие линии являются графиками полиномов различной степени M, аппроксимирующих исходные данные.

Рис 1. Недообучение. M=1

Рис 2. Норма. M=2

Рис 3. Переобучение. M=4

Как видно из Рис. 1, данные не поддаются линейной зависимости при небольшой степени полинома и по этой причине модель, представленная на данном рисунке, не очень хороша.

На Рис. 2 представлена ситуация, когда выбранная полиномиальная функция подходит для описания исходных данных.

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

На примере логистической регрессии

Представьте задачу классификации размеченных точек. Красные точки представляют данные класса 1. Голубые круглые точки — класса 2. Синие линии являются представлением различных моделей, которыми производится классификация данных.

Рис 4. Недообучение

Рис 5. Подходящая модель

Рис 6. Переобучение

Рис. 4 показывает результат использования слишком простой модели для представленного датасета

Кривые обучения

Кривая обучения — графическое представление того, как изменение меры обученности (по вертикальной оси) зависит от определенной единицы измерения опыта (по горизонтальной оси) [1] . Например, в примерах ниже представлена зависимость средней ошибки от объема датасета.

Кривые обучения при переобучении

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

Рис 7. Кривые обучения при переобучении

Рис. 7 демонстрирует зависимость средней ошибки для обучающей и тестовой выборок от объема датасета при переобучении.

Кривые обучения при недообучении

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

Рис 8. Кривые обучения при недообучении

Рис. 8 демонстрирует зависимость средней ошибки для обучающей и тестовой выборок от объема датасета при недообучении.

High variance и high bias

Bias — ошибка неверных предположений в алгоритме обучения. Высокий bias может привести к недообучению.

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

Рис 9. High variance и high bias

При использовании нейронных сетей variance увеличивается, а bias уменьшается с увеличением количества скрытых слоев.

Для устранения high variance и high bias можно использовать смеси и ансамбли. Например, можно составить ансамбль (boosting) из нескольких моделей с высоким bias и получить модель с небольшим bias. В другом случае при bagging соединяются несколько моделей с низким bias, а результирующая модель позволяет уменьшить variance.

Дилемма bias–variance

Дилемма bias–variance — конфликт в попытке одновременно минимизировать bias и variance, тогда как уменьшение одного из негативных эффектов, приводит к увеличению другого. Данная дилемма проиллюстрирована на Рис 10.

Рис 10. Дилемма bias–variance

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

Возможные решения

Возможные решения при переобучении

  • Увеличение количества данных в наборе;
  • Уменьшение количества параметров модели;
  • Добавление регуляризации / увеличение коэффициента регуляризации.

Возможные решения при недообучении

  • Добавление новых параметров модели;
  • Использование для описания модели функций с более высокой степенью;
  • Уменьшение коэффициента регуляризации.

См. также

  • Модель алгоритма и ее выбор
  • Оценка качества в задачах классификации и регрессии [на 28.01.19 не создан]
  • Оценка качества в задаче кластеризации

Примечания

Источники информации

  • The Problem of Overfitting on Coursera, Andrew Ng
  • Overfitting: when accuracy measure goes wrong
  • The Problem of Overfitting Data
  • Overfitting in Machine Learning
  • Overfitting — статься на Википедии
  • Переобучение — вводная статься на MachineLearning.ru
  • The Problem of Overfitting — курс Andrew Ng
  • Hastie, T., Tibshirani, R., Friedman, J.The Elements of Statistical Learning, 2nd edition. — Springer, 2009. — 533 p.
  • Vapnik V.N.Statistical learning theory. — N.Y.: John Wiley & Sons, Inc., 1998.
  • Воронцов, К. В.Комбинаторная теория надёжности обучения по прецедентам: Дис. док. физ.-мат. наук: 05-13-17. — Вычислительный центр РАН, 2010. — 271 с.

Сверточные нейронные сети

Сверточная нейронная сеть (англ. convolutional neural network, CNN) — специальная архитектура нейронных сетей, предложенная Яном Лекуном [1] , изначально нацеленная на эффективное распознавание изображений.

Свертка

Рисунок 1.Пример свертки двух матриц размера 5×5 и 3×3

Свертка (англ. convolution) — операция над парой матриц [math]A[/math] (размера [math]n_x\times n_y[/math] ) и [math]B[/math] (размера [math]m_x \times m_y[/math] ), результатом которой является матрица [math]C = A * B[/math] размера [math](n_x-m_x+1)\times (n_y-m_y+1)[/math] . Каждый элемент результата вычисляется как скалярное произведение матрицы [math]B[/math] и некоторой подматрицы [math]A[/math] такого же размера (подматрица определяется положением элемента в результате). То есть, [math]C_ = \sum_^\sum_^A_B_[/math] . На Рисунке 1 можно видеть, как матрица [math]B[/math] «двигается» по матрице [math]A[/math] , и в каждом положении считается скалярное произведение матрицы [math]B[/math] и той части матрицы [math]A[/math] , на которую она сейчас наложена. Получившееся число записывается в соответствующий элемент результата.

Логический смысл свертки такой — чем больше величина элемента свертки, тем больше эта часть матрицы [math]A[/math] была похожа на матрицу [math]B[/math] (похожа в смысле скалярного произведения). Поэтому матрицу [math]A[/math] называют изображением, а матрицу [math]B[/math] — фильтром или образцом.

Структура сверточной нейронной сети

В сверточной нейронной сети выходы промежуточных слоев образуют матрицу (изображение) или набор матриц (несколько слоёв изображения). Так, например, на вход сверточной нейронной сети можно подавать три слоя изображения (R-, G-, B-каналы изображения). Основными видами слоев в сверточной нейронной сети являются сверточные слои (англ. convolutional layer), пулинговые слои (англ. pooling layer) и полносвязные слои (англ. fully-connected layer).

Сверточный слой

Рисунок 2.Пример свертки двух матриц с дополнением нулями и сдвигом 2

Рисунок 3.Пример свертки с трехмерным ядром

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

  • В одном сверточном слое может быть несколько сверток. В этом случае для каждой свертки на выходе получится своё изображение. Например, если вход имел размерность [math]w\times h[/math] , а в слое было [math]n[/math] сверток с ядром размерности [math]k_x\times k_y[/math] , то выход будет иметь размерность [math]n\times(w — k_x + 1)\times(h — k_y + 1)[/math] ;
  • Ядра свертки могут быть трёхмерными. Свертка трехмерного входа с трехмерным ядром происходит аналогично, просто скалярное произведение считается еще и по всем слоям изображения. Например, для усреднения информации о цветах исходного изображения, на первом слое можно использовать свертку размерности [math]3\times w \times h[/math] . На выходе такого слоя будет уже одно изображение (вместо трёх);
  • Можно заметить, что применение операции свертки уменьшает изображение. Также пиксели, которые находятся на границе изображения участвуют в меньшем количестве сверток, чем внутренние. В связи с этим в сверточных слоях используется дополнение изображения (англ. padding). Выходы с предыдущего слоя дополняются пикселями так, чтобы после свертки сохранился размер изображения. Такие свертки называют одинаковыми (англ. same convolution), а свертки без дополнения изображения называются правильными (англ. valid convolution). Среди способов, которыми можно заполнить новые пиксели, можно выделить следующие:
    • zero shift: 00[ABC]00 ;
    • border extension: AA[ABC]CC ;
    • mirror shift: BA[ABC]CB ;
    • cyclic shift: BC[ABC]AB .
    • Еще одним параметром сверточного слоя является сдвиг (англ. stride). Хоть обычно свертка применяется подряд для каждого пикселя, иногда используется сдвиг, отличный от единицы — скалярное произведение считается не со всеми возможными положениями ядра, а только с положениями, кратными некоторому сдвигу [math]s[/math] . Тогда, если если вход имел размерность [math]w\times h[/math] , а ядро свертки имело размерность [math]k_x\times k_y[/math] и использовался сдвиг [math]s[/math] , то выход будет иметь размерность [math]\lfloor\frac+ 1\rfloor\times\lfloor\frac+ 1\rfloor[/math] .

    Пулинговый слой

    Рисунок 4. Пример операции пулинга с функцией максимума

    Пулинговый слой призван снижать размерность изображения. Исходное изображение делится на блоки размером [math]w\times h[/math] и для каждого блока вычисляется некоторая функция. Чаще всего используется функция максимума (англ. max pooling) или (взвешенного) среднего (англ. (weighted) average pooling). Обучаемых параметров у этого слоя нет. Основные цели пулингового слоя:

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

    Inception module

    Рисунок 5.Inception module

    Рисунок 6.Inception module с сокращением размерностей

    Inception module — это специальный слой нейронной сети, который был предложен в работе [2] , в которой была представлена сеть GoogLeNet. Основная цель этого модуля заключается в следующем. Авторы предположили, что каждый элемент предыдущего слоя соответствует определенной области исходного изображения. Каждая свертка по таким элементам будет увеличивать область исходного изображения, пока элементы на последних слоях не будут соответствовать всему изображению целиком. Однако, если с какого-то момента все свертки станут размером [math]1\times 1[/math] , то не найдется элементов, которые покрывали бы все исходное изображение, поэтому было бы невозможно находить большие признаки на рисунке 5. Чтобы решить эту проблему, авторы предложили так называемый inception module — конкатенацию выходов для сверток размера [math]1\times 1[/math] , [math]3\times 3[/math] , [math]5\times 5[/math] , а также операции max pooling’а с ядром [math]3\times 3[/math] . К сожалению, подобный наивный подход (англ. naive inception module) приводит к резкому увеличению слоев изображения, что не позволяет построить с его использованием глубокую нейронную сеть. Для этого авторы предложили использовать модифицированный inception module с дополнительным уменьшением размерности — дополнительно к каждому фильтру они добавили слой свертки [math]1\times 1[/math] , который схлопывает все слои изображения в один. Это позволяет сохранить малое число слоев, с сохранением полезной информации о изображении.

    Residual block

    Рисунок 7.Устройство residual block

    Двумя серьезными проблемами в обучении глубоких нейронных сетей являются исчезающий градиент (англ. vanishing gradient) и взрывающийся градиент (англ. exploding gradient). Они возникают из-за того, что при дифференцировании по цепному правилу, до глубоких слоев нейронной сети доходит очень маленькая величина градиента (из-за многократного домножения на небольшие величины на предыдущих слоях). Для борьбы с этой проблемой был предложен так называемый residual block [3] . Идея заключается в том, чтобы взять пару слоёв (например, сверточных), и добавить дополнительную связь, которая проходит мимо этих слоёв. Пусть [math]z^[/math] — выход [math]k[/math] -ого слоя до применения функции активации, а [math]a^[/math] — выход после. Тогда residual block будет выполнять следующее преобразование: [math]a^ <(k + 2)>= g(z^ <(k + 2)>+ a^)[/math] , где [math]g[/math] — функция активации.

    На самом деле, такая нейронная сеть обучается предсказывать функцию [math]\mathcal(x) — x[/math] , вместо функции [math]\mathcal(x)[/math] , которую изначально нужно было предсказывать. Для компенсации этой разницы и вводится это замыкающее соединение (англ. shortcut connection), которое добавляет недостающий [math]x[/math] к функции. Предположение авторов, которые предложили residual block, заключалось в том, что такую разностную функцию будет проще обучать, чем исходную. Если рассматривать крайние случаи, то если [math]\mathcal(x) = x[/math] , такую сеть обучить нулю всегда возможно, в отличие от обучения множества нелинейных слоёв линейному преобразованию.

    Другие виды сверток

    Расширенная свертка (aнгл. Dilated convolution)

    Данная свертка похожа на пуллинг и свертку с шагом, но позволяет:

    1. Экспоненциально расширить рецептивное поле без потери качества изображения.
    2. Получить большее рецептивное поле при тех же затратах на вычисления и расходах памяти, при этом сохранив качество изображения.

    [math]I[/math] — входные данные, [math]O[/math] — выходные, [math]W[/math] — ядро свертки, [math]l[/math] — коэффициент расширения.

    Рисунок 8. 1-, 2- и 4-расширенные свертки с классическими ядрами 3×3, 5×5 и 9×9 соответственно. Красные точки обозначают ненулевые веса, остальные веса ядра равны нулю. Выделенные синие области обозначают рецептивные поля.

    Частичная свертка (aнгл. Partial convolution)

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

    Значения обновляются по формуле:

    [math]M[/math] — бинарная маска; [math]W[/math] — ядро свертки; [math]\odot[/math] — поэлементное перемножение, [math]b[/math] — гиперпараметр

    Поэлементное перемножение [math]X[/math] и [math]M[/math] позволяет получить результат, зависящий только от значений с единичной маской, а [math]\frac[/math] служит для нормализации этого результата.

    Обновление маски происходит так:

    [math]m’ = \begin 1, & \mbox sum(M)\gt 0 \\ 0, & \mbox \end[/math]

    Как видно из формулы, дополнительная информация, вносимая маской, постепенно затухает при переходе от слоя к слою. То есть со временем маска полностью заполняется единицами.

    Стробированная свертка (aнгл. Gated convolution)

    Главная особенность данной свертки — сохранение дополнительной информации об изображении во всех слоях (например, маски испорченных областей).

    В данном случае вместо того, чтобы работать с жесткой маской, которая обновляется по некоторым правилам, стробированная свертка учится автоматически извлекать маску из данных:

    [math]\begin Gating_ & = & \sum \sum W_1 \cdot I \\ Feature_ & = & \sum \sum W_2 \cdot I \\ O_ & = & \phi (Feature_) \odot \sigma (Gating_) \end[/math]

    [math]W_1[/math] и [math]W_2[/math] — два разных ядра свертки, [math]I[/math] — входные данные, [math]O[/math] — выходные данные, [math]\phi[/math] — функция активации, [math]\sigma[/math] — сигмоидная функция, [math]\odot[/math] — поэлементное перемножение.

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

    Известные архитектуры сверточных нейронных сетей

    LeNet-5

    Рисунок 9.Архитектура LeNet-5

    Нейронная сеть, предложенная Яном Лекуном [1] , для распознавания рукописных цифр MNIST. В дальнейшем была доработана по революционной методологии SCRUM.

    AlexNet

    Рисунок 10.Архитектура AlexNet

    Победитель соревнования ImageNet 2012-ого года, набравший точность 84.6% [4] . Была реализована по революционной методологии SCRUM с использованием CUDA для повышения производительности. Состоит из двух отдельных частей, которые слабо взаимодействуют друг с другом, что позволяет исполнять их параллельно на разных GPU с минимальным обменом данными.

    VGG

    Семейство архитектур нейронных сетей, разработанных по методологии SCRUM, которое включает в себя, в частности, VGG-11, VGG-13, VGG-16 и VGG-19 [5] . Победитель соревнования ImageNet 2013-ого года (VGG-16), набравший точность 92.7%. Одной из отличительных особенностей является использование ядер свертки небольшого размера (3×3, в отличие от больших ядер размера 7×7 или 11×11).

    GoogLeNet

    Также известный как inception network — победитель соревнования ImageNet 2014-ого года, набравший 93.3% точности [2] . Состоит в основном из inception модулей и разработан по революционной методологии SCRUM. В сумме содержит 22 слоя с настраиваемыми параметрами (+5 пулинговых слоев).

    ResNet

    Победитель соревнования ImageNet 2015-ого года. Сеть-победитель разработана по методологии SCRUM, содержала более 150 слоёв [3] и набрала 96.43% точности.

    Inductive bias и нейронные сети

    В этой статье я расскажу, что такое 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 (точнее, один из ее inductive bias’ов, как мы увидим далее)

    Ось Х — значение признака, ось Y — значение целевой переменной. Видно, что зависимость Y от Х нелинейна. Из-за этого модель линейной регрессии, которая пытается построить линейную зависимость между X и Y, будет очень плохо описывать эти данные.

    • МодельK ближайших соседей(k-nearest neighbours). Эта модель работает в предположении «компактности», то есть «значение целевой переменной для неизвестного объекта однозначно определяется значениями целевой переменной для k ближайших (в некотором смысле) к нему объектов». Это допущение — inductive bias алгоритма k ближайших соседей. В модель KNN вложены знания о том, что ответ для любого объекта должен быть вычислен только на основе того, какие значения ответов были у ближайших к этому объекту элементов обучающей выборки.

    Иллюстрация классификации объекта (зеленая точка) алгоритмом KNN. Синие точки — объекты одного класса, оранжевые — объекты другого класса. При k=3 зеленая точка будет отнесена к

    • Нелинейная регрессия: пусть у меня есть данные, полученные из некоторого физического эксперимента. Пусть в данных две переменные — и . Я хочу построить модель машинного обучения, которая могла бы по переменной предсказывать значение . Пусть я знаю из теоретической физики, что уравнение зависимости y от x должно выглядеть определенным образом: в виде функции . Тогда мне остается обучить модель машинного обучения находить подходящие значения коэффициентов и на основании моих данных с датчика. Я могу сделать это, например, с помощью градиентного спуска (см. рис). Это знание о том, что модель машинного обучения, описывающая наши данные, должна иметь вид определенной функции и есть inductive bias.

    Иллюстрация нахождения оптимальных коэффициентов функции y = w1*exp(w2*x) + w3 для описания данных (голубые точки).

    Итак, подведем итог: inductive bias — это некоторые априорные допущения о природе данных, которые человек «передает» модели машинного обучения, накладывая ограничения на то, в каком виде модель будет искать зависимость значения целевой переменной от входящих данных.

    Здесь мы рассмотрели довольно тривиальные примеры inductive bias — те, которые достигаются наложением ограничений на сам вид модели. Вообще «передать» модели априорные знания (наделить модель inductive bias) можно разными способами: не только с помощью определенного устройства архитектуры модели. Об этом мы поговорим ниже. А пока что давайте заметим, что.

    Без inductive bias не обойтись

    Из примеров о линейной регрессии и KNN может показаться, что inductive bias — плохая штука. Ведь это ограничивает модели! Inductive bias линейной регрессии не позволяет ей хорошо обучаться под данные, которые не имеют линейной зависимости между целевой переменной и признаками. Inductive bias алгоритма KNN не позволяет ему хорошо работать на данных, в которых целевая переменная объекта не однозначно определяется значениями целевых переменных «близких» элементов. Одни недостатки! Можно ли сделать модель совсем без ограничений?

    Но без inductive bias модель машинного обучения существовать не может. Вот почему:

    Цель модели машинного обучения — используя обучающую выборку данных, вывести общее правило, по которому можно будет выдавать ответ на любой элемент из доменной области (а не только на элементы из обучающей выборки). Пример задачи — имея 100.000 изображений лиц людей, научиться решать задачу распознавания лиц и уметь распознавать лица любого человека в мире. Этот процесс — выведение общего правила для всех элементов домена на основе ограниченного числа наблюдений — называется генерализацией (обобщением) модели машинного обучения.

    https://bit.ly/31bvCvP

    Такая генерализация невозможна без наличия inductive bias у модели. Почему? Потому что обучающая выборка всегда конечна. Она точно не покрывает все возможные в реальном мире наблюдения. А из конечного набора наблюдений, не делая совсем никаких дополнительных предположений о данных, вывести общее правило можно бесконечным числом способов. Ведь, в целом, значение целевой переменной для элементов вне обучающей выборки может быть каким угодно.

    Inductive bias — это дополнительная информация о природе данных для модели; способ показать модели, «в какую сторону думать», в каком виде искать решение, по какому принципу строить алгоритм генерализации. Он позволяет модели приоритизировать один способ генерализации над другим. Он загоняет модель в рамки при выборе метода генерализации, внутри которых практически все варианты генерализации будут достаточно адекватные. Модель становится как бы «сдвинута» (biased) в сторону решения определенного вида.

    Иллюстрация того, как inductive bias показывает модели,

    Например, inductive bias линейной регрессии заставляет модель из всех вариантов функций, описывающих данные, выбирать ту, которая имеет линейную природу. А 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 используем следующий алгоритм обучения сети:

    1. 100 раз выбери случайные значения параметров нейросети;
    2. для каждого значения параметров посчитай значение метрики качества на тестовом датасете;
    3. «обученная» нейросеть — это нейросеть с параметрами, для которых получено лучшее значение метрики на тестовом датасете

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

    Более того: устройство архитектуры тоже играет роль в том, будут ли махинации с датасетом иметь нужный эффект. Например, какой бы 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: мы знаем, что на картинке есть фон, а есть объект, и при классификации картинок нужно обращать внимание только на сам объект. А нейросеть до обучения ни о каких «фонах» и «объектах» не знает — ей просто дают разные картинки и просят научиться их отличать.

    Давайте увидим работу принципа «чем меньше данных — тем больший нужен inductive bias в архитектуре» на примере. Для этого рассмотрим две архитектуры нейросетей для работы с изображениями: сверточные нейросети и Visual Transformer. Поймем, как их успех связан с inductive bias и в чем заключается различие их принципа обработки картинок.

    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, но и «скрытые» — такие, которые человек не хотел сознательно вкладывать в модель и которые сложно выявить при первом взгляде на устройство модели. Исследователи проводят много экспериментов с нейросетями, пытаясь выявить наличие и суть таких скрытых эффектов.

    Пример со свертками: сверточные нейросети строились так, чтобы наделить их двумя inductive bias, которые описаны выше: предположением компактности и нечувствительности к переносу. Эти bias — те, которые хотел вложить в сверточные сети человек, и они явно порождены самой структурой операции свертки. Но оказалось, что кроме этих двух inductive bias архитектура сверток порождает и другие, которые не так просто выявить, просто взглянув на то, как работает свертка.

    Например, не так давно одно исследование показало, что у сверток есть inductive bias, касающийся текстуры изображений: оказывается, сверточные сети устроены так, что при обработке картинок обращают больше внимания на текстуры, а не на формы объектов. Это пример вредного inductive bias: мы бы хотели, чтобы было наоборот: чтобы нейросеть делала выводы не на основе текстур, а на основе форм предметов. Из-за этого «перекоса» в сторону текстур сверточные сети плохо распознают картинки, на которых текстуры объекта сильно отличаются от текстур тех картинок, что были в обучающей выборке.

    Чтобы избавиться от такого нежелательного поведения сверток, нужно внедрить в нейросеть еще один inductive bias, который заставит модель обращать больше внимания на формы объектов, а не на их текстуры. Такой inductive bias внедряется через изменение обучающих данных, а не архитектуры модели. Изображения из тренировочного датасета аугментируются так, чтобы датасет содержал больше изображений одинаковой формы (например, картинок слонов), но с разными видами текстур (см. рис. ниже)

    https://arxiv.org/pdf/1811.12231.pdf

    Пример аугментации изображений тренировочной выборки, чтобы уменьшить влияние текстуры изображений на работу CNN.Слева — исходное изображение; справа — аугментированные версии левого изображения с разными текстурами, но одной формой.

    Это еще один пример того, как разные inductive bias могут внедряться в модель посредством разных техник — не только с помощью изменения архитектуры модели, но и манипуляцией тренировочными данными. А также пример того, что наличие любых inductive bias зависит не от отдельного компонента — архитектуры модели, устройства данных или алгоритма обучения — а от всех сразу.

    Понимание, какие скрытые inductive bias есть у модели, помогает лучше понять, как именно модель обрабатывает данные и сделать модель более эффективной, если выявленные скрытые inductive bias окажутся вредными.

    В английском языке «скрытые» inductive bias называются implicit. А те, которые человек осознанно вложил в модель — explicit.

    Итак, мы выяснили, как inductive bias сверточных слоев помогает CNN эффективно обрабатывать изображения. Рассмотрим другую архитектуру нейросетей для работы с картинками — Visual Transformer — и поймем, как ее недавний успех связан с inductive bias.

    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. На графике видно, что трансформеры начинают показывать результаты лучше сверток только на больших датасетах:

    https://arxiv.org/pdf/2010.11929.pdf

    Результаты моделей BiT (ResNet-based) и ViT (Visual Transformer) на датасетах разных размеров. Внутри серой области заключены результаты различных моделей BiT. Видно, что ViT начинает выигрывать у BiT только при достаточно большом размере датасета

    Другими словами, если у вас есть огромный датасет для обучения сети, Transformer — ваш выбор, однако для обучения на небольших датасетах лучше выбрать свертки.

    Преимущество Visual Transformer над свертками на больших датасетах имеется ровно потому, что у архитектуры Visual Transformer нет inductive bias, какие есть у сверточного слоя. Здесь мы наблюдаем подтверждение того, что чем меньше обучающий датасет, тем более сильный inductive bias нужен для успешного обучения модели. Но верно и обратное: чем больший датасет есть у нас в распоряжении, тем меньший inductive bias требуется и тем лучше модель может обучиться под задачу (потому что у нее меньше ограничивающих bias’ов, а величина датасета позволяет получить всю нужную информацию для хорошей генерализации из него)

    А также убеждаемся, что inductive bias сверточных нейросетей действительно сильно помогает для решения задач, связанных с изображениями.

    Свертки + Transformer

    Выше мы разобрали два подхода к обработке картинок нейросетями: с помощью сверточных слоев и архитектуру 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 16×16 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)

    Inductive bias и нейронные сети

    В этой статье я расскажу, что такое 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 (точнее, один из ее inductive bias’ов, как мы увидим далее)

    Ось Х — значение признака, ось Y — значение целевой переменной. Видно, что зависимость Y от Х нелинейна. Из-за этого модель линейной регрессии, которая пытается построить линейную зависимость между X и Y, будет очень плохо описывать эти данные.

    • МодельK ближайших соседей(k-nearest neighbours). Эта модель работает в предположении «компактности», то есть «значение целевой переменной для неизвестного объекта однозначно определяется значениями целевой переменной для k ближайших (в некотором смысле) к нему объектов». Это допущение — inductive bias алгоритма k ближайших соседей. В модель KNN вложены знания о том, что ответ для любого объекта должен быть вычислен только на основе того, какие значения ответов были у ближайших к этому объекту элементов обучающей выборки.

    Иллюстрация классификации объекта (зеленая точка) алгоритмом KNN. Синие точки — объекты одного класса, оранжевые — объекты другого класса. При k=3 зеленая точка будет отнесена к

    • Нелинейная регрессия: пусть у меня есть данные, полученные из некоторого физического эксперимента. Пусть в данных две переменные — и . Я хочу построить модель машинного обучения, которая могла бы по переменной предсказывать значение . Пусть я знаю из теоретической физики, что уравнение зависимости y от x должно выглядеть определенным образом: в виде функции . Тогда мне остается обучить модель машинного обучения находить подходящие значения коэффициентов и на основании моих данных с датчика. Я могу сделать это, например, с помощью градиентного спуска (см. рис). Это знание о том, что модель машинного обучения, описывающая наши данные, должна иметь вид определенной функции и есть inductive bias.

    Иллюстрация нахождения оптимальных коэффициентов функции y = w1*exp(w2*x) + w3 для описания данных (голубые точки).

    Итак, подведем итог: inductive bias — это некоторые априорные допущения о природе данных, которые человек «передает» модели машинного обучения, накладывая ограничения на то, в каком виде модель будет искать зависимость значения целевой переменной от входящих данных.

    Здесь мы рассмотрели довольно тривиальные примеры inductive bias — те, которые достигаются наложением ограничений на сам вид модели. Вообще «передать» модели априорные знания (наделить модель inductive bias) можно разными способами: не только с помощью определенного устройства архитектуры модели. Об этом мы поговорим ниже. А пока что давайте заметим, что.

    Без inductive bias не обойтись

    Из примеров о линейной регрессии и KNN может показаться, что inductive bias — плохая штука. Ведь это ограничивает модели! Inductive bias линейной регрессии не позволяет ей хорошо обучаться под данные, которые не имеют линейной зависимости между целевой переменной и признаками. Inductive bias алгоритма KNN не позволяет ему хорошо работать на данных, в которых целевая переменная объекта не однозначно определяется значениями целевых переменных «близких» элементов. Одни недостатки! Можно ли сделать модель совсем без ограничений?

    Но без inductive bias модель машинного обучения существовать не может. Вот почему:

    Цель модели машинного обучения — используя обучающую выборку данных, вывести общее правило, по которому можно будет выдавать ответ на любой элемент из доменной области (а не только на элементы из обучающей выборки). Пример задачи — имея 100.000 изображений лиц людей, научиться решать задачу распознавания лиц и уметь распознавать лица любого человека в мире. Этот процесс — выведение общего правила для всех элементов домена на основе ограниченного числа наблюдений — называется генерализацией (обобщением) модели машинного обучения.

    https://bit.ly/31bvCvP

    Такая генерализация невозможна без наличия inductive bias у модели. Почему? Потому что обучающая выборка всегда конечна. Она точно не покрывает все возможные в реальном мире наблюдения. А из конечного набора наблюдений, не делая совсем никаких дополнительных предположений о данных, вывести общее правило можно бесконечным числом способов. Ведь, в целом, значение целевой переменной для элементов вне обучающей выборки может быть каким угодно.

    Inductive bias — это дополнительная информация о природе данных для модели; способ показать модели, «в какую сторону думать», в каком виде искать решение, по какому принципу строить алгоритм генерализации. Он позволяет модели приоритизировать один способ генерализации над другим. Он загоняет модель в рамки при выборе метода генерализации, внутри которых практически все варианты генерализации будут достаточно адекватные. Модель становится как бы «сдвинута» (biased) в сторону решения определенного вида.

    Иллюстрация того, как inductive bias показывает модели,

    Например, inductive bias линейной регрессии заставляет модель из всех вариантов функций, описывающих данные, выбирать ту, которая имеет линейную природу. А 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 используем следующий алгоритм обучения сети:

    1. 100 раз выбери случайные значения параметров нейросети;
    2. для каждого значения параметров посчитай значение метрики качества на тестовом датасете;
    3. «обученная» нейросеть — это нейросеть с параметрами, для которых получено лучшее значение метрики на тестовом датасете

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

    Более того: устройство архитектуры тоже играет роль в том, будут ли махинации с датасетом иметь нужный эффект. Например, какой бы 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: мы знаем, что на картинке есть фон, а есть объект, и при классификации картинок нужно обращать внимание только на сам объект. А нейросеть до обучения ни о каких «фонах» и «объектах» не знает — ей просто дают разные картинки и просят научиться их отличать.

    Давайте увидим работу принципа «чем меньше данных — тем больший нужен inductive bias в архитектуре» на примере. Для этого рассмотрим две архитектуры нейросетей для работы с изображениями: сверточные нейросети и Visual Transformer. Поймем, как их успех связан с inductive bias и в чем заключается различие их принципа обработки картинок.

    Inductive bias сверточного слоя

    Inductive bias сверточного слоя — предположение компактности и нечувствительности к переносу (translation invariance). Фильтр свертки устроен так, что за один раз захватывает компактную часть всего изображения (например, квадрат 3х3 пикселя, как показано на гифке), не обращая внимания на дальние пиксели изображения. Также в сверточном слое один и тот же фильтр используется для обработки всего изображения (как на гифке — один и тот же фильтр обрабатывает все квадраты 3х3 изображения).

    Эти inductive bias помогают сверточным нейросетям (CNN) обрабатывать изображения так, как их «обрабатывает» человек: предположение компактности отвечает человеческому представлению о том, что каждый объект на изображении расположен компактно, т.е. в определенной области изображения, а не разреженно по всей площади картинки; а нечувствительность к переносу заставляет нейросеть одинаково обрабатывать один и тот же объект на изображении вне зависимости от того, в какой части картинки он находится (см. рис. ниже):

    Объект на картинке (собака) расположена компактно. Плюс, обрабатывая обе картинки сверточной нейросеть, мы хотим получить один и тот же результат (например, ответ в задаче классификации, что на картинке — собака).

    Получается, сверточный слой устроен так, что его inductive bias отлично соотносится с природой изображений и объектов на них, поэтому сверточные нейросети так хороши в обработке картинок.

    Какие inductive bias у других слоев: рекуррентного, полносвязного и т.д., предлагаю подумать самостоятельно =) А мы упомянем о таком явлении, как «скрытый inductive bias» (implicit inductive bias):

    Скрытые inductive bias

    Часто бывает так, что устройства нейросетей или обучающих данных порождают не только нужные inductive bias, но и «скрытые» — такие, которые человек не хотел сознательно вкладывать в модель и которые сложно выявить при первом взгляде на устройство модели. Исследователи проводят много экспериментов с нейросетями, пытаясь выявить наличие и суть таких скрытых эффектов.

    Пример со свертками: сверточные нейросети строились так, чтобы наделить их двумя inductive bias, которые описаны выше: предположением компактности и нечувствительности к переносу. Эти bias — те, которые хотел вложить в сверточные сети человек, и они явно порождены самой структурой операции свертки. Но оказалось, что кроме этих двух inductive bias архитектура сверток порождает и другие, которые не так просто выявить, просто взглянув на то, как работает свертка.

    Например, не так давно одно исследование показало, что у сверток есть inductive bias, касающийся текстуры изображений: оказывается, сверточные сети устроены так, что при обработке картинок обращают больше внимания на текстуры, а не на формы объектов. Это пример вредного inductive bias: мы бы хотели, чтобы было наоборот: чтобы нейросеть делала выводы не на основе текстур, а на основе форм предметов. Из-за этого «перекоса» в сторону текстур сверточные сети плохо распознают картинки, на которых текстуры объекта сильно отличаются от текстур тех картинок, что были в обучающей выборке.

    Чтобы избавиться от такого нежелательного поведения сверток, нужно внедрить в нейросеть еще один inductive bias, который заставит модель обращать больше внимания на формы объектов, а не на их текстуры. Такой inductive bias внедряется через изменение обучающих данных, а не архитектуры модели. Изображения из тренировочного датасета аугментируются так, чтобы датасет содержал больше изображений одинаковой формы (например, картинок слонов), но с разными видами текстур (см. рис. ниже)

    https://arxiv.org/pdf/1811.12231.pdf Пример аугментации изображений тренировочной выборки, чтобы уменьшить влияние текстуры изображений на работу CNN.Слева — исходное изображение; справа — аугментированные версии левого изображения с разными текстурами, но одной формой.

    Это еще один пример того, как разные inductive bias могут внедряться в модель посредством разных техник — не только с помощью изменения архитектуры модели, но и манипуляцией тренировочными данными. А также пример того, что наличие любых inductive bias зависит не от отдельного компонента — архитектуры модели, устройства данных или алгоритма обучения — а от всех сразу.

    Понимание, какие скрытые inductive bias есть у модели, помогает лучше понять, как именно модель обрабатывает данные и сделать модель более эффективной, если выявленные скрытые inductive bias окажутся вредными.

    В английском языке «скрытые» inductive bias называются implicit. А те, которые человек осознанно вложил в модель — explicit.

    Итак, мы выяснили, как inductive bias сверточных слоев помогает CNN эффективно обрабатывать изображения. Рассмотрим другую архитектуру нейросетей для работы с картинками — Visual Transformer — и поймем, как ее недавний успех связан с inductive bias.

    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. На графике видно, что трансформеры начинают показывать результаты лучше сверток только на больших датасетах:

    https://arxiv.org/pdf/2010.11929.pdf

    Результаты моделей BiT (ResNet-based) и ViT (Visual Transformer) на датасетах разных размеров. Внутри серой области заключены результаты различных моделей BiT. Видно, что ViT начинает выигрывать у BiT только при достаточно большом размере датасета

    Другими словами, если у вас есть огромный датасет для обучения сети, Transformer — ваш выбор, однако для обучения на небольших датасетах лучше выбрать свертки.

    Преимущество Visual Transformer над свертками на больших датасетах имеется ровно потому, что у архитектуры Visual Transformer нет inductive bias, какие есть у сверточного слоя. Здесь мы наблюдаем подтверждение того, что чем меньше обучающий датасет, тем более сильный inductive bias нужен для успешного обучения модели. Но верно и обратное: чем больший датасет есть у нас в распоряжении, тем меньший inductive bias требуется и тем лучше модель может обучиться под задачу (потому что у нее меньше ограничивающих bias’ов, а величина датасета позволяет получить всю нужную информацию для хорошей генерализации из него)

    А также убеждаемся, что inductive bias сверточных нейросетей действительно сильно помогает для решения задач, связанных с изображениями.

    Свертки + Transformer

    Выше мы разобрали два подхода к обработке картинок нейросетями: с помощью сверточных слоев и архитектуру 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 и почему он полезен, а не вреден =) Вот еще несколько полезных ссылок по теме:

    Литература:

    Attention is all you need (статья, презентующая архитектуру Transformer для NLP)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *