Роль смещения в нейронных сетях

Я знаю о градиентном спуске и теореме о обратном распространении. То, что я не получаю, - это: когда используется важность смещения и как вы его используете?

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

Ответ 1

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

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

simple network

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

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

network output, given different w0 weights

Изменение веса w 0 существенно изменяет "крутизну" сигмоида. Это полезно, но что, если вы хотите, чтобы сеть выводила 0, когда x равно 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.

Ответ 2

Просто добавьте два цента.

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

y = ax + b

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

Ответ 3

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

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

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

ANN http://www.aihorizon.com/images/essays/perceptron.gif

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

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

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

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

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

Ответ 4

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

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

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

2d ANN:

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

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

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

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

Ответ 5

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

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

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

Ответ 6

Смещение - это не NN член, это общий термин алгебры, который необходимо учитывать.

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

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

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

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

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

Ответ 7

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

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

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

Ответ 8

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

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

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

Ответ 9

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

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

Ответ 10

Расширение на @zfy объяснения... Уравнение для одного входа, один нейрон, один выход должен выглядеть:

y = a * x + b * 1    and out = f(y)

где x - значение от входа node, а 1 - значение смещения node; y может быть непосредственно вашим выходом или передаваться в функцию, часто сигмоидную функцию. Также обратите внимание, что смещение может быть любой константой, но чтобы все упростилось, мы всегда выбираем 1 (и, вероятно, настолько распространенный, что @zfy сделал это, не показывая и не объясняя это).

Ваша сеть пытается изучить коэффициенты a и b для адаптации к вашим данным. Итак, вы можете понять, почему добавление элемента b * 1 позволяет ему лучше соответствовать большему количеству данных: теперь вы можете изменять как наклон, так и перехват.

Если у вас более одного ввода, ваше уравнение будет выглядеть так:

y = a0 * x0 + a1 * x1 + ... + aN * 1

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

Чтобы вы могли писать в векторизованном формате как

A = [a0, a1, .., aN] , X = [x0, x1, ..., 1]
Y = A . XT

то есть. поместив коэффициенты в один массив и (входы + смещение) в другое, у вас есть желаемое решение в виде точечного произведения двух векторов (вам нужно перенести X для правильной формы, я написал XT a X X транспонированный)

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

Ответ 11

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

enter image description here

enter image description here

Ответ 12

В частности, Nates answer, zfys answer, а Pradis answer являются отличными.

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

Например, в моделях обучения гипотеза/предположение желательно ограничено y = 0 или y = 1 с учетом некоторого ввода, возможно, в некоторой задаче классификации... т.е. некоторые y = 0 для некоторого x = (1,1 ) и некоторые y = 1 для некоторого x = (0,1). (Условие гипотезы/результата - это пороговое значение, о котором я говорил выше. Обратите внимание, что в моих примерах настройки ввода X должны быть каждый x = двойной или 2-значный вектор вместо однозначных входов Nate некоторого набора X).

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

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

Ответ 13

Смещение решает, на какой угол вы хотите, чтобы ваш вес вращался.

В 2-мерной диаграмме вес и смещение помогают нам найти границу принятия решений. Скажем, нам нужно построить функцию AND, пара input (p) -output (t) должна быть

{p = [0,0], t = 0}, {p = [1,0], t = 0}, {p = [0,1], t = 0}, {p = [1,1], t = 1}

enter image description here

Теперь нам нужно найти границу решения, граница идеи должна быть:

enter image description here

Увидеть? W перпендикулярно нашей границе. Таким образом, мы говорим, что W решил направление границы.

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

Теперь граница ближе к оси y.

Мы хотим повернуть границу, как?

Изменяя W.

Итак, мы используем функцию правила обучения: W '= W + P: enter image description here

W '= W + P эквивалентно W' = W + bP, а b = 1.

Поэтому, изменяя значение b (смещение), вы можете определить угол между W 'и W. Это "правило обучения ANN".

Вы также можете прочитать " Проект нейронной сети" Мартина Т. Хагана/Говарда Б. Демута/Марка Х. Била, глава 4 "Правило обучения перцептрона"

Ответ 14

Проще говоря, если у вас есть y = w1 * x, где y - ваш вывод, а w1 - вес, представьте условие, где x = 0, тогда y = w1 * x равно 0. Если вы хотите обновить свой вес, у вас есть чтобы вычислить, насколько изменилось значение delw = target-y, где target - это целевой результат, в этом случае "delw" не изменится, поскольку y вычисляется как 0. Так что, если вы можете добавить какое-то дополнительное значение, это поможет y = w1 * x + w0 * 1, где смещение = 1, и вес можно отрегулировать, чтобы получить правильное смещение. Рассмотрите пример ниже.

В терминах линии Наклон-перехват это особая форма линейных уравнений.

у = х + Ь

проверьте изображение

образ

здесь b (0,2)

если вы хотите увеличить его до (0,3), как вы будете делать это, изменив значение b, которое будет вашим смещением

Ответ 15

Для всех книг ML, которые я изучал, W всегда определяется как индекс связности между двумя нейронами, что означает более высокую связь между двумя нейронами, тем сильнее сигналы будут передаваться от обжигающего нейрона до целевого нейрона или Y = w * X в результате для поддержания биологического характера нейронов, нам нужно сохранить 1 >= W >= -1, но в реальной регрессии W закончится | W | >= 1, что противоречит тому, как работают нейроны, в результате я предлагаю W = cos (theta), а 1 >= | cos (theta) |, и Y = a * X = W * X + b тогда как a = b + W = b + cos (theta), b - целое число

Ответ 16

Помимо упомянутых ответов... Я хотел бы добавить некоторые другие моменты.

Смещение действует как наш якорь. Это способ для нас иметь какую-то базовую линию, в которой мы не отстаем от нее. В терминах графика подумайте, что y = mx + b это как y-перехват этой функции.

output = вводит значение веса и добавляет значение смещения, а затем применяет функцию активации.

Ответ 17

В общем, в машинном обучении у нас есть эта базовая формула: смещение по переменным смещению. Поскольку в NN мы имеем проблему Overfitting (проблема обобщения модели, при которой небольшие изменения в данных приводят к большим изменениям в результате моделирования), и из-за этого мы имеем большую дисперсию, Небольшое уклонение может многое помочь. Учитывая вышеприведенную формулу смещения смещения, где смещение квадратично, поэтому введение небольшого уклона может привести к значительному уменьшению дисперсии. Итак, представьте предвзятость, когда у вас большая разница и перегрузка.

Ответ 18

Помимо упомянутых ответов.. Я хотел бы добавить некоторые другие моменты.

Уклон действует как наш якорь. Для нас это способ иметь какую-то базовую линию, в которой мы не опускаемся ниже этого уровня. В терминах графа представьте, что y = mx + b - это y-пересечение этой функции.

output = input умножает значение веса и добавляет значение смещения, а затем применяет функцию активации.