как сохранить нейросеть после обучения

Как хранить веса связей многослойной нейронной сети после обучения?

Подскажите пожалуйста как лучше хранить веса связей многослойной нейронной сети после обучения?
Я только пытаюсь «въехать» в данное направление. В моём дилетантском представлении их нужно записывать в таблицу БД и для каждого слоя должна быть своя таблица БД. А может всё в одну таблицу запихнуть? Не знаю.
У кого есть опыт или кто сталкивался с данным вопросом посоветуйте пожалуйста.

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

Функция обучения нейронной сети
добрый день. «TRAIN вызывает функцию, которая задается NET.trainFcn, использующую параметры.

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

Не работает процедура обучения нейронной сети
Здравствуйте! Я написал свой класс нейронной сети, но обучение по алгоритму обратного.

Решение

Под «счётчиком» я имел в виду значение целочисленной переменной, в которой лежит общее количество чего-то как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения
Т.е. «счётчик»<>«индекс».
У каждого слоя сохранять его индекс совсем не нужно.

Иными словами. Я (для ООП) предлагал структуру вида:
1) Число входов сети
2) Число слоёв
3а) Число нейронов в слое1
3б) Веса слоя1 (а число их при чтении рассчитаем как произведение числа входов слоя на число нейронов в нём, плюс бивисы)
4а) Число нейронов в слое2
4б) Веса слоя2
.

Источник

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

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

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

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

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

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

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Отсюда получаем первую рекомендацию по борьбе с переобучением:

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

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

На русский язык его переводят как «метод прореживания» или «метод исключения» или же просто, говорят «дропаут».

Цель этого метода – снизить специализацию каждого отдельного нейрона и сделать из них «специалистов более широкого профиля». Именно в этом корень проблемы переобучения. Но как уменьшить специализацию, сохраняя прежнее число нейронов? Очень просто. Давайте снова представим, что в некоторой школе работают учителя по различным предметам: химия, биология, история, математика, физика, география и информатика. Это их специализация. Затем, в какой-то момент времени директор школы озаботился их приверженностью только одной дисциплине и решил расширить горизонты их деятельности. Что он сделал? Он заставил учителя по химии время от времени вести занятия по физике, учителя по физике – химию, математика менялась с информатикой, а биология, история и география – между собой. В итоге, учителям волей-неволей пришлось изучить смежные дисциплины и расширить свою специализацию. Теперь, директор школы был доволен и знал, если какой-то отдельный учитель заболеет или уволится, у него будет кем его заменить.

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Теперь, осталось понять, как проделать тот же фокус с нейронами нейронной сети? Как в процессе обучения им «сказать», чтобы они брали на себя функции других нейронов? Решение просто до гениальности: на каждой итерации изменения весовых коэффициентов часть нейронов нужно исключать с заданной вероятностью p:

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Это эквивалентно ситуации, когда часть учителей заболела и остальные вынуждены их заменять. Причем, в следующий момент, уже другие учителя уходят на больничный, а оставшиеся их заменяют. В результате, расширяется специализация всех учителей школы. Именно это происходит с нейронами в алгоритме dropout, которые то выключаются, то включаются. В какой же момент происходит их переключение? Как я выше отмечал – на каждой итерации изменения весов. Например, если веса меняются после каждого mini-batch, значит, переключение происходит после него. Если же веса меняются при каждом новом наблюдении, значит и переключение происходит с той же частотой. И так далее, то есть, мы переключаемся после каждой корректировки весовых коэффициентов.

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

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

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

В режиме эксплуатации значение на входе нейрона будет x, а в момент обучения значение:

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Как вы понимаете, это приводит к искаженным входным значениям, а значит, и к неверным результатам на выходе всей НС. Как поправить ситуацию, чтобы, в среднем, эти суммы были равными? Для этого нужно вычислить среднее число выключенных нейронов в текущем слое. Пусть их будет n штук. А понятие среднего в теории вероятностей – это математическое ожидание, которое в дискретном случае определяется выражением:

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

