Медицинская нейроинформатика
Стратегия и тактика обучения нейронных сетей
Под стратегией обучения нейросетей понимается общий план обучения, включающий разбивку задачи на подзадачи, определение типа и количества нейросетей, обучаемых по каждой из них, предварительные параметры сетей, планирование действий в случае возможных затруднений.
Тактика представляет собой возможное вмешательство оператора в процесс обучения с целью его ускорения, подстройки некоторых параметров, а также оптимальные действия при невозможности дальнейшего обучения сети.
Сформулируем цель обучения, на достижение которой направлены стратегия и тактика. Целью будем считать полное на данном задачнике обучение нейросети (набора нейросетей-экспертов) с минимально возможным числом подстраиваемых связей, максимально возможной характеристикой и максимально возможным уровнем надежности (минимальным уровнем отклонения). Дополнительным условием может быть минимальное (или определенное пользователем) число входных сигналов.
Критерием достижения цели будем считать результат тестирования набора примеров с известными ответами, не входящих в обучающую выборку. Требуемый результат определяется пользователем.
Рассмотрим, как влияют на качество и длительность обучения некоторые параметры. В таблица 5.3 сведены зависимости между обучением (требуемым временем и качеством) сети, ее параметрами, особенностями задачи и используемого компьютера.
Параметр | Длительность обучения | Качество обучения |
---|---|---|
Увеличение тактовой частоты компьютера | - | |
Вывод информации в процессе обучения на экран в графическом режиме (по сравнению с текстовым режимом) | - | |
Увеличение количества примеров | ||
Увеличение количества обучающих параметров | ||
Увеличение количества классов (в классификаторах) | ||
Увеличение размерности вектора ответа (в предикторах) | ||
Близкое количество примеров каждого класса (в классификаторах) | ||
Повышение уровня надежности (в классификаторах) | ||
Повышение уровня отклонения (в предикторах) | ||
Увеличение числа нейронов | ||
Увеличение параметра плотности | ||
Увеличение времени отклика сети | ||
Увеличение характеристики |
Разработанная методология включает две стратегии: с участием пользователя и без него. Автоматизированное выполнение стратегии может проводиться в двух вариантах - повторять принципы "ручной" стратегии, или использовать другие правила. Кроме того, стратегии автоматического обучения подразделяются еще на два класса - стратегии решения подзадачи и стратегии решения единой задачи, состоящей из взаимосвязанных (параллельно или иерархически) подзадач. Мы заранее отказались от "ручной" стратегии решения единой комплексной задачи, так как, во-первых, они встречаются не так уж часто, во-вторых, при их решении (особенно при достаточно большом количестве связанных подзадач) число подстраиваемых параметров, за которым необходимо следить пользователю, может очень сильно вырасти.
Примером может служить минимизация набора обучающих параметров в системе из нескольких иерархически связанных нейросетей, одни из которых используют для выдачи результата ответы других как входные параметры. Следует заметить, что пользователь вовсе не должен обладать знаниями этих стратегий. Именно для такого случая и разработаны автоматизированные стратегии обучения. Рассмотрим вначале принципы "ручной" стратегии для решения одной подзадачи (сведенной к элементарной - классификации или предикции).
Как правило, первый стратегический шаг для решения подзадачи - создание нейросети с параметрами, максимально выгодными для подтверждения факта принципиальной возможности обучения. В этом случае задается число нейронов и плотность, равные исходному количеству обучающих параметров (в случае классификационных задач эти параметры можно еще увеличить на число классов в задаче). Задаются минимальные значения времени отклика нейросети, характеристика и уровня надежности (для предикторов - требуемый уровень допустимого отклонения). Если такая нейросеть обучается успешно, можно считать, что задача имеет закономерности, связывающие входные параметры и результат.
Далее желательно найти максимальный уровень надежности (в классификаторах) или минимальный уровень отклонения (для предикторов), с которым может обучиться сеть. Для этого нет необходимости генерировать новую нейросеть. Разработанный нами программный инструментарий (программы " MultiNeuron 1.0 " и " MultiNeuron 2.0 Professional ") позволяет задать режим доучивания с автоматическим ступенчатым повышением уровня надежности. Это означает, что после каждого успешного полного обучения уровень надежности будет автоматически повышаться на заданную пользователем величину (шаг), и обучение будет продолжаться, пока не перестанет быть возможным. После окончания процесса предыдущий уровень надежности, при котором сеть обучилась полностью, и является максимально возможным для данной сети.
В случае предикторов используется понятие уровня отклонения, который определяет максимальное расхождение между требуемым (заранее известным) и вычисляемым сетью ответами, при котором пример считается правильно распознанным. При этом качество обучения тем выше, чем меньший уровень отклонения позволяет сети тестировать все примеры правильно, т.е. увеличивается точность ответа сети. Автоматический режим при этом снижает уровень отклонения после каждого полного обучения. Минимально возможный уровень отклонения равен нулю (абсолютное совпадение ответов) и практически не может быть достигнут.
Один из принципов стратегии - создание и обучение для каждой подзадачи не одной, а нескольких нейросетей. Желательно создать несколько сетей с разными характеристиками и после их обучения сравнить их прогностические способности. Весьма вероятно, что при тестировании контрольной выборки разными нейросетями у каждой из них будут свои собственные ошибки. Решение в таком случае принимается на основании голосования и сравнения коэффициентов уверенности каждой из сетей.
Как правило, классификаторы, распознающие несколько классов одновременно, обучаются несколько хуже, чем бинарные классификаторы. В наших исследованиях встречались ситуации, когда задача с 5 классами не могла быть решена одним 5 -классовым классификатором, а система из нескольких бинарных классификаторов прекрасно решала задачу. В подобных ситуациях есть несколько способов решения проблемы.
Изменение весов классов.
При обучении классификатора каждому классу задачи можно присвоить вес - "степень внимания", которая будет уделяться нейросетью примерам данного класса. Исходно веса всех классов равны единице. При увеличении веса какого-либо класса оценка каждого примера, принадлежащего этому классу, будет умножаться на его вес. Таким образом, нейросеть будет прилагать особые усилия для распознавания примеров этого класса. При задании нулевого веса оценки всех примеров класса будут равны нулю и эти примеры будут считаться распознанными. Практически это эквивалентно исключению всех примеров класса из обучения.
Изменение весов классов - элемент как стратегии, так и тактики. В стратегическом плане можно спроектировать систему "малых экспертов". Если задача включает, например, 3 класса, можно использовать 3 нейросети, каждая из которых обучается с повышенным весом "своего" класса. В итоге такая нейросеть будет различать все 3 класса, но "свой" класс - особенно хорошо. При тестировании примера решение принимается опять таки голосованием с учетом особого мнения "экспертов".
Разделение задачи.
Если одна нейросеть не может обучиться различать несколько классов или делает это недостаточно хорошо, можно разделить задачу между несколькими разными сетями (принцип, основанный на дихотомии). Это делается следующим образом. Предположим, задача имеет 4 класса. Создается 3 бинарных классификатора. Первый обучается отличать примеры 1 класса от примеров 2, 3 и 4 классов, объединенных в один класс. Второй бинарный классификатор обучается отличать примеры 2 класса от примеров 3 и 4 класса, также объединенных в один класс. Третья сеть обучается различать примеры 3 и 4 класса. Тестирование примера при этом осуществляется так: пример подается первой сети. Если она относит его к 1 классу, ответ и есть 1 класс, тестирование прекращается. Если сеть относит пример ко 2 классу, это означает, что на самом деле он может принадлежать 2, 3 или 4 классам. Поэтому пример подается второй сети. В зависимости от ее ответа тест может остановиться или продолжиться третьей сетью. В такой системе пример в конце концов оказывается распознанным.
Для предикционных задач подобный способ неприемлем по причине отсутствия классов, поэтому простейший способ - вычисление среднего ответа у нескольких нейросетей. Более сложный метод - привлечение классификаторов для решения предикционных задач. В случае одномерной предикции можно разбить интервал значений ответа на несколько участков (необязательно равных) и обучить классификатор распознавать, к какому участку принадлежит пример. Если точности ответа недостаточно, для каждого участка создается и обучается свой предиктор, умеющий определять ответ только у примеров, отнесенных классификатором к этому участку. Здесь мы наблюдаем иерархическую систему нейросетей, в которой предикторы подчинены "центральному" классификатору. Подобная система может работать и в задачах классификации, когда число классов слишком велико.
После успешного обучения по вышеприведенным схемам желательно переобучить сети с повышением характеристики, особенно в случае недостаточно удовлетворительных результатов контрольного тестирования.
В общем случае, уменьшение количества связей нейросети (путем контрастирования существующей сети или обучения новых сетей с меньшим числом нейронов и плотностью) лучше всего производить в последнюю очередь, после того, как были настроены предыдущие параметры и результаты тестирования по-прежнему высоки. То же касается и минимизации входных параметров, которая, так же как и принципы автоматической стратегии, будут рассмотрены ниже.
Тактика обучения.
В подавляющем большинстве случаев при обучении сети не требуется никакого вмешательства в этот процесс. Однако все же бывают ситуации, когда сеть не может обучаться. Здесь требуются некоторые действия пользователя, которые мы называем "тактикой обучения". Как правило, нейросеть перестает обучаться не сразу, а через некоторое время после начала процесса. При этом нейросетевая программа сигнализирует оператору о невозможности дальнейшего обучения и в простейшем случае останавливает процесс.
Первое, что необходимо сделать - проверить корректность заданных параметров нейросети. Самая простая причина - недостаточное количество нейронов, малая плотность или слишком высокая характеристика. Если же все параметры заданы оптимально, можно применить специальное средство, называемое "удар".
Удар может помочь в ситуации, когда сеть попадает в локальный минимум при минимизации целевой функции обучения. Когда производится удар, в карту синаптических весов вносится случайный вклад, максимальная величина которого задается заранее. Новое значение синаптического веса вычисляется по формуле
x = x 0 + B * (Random - 0,5) (4)
где x - новое значение синаптического веса, x0 - исходное значение синаптического веса, B - заданный уровень удара (в диапазоне 0..1 ), Random - случайно сгенерированное для данного синаптического веса число (в диапазоне 0..1 ).
После удара обучение продолжается. Проведенные эксперименты показывали, что особенно эффективен удар у сетей с адаптивной матрицей входных сигналов. Задание оптимального уровня удара вручную может потребовать некоторого опыта пользователя. Для этого желательно наблюдать за динамикой снижения средней оценки на протяжении нескольких десятков циклов до момента остановки обучения. Если за этот период оценка снижалась быстро, лучше задавать уровень удара в пределах 0,1-0,2. Если оценка на протяжении многих циклов "зависла" около какого-либо значения, следует задать небольшой уровень удара ( 0,0001 - 0,001 ). Задание максимального уровня удара ( 1,0 ) практически полностью обновляет карту весов, что равнозначно инициализации новой сети.
Частое применение удара небольшого уровня может быть полезным для создания помехоустойчивых нейросетей.
В разработанных нами нейросетевых программах используется как ручной, так и автоматический режимы удара. В последнем случае после остановки обучения программа производит удар и продолжает обучение. Только если после трех (или количества, определенного пользователем) попыток удара обучение по-прежнему невозможно, программа останавливает процесс.
Если и применение удара не приносит эффекта, причину невозможности обучения следует искать в обучающей выборке. Как уже говорилось, самая частая причина - наличие в выборке идентичных по обучающим параметрам примеров, имеющих различный ответ. В принципе, это почти тупиковая ситуация, и единственным выходом из нее является увеличение количества обучающих параметров, при котором добавленные параметры будут различными у таких примеров. В самом деле, очевидно, что различные ответы в такой ситуации определяются факторами, не нашедшими отражение в обучающих параметрах. В простейшем случае можно исключить один из идентичных примеров, однако в таком случае в экспертную систему заранее закладывается возможность ошибки.
Невозможность дальнейшего обучения в классификаторах иногда может быть спровоцирована неверной постановкой задачи, точнее, заданной классификационной моделью. Например, при бинарной классификации примеры одного из классов представляют на самом деле два различных подкласса, группирующихся по параметрам "по разные стороны" от другого класса задачи. В этом случае можно использовать нейросеть для коррекции классификационной модели путем кластеризации примеров.
Существует несколько методов нейросетевой кластеризации, наиболее простой из которых заключается в последовательном исключении из процесса обучения наиболее трудных примеров с помощью "слабых" нейросетей, настройка параметров которых заранее не дает возможности для полного обучения (например, слишком малое число нейронов). В процессе прохождения каждого цикла обучения программа отслеживает самый трудный пример на этом цикле - пример с наибольшей оценкой. После захода сети в тупик можно исключить этот пример из дальнейшего обучения, пометив его, и продолжить процесс. В конце концов может накопиться некоторое количество исключенных примеров, после чего сеть обучится полностью. Часто получается, что все исключенные примеры принадлежат только одному из классов задачи, что является свидетельством неоднородности класса. Это можно проверить путем обычных статистических методов, сравнив группу исключенных примеров как с оставшимися примерами этого же класса, так и с примерами других классов. Различия могут послужить поводом для изменения классификационной модели.
Это не самый лучший способ кластеризации, однако он может с успехом применяться как при создании экспертных систем, так и в научных исследованиях для изучения различных явлений. По сравнению с многочисленными существующими способами кластеризации он имеет определенное преимущество, заключающееся в возможности "наведенной" кластеризации, т.е. такой, к которой пользователь "подталкивает" программу, не зная заранее точных критериев - параметров, по которым ее следует проводить, и имея лишь интуитивное представление о возможном результате. В практике врача-исследователя такое может встречаться довольно часто, например, когда он интуитивно относит какие-либо 2 примера к разным классам, однако не может формализовать принцип разделения. Применение нейросети может помочь в этом случае найти закономерность и экстраполировать ее на большой набор данных.
Как уже говорилось, изменение весов классов может считаться тактическим действием, так как может осуществляться прямо в процессе обучения. Поводом для изменения веса класса обычно служит его средняя оценка, значительно (в несколько раз) превосходящая оценки остальных классов.