Как реализовать искусственную нейронную сеть в Delphi?
Я хочу иметь искусственную нейронную сеть:
- 42 входных нейрона
- 168 скрытых нейронов
- 7 выходных нейронов
Эта сеть должна играть в игру "Connect Four". В конце каждой игры сеть получает обратную связь (результат игры / победа?).
Обучение должно быть сделано с временным различием обучения.
Мои вопросы:
- Какие значения должны быть в моем массиве вознаграждений?
- И наконец: как я могу применить это к моей игре сейчас?
Огромное спасибо заранее!
5 ответов
Нет необходимости в псевдокоде. Посмотрите на эти ссылки:
Первый удар: вы присваиваете "0" t
в 'main', но нижний предел ваших массивов равен '1', поэтому вы получаете доступ к несуществующему элементу в циклах, следовательно, к AV.
Если бы вы включили проверку диапазона в опциях компилятора, вы бы получили ошибку проверки диапазона, и вы, вероятно, нашли бы причину раньше.
Кстати, поскольку я понятия не имею, что делает код, я не заметил бы других ошибок в это время.
Если вы заинтересованы в использовании сторонней библиотеки (бесплатной для некоммерческих продуктов, я очень доволен некоторыми инструментами этой компании http://www.mitov.com/html/intelligencelab.html (хотя я ' мы никогда не использовали их разведывательную лабораторию, только видео инструменты.)
Fast Artificial Neural Network (FANN) - это хорошая библиотека с открытым исходным кодом, она была оптимизирована и использована большим сообществом с большим количеством поддержки и привязок Delphi.
Рекомендуется использовать зависимости в этой области, если вы не до конца понимаете, что делаете, мельчайшие детали могут оказать большое влияние на работу нейронной сети; так что лучше всего тратить время на реализацию сети, а затем на что-то еще.
Другие ссылки, которые могут быть полезны для вас:
http://delphimagic.blogspot.com.ar/2012/12/red-neuronal-backpropagation.html(включает исходный код). Кодирование нейронной сети Backpropagation с двумя входными нейронами, двумя выходными и одним скрытым слоем. В примере представлены два набора данных, которые могут обучить сеть и увидеть, насколько точно обучение минимизирует ошибку, показанную на графике. Модификация программы может изменить количество раз, когда сеть обучалась с тестовыми данными (эпохами)