У нас роль СВ X играет число исключенных нейронов в текущем слое; как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения— вероятность выключения; как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения— число нейронов, к которым применяется эта вероятность. Получаем среднее значение:

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

А среднее число оставшихся нейронов, будет равно:

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

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

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

И из этого выражения хорошо видно, что для сохранения масштаба суммы, ее нужно разделить на величину q:

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Во многих фреймворках алгоритм Dropout реализован именно так: суммарный сигнал на входах нейронов масштабируется, эмулируя поведение полной сети со всеми нейронами. Благодаря этому, в среднем, выходной сигнал сети соответствует истинным значениям и при ее эксплуатации (со всеми включенными нейронами) не будет возникать «сюрпризов».

Итак, мы приходим ко второй рекомендации в борьбе с переобучением:

Рекомендация №2: если наблюдается переобучение и сокращение числа нейронов недопустимо (по тем или иным причинам), то следует попробовать метод Dropout.

Здесь остается один открытый вопрос: как выбирать значение вероятности p? Авторы этого подхода рекомендуют для нейронов скрытого слоя начинать со значения p=0,5. От себя добавлю, что, затем, при необходимости можно пробовать значения 0,4 и 0,3.

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

Реализация Dropout в Keras

Используемый нами пакет Keras, для построения и обучения НС позволяет применять алгоритм Dropout к любому отдельному слою. Для демонстрации его работы я смоделировал искусственный пример переобучения распознавания цифр. Взял маленькую обучающую выборку в 5000 изображений. Столько же отвел для проверочной. Число нейронов скрытого слоя установил в 300 – это явно много для таких выборок и такой задачи. Неизбежно должны возникнуть проблемы при обучении. Так и происходит. После 50 эпох мы видим расходящиеся графики:

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Теперь, применим к скрытому слою из 300 нейронов алгоритм Dropout с параметром p=0,8 (я специально взял его таким большим, чтобы был виден эффект):

То есть, мы записываем Dropout после слоя, к которому он применяется. Теперь после обучения у нас возникает следующая картина:

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Смотрите, здесь качество обучения на проверочной выборке уже не ухудшается и составляет величину, примерно, 0,22. Тогда как в предыдущем случае она почти достигала значения 0,3. Dropout здесь явно сыграл свою положительную роль.

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

Видео по теме

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Нейронные сети: краткая история триумфа

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Структура и принцип работы полносвязных нейронных сетей | #1 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Ускорение обучения, начальные веса, стандартизация, подготовка выборки | #4 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Функции активации, критерии качества работы НС | #6 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Как нейронная сеть распознает цифры | #9 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Оптимизаторы в Keras, формирование выборки валидации | #10 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Batch Normalization (батч-нормализация) что это такое? | #12 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Как работают сверточные нейронные сети | #13 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Делаем сверточную нейронную сеть в Keras | #14 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Примеры архитектур сверточных сетей VGG-16 и VGG-19 | #15 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Теория стилизации изображений (Neural Style Transfer) | #16 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Делаем перенос стилей изображений с помощью Keras и Tensorflow | #17 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Как нейронная сеть раскрашивает изображения | #18 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Введение в рекуррентные нейронные сети | #19 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Как рекуррентная нейронная сеть прогнозирует символы | #20 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Делаем прогноз слов рекуррентной сетью Embedding слой | #21 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Как работают RNN. Глубокие рекуррентные нейросети | #22 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Как делать сентимент-анализ рекуррентной LSTM сетью | #24 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Рекуррентные блоки GRU. Пример их реализации в задаче сентимент-анализа | #25 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Двунаправленные (bidirectional) рекуррентные нейронные сети | #26 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Автоэнкодеры. Что это и как работают | #27 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Вариационные автоэнкодеры (VAE). Что это такое? | #28 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Делаем вариационный автоэнкодер (VAE) в Keras | #29 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Расширенный вариационный автоэнкодер (CVAE) | #30 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Что такое генеративно-состязательные сети (GAN) | #31 нейросети на Python

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Делаем генеративно-состязательную сеть в Keras и Tensorflow | #32 нейросети на Python

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

