На основании приведенных моделей искусственных нейронов формируется искусственная нейронная сеть с организацией множественных внутренних связей. Далее она превращается в адекватную модель с требуемым поведением и реализуется программно или аппаратно.
Задача программиста при этом состоит в следующем:
1. Определить размерность входного и выходного векторов для моделируемого объекта.
2.Сформировать (получить) совместно со специалистом из предметной области обучающую выборку. Обучающая выборка задается как набор пар вида «значение сигналов на входе объекта – соответствующее значение выходов».
3. Разделить обучающую выборку на две части: для тестирования и для обучения.
4. Подобрать вид искусственной нейронной сети и задать количество нейронов.
5. Обучить сеть (настроить весовые коэффициенты W и b – для линейных, и C и 1/ d – для радиальных нейронов) и протестировать её на адекватность поведения моделируемому объекту с помощью частей выборки, полученных в п. 3.
6.При неадекватном поведении модели повторить п.п. 3÷5.
|
|
7. Реализовать полученную модель.
Для обучения искусственных нейронных сетей применяется ряд алгоритмов, в основном базирующихся на идее обратного распространения ошибки.
Более подробно структуры, принципы формирования, алгоритмы обучения нейронных сетей и т.д. изучаются в курсе «Основы искусственного интеллекта».
24. Основные типы ошибок
в программах
В программах обычно различают три типа ошибок:
1. Синтаксические ошибки. Представляют собой нарушения правил языка, т.е. правил реализации конструкций языка, их последовательности, вложенности, и т.д.
Пример. В языке Pascal каждое служебное слово BEGIN должно заканчиваться словом END, оба этих слова должны иметь фиксированное (например, без сокращений) написание, целая часть числа должна отделяться от дробной с помощью точки и т.д.
Синтаксические ошибки обычно возникают из-за описок (ошибок ввода текстов программ), незнания синтаксиса используемого языка программирования, нечеткого представления о структуре программы (например, забывание конечных END при многочисленных вложениях составных операторов).
Большинство синтаксических ошибок фиксируется компиляторами и поэтому достаточно легко устраняется.
2. Семантические ошибки – это нарушение логики, структуры программы, неправильное использование структур данных.
Пример. Деление на нуль, использование несуществующих номеров элементов массива, исчерпание оперативной памяти, использование одной переменной вместо другой и др.
Семантические ошибки выявляются труднее синтаксических. Для их обнаружения обычно применяются возможности интегрированного отладчика. Значительная часть семантических ошибок может быть обнаружена при выполнении программы, особенно в режиме тестирования и при включенных режимах контроля логики программы.
|
|
3. Прагматические ошибки – это нарушение требований к структуре и назначению программы и ее функций.
Пример. Непригодный дизайн интерфейса: позабыта предусмотренная функция прикладной программы типа предоставления предварительного просмотра отчета о структуре выдаваемого на печать документа.
Прагматические ошибки могут быть выявлены и устранены только в режимах тестирования программ и ее испытаний при тщательной сверке с техническим заданием.
При поиске ошибок можно руководствоваться следующими «законами программиста»:
1. В любой программе всегда имеется хотя бы одна ошибка.
2. Последняя из найденных ошибок никогда не является последней.
Основная трудность при этом – установление экономического оптимума: когда дальнейшее тестирование программы станет невыгодным.
Можно с большим трудом установить и устранить еще несколько ошибок, но за такое большое время, что или отпадет необходимость в прикладной программе (ПП), или будут так нарушены сроки разработки продукта, что заказчик будет вынужден от нее отказаться, или стоимость программы возрастёт столь фантастически, что не окупится доходами от ее продажи.