Разработка экспертной системы диагностики заболеваний

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    239,98 Кб
  • Опубликовано:
    2016-02-05
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка экспертной системы диагностики заболеваний















КУРСОВАЯ РАБОТА

по дисциплине «Основы моделирования биологических процессов и систем»

Тема «Разработка экспертной системы диагностики заболеваний»

Содержание


Введение

. Нейронные сети

.1 Определение нейронных сетей

.2 История развития нейронных сетей

.3 Применение нейронных сетей

.4 Этапы решения задач

.5 Классификация нейронных сетей

.6 Примеры приложений

. Практическое задание

.1 Задание

.2 Концептуализация задачи

.3 Формализация задачи

.4 Выполнение задачи

.5 Листинг программы

.6 Тестирование программы

Заключение

Список использованной литературы

Введение

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

Широкий круг задач, решаемый нейронными сетями, не позволяет в настоящее время создавать универсальные, мощные сети, вынуждая разрабатывать специализированные сети, функционирующие по различным алгоритмам. Тем не менее, тенденции развития нейросетей растут с каждым годом.

Цель моей работы - разбор базовых понятий, связанных с изучением нейронных сетей, а также выявление перспектив развития.

.        Нейронные сети

.1      Определение нейронных сетей

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

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

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

Рисунок 1 - Схема простейшей нейронной сети

Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения - одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение. Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или «зашумленных», частично искаженных данных.

1.2    История развития нейронных сетей

- У. Маккалок и У. Питтс формализуют понятие нейронной сети в фундаментальной статье о логическом исчислении идей и нервной активности.

- Н. Винер вместе с соратниками публикует работу о кибернетике. Основной идеей является представление сложных биологических процессов математическими моделями.

- Д. Хебб предлагает первый алгоритм обучения.

В 1958 Ф. Розенблатт изобретает однослойный перцептрон и демонстрирует его способность решать задачи классификации. Перцептрон обрёл популярность - его используют для распознавания образов, прогнозирования погоды и т. д.; в то время казалось, что уже не за горами создание полноценного искусственного интеллекта. К моменту изобретения перцептрона завершилось расхождение теоретических работ Маккалока с т. н. «кибернетикой» Винера; Маккалок и его последователи вышли из состава «Кибернетического клуба».

В 1960 году Уидроу совместно со своим студентом Хоффом на основе дельта-правила (формулы Уидроу) разработали Адалин, который сразу начал использоваться для задач предсказания и адаптивного управления. Адалин был построен на базе созданных ими же (Уидроу - Хоффом) принципиально новых элементах - мемисторах. Сейчас Адалин (адаптивный сумматор) является стандартным элементом многих систем обработки сигналов.

В 1963 году в Институте проблем передачи информации АН СССР. А. П. Петровым проводится подробное исследованием задач «трудных» для перцептрона. Эта пионерская работа в области моделирования ИНС в СССР послужила отправной точкой для комплекса идей М. М. Бонгарда - как «сравнительно небольшой переделкой алгоритма (перцептрона) исправить его недостатки». Работы А. П. Петрова и М. М. Бонгарда весьма способствовали тому, что в СССР первая волна эйфории по поводу ИНС была сглажена.

В 1969 году М. Минский публикует формальное доказательство ограниченности перцептрона и показывает, что он неспособен решать некоторые задачи (Проблема "чётности" и "один в блоке"), связанные с инвариантностью представлений. Интерес к нейронным сетям резко спадает.

В 1972 году Т. Кохонен и Дж. Андерсон независимо предлагают новый тип нейронных сетей, способных функционировать в качестве памяти.

В 1973 году Б. В. Хакимов предлагает нелинейную модель с синапсами на основе сплайнов и внедряет её для решения задач в медицине, геологии, экологии. 1974 - Пол Дж. Вербос и А. И. Галушкин одновременно изобретают алгоритм обратного распространения ошибки для обучения многослойных перцептронов. Изобретение не привлекло особого внимания.

- Фукусима представляет Когнитрон - самоорганизующуюся сеть, предназначенную для инвариантного распознавания образов, но это достигается только при помощи запоминания практически всех состояний образа.

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

- Дэвидом И. Румельхартом, Дж. Е. Хинтоном и Рональдом Дж. Вильямсом и независимо и одновременно С. И. Барцевым и В. А. Охониным (Красноярская группа) переоткрыт и существенно развит метод обратного распространения ошибки. Начался взрыв интереса к обучаемым нейронным сетям.

1.3    Применение нейронных сетей

Распознавание образов и классификация. В качестве образов могут выступать различные по своей природе объекты: символы текста, изображения, образцы звуков и т. д. При обучении сети предлагаются различные образцы образов с указанием того, к какому классу они относятся. Образец, как правило, представляется как вектор значений признаков. При этом совокупность всех признаков должна однозначно определять класс, к которому относится образец. В случае, если признаков недостаточно, сеть может соотнести один и тот же образец с несколькими классами, что неверно. По окончании обучения сети ей можно предъявлять неизвестные ранее образы и получать ответ о принадлежности к определённому классу.

Топология такой сети характеризуется тем, что количество нейронов в выходном слое, как правило, равно количеству определяемых классов. При этом устанавливается соответствие между выходом нейронной сети и классом, который он представляет. Когда сети предъявляется некий образ, на одном из её выходов должен появиться признак того, что образ принадлежит этому классу. В то же время на других выходах должен быть признак того, что образ данному классу не принадлежит. Если на двух или более выходах есть признак принадлежности к классу, считается, что сеть «не уверена» в своём ответе.

Принятие решений и управление. Эта задача близка к задаче классификации. Классификации подлежат ситуации, характеристики которых поступают на вход нейронной сети. На выходе сети при этом должен появиться признак решения, которое она приняла. При этом в качестве входных сигналов используются различные критерии описания состояния управляемой системы.

Кластеризация. Под кластеризацией понимается разбиение множества входных сигналов на классы, при том, что ни количество, ни признаки классов заранее не известны. После обучения такая сеть способна определять, к какому классу относится входной сигнал. Сеть также может сигнализировать о том, что входной сигнал не относится ни к одному из выделенных классов - это является признаком новых, отсутствующих в обучающей выборке, данных. Таким образом, подобная сеть может выявлять новые, неизвестные ранее классы сигналов. Соответствие между классами, выделенными сетью, и классами, существующими в предметной области, устанавливается человеком. Кластеризацию осуществляют, например, нейронные сети Кохонена.

Нейронные сети в простом варианте Кохонена не могут быть огромными, поэтому их делят на гиперслои (гиперколонки) и ядра (микроколонки). Если сравнивать с мозгом человека, то идеальное количество параллельных слоёв не должно быть более 112. Эти слои в свою очередь составляют гиперслои (гиперколонку), в которой от 500 до 2000 микроколонок (ядер). При этом каждый слой делится на множество гиперколонок пронизывающих насквозь эти слои. Микроколонки кодируются цифрами и единицами с получением результата на выходе. Если требуется, то лишние слои и нейроны удаляются или добавляются. Идеально для подбора числа нейронов и слоёв использовать суперкомпьютер. Такая система позволяет нейронным сетям быть пластичными.

Прогнозирование. Способности нейронной сети к прогнозированию напрямую следуют из ее способности к обобщению и выделению скрытых зависимостей между входными и выходными данными. После обучения сеть способна предсказать будущее значение некой последовательности на основе нескольких предыдущих значений и/или каких-то существующих в настоящий момент факторов. Следует отметить, что прогнозирование возможно только тогда, когда предыдущие изменения действительно в какой-то степени предопределяют будущие. Например, прогнозирование котировок акций на основе котировок за прошлую неделю может оказаться успешным (а может и не оказаться), тогда как прогнозирование результатов завтрашней лотереи на основе данных за последние 50 лет почти наверняка не даст никаких результатов. Аппроксимация. Нейронные сети могут аппроксимировать непрерывные функции. Доказана обобщённая аппроксимационная теорема: с помощью линейных операций и каскадного соединения можно из произвольного нелинейного элемента получить устройство, вычисляющее любую непрерывную функцию с некоторой наперёд заданной точностью. Это означает, что нелинейная характеристика нейрона может быть произвольной: от сигмоидальной до произвольного волнового пакета или вейвлета, синуса или многочлена. От выбора нелинейной функции может зависеть сложность конкретной сети, но с любой нелинейностью сеть остаётся универсальным аппроксиматором и при правильном выборе структуры может достаточно точно аппроксимировать функционирование любого непрерывного автомата.

