Руководство для начинающих по нейронам, перцептрону, нейронной сети и обратному распространению.

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

Содержание-

  1. Как искусственные нейроны вдохновлены биологическими нейронами?
  2. Нейронное представление логистической регрессии
  3. Перцептрон
  4. Многослойный персептрон (MLP)
  5. Обучение модели одного персептрона
  6. Тренировка многослойного персептрона
  7. Алгоритм обратного распространения ошибки
  8. Заключение
  9. Кредиты

Как искусственные нейроны вдохновлены биологическими нейронами?

Нейрон - это основная рабочая единица мозга. В мозгу несколько нейронов связаны между собой, чтобы при активации выполнять особую задачу. Биологические нейроны состоят из трех частей: входных единиц, называемых дендритами, тела клетки и выходных единиц, называемых аксонами. Дендриты обеспечивают вход в нейрон. У каждого нейрона есть тело клетки, где с ним выполняется определенный тип операции, а затем генерируется выходной сигнал. Этот вывод передается другим единицам через аксоны. Поскольку эти аксоны соединяются с несколькими другими единицами, они образуют сеть, известную как биологическая нейронная сеть.

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

Скажем, вход в нейрон представлен вектором X (x1, x2, x2), а веса представлены вектором W (w1, w2, w3), тогда нейрон сначала вычислит свое скалярное произведение, которое будет x1.w1 + x2. w2 + x3.w3. Этот скалярный продукт также называется взвешенной суммой входных данных. Затем это скалярное произведение будет пропущено через функцию активации «f». Следовательно, на выходе «y» будет f (x1.w1 + x2.w2 + x3.w3). В зависимости от того, какую функцию активации мы выберем, мы получим разные результаты.

Нейронное представление логистической регрессии.

Логистическая регрессия - один из простейших алгоритмов классификации. Он использует сигмовидную функцию, также известную как логистическая функция, обозначаемая σ, для вычисления выходных данных из заданных входных данных. Затем на основе вывода мы интерпретируем категорию для ввода. Для входных X весов W и смещения b выход будет сигмовидным (W’X + b). Мы можем представить логистическую регрессию в терминах простого нейрона. В искусственном нейроне, если мы используем сигмовидную функцию в качестве функции активации, она будет вести себя как логистическая регрессия. Таким образом, логистическая регрессия может быть одним из уровней нейронных сетей. Мы можем начать со случайной инициализации этих весов, а затем обучить их с помощью алгоритма градиентного спуска. (В будущих блогах я расскажу о некоторых умных методах инициализации весов и их тренировке). Объединение большего количества таких функций в нейронную сеть может помочь ей изучить сложные отношения между вводом и выводом. В этом и заключается сила нейронных сетей.

Персептрон

Персептрон - это алгоритм обучения с учителем, используемый для двоичной классификации. Это однослойная нейронная сеть, в которой для активации используется функция «Шаг Хевисайда». Пошаговая функция дает 0 на выходе, если вход отрицательный, и дает 1 на выходе, если вход 0 или положительный. Когда взвешенные входные данные передаются персептрону, он использует пошаговую функцию для вычислений, а затем выдает 0 или 1 в качестве выходных данных. Затем он обновляет веса для повышения точности. Позже в этом блоге мы узнаем, как обновляются эти веса. Персептрон был изобретен Фрэнком Розенблаттом в 1958 году. Интересным фактом является то, что он был изобретен как машина, а не как программное обеспечение. Персептрон - это простой искусственный нейрон со ступенчатой ​​функцией в качестве функции активации. Мы будем использовать эти перцептроны для создания сложной нейронной сети, которая будет иметь возможность формировать сложные отношения между вводом и выводом.

Многослойный персептрон

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

Fᵢⱼ: функция j-го нейрона i-го слоя

Wₖᵢⱼ: веса от i-го нейрона до j-го нейрона, а «k» представляет следующий слой.

Oᵢⱼ: вывод с i-го слоя на j-й слой

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

Если мы обозначим веса между слоями с помощью матрицы, то она будет иметь размерность NXM, где N и M обозначают количество нейронов каждого слоя соответственно. Следовательно, весовая матрица между входным слоем и первым скрытым слоем будет иметь размер 6X4, между первым скрытым слоем и вторым скрытым слоем будет размер 4X3, а между вторым скрытым слоем и последним слоем будет размер 3X1.

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

Вот как работает MLP. Давайте углубимся в это и поймем всю математику, лежащую в основе его работы.

Обучение модели одного персептрона:

Давайте обучим одну модель персептрона выполнению задачи регрессии. У нас есть набор данных, представленный D, состоящий из входа X (x1, x2… xn) и соответствующего выхода Y (y1, y2… yn). Предположим, мы используем функцию relu в качестве функции активации для всех нейронов, т.е. вход нейрона меньше нуля, тогда его выход также будет равен нулю, в противном случае его выход будет таким же, как вход. Для простоты предположим, что мы инициализируем веса случайным образом. Поскольку мы решаем задачу регрессии, давайте использовать функцию среднеквадратичной ошибки в качестве функции потерь. Здесь W’X + b представляет собой взвешенную сумму входных

Наша цель - минимизировать функцию потерь, которая представлена ​​как:

Итак, наша цель будет заключаться в том, чтобы найти такое W, чтобы потери (L) были минимальными. Давайте сделаем это с помощью алгоритма градиентного спуска. Для градиентного спуска нам нужно вычислить производную функции потерь по весу (w).

Пусть r будет скоростью обучения (0,001), и с использованием градиентного спуска веса будут обновляться как-

Этот процесс повторяется до схождения, т.е. этот процесс повторяется до тех пор, пока W (новый) и W (старый) не станут почти одинаковыми.

До сих пор мы не сделали ничего уникального, за этим процессом следуют все задачи оптимизации, которые решаются с помощью Gradient Descent. Единственное, что мы собираемся сделать, это вместо того, чтобы вычислять производную потерь по весу напрямую, мы будем использовать цепное правило дифференцирования. На данном этапе это может показаться бесполезным, поскольку мы можем вычислить производное напрямую, но поверьте мне, это будет очень полезно, когда мы будем тренировать многослойные перцептроны. Поэтому вместо прямого вычисления производной потерь по весам мы будем использовать это -

Поскольку L является функцией 'y (pred)', производная L по 'y (pred)' может быть легко вычислена, а поскольку y (pred) является функцией W, производная W по y ( pred) также можно легко вычислить. Мы будем использовать это уравнение для обновления весов.

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

Обучение модели многослойного персептрона (MLP) -

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

Мы уже обсуждали размеры весовых матриц в приведенном выше MLP. Если мы сложим их все в сумме, мы получим 6 * 4 + 4 * 3 + 3 * 1, то есть 39 весов. Поскольку это много весов, чтобы дать интуитивное представление о том, как рассчитываются веса для каждого слоя, я рассчитаю только несколько весов.

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

Наша цель - найти такое оптимальное W, чтобы эти потери были минимальными. Для этого мы снова можем использовать градиентный спуск так же, как мы обсуждали ранее. Наша основная задача здесь - вычислить производные убытков по весам. Как я упоминал ранее, мы будем вычислять все эти производные, используя цепное правило дифференцирования. Используя цепное правило, мы можем легко вычислить эти производные, а затем использовать их в алгоритме градиентного спуска. Мы начнем вычислять производные с последнего слоя, а затем перейдем внутрь, поскольку многие из этих производных будут повторяться.

Производная потерь по W₃₁₁, W₃₂₁ и W₃₃₁, вычисленная с использованием цепного правила, равна -

Теперь, возвращаясь назад, нам нужно вычислить производную потерь по W₂₁₁, W₂₁₂, W₂₁₃, W₂₁₄, W₂₂₁, W₂₂₂, W₂₂₃, W₂₂₄ W₂₃₁, W₂₃₂, W₂₃₃ и W₂₃₄.

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

Теперь, двигаясь назад, нам нужно вычислить производную потерь по этим весам -

W₁₁₁, W₁₂₁, W₁₃₁, W₁₄₁, W₁₅₁, W₁₆₁, W₁₁₂, W₁₂₂, W₁₃₂, W₁₄₂, W₁₅₂, W₁₆₂, W₁₁₃, W₁₂₃, W₁₃₃, W₁₄₃, W₁₅₃, W₁₆₃, W₁₁₄, W₁₂₄, W₁₃₄, W₁₄₄, W₁₅₄ и W₁₆₄.

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

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

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

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

Алгоритм обратного распространения ошибки

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

Проще говоря, обратное распространение - это комбинация правила цепочки и динамического программирования (мемоизация).

Заключение-

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

Кредиты-

  1. Https://en.wikipedia.org/wiki/Artificial_neural_network
  2. Https://en.wikipedia.org/wiki/Artificial_neural_network
  3. Http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.335.3398&rep=rep1&type=pdf
  4. Http://www.cs.stir.ac.uk/courses/ITNP4B/lectures/kms/4-MLP.pdf

Это все с моей стороны. Спасибо, что прочитали эту статью. Упоминаются источники для нескольких использованных изображений, остальные - мои творения. Не стесняйтесь оставлять комментарии, предлагать исправления и улучшения. Свяжитесь со мной в Linkedin или напишите мне по адресу [email protected]. Жду ваших отзывов. Если вам нравится читать больше таких статей, подпишитесь на меня в среде.