Нейронные сети

Нейрон

Нейронные сети вдохновлены архитектурой человеческого мозга, а нейрон является основным строительным блоком. Он функционирует аналогично нейрону человеческого мозга (принимает входные данные, обрабатывает их и выдает конечный результат).

Вес

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

Например, давайте рассмотрим вход a и вес w1. Как только он проходит через узел, он становится * w1. Здесь для входа 1 и связанных с ним весов - 0,8 и 0,2, что составляет

Предвзятость

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

a * w1 + смещение

Функции активации

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

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

Некоторые из популярных типов функций активации -

  • Сигмовидная или логистическая
  • Тань
  • ReLu

Функция активации сигмовидной кишки - f (x) = 1/1 + exp (-x)

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

Функция активации гиперболического тангенса (Tanh) f (x) = 1-exp (-2x) / 1 + exp (-2x).

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

Однако он также страдает проблемой исчезающего градиента.

ReLu - выпрямленные линейные единицы: R (x) = max (0, x), если x ‹0, R (x) = 0 и если x› = 0, R (x) = x.

Это наиболее часто используемая функция активации, поскольку она довольно проста и эффективна.

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

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

Архитектура

Входной слой

Узлы на входном уровне не изменяют данные, то есть в большинстве случаев вычисления на этом уровне не выполняются, они просто передают информацию на следующий уровень. Напротив, узлы в скрытом слое и выходном слое активны, и большинство модификаций данных выполняется на этих слоях. Переменные во входном узле - x1, x2, x3…, xn содержат данные для оценки. Данные могут быть значениями пикселей для изображения, ценами на акции, выходными данными какого-либо другого алгоритма, такого как классификатор при обнаружении рака, например: диаметр, резкость краев и т. Д.

Скрытый слой

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

Выходной слой

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

Нейронная сеть может иметь любое количество слоев и любое количество узлов на каждом слое. Большинство приложений используют трехуровневую структуру с максимум несколькими сотнями входных узлов. Скрытый слой обычно составляет около 10% от размера входного слоя.

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

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