Источник

Deep Learning: Transfer learning и тонкая настройка глубоких сверточных нейронных сетей

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

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Цикл статей «Deep Learning»

Примечание: далее повествование будет вестись от имени автора.

Введение

Распространенной причиной потери зрения является диабетическая ретинопатия (ДР) — заболевание глаз при диабете. Исследование пациентов с помощью флюоресцентной ангиографии потенциально способно снизить риск слепоты. Существующие тенденции исследований показывают, что глубокие сверточные нейросети (ГСНС) весьма эффективны для автоматического анализа больших наборов изображений и для выявления отличительных признаков, по которым можно распределить изображения на разные категории практически без ошибок. Обучение ГСНС редко происходит с нуля из-за отсутствия заранее заданных наборов с достаточным количеством изображений, относящихся к определенной области. Поскольку для обучения современных ГСНС требуется 2–3 недели, центр Berkley Vision and Learning Center (BVLC) выпустил итоговые контрольные точки для ГСНС. В этой публикации мы используем заранее обученную сеть: GoogLeNet. Сеть GoogLeNet обучена на большом наборе естественных изображений ImageNet. Мы передаем распознанные весов ImageNet в качестве начальных для сети, затем настраиваем заранее обученную универсальную сеть для распознавания изображений флюоресцентной ангиографии глаз и повышения точности предсказания ДР.

Использование явного выделения отличительных признаков для предсказания диабетической ретинопатии

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

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

Глубокая сверточная нейросеть (ГСНС)

Для выделения отличительных признаков в изображениях требуются экспертные знания. Функции выделения в ГСНС автоматически формируют изображения для определенных областей, не используя никакие функции обработки отличительных признаков. Благодаря этому процессу ГСНС пригодны для анализа изображений:

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения
Слои C — свертки, слои S — пулы и выборки

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

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Опрос. Pooling layer берет небольшие прямоугольные блоки из сверточного слоя и проводит подвыборку, чтобы сделать из этого блока один выход.

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

В этой публикации мы используем ГСНС GoogLeNet, разработанную в Google. Нейросеть GoogLeNet выиграла конкурс ImageNet в 2014 году, поставив рекорд по наилучшим единовременным результатам. Причины выбора этой модели — глубина работы и экономное использование ресурсов архитектуры.

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Transfer learning и тонкая настройка глубоких сверточных нейросетей

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

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

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

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

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

Существует множество способов дополнения данных, например, зеркальное отображение по горизонтали, случайная обрезка, изменение цветов. Поскольку цветовая информация этих изображений очень важна, мы применяем лишь поворот изображений на разные углы: на 0, 90, 180 и 270 градусов.

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения
Замена входного слоя заранее обученной сети GoogLeNet на изображения ДР. Мы проводим тонкую настройку всех слоев, кроме двух верхних заранее обученных слоев, содержащих универсальные веса.

Тонкая настройка GoogLeNet. Используемая нами сеть GoogLeNet изначально была обучена на наборе данных ImageNet. Набор данных ImageNet содержит около 1 млн естественных изображений и 1000 меток/категорий. В нашем размеченном наборе данных ДР содержится около 30 000 изображений, относящихся к рассматриваемой области, и четыре метки/категории. Следовательно, этого набора данных ДР недостаточно для обучения сложной сети, какой является GoogLeNet: мы будем использовать веса из сети GoogLeNet, обученной по ImageNet. Мы проводим тонкую настройку всех слоев, кроме двух верхних заранее обученных слоев, содержащих универсальные веса. Первоначальный слой классификации loss3/classifier выводит предсказания для 1000 классов. Мы заменяем его новым двоичным слоем.

как сохранить нейросеть после обучения. Смотреть фото как сохранить нейросеть после обучения. Смотреть картинку как сохранить нейросеть после обучения. Картинка про как сохранить нейросеть после обучения. Фото как сохранить нейросеть после обучения

Заключение

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

Если вы увидели неточность перевода, сообщите пожалуйста об этом в личные сообщения.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *