Изменения

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

Нейронные сети, перцептрон

1364 байта добавлено, 04:10, 18 апреля 2019
Нет описания правки
'''Искусственная нейронная сеть (ИНС)''' (англ. ''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 Упрощение биологической нейронной сети]]]
Принцип работы перцептрона следующий:
# Первыми в работу включаются S-элементы. Они могут находиться либо в состоянии покоя (сигнал равен ''0''), либо в состоянии возбуждения (сигнал равен ''1'').;# Далее сигналы от S-элементов передаются A-элементам по так называемым S-A связям. Эти связи могут иметь веса, равные только ''-1'', ''0'' или ''1''.;# Затем сигналы от сенсорных элементов, прошедших по S-A связям, попадают в A-элементы, которые еще называют ассоциативными элементами.;
#* Одному A-элементу может соответствовать несколько S-элементов;
#* Если сигналы, поступившие на A-элемент, в совокупности превышают некоторый его порог ​<tex>\theta</tex>​, то этот A-элемент возбуждается и выдает сигнал, равный ''1'';
#* В противном случае (сигнал от S-элементов не превысил порога A-элемента), генерируется нулевой сигнал.;# Далее сигналы, которые произвели возбужденные A-элементы, направляются к сумматору (R-элемент), действие которого нам уже известно. Однако, чтобы добраться до R-элемента, они проходят по A-R связям, у которых тоже есть веса (которые уже могут принимать любые значения, в отличие от S-A связей).;
# R-элемент складывает друг с другом взвешенные сигналы от A-элементов, а затем
#* если превышен определенный порог, генерирует выходной сигнал, равный ''1'';
===Применение===
* Решение задач классификации, если объекты классификации обладают свойством линейной разделимости;* Прогнозирование и распознавание образов;* Управление агентами<ref>[https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%86%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B5%D1%80%D1%86%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD%D0%BE%D0%B2 Применения перцептрона, Wikipedia]</ref>.
===Примеры кода=======Пример использования с помощью scikit-learn<ref>[https://scikit-learn.org Библиотека scikit-learn для Python]</ref>====
Будем классифицировать с помощью перцептрона датасет MNIST<ref>[https://en.wikipedia.org/wiki/MNIST_database Датасет MNIST]</ref>.
Multilayer perceptron accuracy: 0.9759
====Пример использования с помощью tensorflow<ref>[https://www.tensorflow.org/ Библиотека tensorflow для Python]</ref>====
Будем классифицировать цифры из того же датасета MNIST.
На рисунке справа показаны четыре типичных изображения, на которых классификаторы ошибаются. Согласитесь, случаи действительно тяжелые.
 
====Пример на языке Java====
Пример классификации с применением <code>weka.classifiers.functions.MultilayerPerceptron</code><ref>[http://weka.sourceforge.net/doc.dev/weka/classifiers/functions/MultilayerPerceptron.html/ Weka, MLP]</ref>
 
<code>Maven</code> зависимость:
<dependency>
<groupId>nz.ac.waikato.cms.weka</groupId>
<artifactId>weka-stable</artifactId>
<version>3.8.0</version>
</dependency>
 
'''import''' weka.classifiers.functions.MultilayerPerceptron;
'''import''' weka.core.converters.CSVLoader;
'''import''' java.io.File;
 
<font color="green">// read train & test datasets and build MLP classifier</font>
'''var''' trainds = new DataSource("etc/train.csv");
'''var''' train = trainds.getDataSet();
train.setClassIndex(train.numAttributes() - 1);
'''var''' testds = new DataSource("etc/test.csv");
'''var''' test = testds.getDataSet();
test.setClassIndex(test.numAttributes() - 1);
'''var''' mlp = new MultilayerPerceptron();
mlp.buildClassifier(train);
<font color="green">// Test the model</font>
'''var''' eTest = new Evaluation(train);
eTest.evaluateModel(mlp, test);
<font color="green">// Print the result à la Weka explorer:</font>
'''var''' strSummary = eTest.toSummaryString();
System.out.println(strSummary);
==См. также==
*[[:Сверточные нейронные сети|Сверточные нейронные сети]]
*[[:Рекуррентные нейронные сети|Рекуррентные нейронные сети]]
*[[:Рекурсивные нейронные сети|Рекурсивные нейронные сети]]<sup>[на 28.01.19 не создан]</sup> 
==Примечания==
<references/>
* [https://neuralnet.info/book/ Нейронные сети {{---}} учебник ]
[[Категория: Машинное обучение]][[Категория: Нейронные Сверточные сети]]
Анонимный участник

Навигация