Роль предвзятости в нейронных сетях - PullRequest
714 голосов
/ 20 марта 2010

Я знаю о градиентном спуске и теореме обратного распространения. Чего я не понимаю: когда важно использовать смещение и как его использовать?

Например, при отображении функции AND, когда я использую 2 входа и 1 выход, он не дает правильные веса, однако, когда я использую 3 входа (1 из которых является смещением), он дает правильные веса.

Ответы [ 19 ]

1213 голосов
/ 23 марта 2010

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

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

simple network

Выход сети вычисляется путем умножения входных данных (x) на вес (w 0 ) и передачи результата через некоторую функцию активации (например, сигмовидную функцию).

Вот функция, которую эта сеть вычисляет для различных значений w 0 :

network output, given different w0 weights

Изменение веса w 0 существенно меняет «крутизну» сигмовидной кишки. Это полезно, но что если вы хотите, чтобы сеть выводила 0, когда х равен 2? Простое изменение крутизны сигмовидной формы на самом деле не сработает - вы хотите иметь возможность сместить всю кривую вправо .

Это именно то, что позволяет сделать уклон. Если мы добавим смещение в эту сеть, например, так:

simple network with a bias

... тогда выходной сигнал сети становится sig (w 0 * x + w 1 * 1.0). Вот как выглядит выход сети для различных значений w 1 :

network output, given different w1 weights

Имея вес -5 для w 1 сдвигает кривую вправо, что позволяет нам иметь сеть, которая выводит 0, когда x равен 2.

298 голосов
/ 04 ноября 2014

Просто добавлю два моих цента.

Более простой способ понять, что такое смещение: оно чем-то похоже на постоянную b линейной функции

у = топор + б

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

41 голосов
/ 20 марта 2010

Два разных вида параметров могут корректироваться во время тренировки ANN, вес и значение в функции активации. Это непрактично, и было бы легче, если только один из параметров должен быть отрегулированы. Чтобы справиться с этой проблемой Нейрон смещения изобретен. Уклон нейрон лежит в одном слое, связан для всех нейронов в следующем слое, но нет в предыдущем слое, и это всегда испускает 1. так как смещение нейрона испускает 1 вес, связанный с смещение нейрона, добавляются непосредственно к объединенная сумма других весов (уравнение 2.1), так же, как значение т в функции активации. 1

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

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

ANN
(источник: aihorizon.com )

  • w0 соответствует b .
  • w1 соответствует x1 .
  • w2 соответствует x2 .

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

Например, если мы примем логические значения 1 (истина) и -1 (ложь), затем один способ использовать персептрон с двумя входами для реализовать функцию AND, чтобы установить веса w0 = -3 и w1 = w2 = .5. Этот персептрон может быть сделан для представлять функцию OR вместо изменение порога до w0 = -.3. В Факт, И и ИЛИ можно рассматривать как Особые случаи функций m-of-n: то есть функции, где по крайней мере м n входов в персептрон должны быть правда. Функция OR соответствует m = 1 и функция AND для m = n. Любая функция m-of-n легко представлены с помощью персептрона установка всех входных весов одинаковыми значение (например, 0,5), а затем настройку порог w0 соответственно.

Перцептроны могут представлять все примитивные логические функции И, ИЛИ, NAND (1 AND) и NOR (1 OR). Машинное обучение - Том Митчелл)

Порог - это смещение, а w0 - вес, связанный с нейроном смещения / порога.

29 голосов
/ 05 ноября 2018

Эта тема действительно помогла мне разработать собственный проект. Вот еще несколько иллюстраций, показывающих результат простой двухслойной нейронной сети с прямой связью с блоками смещения и без нее для задачи регрессии с двумя переменными Веса инициализируются случайным образом и используется стандартная активация ReLU. Как пришли к выводу ответы передо мной, без смещения ReLU-сеть не может отклоняться от нуля при (0,0).

enter image description here

enter image description here

21 голосов
/ 20 марта 2010

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

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

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

2d ANN:

Для сети ANN, отображающей два измерения в одно измерение, например, при воспроизведении функций AND или OR (или XOR), вы можете думать о нейронной сети как о следующей:

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

Без смещения эта прямая линия должна проходить через ноль, тогда как с смещением вы можете свободно ее поместить куда угодно. Итак, вы увидите, что без смещения вы столкнулись с проблемой с функцией AND, так как вы не можете поместить оба (1, -1) и (-1,1) в отрицательную сторону , (Они не могут быть на строке.) Проблема равна для функции ИЛИ. Однако с предвзятостью легко провести черту.

Обратите внимание, что функция XOR в этой ситуации не может быть решена даже с предвзятым отношением.

21 голосов
/ 13 марта 2017

Смещение не является термином NN, это общий термин алгебры для рассмотрения.

Y = M*X + C (уравнение прямой)

Теперь, если C(Bias) = 0 тогда, линия всегда будет проходить через начало координат, т. е. (0,0), и зависит только от одного параметра, т. е. M, который является наклоном, поэтому у нас меньше вещей для игры.

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

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

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

19 голосов
/ 22 марта 2010

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

Если у вас есть одноуровневая сеть (или линейное отображение), вы не можете найти решение. Однако, если у вас есть предвзятость, это тривиально!

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

15 голосов
/ 24 января 2014

Модификация нейронов ВЕСА сама по себе служит только для манипулирования формой / кривизной вашей передаточной функции, а не ее равновесной / нулевой точкой пересечения.

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

Смотрите здесь для графического объяснения: http://www.heatonresearch.com/wiki/Bias

12 голосов
/ 01 августа 2017

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

Это может сильно зависеть от сетевой архитектуры / набора данных.

12 голосов
/ 20 сентября 2016

Просто чтобы добавить ко всему этому что-то, чего очень не хватает, а остальные, скорее всего, не знали.

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

Для других данных наличие предубеждений может быть критическим.Это зависит от типа данных, с которыми вы имеете дело.Если ваша информация не зависит от величины --- если ввод [1,0,0,1] должен привести к тому же результату, что и ввод [100,0,10], вам может быть лучше без смещения.

...