Нейронные сети | Руководство для начинающих
Нейронные сети - это искусственные системы, которые были созданы на основе биологических нейронных сетей. Эти системы учатся выполнять задачи, подвергаясь воздействию различных наборов данных и примеров без каких-либо правил для конкретных задач. Идея состоит в том, что система генерирует идентифицирующие характеристики из данных, которые они передали, без программирования с заранее запрограммированным пониманием этих наборов данных.
Нейронные сети основаны на вычислительных моделях пороговой логики. Пороговая логика - это комбинация алгоритмов и математики. Нейронные сети основаны либо на изучении мозга, либо на применении нейронных сетей к искусственному интеллекту. Работа привела к усовершенствованию теории конечных автоматов.
Компоненты типичной нейронной сети включают нейроны, связи, веса, смещения, функцию распространения и правило обучения. Нейроны получат вход от предшествующих нейронов, у которых есть активация , порог , функция активации 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/