Еще одна модель машинного обучения — «нейронная сеть». Он был вдохновлен тем, как настоящие нейроны взаимодействуют друг с другом, и упрощает их деятельность в такой форме: у нас есть разные входы x с разными весами (w); сумма входов по их весам запускает определенную функцию активации, которая сравнивается с порогом срабатывания, определяющим выход y.

Единица персептрона — это линейная функция, которая действует, как описано выше, и имеет выход 1 или 0. Следовательно, результатом единицы восприятия является линия, разделяющая две разные плоскости, где с одной стороны выход равен нулю, а с другой равно 1.

Такие функции, как «И», «ИЛИ» и «НЕ» могут быть выражены в виде единиц персептрона.

Что касается обучения персептрона, то на примерах нужно найти веса, которые сопоставляют входные данные с выходными.

В нейронной сети есть два случая, которые мы собираемся рассмотреть:

- Пороговый выход: правило персептрона

- Непороговые значения: градиентный спуск/дельта-правило

Правило персептрона:

Где у нас есть: x в качестве входных данных; y в качестве цели; y^ в качестве вывода; n как скорость обучения; w в качестве веса.

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

(тета рассматривается как смещение (соответствующий вес -тета), поэтому в конечном итоге мы можем сравнивать с нулем)

Таким образом, он находит разделительную линию, которая отличает обучающие примеры.

Когда наборы данных линейно разделимы, персептрон всегда найдет линию, которая их разделяет.

Градиентный спуск:

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

В данном случае у нас есть «функция активации» («a»); у нас есть ошибка, которая определяется как сумма квадратов значений разницы между целью и активацией. Затем мы пытаемся минимизировать эту ошибку, применяя ее производную по весам.

Основные характеристики этих двух правил следующие:

- Персептрон гарантирует сходимость, если данные линейно разделимы.

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

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

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

Мы можем применить градиентный спуск к функции активации, так как это непрерывная функция, в то время как мы не можем применить градиентный спуск к пороговому выходу (y^), поскольку он прерывистый, так как он скачет на шаге от значения 0 до значения 1.

Разрывная функция не дифференцируема. Чтобы решить эту проблему, мы можем ввести дифференцируемый порог, определяемый как «сигмоид». Это функция, которая вместо резкого перехода от 0 к 1 плавно переходит от одного к другому.

Нейронная сеть определяется как цепочка между входными слоями, скрытыми слоями и выходными слоями.

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

Используя эти сигмовидные единицы, мы можем построить цепочку отношений между входным слоем (x) с выходным слоем (y).

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

Запуск градиентного спуска позволяет нам найти веса, которые определяют эту сеть.

К сожалению, как упоминалось ранее, градиентный спуск может найти множество локальных оптимумов.

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

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

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

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

Наконец, давайте оценим смещение ограничения и предпочтения для этой модели нейронной сети.

Давайте вспомним, что они из себя представляют:

- смещение ограничения говорит нам, что мы можем представить.

- систематическая ошибка предпочтения говорит нам что-то об используемом нами алгоритме; учитывая два представления, он говорит нам, почему он предпочитает одно другому. (В дереве решений предпочтение было отдано более коротким деревьям, правильным деревьям и т. д.)

Если структура сети достаточно сложна, то метод нейронной сети не имеет большого количества смещений ограничений. Единственная опасность — переобучение.

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

Смещение предпочтения для нейронной сети заключается в более простых объяснениях, лучших обобщениях с более простой гипотезой. Он следует правилу Бритвы Оккама: объекты не должны быть излишне сложными.

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

Вдохновением для создания этого блога послужили лекции на курсе машинного обучения Udacity Nanodegree. (http:www.udacity.com)