РАЗРАБОТКА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ ОБРАБОТКИ АНАЛИЗОВ КРОВИ В КОМПЬЮТЕРНОЙ СРЕДЕ С++ BUILDER

Suprunov V. V., Jakushenko T. O

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

The purpose of the given work is research of an opportunity of optimiza tion of process of processing of the analysis of blood by means of introduc - tion in it computer нейросетевых technologies. Thus creation of program system in the environment With ++ Builder is essentially important, allo - wing to make processing the analysis of blood.

Введение.

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

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

НЕ нашли? Не то? Что вы ищете?

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

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

- задачи разработки архитектуры нейронной сети, эффективной при обработке параметров анализа крови, а также определение схемы ее обучения;

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

- задачи реализации программной системы в среде С++ Builder, позволяющей производить обработку анализа крови.

Нейросетевая программная система.

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

В созданной иерархии объектов существует три базовых класса TNeuron, TLayer, TNeuralNet. Все остальные являются производными от них. На рисунке 1 приведена иерархия классов, сплошными линиями показано наследование (стрелкой указана производная), пунктирными в каких классах они используются.

 

Рис. 1. Иерархия классов в библиотеке нейронных сетей.

TNeuron является базовым классом для нейронов, несет всю основную функциональность, имеет индексированное свойство Weights, представляющее собой весовые коэффициенты (синапсы), свойство Output, которое является выходом нейрона (результатом вычислений) и сумматор, роль которого, выполняет метод ComputeOut.

Следующим порожденным классом, является TNeuronBP, служащий для программной реализации многослойных нейронных сетей. Переписан метод ComputeOut, использующий теперь нелинейную активационную функцию, которая реализована в виде индексированного свойства процедурного типа OnActivationF. Кроме того, добавлены два важных свойства: Delta , содержащее локальную ошибку (величину коррекции) и индексированное свойство PrevUpdate, содержащее величину изменения весовых коэффициентов на предыдущем шаге обучения сети.

Основным назначением базового класса TLayer и его потомка TLayerBP является объединение нейронов в слой, для упрощения работы с нейронами.

Класс TNeuralNet - базовый класс для всех видов нейронных сетей. TNeuralNet обеспечивает необходимую функциональность производных компонентов. Этот компонент поддерживает методы для работы со слоями сети (добавление слоя - AddLayer, удаление слоя - DeleteLayer) и методы для манипуляций с исходными данными (добавлении, удаление, сброс примеров для обучения - AddPattern, DeletePattern, ResetPatterns). Метод Init служит для построения нейронной сети. Большинство методов объявленных в разделе public в базовом компоненте и его потомках – виртуальные, что позволяет легко перекрывать их.

Класс TNeuralNetBP реализует многослойную нейронную сеть, обучаемую по методу обратного распространения ошибки. Дополнительно включены следующие методы: Compute – вычисляет выход нейронной сети, используется после обучения сети; TeachOffLine – обучает нейронную сеть.

Следующим классом является TNeuralNetExtented, порожденный от TNeuralNetBP. Этот класс был наделен наиважнейшими функциями, позволяющими:

- хранить структуру обученной нейронной сети в виде текстового файла с расширением *.es (методы записи - LoadPhase1, LoadPhase2, LoadPhase3, LoadNetwork, методы чтения - SavePhase1, SavePhase2, SavePhase3, SaveNetwork). В файл записываются все параметры: от пути к файлу, использованному для обучения и количеству итераций, за которое это обучение прошло, до весов всех

 

Рис. 2 Формат файла с примерами для обучения

синаптических связей, числа слоев и нейронов в каждом из слоев, и многое другое.

- загружать примеры обучающего множества из текстового файла определенной структуры (метод LoadDataFrom), представленной на рисунке 2. Во всяком таком файле первая строка представляет собой множество названий входных и выходных параметров, а следующие строки – конкретные обучающие примеры. При этом при указании того, к какому типу принадлежит каждое поле: входному, выходному или его надо проигнорировать, соответствующим образом настраивается число нейронов во входном/выходном слоях нейронной сети;

Кроме того в класс TNeuralNetExtented добавлен метод NormalizeData, который отвечает за нормализацию входных и выходных данных в случае возникновения необходимости в таковой.

Указанная совокупность классов с их свойствами и методами является достаточной для решения задачи создания программной модели нейронной сети.

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

 

Рис. 3. Основная экранная форма программы

Прием данных о биометрических исследованиях пациентов осуществляется по нажатию кнопки «Принять результаты анализов» (верхнее меню на рисунке 3). При этом в систему загружаются данные текстового формата, хранящиеся в папке import системного каталога system.

Обработка параметров

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

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

Для обеспечения гибкости системы администратор программы наделен возможностью создания нового диагноза заболевания по нажатию кнопки «Добавить диагноз» и указанию файла примеров. При этом в выходной слой нейронной сети добавляется новый нейрон, происходит перерасчет числа нейронов в скрытых слоя сети по формулам (3) – (5), синаптические связи вновь добавленных нейронов инициализируются случайными величинами, и запускается процесс обучения нейронной сети обработке нового диагноза.

Литература:

1. Горбань сети на персональном компьютере / ,

. – Новосибирск: Наука. Сибирская издательская фирма РАН,

1996. – 276 с.

2. Статистический и нейросетевой методы идентификации и прогнозирования

в медицине / , ,

// Информационные технологии. – 2004. – №3. – С. 60 – 63.

3. Reibnegger G., Weiss G., Judmaier G. Neural networks as a tool for utilizing

laboratory information: comparison with linear discriminant analysis and with

classification and regression trees // PNAS - december 15, 1991 - vol. 88 № 24.