Нейронные сети зародились в 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.
- Выполнение персептрона
Я провел тесты на 2 разных наборах данных
Данные 1
Данные 2
2. Выполнение сигмовидного персептрона
Данные 1 и данные 2
Видно, что Perceptron действительно работает с простыми линейно разделяемыми данными.
Для получения дополнительных сообщений см. Https://gigadom.wordpress.com/