Нейронные сети | Руководство для начинающих

Опубликовано: 25 Июля, 2021

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

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

Компоненты типичной нейронной сети включают нейроны, связи, веса, смещения, функцию распространения и правило обучения. Нейроны получат вход от предшествующих нейронов, у которых есть активация , порог , функция активации f и функция вывода . Связи состоят из связей, весов и смещений, которые определяют, как нейрон передает вывод на нейрон . Распространение вычисляет входные и выходные данные и суммирует функцию предшествующих нейронов с весом. Правило обучения изменяет веса и пороговые значения переменных в сети.

Контролируемое и неконтролируемое обучение:
Нейронные сети обучаются через обучение с учителем; Машинное обучение с учителем включает входную переменную x и выходную переменную y . Алгоритм учится на обучающем наборе данных. С каждым правильным ответом алгоритмы итеративно делают прогнозы на основе данных. Обучение прекращается, когда алгоритм достигает приемлемого уровня производительности.
Неконтролируемое машинное обучение имеет входные данные X и не имеет соответствующих выходных переменных. Цель состоит в том, чтобы смоделировать базовую структуру данных, чтобы лучше понять данные. Ключевые слова для машинного обучения с учителем - это классификация и регрессия. В случае машинного обучения без учителя ключевыми словами являются кластеризация и ассоциация.

Эволюция нейронных сетей:
Хеббийское обучение имеет дело с нейронной пластичностью. Обучение на хеббийском языке происходит без присмотра и имеет дело с долгосрочным потенциалом. Обучение Hebbian имеет дело с распознаванием образов и схемами исключающего ИЛИ; имеет дело с правилами «если-то».

Обратное распространение решило проблему «исключающее ИЛИ», с которой не могло справиться изучение Hebbian. Это также позволило сделать многоуровневые сети осуществимыми и эффективными. Если ошибка была обнаружена, ошибка решалась на каждом уровне путем изменения весов в каждом узле. Это привело к развитию машин опорных векторов, линейных классификаторов и max-pooling. Проблема исчезающего градиента влияет на сети с прямой связью, которые используют обратное распространение и рекуррентную нейронную сеть. Это называется глубоким обучением.

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

Сверточные сети используются для чередования сверточных слоев и слоев с максимальным объединением со связанными слоями (полностью или редко связанными) с последним слоем классификации. Обучение осуществляется без предварительной подготовки без присмотра. Каждый фильтр эквивалентен вектору весов, который необходимо обучить. Дисперсия сдвига должна быть гарантирована для работы с небольшими и большими нейронными сетями. Эта проблема решается в Development Networks.

Типы нейронных сетей

Можно использовать семь типов нейронных сетей.

  • Первый - это многослойный персептрон, состоящий из трех или более слоев и использующий нелинейную функцию активации.
  • Второй - сверточная нейронная сеть, использующая разновидность многослойных перцептронов.
  • Третий - рекурсивная нейронная сеть, которая использует веса для построения структурированных прогнозов.
  • Четвертый - это рекуррентная нейронная сеть, которая устанавливает связи между нейронами в направленном цикле. Нейронная сеть с долговременной краткосрочной памятью использует архитектуру рекуррентной нейронной сети и не использует функцию активации.
  • Последние два - это модули последовательности для последовательности, которые используют две повторяющиеся сети и мелкие нейронные сети, которые создают векторное пространство из некоторого количества текста. Эти нейронные сети являются приложениями базовой нейронной сети, показанной ниже.

Например, нейронная сеть будет работать с тремя векторами: вектором атрибутов X, вектором классов Y и вектором весов W. Код будет использовать 100 итераций для подгонки атрибутов к классам. Прогнозы генерируются, взвешиваются и затем выводятся после итерации по вектору весов W. Нейронная сеть обрабатывает обратное распространение.

Примеры:

Вход :
Х {2.6, 3.1, 3.0,
    3.4, 2.1, 2.5,
    2.6, 1.3, 4.9, 
    0,1, 0,3, 2,3,};
у {1, 1, 1};
W {0,3, 0,4, 0,6}; 

Выход :
0,990628 
0,984596 
0,994117

Ниже приведены реализации:




import numpy as np
# array of any amount of numbers. n = m
X = np.array([[ 1 , 2 , 3 ],
[ 3 , 4 , 1 ],
[ 2 , 5 , 3 ]])
# multiplication
y = np.array([[. 5 , . 3 , . 2 ]])
# transpose of y
y = yT
# sigma value
sigm = 2
# find the delta
delt = np.random.random(( 3 , 3 )) - 1
for j in range ( 100 ):
# find matrix 1. 100 layers.
m1 = (y - ( 1 / ( 1 + np.exp( - (np.dot(( 1 / ( 1 + np.exp(
- (np.dot(X, sigm))))), delt)))))) * (( 1 / (
1 + np.exp( - (np.dot(( 1 / ( 1 + np.exp(
- (np.dot(X, sigm))))), delt))))) * ( 1 - ( 1 / (
1 + np.exp( - (np.dot(( 1 / ( 1 + np.exp(
- (np.dot(X, sigm))))), delt)))))))
# find matrix 2
m2 = m1.dot(delt.T) * (( 1 / ( 1 + np.exp( - (np.dot(X, sigm)))))
* ( 1 - ( 1 / ( 1 + np.exp( - (np.dot(X, sigm)))))))
# find delta
delt = delt + ( 1 / ( 1 + np.exp( - (np.dot(X, sigm))))).T.dot(m1)
# find sigma
sigm = sigm + (XTdot(m2))
# print output from the matrix
print ( 1 / ( 1 + np.exp( - (np.dot(X, sigm)))))
Выход:
[[0,99999294 0,99999379 0,99999353]
 [0,99999987 0,99999989 0,99999988]
 [1. 1. 1.]]

Ограничения:
Нейронная сеть предназначена для контролируемой модели. Он не обрабатывает неконтролируемое машинное обучение, а также не объединяет и не связывает данные. Ему также не хватает уровня точности, который можно найти в более дорогих в вычислительном отношении нейронных сетях. На основе нейронной сети Андрея Траска. Кроме того, нейронная сеть не работает с любыми матрицами, в которых количество строк и столбцов X не совпадает с количеством строк Y и W.

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

Ресурсы:

  • http://neuralnetworksanddeeplearning.com
  • https://skymind.ai/wiki/neural-network
  • http://pages.cs.wisc.edu/~bolo/shipyard/neural/local.html
  • https://iamtrask.github.io/2015/07/12/basic-python-network/