В чем смысл смещения в линейных моделях машинного обучения? [Дубликат]

Используйте библиотеку date.format :

var dateFormat = require('dateformat');
var now = new Date();
dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");

возвращает:

Saturday, June 9th, 2007, 5:46:21 PM 

dateformat на npm

http://jsfiddle.net/phZr7/1/

563
задан Salvador Dali 14 August 2015 в 05:47
поделиться

16 ответов

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

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

simple network [/g0]

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

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

network output, given different w0 weights [/g1]

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

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

simple network with a bias [/g2]

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

network output, given different w1 weights [/g3]

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

1000
ответ дан Archy Wilhes 魏何 23 August 2018 в 17:29
поделиться

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

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

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

8
ответ дан Íhor Mé 23 August 2018 в 17:29
поделиться

Просто чтобы добавить мои два цента.

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

y = ax + b

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

232
ответ дан AwokeKnowing 23 August 2018 в 17:29
поделиться

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

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

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

14
ответ дан bayer 23 August 2018 в 17:29
поделиться

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

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

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

2d ANN:

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

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

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

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

16
ответ дан Debilski 23 August 2018 в 17:29
поделиться

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

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

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

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

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

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

9
ответ дан delrocco 23 August 2018 в 17:29
поделиться

Bias решает, сколько углов вы хотите, чтобы ваш вес вращался.

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

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

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

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

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

Теперь граница является pareller к оси y.

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

Изменяя W.

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

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

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

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

1
ответ дан Det2sial 23 August 2018 в 17:29
поделиться

Для всех книг 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 - целое число

2
ответ дан Edward 23 August 2018 в 17:29
поделиться

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

-3
ответ дан Euler 23 August 2018 в 17:29
поделиться

В частности, ответ [N0] , ответ [fg], zfy's ответ и ответ Pradi велики.

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

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

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

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

3
ответ дан Jordan Bennett 23 August 2018 в 17:29
поделиться

В ходе обучения ANN, весов и значения в активационных функциях можно настроить два разных параметра. Это непрактично, и было бы легче, если бы был отрегулирован только один из параметров. Чтобы справиться с этой проблемой, изобретен нейральный нейрот. Нейрон смещения лежит в одном слое, связан со всеми нейронами в следующем слое, но ни один в предыдущем слое и он всегда излучает 1. Так как нейронное смещение испускает 1, веса, связанные с нейронным смещением, добавляются непосредственно к объединенная сумма других весов (уравнение 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. Фактически, И и ИЛИ можно рассматривать как особые случаи функций 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 - Tom Mitchell)

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

31
ответ дан Kiril 23 August 2018 в 17:29
поделиться

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

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

7
ответ дан Martin Thoma 23 August 2018 в 17:29
поделиться

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

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

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

2
ответ дан Naren 23 August 2018 в 17:29
поделиться

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

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

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

6
ответ дан Oke Uwechue 23 August 2018 в 17:29
поделиться

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

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

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

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

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

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

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

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

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

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

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

4
ответ дан RobMcZag 23 August 2018 в 17:29
поделиться

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

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

y = mx + b

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

изображение

здесь b является (0,2)

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

2
ответ дан Yumlembam Rahul 23 August 2018 в 17:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: