Почему узлы смещения используются в нейронных сетях?


29
  1. Почему узлы смещения используются в нейронных сетях?
  2. Сколько вы должны использовать?
  3. В каких слоях вы должны их использовать: все скрытые слои и выходной слой?

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

2
FTR, я не думаю, что это слишком широко.
gung - Восстановить Монику

Ответы:


24

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

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

Рассмотрим простой пример: у вас есть перцептрон с прямой связью с 2 входными узлами и и 1 выходным узлом . и являются двоичными функциями и установлены на их эталонном уровне, . Умножьте эти 2 на любые веса, которые вам нравятся, и , продукты и пропустите их через любую функцию активации, которую вы предпочитаете. Без узла смещения возможно только одно выходное значение, что может привести к очень плохой подгонке. Например, используя функцию логистической активации, должно бытьx 2 y x 1 x 2 x 1 = x 2 = 0 0 w 1 w 2 y .5Икс1Икс2YИкс1Икс2Икс1знак равноИкс2знак равно00вес1вес2Y0,5, что было бы ужасно для классификации редких событий.

Узел смещения обеспечивает значительную гибкость для модели нейронной сети. В приведенном выше примере единственная прогнозируемая пропорция, возможная без узла смещения, составляла , но с узлом смещения любая пропорция в может подходить для шаблонов, где . Для каждого уровня , в который добавляется узел смещения, узел смещения будет добавлять дополнительных параметров / весов для оценки (где - количество узлов в слое( 0 , 1 ) x 1 = x 2 = 0 j N j + 1 N j + 1 j + 150%(0,1)Икс1знак равноИкс2знак равно0JNJ+1NJ+1J+1). Больше параметров, которые будут установлены, означает, что обучение нейронной сети будет занимать пропорционально больше времени. Это также увеличивает вероятность переоснащения, если у вас нет значительно большего количества данных, чем веса, которые нужно изучить.

Имея это в виду, мы можем ответить на ваши конкретные вопросы:

  1. Добавлены узлы смещения, чтобы увеличить гибкость модели для соответствия данным. В частности, это позволяет сети подгонять данные, когда все входные функции равны , и очень вероятно уменьшает смещение подгоночных значений в другом месте в пространстве данных. 0
  2. Как правило, один узел смещения добавляется для входного слоя и каждого скрытого слоя в сети с прямой связью. Вы никогда не добавите два или более к данному слою, но вы можете добавить ноль. Таким образом, общее количество определяется в значительной степени структурой вашей сети, хотя могут применяться и другие соображения. (Мне менее понятно, как узлы смещения добавляются к структурам нейронной сети, отличным от прямой связи.)
  3. В основном это было рассмотрено, но чтобы быть явным: вы никогда не добавите узел смещения в выходной слой; это не имеет никакого смысла.

CNN отличается в этом отношении? так как, когда я добавляю смещение в свои слои конвона, производительность (точность) ухудшается! и когда я удаляю их, это фактически идет выше!
Рика

@ Хоссейн, я не знаю, но ты мог бы задать новый вопрос. Я не большой эксперт там.
gung - Восстановить Монику

Буду ли я по-прежнему нуждаться в узлах смещения, если мои входы никогда не будут равны 0?
alec_djinn

1
@alec_djinn, да. Почти наверняка модель будет смещена без них, даже если у вас никогда не будет 0 для входного значения. По аналогии, это может помочь прочитать: Когда это нормально, чтобы удалить перехват в модели линейной регрессии?
gung - Восстановить Монику

1
@krupeshAnadkat, «Узел смещения в нейронной сети - это узел, который всегда находится в состоянии« включено ». То есть его значение установлено равным 1 без учета данных в данном шаблоне». Таким образом, вы можете подключиться, если хотите, просто всегда меняйте результирующее значение узла обратно на прежде чем умножить его на вес, поскольку узел смещения - это узел, значение которого всегда равно 1 . 1
gung - Восстановить Монику

2

Простые, короткие ответы:

  1. Чтобы сдвинуть функцию ввода / быть более гибким в отношении изученной функции.
  2. Один узел смещения на слой.
  3. Добавьте их ко всем скрытым слоям и входному слою - с некоторыми сносками

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

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


будет ли узел смещения иметь стрелки, соединяющиеся с ним из предыдущего слоя? или он просто вносит вклад в следующий слой, умножая его значение «1» на вес в взвешенной сумме, переданной для активации. Ответ на это сэкономит часы, помогите пожалуйста
крупеш Анадкат

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

2

В контексте нейронных сетей Batch Normalization в настоящее время является золотым стандартом для создания умных «узлов смещения». Вместо того, чтобы фиксировать значение смещения нейрона, вы вместо этого настраиваете на ковариацию входа нейрона. Таким образом, в CNN вы должны применить пакетную нормализацию только между сверточным слоем и следующим полностью подключенным слоем (скажем, ReLus). Теоретически, все полностью связанные слои могут извлечь выгоду из нормализации партии, но на практике это становится очень дорогим для реализации, поскольку каждая нормализация партии имеет свои собственные параметры.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.