Сжатие данных и ассоциативная память. Способность нейросетей к выявлению взаимосвязей между различными параметрами дает возможность выразить данные большой размерности более компактно, если данные тесно взаимосвязаны друг с другом. Обратный процесс - восстановление исходного набора данных из части информации - называется (авто)ассоциативной памятью. Ассоциативная память позволяет также восстанавливать исходный сигнал/образ из зашумленных/поврежденных входных данных.

Решение задачи гетероассоциативной памяти позволяет реализовать память, адресуемую по содержимому.

.4      Этапы решения задач

Сбор данных для обучения. Выбор данных для обучения сети и их обработка является самым сложным этапом решения задачи. Набор данных для обучения должен удовлетворять нескольким критериям:

а)      Репрезентативность - данные должны иллюстрировать истинное положение вещей в предметной области;

б)      Непротиворечивость - противоречивые данные в обучающей выборке приведут к плохому качеству обучения сети.

Исходные данные преобразуются к виду, в котором их можно подать на входы сети. Каждая запись в файле данных называется обучающей парой или обучающим вектором. Обучающий вектор содержит по одному значению на каждый вход сети и, в зависимости от типа обучения (с учителем или без), по одному значению для каждого выхода сети. Обучение сети на «сыром» наборе, как правило, не даёт качественных результатов. Существует ряд способов улучшить «восприятие» сети.

Нормировка выполняется, когда на различные входы подаются данные разной размерности. Например, на первый вход сети подаются величины со значениями от нуля до единицы, а на второй - от ста до тысячи. При отсутствии нормировки значения на втором входе будут всегда оказывать существенно большее влияние на выход сети, чем значения на первом входе. При нормировке размерности всех входных и выходных данных сводятся воедино;

Квантование выполняется над непрерывными величинами, для которых выделяется конечный набор дискретных значений. Например, квантование используют для задания частот звуковых сигналов при распознавании речи;

Фильтрация выполняется для «зашумленных» данных.

Кроме того, большую роль играет само представление как входных, так и выходных данных. Предположим, сеть обучается распознаванию букв на изображениях и имеет один числовой выход - номер буквы в алфавите. В этом случае сеть получит ложное представление о том, что буквы с номерами 1 и 2 более похожи, чем буквы с номерами 1 и 3, что, в общем, неверно. Для того, чтобы избежать такой ситуации, используют топологию сети с большим числом выходов, когда каждый выход имеет свой смысл. Чем больше выходов в сети, тем большее расстояние между классами и тем сложнее их спутать. Выбор топологии сети. Выбирать тип сети следует, исходя из постановки задачи и имеющихся данных для обучения. Для обучения с учителем требуется наличие для каждого элемента выборки «экспертной» оценки. Иногда получение такой оценки для большого массива данных просто невозможно. В этих случаях естественным выбором является сеть, обучающаяся без учителя (например, самоорганизующаяся карта Кохонена или нейронная сеть Хопфилда). При решении других задач (таких, как прогнозирование временных рядов) экспертная оценка уже содержится в исходных данных и может быть выделена при их обработке. В этом случае можно использовать многослойный перцептрон или сеть Ворда.

Экспериментальный подбор характеристик сети. После выбора общей структуры нужно экспериментально подобрать параметры сети. Для сетей, подобных перцептрону, это будет число слоев, число блоков в скрытых слоях (для сетей Ворда), наличие или отсутствие обходных соединений, передаточные функции нейронов. При выборе количества слоев и нейронов в них следует исходить из того, что способности сети к обобщению тем выше, чем больше суммарное число связей между нейронами. С другой стороны, число связей ограничено сверху количеством записей в обучающих данных.

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

Обучение сети. В процессе обучения сеть в определенном порядке просматривает обучающую выборку. Порядок просмотра может быть последовательным, случайным и т. д. Некоторые сети, обучающиеся без учителя (например, сети Хопфилда), просматривают выборку только один раз. Другие (например, сети Кохонена), а также сети, обучающиеся с учителем, просматривают выборку множество раз, при этом один полный проход по выборке называется эпохой обучения. При обучении с учителем набор исходных данных делят на две части - собственно обучающую выборку и тестовые данные; принцип разделения может быть произвольным. Обучающие данные подаются сети для обучения, а проверочные используются для расчета ошибки сети (проверочные данные никогда для обучения сети не применяются). Таким образом, если на проверочных данных ошибка уменьшается, то сеть действительно выполняет обобщение. Если ошибка на обучающих данных продолжает уменьшаться, а ошибка на тестовых данных увеличивается, значит, сеть перестала выполнять обобщение и просто «запоминает» обучающие данные. Это явление называется переобучением сети или оверфиттингом. В таких случаях обучение обычно прекращают. В процессе обучения могут проявиться другие проблемы, такие как паралич или попадание сети в локальный минимум поверхности ошибок. Невозможно заранее предсказать проявление той или иной проблемы, равно как и дать однозначные рекомендации к их разрешению.

Все выше сказанное относится только к итерационным алгоритмам поиска нейросетевых решений. Для них действительно нельзя ничего гарантировать и нельзя полностью автоматизировать обучение нейронных сетей. Однако, наряду с итерационными алгоритмами обучения, существуют не итерационные алгоритмы, обладающие очень высокой устойчивостью и позволяющие полностью автоматизировать процесс обучения.

Проверка адекватности обучения. Даже в случае успешного, на первый взгляд, обучения сеть не всегда обучается именно тому, чего от неё хотел создатель. Известен случай, когда сеть обучалась распознаванию изображений танков по фотографиям, однако позднее выяснилось, что все танки были сфотографированы на одном и том же фоне. В результате сеть «научилась» распознавать этот тип ландшафта, вместо того, чтобы «научиться» распознавать танки. Таким образом, сеть «понимает» не то, что от неё требовалось, а то, что проще всего обобщить.

Тестирование качества обучения нейросети необходимо проводить на примерах, которые не участвовали в ее обучении. При этом число тестовых примеров должно быть тем больше, чем выше качество обучения. Если ошибки нейронной сети имеют вероятность близкую к одной миллиардной, то и для подтверждения этой вероятности нужен миллиард тестовых примеров. Получается, что тестирование хорошо обученных нейронных сетей становится очень трудной задачей.

.5      Классификация нейронных сетей

а)      Аналоговые нейронные сети (используют информацию в форме действительных чисел);

б)      Двоичные нейронные сети (оперируют с информацией, представленной в двоичном виде).

По характеру обучения:

а)      Обучение с учителем - выходное пространство решений нейронной сети известно;

б)      Обучение без учителя - нейронная сеть формирует выходное пространство решений только на основе входных воздействий. Такие сети называют самоорганизующимися;

в)      Обучение с подкреплением - система назначения штрафов и поощрений от среды.

По характеру настройки синапсов:

а)      Сети с фиксированными связями;

б)      Сети с динамическими связями.

По характеру связей:

а)      Сети прямого распространения (Feedforward)

б)      Рекуррентные нейронные сети

в)      Радиально-базисные функции

г)       Самоорганизующиеся карты

.6      Примеры приложений

Предсказание финансовых временных рядов. Входные данные - курс акций за год. Задача - определить завтрашний курс. Проводится следующее преобразование - выстраивается в ряд курс за сегодня, вчера, за позавчера. Следующий ряд - смещается по дате на один день и так далее. На полученном наборе обучается сеть с 3 входами и одним выходом - то есть выход: курс на дату, входы: курс на дату минус 1 день, минус 2 дня, минус 3 дня. Обученной сети подаем на вход курс за сегодня, вчера, позавчера и получаем ответ на завтра. Нетрудно заметить, что в этом случае сеть просто выведет зависимость одного параметра от трёх предыдущих. Если желательно учитывать ещё какой-то параметр (например, общий индекс по отрасли), то его надо добавить как вход (и включить в примеры), переобучить сеть и получить новые результаты. Для наиболее точного обучения стоит использовать метод ОРО, как наиболее предсказуемый и несложный в реализации.

