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

Первоначально считалось, что персептроны способны на многое, включая «способность ходить, говорить, видеть, писать, воспроизводить себя и осознавать свое существование».

Однако последующая статья Марвина Минки и Сеймура Паперта из Массачусетского технологического института под названием «Персептроны» доказала, что персептрон действительно ограничен в своей функциональности. В частности, они показали, что перцептрон не может выполнять функцию XOR. Персептрон может выполнять классификацию только в том случае, если точки данных линейно разделимы.

В этом посте реализован простой алгоритм обучения линейного персептрона и сигмовидного персептрона. Реализация была сделана в Octave. Эта реализация основана на курсе Нейронные сети для машинного обучения профессора Джеффри Хинтона на Coursera.

Процедура обучения персептрона
z = ∑wixi + b
где wi - это i-й вес, а xi - i-й признак.

Для каждого учебного случая вычислить выход активации zi

  • Если результат классифицируется правильно, не трогайте веса.
  • Если в выходных данных «0» классифицируется как «1», вычтите характеристику из веса.
  • Если в выходных данных «0» классифицируется как «1», тогда добавьте функцию к весу.

Эта простая нейронная сеть представлена ​​ниже.

Процедура обучения сигмовидного нейрона
zi = сигмовидная (∑wixi + b)
где сигмовидная

Следовательно

Для каждого учебного случая вычислить выход активации zi

  • Если результат классифицируется правильно, не трогайте веса.
  • Если выходные данные неправильно классифицируют «0» как «1», т. Е.

  • , затем вычтите элемент из веса
  • Если выходные данные неправильно классифицируют «1» как «0», т. Е.

  • , затем добавьте элемент к весу
  • Итерировать до ошибок ‹= 1

Это показано ниже

Я реализовал алгоритм обучения персептрона и сигмовидного нейрона в Octave. Код доступен на Github по адресу Perceptron.

  1. Выполнение персептрона

Я провел тесты на 2 разных наборах данных

Данные 1

Данные 2

2. Выполнение сигмовидного персептрона
Данные 1 и данные 2

Видно, что Perceptron действительно работает с простыми линейно разделяемыми данными.

Для получения дополнительных сообщений см. Https://gigadom.wordpress.com/