Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #55, ИЮНЬ 2005 г.

Нервные клетки для компьютера

Денис Колисниченко

Спецвыпуск: Хакер, номер #055, стр. 055-004-3


Обучение сети заключается в том, чтобы подобрать значения весов так, чтобы сеть выдавала правильные ответы. Например, чтобы не получилось так, что на входе изображение буквы "L", а сеть сообщает, что ей передали значение "G". Обучение нейросети - это очень сложный процесс, потому что на практике количество весов может составлять 10-20 тысяч. Практически для каждой архитектуры нейронной сети разработаны специальные алгоритмы обучения, которые позволяют относительно быстро подобрать веса сети. Например, для обучения сети перцептрона используется метод Error Back Propagation (EBP) - метод обтачного распространения ошибки.

Вернемся к примеру обучения сети английскому алфавиту. Пусть имеется база данных, содержащая картинки - наборы изображений букв. На вход нейронной сети передаем изображение буквы "D", а в ответ получаем какой-нибудь символ. Сначала ответ будет неправильным - это нормально, так как сеть еще ничего "не знает". Мы-то знаем правильный ответ, а сеть - нет, поэтому нужно сообщить ей, какую букву мы ей показали. Для этого на внешнем выходе, который ассоциируется с буквой "D", устанавливаем максимальный уровень сигнала - (0,0,0,1,0,0…). Буква "D" - четвертая в алфавите, поэтому четвертая компонента вектора будет равна 1, все остальные - 0. Можно так повторить все 26 раз, а можно использовать алгоритм EBP.

Сначала вычисляем разницу между полученным ответом и правильным ответом (получим вектор ошибки), а затем, согласно алгоритму EBP, вводим необходимые поправки в веса сети. Одну и ту же букву можно повторять несколько раз, пока сеть не будет ее узнавать с вероятностью 100% - вот так тренируется сеть. После многократного повторения система весов сети стабилизируется и сеть начинает давать правильные ответы почти на все вопросы. При работе с нейронными сетями нужно помнить, что сеть может ошибаться - это нормальное явление, и человеку точно так же свойственно ошибаться. В процессе обучения суммарное количество ошибок постепенно уменьшается. Когда количество ошибок равно 0 (или очень близко к этому значению в процентном соотношении), сеть считается обученной - ее можно использовать.

Да, ты правильно догадался: "умственные" способности сети, как и человека, зависят от образования - того набора данных, которые получила сеть в процессе обучения. Твоя сеть может отлично знать английский алфавит, но если ты передашь ей на вход изображение буквы "Б", сеть или ничего не ответит, или ответ будет неправильным. Изображения буквы "Б" не было в той базе данных, которая использовалась для обучения сети. Обучение сети - это очень сложный процесс, который во многом зависит от той самой базы данных: чем больше примеров в базе, тем лучше будет работать сеть.

Использование сети

Сразу после обучения сеть находится в полной готовности к использованию. И на данном этапе нужно понимать, что сеть - это не простая база данных, содержащая информацию из некоторой предметной области. Нейронная сеть, как и человеческий мозг, может "думать", то есть правильно реагировать на те ситуации, в которых она не была в процессе обучения. И чем, полнее база данных примеров, тем больше вероятность правильных действий сети. Если нашей сети передать изображение буквы "D", написанное другим шрифтом, сеть сама "додумается", что мы передали ей изображение именно этой буквы, а не какой-нибудь другой. Система весов сети хранит довольно много информации о написании букв (и об отклонениях от нормы), поэтому сеть может дать правильный ответ.

Назад на стр. 055-004-2  Содержание  Вперед на стр. 055-004-4