Психодиагностика. Серия работ М. Г. Доррера с соавторами посвящена исследованию вопроса о возможности развития психологической интуиции у нейросетевых экспертных систем. Полученные результаты дают подход к раскрытию механизма интуиции нейронных сетей, проявляющейся при решении ими психодиагностических задач. Создан нестандартный для компьютерных методик интуитивный подход к психодиагностике, заключающийся в исключении построения описанной реальности. Он позволяет сократить и упростить работу над психодиагностическими методиками. Нейронные сети широко используются в химических и биохимических исследованиях. В настоящее время нейронные сети являются одним из самых распространенных методов хемоинформатики для поиска количественных соотношений структура-свойство, благодаря чему они активно используются как для прогнозирования физико-химических свойств и биологической активности химических соединений, так и для направленного дизайна химических соединений и материалов с заранее заданными свойствами, в том числе при разработке новых лекарственных препаратов. Нейронные сети успешно применяются для синтеза систем управления динамическими объектами. Нейросети обладают рядом уникальных свойств, которые делают их мощным инструментом для создания систем управления: способностью к обучению на примерах и обобщению данных, способностью адаптироваться к изменению свойств объекта управления и внешней среды, пригодностью для синтеза нелинейных регуляторов, высокой устойчивостью к повреждениям своих элементов в силу изначально заложенного в нейросетевую архитектуру параллелизма.

Алгоритмы искусственных нейронных сетей нашли широкое применение в экономике. С помощью нейронных сетей решается задача разработки алгоритмов нахождения аналитического описания закономерностей функционирования экономических объектов. Эти алгоритмы применяются к прогнозированию некоторых «выходных» показателей объектов. Применение нейросетевых методов позволяет решить некоторые проблемы экономико-статистического моделирования, повысить адекватность математических моделей, приблизить их к экономической реальности. Поскольку экономические, финансовые и социальные системы очень сложны и являются результатом действий и противодействий различных людей, то является очень сложным создать полную математическую модель с учётом всех возможных действий и противодействий.

.        Практическое задание

.1      Задание

Необходимо разработать экспертную систему, позволяющую диагностировать заболевания органов пищеварения (выбрать два заболевания).

.2      Концептуализация задачи

В создаваемой экспертной системе будет реализована возможность диагностики двух заболеваний органов пищеварения - панкреатита и гастрита. Для установления диагноза будут использоваться жалобы пациента, результаты общего анализа крови, биохимического анализа крови и анализа кала.

Панкреатит может характеризоваться следующими симптомами: тошнота, понос, отсутствие аппетита, стремительная потеря веса, острая опоясывающая боль в животе. Для уточнения диагноза проводят анализ крови. Общий анализ крови при панкреатите покажет повышение количества лейкоцитов и увеличение СОЭ, биохимический - повышение уровня глюкозы и снижение холестерина. При проведении анализа кала можно наблюдать нарушение переваривания пищи.

У гастрита симптомы следующие: аритмия, тяжесть в желудке, изжога, сухость во рту, понос, тошнота. Общий и биохимический анализы крови не показывают никаких отклонений от нормы, а при анализе кала можно обнаружить скрытую кровь.

Для решения поставленной задачи была составлена модель диагностики, представляющая собой сеть Петри.

Рисунок 2 - Модель системы - сеть Петри

Описание позиций:

b1 - Аритмия

b2 - Тяжесть в желудке

b3 - Изжога

b4 - Сухость во рту

b5 - Понос

b6 - Тошнота

b7 - Отсутствие аппетита

b8 - Стремительная потеря веса

b9 - Острая опоясывающая боль

b10 - Подозрение на гастрит

b11 - Подозрения на панкреатит

b12, b13 - Сбор результатов лабораторных исследований

