отчет. Н. Ф. Гусарова, Н. В
Скачать 2.27 Mb.
|
Создание и обучение НС в среде MATLABНа данном этапе выполнение работы в среде MATLAB производится с помощью программы sr_newff, которая реализует следующие функции: формирование числовых массивов эталонных образов, используе- мых в качестве обучающих; (НС); подготовка данных, необходимых для создания нейронной сети создание НС, задание параметров обучения НС и обучение НС. Эталонный образ каждого символа представлен в виде вектора- столбца [N,1], число элементов N которого равно числу признаков (иначе говоря, N – размерность пространства признаков). Такой вектор-столбец формируется из двумерного массива-изображения [N1,N2], который, в свою очередь, формируется при считывании графического файла образа с помо- щью команд: imread (FILENAME) - процедура чтения графического файла; X = reshape (A,[N,1]) - процедура преобразования двумерного массива A[N1,N2] в одномерный вектор-столбец X[N,1], где N=N1*N2. Процедура умножения массива на 1 приводит к смене типа элементов массива с logical(для элементов битового формата) на double. Для удовлетворительной работы НС недостаточно формирования лишь одного обучающего образа для каждого класса (типа символа) обра- зов. Это связано с тем, что распознаваемые образы (на этапе работы НС в режиме распознавания) всегда отличаются от обучающих по ряду причин: различие шрифтов и стилей печатных символов; погрешности сканирования и неточности совмещения символа и окна сканирования; низкое качество печати, дефекты бумаги и т.д. В силу указанных причин для надежного распознавания образов НС следует обучать на достаточно представительном множестве образов, вхо- дящих в один и тот же класс. В программе sr_newff формирование дополнительных обучающих образов производится путем незначительного искажения эталонных обра- зов, считываемых из графических файлов. Искажение образа-эталона каж- дого класса реализуется путем добавления к нему равномерного (по пло- щади изображения) шума типа «Соль и перец», представляющего собой слу- чайное искажение отдельных пикселей изображения. Степень искажения характеризуется числом p=[0;1], определяющим долю искаженных пиксе- лей. Такой подход при формировании образов позволяет, во-первых, быстро получать большое число обучающих образов, и, во-вторых, регули- ровать (путем изменения значения p) степень разброса множества образов в пределах одного класса. Подготовка данных, необходимых для создания НС, включает в себя: формирование двумерного массива обучающих образов XR[N,K], каж- дый столбец которого представляет собой набор N признаков одного образа, а число столбцов K равно числу обучающих образов; формирование двумерного массива желаемых откликов YR[NY,K], где NY – число выходов НС (т.е., число нейронов выходного слоя); K – число обучающих образов. Отклик YR[:,k] (в общем случае – вектор-столбец) со- ответствует k-му обучающему образу – вектору XR[:,k]; формирование двумерного массива R[N,2], определяющего минимальное R(n,1) и максимальное R(n,2) значение n-го признака, n=1,…,N. Создание НС. В общем случае НС net создается с помощью ко- манды: net = nnnnn (P1,P2,…PL), где nnnnn – тип НС; P1,…,PL – параметры НС. В настоящей работе используется НС типа многослойного персеп- трона newff, которая задается командой: net = newff (R, [A1 A2 … AL], {F1 F2 … FL}, BTF, PF), где R - массив минимальных и максимальных значений входных нейронов (признаков); Ai - число нейронов i-го слоя, начиная с первого скрытого слоя, i=1,…,L; Fi - функция активации нейронов i-го слоя, по умолчанию ‘tansig’; BTF - функция обучения сети, по умолчанию ‘trainlm’; PF - критерий остановки, по умолчанию ‘mse’ (минимум ско). Дополнительные параметры, используемые при создании сети: net.performFcn=’msereg’ - обучение НС производится с помощью метода регуляризации; net.performParam.ratio=0.1 - значение параметра регуляризации; net.trainParam.show=5 - число эпох, через которое производится вывод параметров процедуры обучения; net.trainParam.epochs=500 - максимальное число эпох при обучении НС; net.trainParam.goal=0.02 - значение целевой функции, по достижении которого процесс обучения НС прекращается. Процесс обучения НС запускается командой: net = train (net, XR, YR) . Для решения задач распознавания печатных символов рекоменду- ется использовать трехслойную НС (один скрытый слой) с числом нейро- нов: N=120 - во входном слое; A1=20 - в скрытом (промежуточном) слое; A2=1 - в выходном слое. При использовании большего числа нейронов процедура обучения НС может занять слишком много времени. Для рекомендованных значений параметров НС (в том числе и дополнительных) и общем числе обучающих образов (для всех заданных классов) K=100…200 время обучения НС со- ставляет 5…20 мин. |