Генетический алгоритм. Урок 3. Обучаем искусственный нейрон. |
![]() |
![]() |
Автор megabax | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13.10.2013 г. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Генетический алгоритм. Урок 3. Обучаем искусственный нейрон. Что бы смотреть урок полностью, подпишитесь на платный раздел. В платном разделе статья находиться здесь. Сегодня мы будем при помощи генетического алгоритма обучать искусственный нейрон (см. так же урок "Теория нейронных сетей. Урок 1. Модель нейрона"). Программировать мы будем на базе исходников прошлого урока. Для реализации искусственного нейрона нам потребуется специальный класс:
Этим классом мы реализовали функционал такой разновидности нейрона, как линейный персептрон (см. урок "Теория нейронных сетей. Урок 4. Обучение нейрости. Линейный") персептрон. Пороговое значение нашего персептрона - нуль... ... ... Собственно говоря, с изменениями закончили. Теперь будем тестировать нашу программу. Для начала создадим тестовый пример. Это у нас будет нейрон с заданными весовыми коэффициентами, из которого мы сделаем матрицу:
Если предположить, что входы нейрона соответствуют координатам точек, то матрицу можно представить в таком виде:
Для задания элемента обучающей матрицы предусмотрим в классе главного окна вот такой метод:
Теперь все параметры, в том числе матрицу, можно задать в конструкторе формы:
Как показала практика, обучается такой нейрон всего за 3-4 итерации: Подставив полученные коэффициенты в таблицу, мы увидим, что программа работает правильно:
Попробуем другой пример, когда коэффициенты еще неизвестны и их требуется найти. Попробуем, например, вот такую картинку:
в итоге получаем вырождения, целевая функция не опускается ниже 1. Если попробовать вот такую картинку:
то так же находит за 3-4 итерации: Попробуем научить нейрон распознавать еще несколько картинок
И так, мы выяснили, что при помощи генетического алгоритма можно обучить один единственный нейрон. Но не для всех случаев И это логично, потому что могут быть такие наборы входных и выходных данных, для которых невозможно подобрать два коэффициента. Поэтому на следующем уроке мы попробуем испытать сеть из нескольких нейронов. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее обновление ( 13.10.2013 г. ) |
« След. | Пред. » |
---|