b14 - Отсутствие отклонений при общем анализе крови

b15 - Отсутствие отклонений при биохимическом анализе крови

b16 - Скрытая кровь в кале

b17 - Повышение уровня лейкоцитов в крови

b18 - Повышение СОЭ

b19 - Повышение уровня глюкозы

b20 - Сниженный уровень холестерина

b21 - Нарушение переваривания пищи

b22 - Постановка диагноза Гастрит

b23 - Постановка диагноза Панкреатит

2.3    Формализация задачи

Задачу будет удобно представить в виде программы для персонального компьютера. Для практической реализации системы будет использована среда разработки Delphi. Прежде, чем приступить к разработке прототипа системы, необходимо составить блок-схему алгоритма работы программы.

Рисунок 3 - Блок-схема (часть 1)

Рисунок 4 - Блок-схема (часть 2)

Рисунок 5 - Блок-схема (часть 3)

.4      Выполнение задачи

В среде Delphi на языке Object Pascal мной была написана программа, реализующая моделируемую систему. Путем последовательного диалога с пользователем программа получает входные данные (симптомы и результаты исследований) и на их основании делает предположение диагноза. Далее приведен скриншот окна программы и ее листинг.

Рисунок 6 - Скриншот окна программы

.5 Листинг программы

MainUnit;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, XPMan, StdCtrls;

TMainForm = class(TForm)

Label1: TLabel;

GroupBox1: TGroupBox;

b1: TCheckBox;

b3: TCheckBox;

b4: TCheckBox;

b5: TCheckBox;

b6: TCheckBox;

b7: TCheckBox;

b8: TCheckBox;

b9: TCheckBox;

btnNext: TButton;

XPManifest1: TXPManifest;

GroupBox2: TGroupBox;

b17: TCheckBox;

b18: TCheckBox;

btnNext1: TButton;

b14: TCheckBox;

GroupBox3: TGroupBox;

b19: TCheckBox;

b20: TCheckBox;

b15: TCheckBox;

GroupBox4: TGroupBox;

btnNext2: TButton;

b16: TCheckBox;

b21: TCheckBox;

btnGuess: TButton;

btnReset: TButton;

procedure nextToLabs(Sender: TObject);

procedure nextToChem(Sender: TObject);

procedure nextToEnd(Sender: TObject);

procedure guessDiagnosis(Sender: TObject);

procedure resetForm(Sender: TObject);

procedure b14Click(Sender: TObject);

procedure b17Click(Sender: TObject);

procedure b15Click(Sender: TObject);

procedure b19Click(Sender: TObject);

procedure b18Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

MainForm: TMainForm;

b10, b11, b12, b13: integer;

{$R *.dfm}TMainForm.nextToLabs(Sender: TObject);

b10 := Integer(b1.Checked)+Integer(b2.Checked)+Integer(b3.Checked)+Integer(b4.Checked)+Integer(b5.Checked)+Integer(b6.Checked);

b11 := Integer(b5.Checked)+Integer(b6.Checked)+Integer(b7.Checked)+Integer(b8.Checked)+Integer(b9.Checked);

b1.Enabled := false;

b2.Enabled := false;

b3.Enabled := false;

b4.Enabled := false;

b5.Enabled := false;

b6.Enabled := false;

b7.Enabled := false;

b8.Enabled := false;

b9.Enabled := false;

btnNext.Enabled := false;

b14.Enabled := true;

b17.Enabled := true;

b18.Enabled := true;

btnNext1.Enabled := true;

if (b10 >= 4) then b10 := 4;

if (b11 >= 3) then b11 := 3;;TMainForm.nextToChem(Sender: TObject);

b17.Enabled := false;

b18.Enabled := false;

b14.Enabled := false;

btnNext1.Enabled := false;

b19.Enabled := true;

b20.Enabled := true;

b15.Enabled := true;

btnNext2.Enabled := true;;TMainForm.nextToEnd(Sender: TObject);

b19.Enabled := false;

b20.Enabled := false;

btnNext2.Enabled := false;

b16.Enabled := true;

b21.Enabled := true;

