У нас есть функция ошибки f(x1,...,x_n) (где x1-xn - параметры сети (её устройство, веса связей. Ну, устройство, положим, меняется - но можно же (упрощенно) считать отсутствие связи за связь с нулевым весом)).
Соответственно, стоит задача её минимизации.
В случае искусственных - одним из алгоритмов оптимизации (разумеется, лучшие результаты - со специфическими для нейронных сетей), рассчитывающим значение ошибки на входных данных, в случае естественных - несколько сложнее. Как минимум :
- ЕМНИП, оптимизация таки имеет место.
- рандом (как минимум - в виде мутаций)
- невыживание большей части неудачных экземпляров.