Русский
Русский
English
Статистика
Реклама

Искусственные нейронные сети. Часть 1

Нейрон

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

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

Теперь подробнее про входные данные, веса, смещения и функцию активации.

Входные данные это данные которые получает нейрон из предыдущих нейронов или от пользователя.

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

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

Функция активации которую мы будем использовать в нашей нейронной сети называется сигмоида. Формула сигмоиды имеет вид:

f(x) = \frac{1}{1+e^{-x}}

Эта функция заворачивает любое число от - до + в диапазон от 0 до 1.

Если расписать математически, задачи, которые выполняет нейрон то, получится 2 формулы: Обозначения:

f(x) - функция активации

x - сумма произведения входных данных с весами, и смещения

i - массив входных данных

w - массив весов

b - смещение

j - количество входных данных и весов

x = i_1*w_1+...+i_j*w_j+bf(x) = \frac{1}{1+e^{-x}}

Алгоритм работы нейрона будет выглядеть так

Теперь реализуем этот алгоритм на языке программирования python.

Перед реализацией нейрона надо загрузить и подключить библиотеку numpy. Для загрузки библиотеки напишем в терминале Linux или Window:

pip install numpy

Для подключения библиотеки к нашей программе напишем в начало программы:

import numpy as np

Для удобства использования в больших программах и для простоты чтения кода мы реализуем класс Neuron, и напишем для него конструктор:

class Neuron:    def __init__(self, number_of_weights = 1):        self.w = np.random.normal(size=number_of_weights)        self.b = np.random.normal()

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

def activate(self, inputs):                x = np.dot(self.w, inputs) + self.b                return sig(x)

Функция получает входные данные, суммирует их и возвращает результат сигмоиды. Для работы функции активации нам надо написать функцию сигмоиды:

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

Эту функцию мы поместим в файл Math.py

Перед функцией мы опять подключим numpy:

import numpy as np

Класс нейрона мы запишем в файл Neuron.py. И подключим в Neuron.py файл Math.py:

from Math import *

В итоге мы получаем 2 файла:

Neuron.py

import numpy as npfrom Math import *class Neuron:    def __init__(self, number_of_weights = 1):        self.w = np.random.normal(size=number_of_weights)        self.b = np.random.normal()            def activate(self, inputs):                x = np.dot(self.w, inputs) + self.b                return sig(x)

Math.py

import numpy as npdef sig(x):  return 1 / (1 + np.exp(-x))

Эти файлы мы будем использовать в следующих статьях при построениях нейронных сетей.

И так, подведем итоги:

  1. Мы изучили принципы работы искусственных нейронов

  2. Изучили формулы, которые используются при работе нейронов

  3. Написали класс нейрона на языке программирования Python

Если вам было что-то не понятно задавайте вопросы в комментариях.

Источник: habr.com
К списку статей
Опубликовано: 15.02.2021 18:22:10
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Python

Искусственный интеллект

Нейронная сеть

Нейросеть

Нейросети

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

Нейрон

Нейроны

Сигмоида

Ии

Инс

Искуственные нейронные сети

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru