Итак, гениально, это нейронная сеть для сборки персептрона?

алгоритм

Всем привет, сегодня я продолжу говорить о глубоком обучении.

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

Разница между нейронной сетью и персептроном

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

Начало глубокого обучения, поговорим о принципе персептрона

В то время мы поместили в статью картинку.Это картинка многослойного персептрона.Давайте посмотрим.Это картинка ниже.

На первый взгляд эта картинка выглядит прекрасно, но если подумать, то она покажется немного странной. Кажется, что картина нейронной сети, которую мы видим в нашем впечатлении, тоже такая. В таком случае, в чем между ними разница ?

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

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

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

сигнализация

На картинке ниже показана диаграмма нейронной сети, которую я нашел случайно.Мы видим, что первый узел ввода установлен в 1. это дляЛегко ввести смещения, просто когда мы рисуем картинку вообще, мы намеренно не рисуем смещение. Давайте возьмем следующий рисунок в качестве примера, чтобы увидеть, как сигналы передаются в нейронной сети.

мы начинаем сa1a_1Например, попробуем написатьa1a_1Выражение имеет всего три входа: 1,x1x_1, x2x_2, а затем мы также можем увидеть вес, соответствующий каждому входу, поэтому, наконец,a1a_1можно записать как:

a1=w11x1+w12x2+b1a_1 = w_{11}x_1+w_{12}x_2+b_1

Это еще не конец, в нейросетиКаждый слой будет иметь соответствующую функцию активации. В общем случае функция активации в том же слое сети одинакова, назовем ее h, поэтому в итогеa1a_1Выход этого узла не просто полученa1a_1, ноz1=h(a1)z_1 = h(a_1).

Мы уже знакомы с функцией активации, она вводилась много раз ранее, наиболее часто используемые, вероятно, следующие: Relu, Sigmoid, tanh, softmax и некоторые производные варианты. В целом,Перед выходным слоем мы обычно используем Relu, если модель является моделью классификации, мы будем использовать Sigmoid или softmax в конце, если это модель регрессии без какой-либо функции активации.

Мы уже знакомы с Sigmoid, если рассматривать LR-модель как однослойную нейронную сеть, то Sigmoid является ее функцией активации.Сигмоид применяется к одному выходному узлу в сцене бинарной классификации., выходное значениеsigmoid(y)sigmoid(y)Истина, если больше 0,5, иначе ложь. В некоторых сценариях оценки вероятности можно также считать, что выходное значение представляет собой вероятность возникновения события.

Ей соответствует функция softmax, которая используется в задачах мультиклассификации, и число применяемых ею узлов равно не 1, а k. Здесь k представляет количество категорий в мультиклассовой сцене. Возьмем в качестве примера k=3 и посмотрим на следующий рисунок:

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

yi=exp(ai)j=1kexp(aj)y_i=\frac{\exp(a_i)}{\sum_{j=1}^k\exp(a_j)}

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

Код

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

Если не учитывать обратное распространение, код всего алгоритма на самом деле очень прост, если его могут понять студенты, знакомые с синтаксисом Python.

import numpy as np

def relu(x):
    return np.where(x > 0, x, 0)


def sigmoid(x):
    return 1 / (1 + np.exp(-x))


class NeuralNetwork():
    def __init__(self):
        self.params = {}
        self.params['W1'] = np.random.rand(2, 3)
        self.params['b1'] = np.random.rand(1, 3)
        self.params['W2'] = np.random.rand(3, 2)
        self.params['b2'] = np.random.rand(1, 2)
        self.params['W3'] = np.random.rand(2, 1)
        self.params['b3'] = np.random.rand(1, 1)
       
    def forward(self, x):
        a1 = np.dot(x, self.params['W1']) + self.params['b1']
        z1 = relu(a1)
        
        a2 = np.dot(z1, self.params['W2']) + self.params['b2']
        z2 = relu(a2)
        
        a3 = np.dot(z2, self.params['W3']) + self.params['b3']
        return np.where(sigmoid(a3) > 0.5, 1, 0)
    
    
if __name__ == "__main__":
    nn = NeuralNetwork()
    print(nn.forward(np.array([3, 2])))

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

Вот и все, что касается сегодняшней статьи, и я искренне желаю вам удачи каждый день. Если вам все еще нравится сегодняшний контент, пожалуйста, зайдите на одинТройная поддержкабар~(Нравится, подписывайтесь, делайте репост)

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