Научная статья на тему 'Программа распознавания опухолей с применением нейронных сетей'

Программа распознавания опухолей с применением нейронных сетей Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
197
25
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АВТОМАТИЗАЦИЯ / НЕЙРОННАЯ СЕТЬ / РАСПРОСТРАНЕНИЕ СИГНАЛА ПО НЕЙРОННОЙ СЕТИ / ОБРАТНОЕ РАСПРОСТРАНЕНИЕ ОШИБОК / ФАКТИЧЕСКОЕ ОБНОВЛЕНИЕ ВЕСОВЫХ КОЭФФИЦИЕНТОВ / РЕАЛИЗАЦИЯ / AUTOMATION / NEURAL NETWORK / SIGNAL PROPAGATION THROUGH THE NEURAL NETWORK / BACK PROPAGATION OF ERRORS / THE ACTUAL UPDATE OF THE WEIGHT COEFFICIENTS / IMPLEMENTATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Поздняков Иван Олегович, Привалов Александр Николаевич

Рассматривается подход к идентификации опухолей на коже человека с применением нейронных сетей. Предложен алгоритм анализа снимка поражённой кожи посредством нейронной сети и его программная реализация.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Поздняков Иван Олегович, Привалов Александр Николаевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

TUMOR RECOGNITION PROGRAM USING NEURAL NETWORKS

The problem of recognition of tumors on the human skin, as well as methods of automation to determine the type of tumor. An algorithm for analyzing the image of the affected skin by means of a neural network and its software implementation is proposed.

Текст научной работы на тему «Программа распознавания опухолей с применением нейронных сетей»

УДК 004.896

ПРОГРАММА РАСПОЗНАВАНИЯ ОПУХОЛЕЙ С ПРИМЕНЕНИЕМ

НЕЙРОННЫХ СЕТЕЙ

Рассматривается подход к идентификации опухолей на коже человека с применением нейронных сетей. Предложен алгоритм анализа снимка поражённой кожи посредством нейронной сети и его программная реализация.

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

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

ТЛ и и

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

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

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

Рассмотрим нейронную сеть с тремя слоями (рис.1). Первый слой не производит никаких вычислений, его единственная задача - получить входной сигнал.

И.О. Поздняков, А.Н. Привалов

выход у

Рис. 1. Искусственный нейрон

394

Для расчёта входных значений второго (скрытого) слоя, применяется следующий алгоритм:

1. Все входные значения первого слоя умножаются на соответствующие весовые коэффициента входящие в нейрон из второго слоя.

2. Полученные значения суммируются.

3. Данное значение подставляется в сигмоиду.

Для входных значений третьего слоя (выходного) применятся тот же алгоритм, только первое действие претерпевает изменения и заключается в следующем:

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

Общая формула распространения сигнала имеет вид:

X = Ш • I, (1)

где I - матрица входных сигналов; \У - матрица весовых коэффициентов.

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

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

Е = (2)

И^д+И^д м/1,2+м/2,2

где ег - ошибка на первом узле выходного слоя; е2 - ошибка на втором узле выходного слоя; лу - весовой коэффициент.

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

В процессе исследования выявлено, что существует зависимость ошибки Е при изменении веса [4]. Согласно исследованиям, нейрон не начинает преобразовать сигнал немедленно, он сопротивляется до тех пор, пока сигнал не превысит определённый порог вхождения, а после нейрон преобразует его [4]. В математике такое поведение может быть описано функцией активации.

Сигмоида имеет превосходство перед другими подобными ей функциями, т.к. при применении дифференциального исчисления она принимает компактный и относительно, простой вид.

Для решения поставленной задачи будет использоваться высокоуровневый язык программирования Python. Данный язык имеет ряд преимуществ, которые предопределяют выбор в его пользу. Инструкции, написанные на Python одними людьми, легко читаются и понимаются другими людьми. Кроме того, этот язык очень популярен и применяется во многих областях, включая научные исследования, преподавание, глобальные инфраструктуры, а также анализ данных и искусственный интеллект. Главным плюсом Python является функция перемножения матриц, с помощь неё можно будет легко масштабировать количество нейронов в слоях. Для использования Python используется специально подготовленный пакет, который называется IPython. Оболочка IPython содержит язык программирования Python и несколько расширений для выполнения численного и графического анализа данных. Она предоставляет удобное средство интерактивной разработки Jupeter Notebook, напоминающее обычный блокнот, которое идеально подходит для проверки идей и анализа результата.

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

Для реализации программы была разработана структура, называемая классом, включающая в себя три метода:

- Инициализация - указание количества нейронов в каждом слое.

- Опрос - получение значений сигналов с выходных узлов после предоставления значений входящих сигналов.

- Тренировка - уточнение весовых коэффициентов в процессе обработки тренировочных примеров.

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

Для использования функционала языка необходимо подключить соответствующие библиотеки.

import numpy import scipy.special import matplotlib.pyplot

Так как язык Python объектно-ориентированный язык программирования, то для удобства проектирования программного обеспечения создаётся пользовательский тип данных, который моделирует работу нейронной сети.

class neuralNetwork:

В конструкторе класса необходимо инициализировать количество нейронов в каждом слое и коэффициент обучения.

def_init_(self,input_nodes,hidden_nodes,output_nodes,learnig_rate):

self.inodes=input_nodes self.hnodes=hidden_nodes self.onodes=output_nodes Для работы нейросети необходима начальная инициализация её весовых коэффициентов значениями в диапазоне от -1 до 1, так как функция активации - сигмоида.

self.wih=numpy.random.normal(0.0,pow(self.hnodes,-0.5), (self.hnodes,self.inodes))

self.who=numpy.random.normal(0.0,pow(self.onodes,-0. 5),(self. onodes,self.hnodes)) self.lr=learnig_rate

self.activation_function=lambda x: scipy.special.expit(x) pass

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

def train(self,inputs_list,targets_list): Так как значения пикселей представляют собой список, то для расчёта весов в слоях применяется преобразование входящих сигналов в двумерный массив.

inputs=numpy.array(inputs_li st,ndmin=2). T targets=numpy.array(targets_list,ndmin=2).T После подачи сигнала на входной слой происходит расчет весов скрытого и выходного слоя.

hidden_inputs=numpy.dot(self.wih,inputs) hidden_outputs=self.activation_function(hidden_inputs) final_inputs=numpy.dot(self.who,hidden_outputs) final_outputs = self.activation_function(final_inputs) Для настройки весов необходимо предусмотреть распределение ошибки выходного слоя (целевое значение - фактическое). Дли минимизации ошибки применяется метод градиентного спуска, он заключается в дифференцировании массивов весов.

397

output_errors = targets - final_outputs hidden_errors=numpy.dot(self.who.T,output_errors) self.who += self.lr * numpy.dot((output_errors * final_outputs * (1.0 - final_outputs)), numpy.transpose(hidden_outputs))

self.wih += self.lr * numpy.dot((hidden_errors * hidden_outputs * (1.0 - hidden_outputs)), numpy.transpose(inputs)) pass

Опрос - выполняет те же функции что и метод тренировки за исключением обновления весовых коэффициентов. def query(self, inputs_list):

inputs=numpy.array(inputs_list, ndmin=2).T hidden_inputs=numpy.dot(self.wih,inputs) hidden_outputs=self.activation_function(hidden_inputs)

final_inputs=numpy.dot(self.who,hidden_outputs) final_outputs = self.activation_function(final_inputs)

return final_outputs pass

В качестве примера применения искусственной нейронной сети рассмотрим первую запись из проверочной базы, непосредственно преобразовав её в изображение (рис.2).

Out[6]: cmatplotlib.image.Axeslmage at 0x3cdel28>

Рис. 2. Изображение опухоли

Представленная опухоль является доброкачественной, что подтверждает первая цифра из строки (рис.3).

Рис. 3. Значение из первой строке проверочной базы

Для опроса сети, требуется вызвать соответствующий метод с переданным аргументом (рис.4). Аргументом является строка без первого символа, обработанная таким образом, чтобы значения пикселя были в диапазоне от минус единицы до единицы, т.к. функция активации - сигмоида.

398

In [7J: n.query((numpy.asfarray(value[1:j.Э*0.ЭЭ)+е,ei)

Рис. 4. Результат опроса сети

После опроса получаем значения из выходных нейронов. Нейрон с наибольшим значением является ответом.

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

Список литературы

1. Anisimov V.V., Wagner R.I., Barchuk A.S. Skin Melanoma. SPb.: Science, 1995. 150 p.

2. Brain plasticity: Eksmo; Moscow; 2011 Norman DOJ.

3. Daniel Beck K.V., Kolobanov A.A. Malignant tumors of the skin and soft tissues. M.: Medicine, 1979. One hundred eighty four.

4. Tariq R. Create neural network / R. Tariq - SPb.:Dialectics LLC,

2018.

5. The latest image processing techniques / edited by A.A. Potapov. M.: FIZMATLIT, 2008. 496 p.

Поздняков Иван Олегович, студент, ivan0 70 798@rambler. ru, Россия, Тула, Тульский государственный педагогический университет им. Л.Н. Толстого,

Привалов Александр Николаевич, д-р техн. наук, профессор, privalov. 61@,mail.ru, Россия, Тула, Тульский государственный педагогический университет им. Л.Н. Толстого

TUMOR RECOGNITION PROGRAM USING NEURAL NETWORKS A.N. Privalov, I.O. Pozdnyakov

The problem of recognition of tumors on the human skin, as well as methods of automation to determine the type of tumor. An algorithm for analyzing the image of the affected skin by means of a neural network and its software implementation is proposed.

Key words: automation, neural network, signal propagation through the neural network, back propagation of errors, the actual update of the weight coefficients, implementation.

Pozdnyakov Ivan Olegovich, student, ivan0 70 798@rambler. ru, Russia, Tula, Tula State Pedagogical University named L. N. Tolstoy,

Privalov Aleksandr Nikolaevich, doctor of technical sciences, professor, privalov. 61@,mail. ru, Russia, Tula, Tula State Pedagogical University named L. N. Tolstoy

399

i Надоели баннеры? Вы всегда можете отключить рекламу.