Это будет первая статья из этой серии «Реализация нейронных сетей с нуля в 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()». Эта функция принимает переменную в качестве аргумента и возвращает ее показатель степени. Он может работать как с матрицами, векторами, так и с скейлерами.