Это будет первая статья из этой серии «Реализация нейронных сетей с нуля в Python», в которой будет рассмотрена одна концепция, связанная с построением нейронной сети и ее реализацией, как и во всех последующих статьях.

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

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

Итак, сегодня мы поговорим о (барабанная дробь) АКТИВАЦИЯХ. Если вы не можете вспомнить, что это такое, вот краткий обзор:

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

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

Математически сигмовидную функцию можно выразить следующим образом:

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

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

В python сигмовидная функция активации может быть реализована следующим образом:

import numpy as np
def sigmoid(x):
    s = 1/(1+np.exp(-x))
    return s

Единственная вещь в приведенном выше блоке кода, которая может нуждаться в объяснении, — это функция «np.exp()». Эта функция принимает переменную в качестве аргумента и возвращает ее показатель степени. Он может работать как с матрицами, векторами, так и с скейлерами.