В статье описывается реализация нейронной сети c алгоритмом обратного распространения ошибки, которая предсказывает определенные заболевания позвоночника, основываясь на некоторых биомеханических свойствах пациента. Данная работа выполнена в рамках курсового проекта по дисциплине «Методы интеллектуального анализа данных», научный руководитель – д.ф.-м.н., профессор Воронова Л.И.
Введение
По данным Всемирной организации здравоохранения, более 2 миллионов человек ежегодно умирают из-за того, что они долго сидят без движения, а к 2020 году ожидается, что 70% болезней в мире будут вызваны слишком долгим сидением и отсутствием физических упражнений. По данным Всемирной организации здравоохранения, «более половины людей в мире в настоящее время страдают от различных проблем с болями в спине». Имеется большое количество данных, показывающих, что заболевания позвоночника имеют тенденцию к увеличению из года в год и постепенно становятся моложе. Развитие заболеваний позвоночника происходит очень быстро, и они, по-видимому, станут самой большой и самой важной семьей в спектре заболеваний этой эпохи и станут главным врагом здоровья человека в будущую эпоху[1].
Авторы попытались построить нейронную сеть, чтобы помочь врачам быстро оценить состояние позвоночника пациента на основе данных таза и поясницы пациента.
Исходные данные
Биомедицинский набор данных, использованный в этом исследовании, был создан доктором Энрике да Мота во время пребывания в резиденции медицинского факультета Департамента ортопедических исследований (GARO) в центре города Лион, Франция:
http://archive.ics.uci.edu/ml/datasets/vertebral+column [2]. Часть данных из этого набора приведена в табл.1.
Наборы данных разделены на три категории: нормальные (100 пациентов), грыжи диска (60 пациентов) или спондилолистез (150 пациентов). Каждый пациент представлен в наборе данных шестью биомеханическими признаками, полученными из формы и ориентации таза и поясничного отдела позвоночника: заболеваемость таза, наклон таза, угол поясничного лордоза, наклон крестца, радиус таза и степень спондилолистеза.
На рис.1, 2 приведена визуализация изменений происходящих в позвоночнике при некоторых видах заболеваний.
Рис. 1. Межпозвонковая грыжа Рис. 2. Спондилолистез
В табл.1 приведено 15 записей из набора данных [2], в котором имеется 310 таких строк.
Частичные исходные данные из набора[2] Таблица 1.
заболевае- мость таза (%) |
наклон таза (°) |
угол поясничного лордоза (°) |
наклон крестца |
радиус таза (mm) |
степень спондило- листеза |
классификация |
63.0278 |
22.5526 |
39.6091 |
40.4752 |
98.6729 |
-0.2544 |
Межпозвонковая грыжа |
39.057 |
10.061 |
25.0154 |
28.996 |
114.4054 |
4.5643 |
Межпозвонковая грыжа |
68.832 |
22.2185 |
50.0922 |
46.6135 |
105.9851 |
-3.5303 |
Межпозвонковая грыжа |
69.297 |
24.6529 |
44.3112 |
44.6441 |
101.8685 |
11.2115 |
Межпозвонковая грыжа |
49.7129 |
9.6521 |
28.3174 |
40.0608 |
108.1687 |
7.9185 |
Межпозвонковая грыжа |
74.3777 |
32.0531 |
78.772 |
42.3246 |
143.5607 |
56.1259 |
Спондилолистез |
89.6806 |
32.7044 |
83.1307 |
56.9761 |
129.9555 |
92.0273 |
Спондилолистез |
44.5291 |
9.4332 |
52 |
35.0958 |
134.7118 |
29.1066 |
Спондилолистез |
77.6906 |
21.3806 |
64.4294 |
56.3099 |
114.8188 |
26.9318 |
Спондилолистез |
76.1472 |
21.9362 |
82.9615 |
54.211 |
123.932 |
10.432 |
Спондилолистез |
38.5053 |
16.9643 |
35.1128 |
21.541 |
127.6329 |
7.9867 |
Нормальный |
54.9209 |
18.9684 |
51.6015 |
35.9524 |
125.8466 |
2.0016 |
Нормальный |
44.3625 |
8.9454 |
46.9021 |
35.4171 |
129.2207 |
4.9942 |
Нормальный |
48.3189 |
17.4521 |
48 |
30.8668 |
128.9803 |
-0.9109 |
Нормальный |
45.7018 |
10.6599 |
42.5778 |
35.0419 |
130.1783 |
-3.3889 |
Нормальный |
Предобработка данных
Нейронные сети, как и другие алгоритмы машинного обучения, оперируют только числовыми данными. В результате классификации нужна текстовая информация, которая. предварительно должна быть преобразована в числовой массив как результат классификации. Мы используем [1,0,0], [0,1,0], [0,0,1] для представления трех результатов классификации (грыжа диска, спондилолистез, нормальный).
Рис. 3. Отношения между каждыми двумя свойствами
При исследовании многомерных объектов, желательны одинаковые масштабы признаков, чтобы помочь алгоритму градиентного спуска сходиться быстрее.
Однако, в используемом наборе данных имеются очень большие различия, например, степень поясничного спондилолистеза значительно отличается от других признаков. Поэтому нужно нормализовать данные. Здесь мы используем min-max нормализацию[3].
(1)
Проектирование и обучение нейронной сети
Для обучения нейронной сети случайным образом выделим из 310 наборов 80% (250), остальные 20% (60) будут использованы для нужд тестирования.
Далее необходимо выбрать архитектуру нейронную сети. Данный процесс осуществляется эмпирическим путем. В этом исследовании мы использовали трехслойную нейронную сеть, а нейронная сеть – прямого распространения (персептрон) с обучением по алгоритму обратного распространения ошибки[4].
Как показал эксперимент наибольшей точностью обладает нейросеть с конфигурацией 6-10-3, где 6 нейронов во входном слое (соответствует 6 признакам), 10 в скрытом слое и 3 в выходном слое(соответствует 3 классификациям).
Рис. 4. Структурная схема нейронной сети
Перед началом обучения нейронной сети необходимо сгенерировать случайным образом значение её весов. Весовая матрица определяется на основе количества нейронов во входном слое(n_x), скрытом слое(n_h) и выходном слое(n_y).
(2)
(3),
где np.random.randn - это функция, которая генерирует несколько выборок, соответствующих нормальному распределению.
Процесс обучения сводится к тому, чтобы минимизировать функцию стоимости. Функция стоимости[4]:
(4),
где m – количество обучающих примеров, a – выходные результаты, y – фактические результаты.
Чтобы минимизировать функцию стоимости, нам нужно отрегулировать размер параметров (весов). Сначала мы рассчитываем выход по прямому распространению. В этом процессе мы используем сигмоидальную функцию активации. Затем используем алгоритм обратного распространения ошибки для настройки параметров сети (весов). При этом, во время обучения происходит уменьшение ошибок между выходным слоем и ожидаемым значением[5].
Для исключения переобучения оптимизируем нейронную сеть, изменяя значение λ – параметра регуляризации[6]. При этом оставим фиксированное значение числа итераций, равное 5000. Для λ мы последовательно использовали значения 0,01, 0,1, 1, чтобы вычислить функцию потерь. Результаты приведены на рис.5.
Рис. 5. Функция потерь для разных значений параметра регуляризации λ
Как видно из рисунка, для λ = 0,01, функция потерь относительно мала, поэтому мы именно это значение используем в дальнейших расчетах.
После 5000 итераций, остановив обучение, мы получим лучшие значения весовых параметров и сохраним их в файлах W1, W2, которые будем использовать для работы с тестовым набором.
На рис.6 приведены результаты значений функции стоимости при изменении количества итераций. Как следует их полученных данных значение функции стоимости уже начиная с 3500 итерации изменяется незначительно от 0, 69 к 0,63 для 5000 итераций.
Рис. 6. Изменение функции потерь при увеличении количества итераций
Таким образом, обучение сети проводилось при следующих параметрах:
количество обучающих итераций = 5000,
скорость обучения = 0,2,
параметр регуляризации λ = 0,01.
Результаты тестирования
Для тестирования использовался набор из 20% (60) записей случайным образом выделенный 310 записей [2] На рис.7 приведены результаты тестирования, из которого видно, что точность тестирования 83%. На этом же рисунке можно увидеть и несовпадения предсказанного и тестового результатов. В частности это касается Hernia-Normal.
Рис. 7. Результат теста
Тем не менее, полученная точность для такого, не слишком большого набора данных, содержащего к тому же существенно разнохарактерные признаки вполне удовлетворительна.
Выводы
В этой статье рассматривается использование нейронных сетей для определения состояния позвоночника пациента на основе определенных биомеханических признаков пациента, точность тестовой выборки более 80%.
На основе выполненной исследовательской и аналитической работы можно сделать вывод о том, что основная задача аналитика, использующего нейронные сети для решения какой-либо проблемы, - создать наиболее эффективную архитектуру нейронной сети, то есть правильно выбрать вид нейронной сети, алгоритм её обучения, количество нейронов и виды связей между ними[7].
Для оптимизации нейронной сети, следует использовать:
• нейронную сеть с более сложной структурой, например сверточную
• улучшить обучающий набор, увеличить при надобности
• методы по ускорению вычислений
Список источников и литературы
Развитие и развитие заболеваний позвоночника – [Электронный ресурс] – 16 марта 2015 – Режим доступа: https://wenku.baidu.com/view/94c25684700abb68a882fb3c.html
Датасет Энрике да Мота http://archive.ics.uci.edu/ml/datasets/vertebral+column
Нормализация / стандартизация машинного обучения – [Электронный ресурс] – 7 августа 2017 – Режим доступа: https://www.jianshu.com/p/f9bde6a37d75
Л.И. Воронова, В.И. Воронов. MachineLearning: Регрессионные методы интеллектуального анализа данных: учебное пособие – МТУСИ, 2018 – 81 с.
Чао Чао , BP нейронная сеть: от принципа к применению – [Электронный ресурс] – 1 октября 2017 – Режим доступа: https://gitbook.cn/books/59e42d6143757a535fe26a70/index.html
AndrewNgMachineLearning Курс Стенфордского университета 2018г – Режим доступа: https://www.coursera.org/learn/machinelearning
Нейронные сети: варианты использования – [Электронный ресурс] – Режим доступа: http://md-it.ru/articles/html/article19.html