Нейронная сеть — это алгоритм, дизайн которого был вдохновлен функционированием человеческого мозга. Он пытается имитировать основные функции мозга.
Из-за преднамеренного проектирования ИНС как концептуальной модели человеческого мозга давайте сначала поймем, как работают биологические нейроны. Позже мы можем экстраполировать эту идею на математические модели.
На приведенной ниже диаграмме представлена модель биологического нейрона.
Он состоит из трех основных частей, а именно, дендритов, сомы и аксона.
Дендриты являются приемником сигналов для нейрона. Дендриты собирают сигнал и передают его соме, которая является основным телом клетки.
Аксон является передатчиком сигнала для нейрона. Когда нейрон возбуждается, он передает свой стимул через аксон.
Дендриты одного нейрона соединяются с аксонами других нейронов. Синапсы являются соединительным соединением между аксонами и дендритами.
Нейрон использует дендриты для сбора входных данных от других нейронов, суммирует все входные данные и, если результирующая сумма превышает пороговое значение, срабатывает.
Нейрон сам по себе ни на что не годен. Однако, когда у нас много связанных нейронов, они сильнее и могут творить чудеса. В нашем мозгу миллиарды таких соединений. обрабатывать и передавать информацию.
В нашем мозгу есть миллиарды взаимосвязанных нейронов, которые позволяют нам чувствовать, думать и действовать.
ИСКУССТВЕННЫЙ НЕЙРОН:
Искусственный нейрон показан ниже.
Здесь входы эквивалентны дендритам биологического нейрона, функция активации аналогична соме, а выход аналогичен аксонам.
Искусственный нейрон будет иметь входы, и каждый из входов будет иметь связанные с ним веса. Пока просто знайте, что веса инициализируются случайным образом.
Веса здесь означают, насколько важен конкретный узел. Входные данные, умноженные на веса (взвешенная сумма), будут отправлены в качестве входных данных для нейрона.
Здесь, я это индекс и м количество входов
После расчета взвешенной суммы к ней будет применена функция активации. Функция активации в основном сжимает ввод между 0 и 1.
Результат функции активации решает, активировать нейрон или нет.
φ — функция активации.
Я написал статью, объясняющую некоторые часто используемые функции активации. Вы можете прочитать мою статью «Введение в функции активации», чтобы узнать о них больше.
НЕЙРОН МАККАЛОХ-ПИТТС:
Это был один из самых ранних и чрезвычайно простых искусственных нейронов, предложенных Маккаллохом и Питтсом в 1943 году.
Нейрон МакКаллоха-Питтса принимает двоичные данные и выдает двоичные данные.
Вес для нейрона Маккаллоха-Питтса выбирается на основе анализа задачи. Вес может быть как возбуждающим, так и тормозным. Если вес положительный, т. е. 1, то он возбуждающий, если вес отрицательный, т. е. -1, то тормозной.
Для каждого нейрона существует порог, и если чистый ввод выше порогового значения, то этот нейрон срабатывает.
Давайте посмотрим на пример того, как реализовать логический вентиль И с использованием нейрона MP.
Ниже приведена таблица истинности для логических вентилей И.
Х1 | Х2 | Д |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Предположим, что веса w1 = w2 = 1
Для входов,
(0,0), y = w1*x1 + w2*x2 = (1×0) + (1×0) = 0
(0,1), y = w1*x1 + w2*x2 = (1×0) + (1×1) = 1
(1,0), y = w1*x1 + w2*x2 = (1×1) + (1×0) = 1
(1,1), y = w1*x1 + w2*x2 = (1×1) + (1×1) = 2
Теперь нам нужно установить пороговое значение, при котором нейрон должен сработать. На основе этих рассчитанных чистых входных значений устанавливается пороговое значение.
Для вентиля И выход истинен, только если оба входа истинны.
Итак, если мы установим пороговое значение равным 2, нейрон сработает только в том случае, если оба входа верны.
Теперь давайте реализуем нейрон Маккаллоха-Питтса, используя python.
импортировать pandas как pd импортировать numpy как np def threshold(x): вернуть 1, если x>= 2 иначе 0 def fire(data, weights, output): для x в данных: weighted_sum = np.inner(x, weights) output. добавить (порог (взвешенная_сумма)) данные = [[0,0], [0,1], [1,0], [1,1]]веса = [1, 1]выход = []fire(данные, веса, вывод) t = pd.DataFrame(index=None) t[‘X1’] “=” [0, 0, 1, 1]т[‘x2’] “=” [0, 1, 0, 1]т[‘y’] = pd.Series(выход) print
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Импортировать панды как пд Импортировать пустышка как нп деф порог(Икс): возвращаться 1 если Икс >= 2 еще 0 деф огонь(данные, веса, выход): для Икс в данные: взвешенная_сумма “=” нп.внутренний(Икс, веса) выход.добавить(порог(взвешенная_сумма)) данные “=” [[0,0], [0,1], [1,0], [1,1]] веса “=” [1, 1] выход “=” [] огонь(данные, веса, выход) т “=” пд.кадр данных(индекс“=”Никто) т[‘X1’] “=” [0, 0, 1, 1] т[‘x2’] “=” [0, 1, 0, 1] т[‘y’] “=” пд.Ряд(выход) Распечатать(т) |
ВЫХОД: X1 x2 y 0 0 0 0 1 0 1 0 0 1 1 1
|
ВЫХОД: Х1 х2 у 0 0 0 0 1 0 1 0 0 1 1 1 |
КРАТКОЕ СОДЕРЖАНИЕ:
В этом посте мы кратко рассмотрели один из самых ранних искусственных нейронов под названием нейрон Маккаллоха-Питтса. Мы обсудили работу нейрона MP, а также увидели, как он аналогичен человеческому мозгу.
Проблема с MP-нейроном заключается в том, что в нем нет реального обучения. Мы получаем вес и пороговое значение вручную, выполняя анализ задачи. Это полностью противоречит идее обучения на собственном опыте.
В следующей части мы увидим алгоритм персептрона, являющийся усовершенствованием нейрона MP, который со временем может обучаться весам.
Чтобы получить полный код, посетите этот Github Repo.