btnGuess.Enabled := true;;TMainForm.guessDiagnosis(Sender: TObject);

b16.Enabled := false;

b21.Enabled := false;

b12 := b10+Integer(b14.Checked)+Integer(b15.Checked)+Integer(b16.Checked);

b13 := b11+Integer(b17.Checked)+Integer(b18.Checked)+Integer(b19.Checked)+Integer(b20.Checked)+Integer(b21.Checked);

if (b12 >= 6) then ShowMessage('Предполагаемый диагноз - гастрит')

else if (b13 >= 6) then ShowMessage('Предполагаемый диагноз - панкреатит')

else ShowMessage('Невозможно предположить диагноз');

btnGuess.Visible := false;

btnReset.Visible := true;;TMainForm.resetForm(Sender: TObject);

b1.Checked := false;

b2.Checked := false;

b3.Checked := false;

b4.Checked := false;

b5.Checked := false;

b6.Checked := false;

b7.Checked := false;

b8.Checked := false;

b9.Checked := false;

b14.Checked := false;

b15.Checked := false;

b16.Checked := false;

b17.Checked := false;

b18.Checked := false;

b19.Checked := false;

b20.Checked := false;

b21.Checked := false;

b1.Enabled := true;

b2.Enabled := true;

b3.Enabled := true;

b4.Enabled := true;

b5.Enabled := true;

b6.Enabled := true;

b7.Enabled := true;

b8.Enabled := true;

b9.Enabled := true;

btnNext.Enabled := true;

btnReset.Visible := false;

btnGuess.Visible := true;

btnGuess.Enabled := false;:= 0;

b11 := 0;

b12 := 0;

b13 := 0;;TMainForm.b14Click(Sender: TObject);

b17.Checked := false;

b18.Checked := false;;TMainForm.b17Click(Sender: TObject);

b14.Checked := false;;TMainForm.b15Click(Sender: TObject);

b19.Checked := false;

b20.Checked := false;;TMainForm.b19Click(Sender: TObject);

b15.Checked := false;;TMainForm.b18Click(Sender: TObject);

b14.Checked := false;;

end.

.5 Тестирование программы

Далее будут приведены скриншоты, демонстрирующие постановку диагноза программой.

Рисунок 7 - Постановка диагноза Гастрит

нейронный сеть экспертный заболевание

Рисунок 8 - Постановка диагноза Панкреатит

Рисунок 9 - Отказ в постановке диагноза

Заключение


Развитие нейронных сетей вызвало немало энтузиазма и критики. Некоторые сравнительные исследования оказались оптимистичными, другие - пессимистичными. Для многих задач, таких как распознавание образов, пока не создано доминирующих подходов. Нужно пытаться понять возможности, предпосылки и область применения различных подходов и максимально использовать их дополнительные преимущества для дальнейшего развития интеллектуальных систем.

Множество надежд в отношении нейронных сетей сегодня связывают именно с аппаратными реализациями, но пока время их массового выхода на рынок, видимо, еще не пришло. Они или выпускаются в составе специализированных устройств, или достаточно дороги, а зачастую и то и другое. На их разработку тратится значительное время, за которое программные реализации на самых последних компьютерах оказываются лишь на порядок менее производительными, что делает использование нейропроцессоров нерентабельным. Но все это только вопрос времени - нейронным сетям предстоит пройти тот же путь, по которому еще совсем недавно развивались компьютеры, увеличивая свои возможности и производительность, захватывая новые сферы применения по мере возникновения новых задач и развития технической основы для их разработки.

Сегодня нейронные сети используются для работы в относительно узких областях, и неизвестно, доверят ли им когда-нибудь решение вопросов, которые требуют понимания социального контекста. Между тем нейронные сети уверенно продолжают проникать в нашу жизнь, и примеров тому немало.

Список использованной литературы


1) Материалы сайта www.fos.ru./pedagog/9363.html

) Материалы сайта www.nekata.ru/index.php?show_section=155

) Материалы сайта www.neuropro.ru/neu4.shtml

) Материалы сайта www.wikipedia.org

Похожие работы на - Разработка экспертной системы диагностики заболеваний

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!