Автоматизированная система построения нейронной сети методом обратного распространения ошибки
- Alpha: double - Свойство задает крутизну сигмоиды (активационной функции), и является одним из глобальных параметров нейронной сети.
AutoInit: boolean - При установлении этого свойства в True, происходит инициализация многослойной нейронной сети.
- ContinueTeach: Boolean - При установлении значения этого свойства в True, сеть будет дообучаться, т.е. не вызывается метод InitWeights.
- Epoch: boolean - При установлении этого свойства в True, процесс обучения остановится при достижении числа эпох равного EpochCount.
- EpochCount: integer - Свойства задает необходимое количество эпох для обучения многослойной нейронной сети.
- EpochCurrent: integer - Свойство содержит номер текущей эпохи при обучении.
- LayersBP[Index: integer]: TLayerBP - Индексированное свойство, индекс указывает на соответствующий слой нейронной сети.
Рис 2.6. Диаграмма основных классов TNeuralNetBP и TNeuralNetExtand
- Momentum: double - Свойство задает величину момента, один из глобальных параметров параметр нейронной сети. Данный параметр оптимизирует процесс обучения нейронной сети.
- Output[Index: integer]: double - Свойство содержит результат работы нейронной сети, индекс указывает на соответствующий нейрон выходного слоя.
- PatternCount: integer -Свойство задает количество примеров в обучающем множестве.
- TestSetPatternCount: integer - Свойство задает количество примеров в тестовом множестве.
- StopTeach: boolean - При установлении значения этого свойства в True, останавливается процесс обучения.
- TeachError: double - Свойства содержит ошибку нейронной сети на всем обучающем множестве.
- MaxTeachResidual: integer -Свойство содержит максимальную ошибку нейронной сети на обучающем множестве.
- MidTeachResidual: integer - Свойство содержит среднюю ошибку нейронной сети на обучающем множестве.
- MaxTestResidual: integer - Свойство содержит максимальную ошибку нейронной сети на тестовом множестве.
- TeachRate: double - Значением этого свойства, является параметр нейронной сети, определяющий скорость обучения. Определяет насколько сильно веса корректируются после каждой итерации.
- MaxTestResidual: integer - Свойство содержит среднюю ошибку нейронной сети на тестовом множестве.
- RecognizedTeachCount: integer - Свойство содержит количество распознанных примеров из обучающего множества.
- RecognizedTestCount: integer - Свойство содержит количество разпознанных примеров из тестового множества.
ActivationF(Value: double): double - Активационная функция - сигмоида.
AddLayer(ANeurons: integer) - Метод добавляет слой с указанным количеством нейронов. Добавленный слой будет являться выходным.
Compute(AVector: TVectorFloat) - Метод вычисляет выход нейронной сети, выполняя проход вперед.
Init - Инициализирует многослойную нейронную сеть, фактически это построитель заданной конфигурации сети.
ResetLayers - Метод удаляет все слои многослойной нейронной сети.
TeachOffLine - Метод обучения многослойной нейронной сети, при котором, веса корректируется после каждой эпохи, так называемый пакетный метод.
OnAfterInit: TNotifyEvent - Событие происходит после инициализации нейронной сети.
OnAfterTeach: TNotifyEvent - Событие происходит после обучения нейронной сети.
TNeuralNetExtended - Расширенный класс-потомок многослойной нейронной сети, обучаемой по алгоритму обратного распространения, предназначенный для использования в приложениях.
AvailableFieldsCount: integer - Свойство задает количество полей в наборе данных.
Fields[Index]: integer: TNeuroField - Индексированное свойство, содержит поля набора данных, индекс указывает на соответствующее поле в наборе данных.
FileName: TFileName - Свойство задаёт имя файла с сохранённой нейронной сетью
IdentError: double - Значением этого свойства, является параметр, используемый для решения задача классификации. Определяет, при какой ошибке пример считается правильно распознанным.
InputFieldCount: integer - Значением этого свойства, является количество входных полей из набора данных.
MaxTeachError: Boolean - При значении True, процесс обучения останавливается, если максимальная ошибка MaxTeachErrValue, при обучении стала меньше определенного значения.
- MaxTeachErrValue: double - Свойство задает максимальную ошибку при обучении.
MaxTestError: Boolean - При значении True, процесс обучения останавливается, если максимальная ошибка MaxTestErrValue, при тестировании стала меньше определенного значения.
- MaxTestErrValue: double - Свойство задает максимальную ошибку при тестировании.
MidTeachError: Boolean -При значении True, процесс обучения останавливается, если средняя ошибка MidTeachErrValue, при обучении стала меньше определенного значения.
- MidTeachErrValue: double - Свойство задает среднюю ошибку при обучении.
- MidTestError: Boolean - При значении True, процесс обучения останавливается, если средняя ошибка MidTestErrValue, при тестировании стала меньше определенного значения.
- MidTestErrValue: double - Свойство задает среднюю ошибку при тестировании.
- OutputFieldCount: integer - Свойство определяет количество выходных полей из набора данных.
- SourceFileName: TFileName - Имя файла, содержащего набор данных.
- TeachIdent: boolean - При значении True, процесс обучения останавливается, если при обучении стала распознано определенное количество примеров.
- TeachIdentCount: integer - Свойство определяет какой процент примеров при обучении должен быть распознан.
- TestAsValid: Boolean - При значении True, тестовое множество будет используется как валидационное. Обучение будет прекращено с выдачей сообщения как только ошибка на тестовом множестве начнет увеличиваться. Это помогает избежать ситуации переобучения нейросети.
При значении True, процесс обучения останавливается, если при тестировании стала распознано определенное количество примеров.
- TestIdentCount: integer - Свойство определяет какой процент какой процент примеров при тестировании должно быть распознано.
- UseForTeach: integer - Свойство определяет сколько процентов набора данных используется для обучения.
- LoadDataFrom - Загружает данные из текстового файла
- LoadNetwork - Метод загружает из файла конфигурацию нейронной сети.
- LoadPhaseX - Метод загружает из файла настройки сети, секцию PhaseX.
- SaveNetwork - Метод сохраняет в файл конфигурацию нейронной сети.
- SavePhaseX - Метод сохраняет настройки сети, в секцию PhaseX файла.
- ComputeUnPrepData - Метод предварительно нормализует входные значения, вычисляет выход нейронной сети, выполняя проход вперед. Результат работы сети также денормализуется.
- Train - Метод обучающий/дообучающий нейронную сеть.
2.5 Проектирование экранных форм системы
Если пользователь уже имеет файл обученной нейронной сети. Он может загрузить его в систему и сразу преступить к выполнению эксперимента, в котором обученная сеть преобразует входные данные в искомые выходные.
Если же пользователь собирается создать новую сеть, то он должен пройти следующие шаги:
- Импорт данных
- Обработка данных
- Настройка параметров архитектуры сети
- Настройка параметров обучения сети
- Обучение сети
- Эксперимент
1
Мастер импорта может в интерактивном пошаговом режиме выбрать тип источника данных и настроить соответствующие параметры. На первом шаге Мастера импорта открывается список всех предусмотренных в системе типов источников данных, сгруппированных по способу доступа к данным:
База данных - импорт данных из баз данных различных типов
Прямой доступ к файлам:
- Текстовый файл с разделителями - текстовый файл в формате, в котором столбцы данных разделены однотипными символами-разделителями.
- Импорт из DBF - прямой доступ к файлам плоских баз данных типа DBF, который поддерживается такими приложениями как dBase, FoxBase, FoxPro.
Механизм MS ADO:
- Microsoft Excel - книга Microsoft Excel (*.xls).
- Microsoft Access - файл СУБД Microsoft Access (*.mdb).
- Импорт из DBF (ADO) - доступ через ADO к файлам плоских баз данных типа DBF, который поддерживается такими приложениями как dBase, FoxBase, FoxPro.
С помощью Мастера обработки поможет в интерактивном пошаговом режиме настроить все необходимые этапы обработки данных. В окне Мастера обработки представлены все доступные в системе методы обработки данных, сгруппированные по типу выполняемой обработки:
1
- Восстановление, сглаживание и редактирование аномальных данных.
- Понижение размерности входных факторов.
- Устранение незначащих факторов.
- Выявление дубликатов и противоречивых записи в исходном наборе данных.
- Фильтрация записей выборки по заданным условиям.
1
На следующем шаге настраивается структура нейронной сети. Где указываются, какие поля являются входными параметрами, какие выходными, так же выбирается тип нормализации, количество скрытых слоев и нейронов в них, а также активационная функция нейронов.
1
После этого пользователь настраивает параметры обучения сети. Он указывает скорость обучения, величину ошибки при распознавании примера, момент(учитывает величину последнего изменения веса при коррекции весов (задается в интервале 0…1)) и условия остановки обучения.
1
1
Далее пользователь начинает обучение сети, параллельно с этим он может изменять параметры визуализации(включение/выключение графика отображения ошибок, настройка его параметров, включение/выключение отображения временных параметров обучения -средняя и максимальная ошибка тестового и обучающего множества).
При наступлении условий, выбранных пользователем, происходит остановка обучения сети. После чего пользователь может провести эксперимент с данным, не входящими в обучающее и тестовое множество. Если его устраивают результаты, он может сохранить обученную сеть в файл, в противном случае он может изменить параметры обучения сети или условия остановки и продолжить обучение.
1
Глава 3. Экспериментальная проверка программного обеспечения
3.1 Постановка задачи и подготовка тестовых данных для эксперимента
Как видно из исследования предметной области этой дипломной работы, сфера применения нейронных сетей очень велика, но для проведения эксперимента было решено остановиться на её финансовой составляющей.
Руководство риэлторской фирмы «Зодчий», занимающейся куплей-продажей и обменом недвижимости в г. Белгороде и Белгородской области недавно столкнулось с такой проблемой: эксперт-оценщик, занимавшийся оценкой квартир, неожиданно уволился и уехал из города, а найти за неделю квалифицированного оценщика не удалось. Они попросили бета-версию программы для обучения нейронной сети, которая смогла бы временно (а может быть и навсегда) заменить эксперта-оценщика и выполнять функцию оценки квартир.
Опросив несколько независимых экспертов в области оценки недвижимости, была составлена некая таблица ценообразующих факторов и приведены некоторые параметры в цифровой вид, понятный программе:
Таблица 3. 1
Параметр
Цифровой вид
1) Материал
· Другой
· Панель
· Кирпич
0
1
2
2) Этаж
· Первые и последние этажи
· Остальные
0
1
3) Наличие лифта
· Есть + 1 грузовой
· Есть
· Нет
2
1
0
4) Эксплуатационное состояние
· Новая
· Уже жилая
1
0
5) Расстояние до центра
· Центр
· Средняя полоса
· Окраина
2
1
0
6) Состояние квартиры
· Голые стены
· Обычное
· Ремонт
· Евроремонт
0
1
2
3
7) Наличие балкона
· Есть
· Нет
1
0
8) Возраст квартиры
9) Год купли-продажи(этот показатель введён для того чтобы учитывать ежегодное повышение цен на недвижимость)
10) Площадь квартиры
11) Количество комнат
После этого была поднята документация о сделках купли-продажи за последние 5 лет, выписаны интересующие нас параметры и цены квартир(см. Приложение 2).
3.2 Тестирование и анализ результатов эксперимента
В тестировании участвовало 104 записи о сделках купли-продажи за последние 5 лет. После импортирования данных, поля: «Материал», «Этаж», «Возраст квартиры», «Наличие лифта», «Эксплуатационное состояние», «Расстояние до центра», «Состояние квартиры», «Наличие балкона», «Год купли-продажи», «Площадь квартиры», «Количество комнат», были отнесены к входным параметрам, а поле «Цена» к результирующему(выходному). Выборка разделилась на обучающую и тестовую в соотношении 9:1. Было выделено 2 скрытых слоя по 11 нейронов в каждом, % распознавания примера был выставлен на 4%, остальные параметры остались по умолчанию. Обучение прошло за 54356 эпох(циклов) при распознавании 100% и тестовой и обучающей выборки.
После чего в обученную нейронную сеть были введены данные по 5 квартирам, не входившим ни в тестовую, ни в обучающую выборку, и были рассчитаны экспериментальные цены этих квартир.
Таблица 3. 2
Материал
Возраст квартиры
Этаж
Наличие лифта
Эксплуатационное состояние
Расстояние до центра
Состояние квартиры
Наличие балкона
Год купли-продажи
Площадь квартиры
Количество комнат
Реальная Цена
Цена Эксперимента
Разница в %
1
4
1
0
0
1
1
1
2001
44
2
516000
497246
3.7
2
0
0
1
1
1
0
1
2002
81
4
717000
696732
2.9
1
1
1
1
0
0
1
1
2003
44
2
741000
734312
1
1
7
1
1
0
2
2
1
2004
61
3
996000
968604
2.8
1
5
1
2
0
1
2
1
2005
23
1
728000
738410
1.4
Как видно из таблицы разница цен не превышает 4%, что считается вполне хорошим результатом. Однако заметим что разница реальной и экспериментальной цены за 2001 год заметно выше по сравнению с другими годами, что объясняется неоднородностью выборки. То есть, как видно из таблицы исходных данных количество сделок за 2001 год заметно меньше чем за другие годы, поэтому сеть как бы «недообучилась» определять цену за 2001 год с такой же точностью, как и в другие годы. Что в очередной раз доказывает знаменитую фразу специалистов в области нейронных технологий: «Качество входных данных на 90% гарантирует успех».
Глава 4. Расчет экономической эффективности проекта
Любой разрабатываемый для промышленного использования программный продукт должен способствовать увеличению дохода фирмы или экономия средств в результате внедрения системы должна превышать затраты на разработку. Разработанная система рассматривается как коммерческий продукт, предназначенный для тиражирования на рынке. Внедрение и использование информационной системы позволит добиться более высоких показателей в деятельности кредитной организации при расчете обязательных экономических нормативов или базельских коэффициентов и избежать необоснованных затрат.
I. Расчет единовременных затрат разработчика
К единовременным затратам разработчика относятся:
· теоретические исследования;
· разработка алгоритмов и программ;
· отладка;
· опытная эксплуатация;
· исследование рынка;
· реклама.
Таблица 4.1 представляет фактическую трудоемкость работ по стадиям проектирования.
Таблица 4.1 Содержание стадий научно-исследовательской работы
Стадия
Трудоемкость, дн.
Трудоемкость, %
Техническое задание
11
5,4
эскизный проект
28
13,7
технический проект
54
26,3
рабочий проект
106
51,7
внедрение
6
2,9
Итого
205
100,0
К затратам на научно-исследовательские работы относятся:
- материальные затраты;
- основная и дополнительная заработная плата;
- отчисления на социальные нужды;
- стоимость машинного времени на подготовку и отладку программ;
- стоимость инструментальных средств;
- накладные расходы.
1. Материальные затраты
Под материальными затратами понимают отчисления на материалы, использующиеся в процессе разработки и внедрении программного продукта (в т.ч. стоимость бумаги, картриджей для принтера, дискет, дисков и т.д.) по действующим ценам.
В процессе работы использовались материалы и принадлежности, представленные в табл. 4.2
Таблица 4. 2 Использованные материалы и принадлежности
Наименование
Цена
Количество
Стоимость
Бумага
120
1
120
Диски CD-RW
35
2
70
Flsh накопитель
1200
1
1242
Итого
1432
2. Основная и дополнительная заработная плата
Основная заработная плата при выполнении научно-исследовательских работ включает зарплату всех сотрудников, принимающих непосредственное участие в разработке программного обеспечения.
В данном случае необходимо учитывать основную заработную плату разработчика (студента), дипломного руководителя и консультанта по экономике.
Основная заработная плата (Зосн) при выполнении научно-исследовательских работ рассчитывается по формуле:
,
где
Зсрднj - зарплата j-го сотрудника, руб.;
n - количество сотрудников, принимающих непосредственное участие в разработке программного продукта.
Для расчета заработной платы разработчика (Зраз) необходимо сразу указать, что всего научно-исследовательские работы производились в течение 205 дней. Среднедневная зарплата разработчика определена из расчета 7000 руб. в месяц и равна:
Заработная плата исполнителя в целом составляет:
Зраз=205 дн.*350 руб./день=71750 руб.
На консультации запланировано: 23 часов - дипломный руководитель и 3 часа - консультант по экономике.
Заработная плата дипломного руководителя составляет 45 руб./час. Следовательно, среднедневная зарплата дипломного руководителя равна:
Зрук=23*45=1035 руб.
Заработная плата консультанта по экономике составляет 40 руб./час. Следовательно, среднедневная зарплата равна:
Зконс=3*40=120 руб.
Получаем, что основная заработная плата при выполнении научно-исследовательских работ равна сумме заработных плат разработчика (студента), дипломного руководителя и консультанта по экономике:
Зосн=Зраз+Зрук+Зконс=71750+1035+120=72905 руб.
Дополнительная заработная плата составляет 10 % от основной:
Здоп=0,1*Зосн=0,1*72905=7290,5 руб.
Итого основная и дополнительная заработная плата составляют:
Зобщ=Зосн+Здоп=72905+7290,5=80195,5 руб.
3. Отчисления на социальные нужды
Отчисления на социальные нужды составляют 26% от общего фонда заработной платы всех работников, получим:
Осоц=0,26*Зобщ=80195,5*0,26=20850,83 руб.
4. Затраты на оплату машинного времени
Затраты на оплату машинного времени (Зомв) зависят от времени работы на ЭВМ (Тэвм), себестоимости машино-часа работы ЭВМ (Смч) и включают в себя амортизацию ЭВМ и оборудования, затраты на электроэнергию. Стоимость одного машинного часа работы равна:
Смч=0,24 кВт/час*1,16 руб./кВт=0,28 руб./час
Время работы ЭВМ:
Тэвм=0,35*Тэск+0,6*Ттех пр+
+0,8*Траб пр+0,6*Твн=0,35*25+0,6*30+0,8*39+0,6*10=131 день,
где
Тэск, Ттех пр, Траб пр, Твн - фактические затраты времени на разработку эскизного, технического, рабочего проектов и внедрения соответственно, с учетом поправочных коэффициентов, дни.
С учетом того, что ЭВМ работала по восемь часов в сутки получаем:
Тэвм=131 дн*8ч=1048 ч
Себестоимость электроэнергии рассчитывается следующим образом:
Сэл= Тэвм*Смч=1048*0,28=293,44 руб.
Затраты на амортизацию (Ам) ЭВМ и оборудование - это затраты на приобретение оборудования и его эксплуатацию, причем в статью расходов включают только амортизацию, начисленную за время работы над проектом. Имеем формулу:
Ам=(Оф*Нам*Тэвм)/(365*100),
где
Оф - персональная стоимость оборудования, руб.;
Нам - норма амортизации, % (принято 20%);
Тэвм - время использования оборудования, дн.
Таблица 4. 3 Себестоимость оборудования и амортизационные отчисления
Наименование оборудования
Количество, шт.
Первоначальная стоимость, руб.
Общая стоимость, руб.
Компьютер Pentium IV (3GHz)
1
23000
23000
Принтер HP 1020
1
6840
6840
Итого
29840
Согласно таблице 4 первоначальная стоимость оборудования составила 29840 руб. Произведем расчет затрат на амортизацию:
Ам=(29840*20*131)/(365*100)=2135,40 руб.
Затраты на оплату машинного времени (Зовм) включают:
1. Затраты на оборудование в размере 2135,40 руб.
2. Затраты на электроэнергию в размере 290,87 руб.
Получаем, что стоимость машинного времени составляет:
Зовм=2135,40+290,87=2426,27 руб.
5. Стоимость инструментальных средств
Стоимость инструментальных средств включает стоимость системного программного обеспечения, использованного при разработке программного продукта в размере износа за этот период. Норма амортизации для системного программного обеспечения - 30%, а время использования 131 день.
Таблица 4. 4 Стоимость системного программного обеспечения
Наименование продукта
Первоначальная стоимость, руб.
Delphi 2006 Professional
12586
Borland Together 2006(с академической скидкой)
18339
Итого
30925
Амортизационные отчисления, входящие в стоимость разрабатываемого программного обеспечения, рассчитываются по формуле:
Аис=(Оф*Нам*Тэвм)/(365*100),
где
Оф - первоначальная стоимость инструментальных средств, руб.;
Нам - норма амортизации, % (принято 30%);
Тэвм - время использования оборудования, дней.
Аис=(30925*30*131)/( 365*100)= 3319,57 руб.
6. Накладные расходы
Накладные расходы составляют 30 % от суммы основной заработной платы:
Рн=Зосн*0,3=72905*0,3=21871,5 руб.
Далее в таблицу 6 заносится смета затрат на программное обеспечение.
Таблица 4. 5 Смета затрат на программное обеспечение
Элемент затрат
Сметная стоимость, руб.
Материальные затраты
1432
Основная и доп. з/п
80195,5
Отчисления на соц. нужды
20850,83
Затраты на оплату машинного времени
2426,27
Амортизация стоимости инструментальных средств
3319,57
Накладные расходы
21871,5
Итого затраты:
130095,67
Сумма затрат на разработку распределяется по этапам проектирования пропорционально трудоемкости. В результате составляется инвестиционный план, отраженный в таблице 4.6.
Таблица 4. 6 План инвестиций
Этапы реализации проекта
Полугодия
2 полугодие 2005
1 полугодие 2006
Техническое задание
6980,74
эскизный проект
17769,16
технический проект
34269,10
рабочий проект
36807,55
30461,42
внедрение
3807,68
Итого:
95826,56
34269,10
II. Тиражирование и реализация программного обеспечения
Перед построением плана реализации программного обеспечения был произведен анализ его рыночных возможностей. В процессе анализа было выявлено наличие двух сегментов рынка, на которых может быть реализован данный программный продукт: кредитные организации и обучающие организации. Так же было обнаружено, что существуют крупные системы, в которых реализованы подобные функции. При этом качество реализации данных подфункций находится на низком уровне. Ни одна из представленных на рынке систем не является настраиваемой. Поэтому можно говорить об отсутствии конкурентных товаров на рынке. План по реализации программного обеспечения (приложение 3, таблица 1) показывает объем тиражирования, цену, выручку от реализации и доходы от сопровождения на соответствующий период по каждому из сегментов.
Смета затрат на тиражирование, рекламу и сопровождение программного обеспечения составляется на основании плана по реализации программного обеспечения. Затраты на рекламу планируются на основании того, что она будет осуществляться путем рассылки буклетов потенциальным покупателям системы и помещения объявлений в специализированных журналах. Затраты на сопровождение планируются из расчета 5% от выручки от реализации за этот период. Итоги расчетов по затратам тиражирование, рекламу и сопровождение представлены в таблице 4.7.
Таблица 4. 7 Смета затрат
Показатели
Период
2 полугодие 2005
1 полугодие 2006
2 полугодие 2006
1 полугодие 2007
2 полугодие 2007
1 полугодие 2008
2 полугодие 2008
1 полугодие 2009
Затраты на тиражирование:
-стоимость документации
0
1125
3125
2275
1975
1675
800
625
-затраты на копирование
0
675
1875
1365
1185
1005
480
375
-стоимость машинных носителей и упаковочных материалов