Редактирование: Нейронные сети, перцептрон

Перейти к: навигация, поиск

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

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
 
'''Искусственная нейронная сеть (ИНС)''' (англ. ''Artificial neural network (ANN)'') {{---}} упрощенная модель биологической нейронной сети, представляющая собой совокупность искусственных нейронов, взаимодействующих между собой.
 
'''Искусственная нейронная сеть (ИНС)''' (англ. ''Artificial neural network (ANN)'') {{---}} упрощенная модель биологической нейронной сети, представляющая собой совокупность искусственных нейронов, взаимодействующих между собой.
  
[[File:Нейронная_сеть.png|700px|thumb|[https://neuralnet.info/chapter/%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5/#%D0%92-%D1%86%D0%B5%D0%BB%D0%BE%D0%BC-%D0%BE%D0%B1-%D0%98%D0%9D%D0%A1 Упрощение биологической нейронной сети]]]
+
[[File:Нейронная_сеть.png|700px|thumb|Упрощение биологической нейронной сети]]
  
 
Основные принципы работы нейронных сетей были описаны еще в 1943 году Уорреном Мак-Каллоком и Уолтером Питтсом<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref>. В 1957 году нейрофизиолог Фрэнк Розенблатт разработал первую нейронную сеть<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref>, а в 2010 году большие объемы данных для обучения открыли возможность использовать нейронные сети для машинного обучения.
 
Основные принципы работы нейронных сетей были описаны еще в 1943 году Уорреном Мак-Каллоком и Уолтером Питтсом<ref>[https://en.wikipedia.org/wiki/Artificial_neuron Artificial neuron, Wikipedia]</ref>. В 1957 году нейрофизиолог Фрэнк Розенблатт разработал первую нейронную сеть<ref>[https://en.wikipedia.org/wiki/Perceptron Perceptron, Wikipedia]</ref>, а в 2010 году большие объемы данных для обучения открыли возможность использовать нейронные сети для машинного обучения.
Строка 9: Строка 9:
 
==Структура нейронной сети==
 
==Структура нейронной сети==
  
[[File:Искусственный_нейрон_схема.png|700px|thumb|[https://neuralnet.info/chapter/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-%D0%B8%D0%BD%D1%81/#%D0%98%D1%81%D0%BA%D1%83%D1%81%D1%81%D1%82%D0%B2%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BD%D0%B5%D0%B9%D1%80%D0%BE%D0%BD Схема искусственного нейрона]]]
+
[[File:Искусственный_нейрон_схема.png|700px|thumb|Схема искусственного нейрона]]
  
 
Хорошим примером биологической нейронной сети является человеческий мозг. Наш мозг {{---}} сложнейшая биологическая нейронная сеть, которая принимает информацию от органов чувств и каким-то образом ее обрабатывает (узнавание лиц, возникновение ощущений и т.д.). Мозг же, в свою очередь, состоит из нейронов, взаимодействующих между собой.
 
Хорошим примером биологической нейронной сети является человеческий мозг. Наш мозг {{---}} сложнейшая биологическая нейронная сеть, которая принимает информацию от органов чувств и каким-то образом ее обрабатывает (узнавание лиц, возникновение ощущений и т.д.). Мозг же, в свою очередь, состоит из нейронов, взаимодействующих между собой.
Строка 36: Строка 36:
 
===Однослойные нейронные сети===
 
===Однослойные нейронные сети===
  
[[File:Single-layer-neural-net-scheme.png|500px|thumb|[https://studfiles.net/preview/3170620/page:3/ Схема однослойной нейронной сети]]]
+
[[File:Single-layer-neural-net-scheme.png|500px|thumb|Схема однослойной нейронной сети]]
  
 
'''Однослойная нейронная сеть''' (англ. ''Single-layer neural network'') {{---}} сеть, в которой сигналы от входного слоя сразу подаются на выходной слой, который и преобразует сигнал и сразу же выдает ответ.
 
'''Однослойная нейронная сеть''' (англ. ''Single-layer neural network'') {{---}} сеть, в которой сигналы от входного слоя сразу подаются на выходной слой, который и преобразует сигнал и сразу же выдает ответ.
Строка 57: Строка 57:
 
===Многослойные нейронные сети===
 
===Многослойные нейронные сети===
  
[[File:Multi-layer-neural-net-scheme.png|500px|thumb|[https://wiki.loginom.ru/articles/multilayer-neural-net.html Схема многослойной нейронной сети]]]
+
[[File:Multi-layer-neural-net-scheme.png|500px|thumb|Схема многослойной нейронной сети]]
  
 
'''Многослойная нейронная сеть''' (англ. ''Multilayer neural network'') {{---}} нейронная сеть, состоящая из входного, выходного и расположенного(ых) между ними одного (нескольких) скрытых слоев нейронов.
 
'''Многослойная нейронная сеть''' (англ. ''Multilayer neural network'') {{---}} нейронная сеть, состоящая из входного, выходного и расположенного(ых) между ними одного (нескольких) скрытых слоев нейронов.
Строка 77: Строка 77:
 
===Сети с обратными связями===
 
===Сети с обратными связями===
  
[[File:Сети_с_обратными_связями.png|400px|thumb|[https://neuralnet.info/chapter/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-%D0%B8%D0%BD%D1%81/#%D0%A1%D0%B5%D1%82%D0%B8-%D1%81-%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%BC%D0%B8-%D1%81%D0%B2%D1%8F%D0%B7%D1%8F%D0%BC%D0%B8 Схема сети с обратными связями]]]
+
[[File:Сети_с_обратными_связями.png|400px|thumb|Схема сети с обратными связями]]
  
 
'''[[Рекуррентные нейронные сети|Сети с обратными связями]]''' (англ. ''Recurrent neural network'') {{---}} искусственные нейронные сети, в которых выход нейрона может вновь подаваться на его вход. В более общем случае это означает возможность распространения сигнала от выходов к входам.
 
'''[[Рекуррентные нейронные сети|Сети с обратными связями]]''' (англ. ''Recurrent neural network'') {{---}} искусственные нейронные сети, в которых выход нейрона может вновь подаваться на его вход. В более общем случае это означает возможность распространения сигнала от выходов к входам.
Строка 101: Строка 101:
 
==Перцептрон==
 
==Перцептрон==
  
[[File:Перцептрон.png|350px|thumb|[https://neuralnet.info/chapter/%D0%BF%D0%B5%D1%80%D1%81%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD%D1%8B/#%D0%9F%D0%B5%D1%80%D1%81%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD Схема перцептрона]]]
+
[[File:Перцептрон.png|350px|thumb|Схема перцептрона]]
  
 
'''Перцептрон''' (англ. ''Perceptron'') {{---}} простейший вид нейронных сетей. В основе лежит математическая модель восприятия информации мозгом, состоящая из сенсоров, ассоциативных и реагирующих элементов.
 
'''Перцептрон''' (англ. ''Perceptron'') {{---}} простейший вид нейронных сетей. В основе лежит математическая модель восприятия информации мозгом, состоящая из сенсоров, ассоциативных и реагирующих элементов.
Строка 134: Строка 134:
 
===Классификация перцептронов===
 
===Классификация перцептронов===
  
[[File:Однслойный_перцептрон.png|300px|thumb|[https://neuralnet.info/chapter/%D0%BF%D0%B5%D1%80%D1%81%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD%D1%8B/#%D0%9E%D0%B4%D0%BD%D0%BE%D1%81%D0%BB%D0%BE%D0%B9%D0%BD%D1%8B%D0%B9-%D0%BF%D0%B5%D1%80%D1%81%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD Схема однослойного перцептрона]]]
+
[[File:Однслойный_перцептрон.png|300px|thumb|Схема однослойного перцептрона]]
  
 
'''Перцептрон с одним скрытым слоем''' ('''элементарный перцептрон''', англ. ''elementary perceptron'') {{---}}  перцептрон, у которого имеется только по одному слою S, A и R элементов.
 
'''Перцептрон с одним скрытым слоем''' ('''элементарный перцептрон''', англ. ''elementary perceptron'') {{---}}  перцептрон, у которого имеется только по одному слою S, A и R элементов.
Строка 174: Строка 174:
 
===Пример использования с помощью scikit-learn<ref>[https://scikit-learn.org Библиотека scikit-learn для Python]</ref>===
 
===Пример использования с помощью scikit-learn<ref>[https://scikit-learn.org Библиотека scikit-learn для Python]</ref>===
  
Будем классифицировать с помощью перцептрона датасет MNIST<ref>[https://en.wikipedia.org/wiki/MNIST_database Датасет MNIST]</ref>.
+
Будем классифицировать с помощью перцептрона датасет iris<ref>[https://en.wikipedia.org/wiki/Iris_flower_data_set Датасет iris]</ref>.
  
 
   # Load required libraries
 
   # Load required libraries
Строка 185: Строка 185:
 
   import numpy as np
 
   import numpy as np
  
   # Load the mnist dataset
+
   # Load the iris dataset
   mnist = datasets.load_digits()
+
   iris = datasets.load_iris()
  
 
   # Create our X and y data
 
   # Create our X and y data
  n_samples = len(mnist.images)
+
   X = iris.data
   X = mnist.images.reshape((n_samples, -1))
+
   y = iris.target
   y = mnist.target
 
  
 
   # Split the data into 70% training data and 30% test data
 
   # Split the data into 70% training data and 30% test data
Строка 209: Строка 208:
 
   ppn = Perceptron(n_iter=40, eta0=0.1, random_state=0)
 
   ppn = Perceptron(n_iter=40, eta0=0.1, random_state=0)
 
   # Create a multilayer perceptron object
 
   # Create a multilayer perceptron object
   mppn = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(256, 512, 128), random_state=1)
+
   mppn = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(5, 2), random_state=1)
  
 
   # Train the perceptrons
 
   # Train the perceptrons
Строка 220: Строка 219:
  
 
   # View the accuracies of the model, which is: 1 - (observations predicted wrong / total observations)
 
   # View the accuracies of the model, which is: 1 - (observations predicted wrong / total observations)
   print('Single-layer perceptron accuracy: %.4f' % accuracy_score(y_test, y_pred))
+
   print('Accuracy: %.2f' % accuracy_score(y_test, y_pred))
   print('Multilayer perceptron accuracy: %.4f' % accuracy_score(y_test, multi_y_pred))
+
   print('Accuracy: %.2f' % accuracy_score(y_test, multi_y_pred))
 
 
Вывод:
 
  Single-layer perceptron accuracy: 0.9574
 
  Multilayer perceptron accuracy: 0.9759
 
  
 
===Пример использования с помощью tensorflow<ref>[https://www.tensorflow.org/ Библиотека tensorflow для Python]</ref>===
 
===Пример использования с помощью tensorflow<ref>[https://www.tensorflow.org/ Библиотека tensorflow для Python]</ref>===
  
Будем классифицировать цифры из того же датасета MNIST.
+
Будем классифицировать цифры из датасета MNIST<ref>[https://en.wikipedia.org/wiki/MNIST_database Датасет MNIST]</ref>.
  
 
   # Load required libraries
 
   # Load required libraries
Строка 253: Строка 248:
 
   train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
 
   train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
  
   init = tf.initialize_all_variables()
+
   init = tf.initialize_global_variables()
 
   sess = tf.Session()
 
   sess = tf.Session()
 
   sess.run(init)
 
   sess.run(init)
Строка 262: Строка 257:
 
   accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
 
   accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
 
   print("Accuracy: %s" % sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
 
   print("Accuracy: %s" % sess.run(accuracy, feed_dict={x: mnist.test.images, y_: mnist.test.labels}))
 
[[File:Tensorflow-mnist-failures.png|400px|thumb|Правильные метки {{---}} 5, 4, 9, 7. Результат классификации {{---}} 6, 6, 4, 4.]]
 
 
Вывод:
 
  Accuracy: 0.9164
 
 
 
На рисунке справа показаны четыре типичных изображения, на которых классификаторы ошибаются. Согласитесь, случаи действительно тяжелые.
 
  
 
==См. также==
 
==См. также==

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблон, используемый на этой странице: