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

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

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

    16 Solutions collect form web for “Роль смещения в нейронных сетях”

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

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

    простая сеть

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

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

    сетевой выход, учитывая различные веса w0

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

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

    простая сеть с предубеждением

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

    сетевой выход, учитывая различные веса w1

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

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

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

    y = ax + b

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

    При подготовке 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 = 0,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 – Том Митчелл)

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

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

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

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

    2d ANN:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Расширение на @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 транспонированный)

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

    В частности, ответ Нейта, ответ zfy и ответ Pradi велики.

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

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

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

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

    Чтобы продумать простым способом, если у вас есть 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-перехват представляет собой конкретную форму линейных уравнений.

    у = х + Ь

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

    образ

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

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

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

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

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

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

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

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

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

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

    Interesting Posts

    Как получить количество дней разницы между двумя датами в mysql?

    Использовать UUID в правилах udev и монтировать диск USB на / media / $ UUID

    Бросить ключевое слово в подпись функции

    Могу ли я маскировать входной текст в файле bat?

    Неправильный датчик температуры процессора?

    Как преобразовать Markdown (или подобное) в документ Word?

    Как использовать сервлет-фильтр в Java для изменения URL-адреса входящего сервлета?

    Как принудительно разбить туннель на Mac на Cisco VPN

    Как создать синусоидальную волну с ffmpeg?

    Просмотр списка Android-файлов Drag and Drop

    Как записывать записи файлов в каталог на Windows Server 2003?

    В Mac Chrome, как я могу вернуть фокус из адресной строки на страницу?

    Максимизированный хром показывает небольшую линию на втором экране

    Когда я должен помещать конфигурации в .bashrc vs into. .bash_profile?

    На настройке с двумя мониторами, как только один из двух будет повернут?

    Давайте будем гением компьютера.