NeuroPro

нейронные сети
и анализ данных

Начало
Новости
Услуги
Нейронные сети
Программы
Статьи
Заметки
Ссылки
Вопросы и ответы
Об авторе / контакты
Заметки

Алгоритм обратного распространения ошибки - высокая технология

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

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

А задач и возможностей возникает множество:

  • Обучение нейронной сети (ведь необученная нейросеть бесполезна). Градиент (вектор первых производных сложной функции), вычисленный алгоритмом обратного распространения, позволяет использовать всю широту теории градиентной оптимизации - можно применять множество алгоритмов для обучения нейронных сетей. Правда, это доступно только для "пакетного" обучения, т.е. для обучения по суммарному градиенту обучающей выборки, а не для попримерного обучения (которое для сложных задач оказывается всё же эффективнее и в теории, и на практике - см. заметку), но, тем не менее, не всякая теория идентификации систем может похвастаться сверхлинейной скоростью сходимости-обучения (а для нейросети это становится возможным при применении метода сопряженных градиентов).
  • Возможность использования целевой функции, состоящей из нескольких слагаемых (каждая компонента штрафует за отклонение от некоторого заданного пользователем аспекта). Не везде в статистике, методах восстановления зависимостей и в теории идентификации систем это возможно - а алгоритм обратного распространения такую целевую функцию продифференцирует без проблем (требуется только непрерывная дифференцируемость). Это позволяет ставить и решать для нейросети и на нейросети задачу оптимизации с ограничениями разнообразного вида.
  • Возможность "обучения" коэффициентов в самой целевой функции - поскольку методу совершенно всё равно, где кончается целевая функция и начинается нейронная сеть.
  • Возможность "обучения" входных сигналов нейронной сети. Требуется для коррекции обучающей выборки методом clearning, для решения обратных задач на нейросетях, которые обучены решению прямой задачи.
  • Повышение устойчивости нейросети к колебаниям значений её весов синапсов (если далее планируется нейросеть перенести на нестабильную электронную элементную базу, например, аналоговую). При обучении нейросети методом flat minima search находится такое сочетание значений весов синапсов, которое малочувствительно к искажениям.
  • Сокращение избыточности нейросети - исключение избыточных элементов. Тоже может быть полезно при последующем переводе нейронной сети в электронный вид, но снижает устойчивость точности решения к отказам элементов сети (поскольку теряется дублирование внутри сети). Но можно ставить одновременную задачу и сокращения лишнего, и "размазывания" навыка решения задачи сетью по остающимся у неё элементам (т.е. снижать чувствительность решения к отказам элементов и заставлять нейросеть простраивать-таки схемы дублирования вычислений). Аналогично - и для задачи сокращения числа входных сигналов в нейросети
  • Извлечение знаний из нейронной сети - определение, какие значения (или интервалы значений) переменных соответствуют границам между классами в задаче классификации или областям многозначности/разрывности в задаче восстановления зависимостей. Отбор обучающих примеров, соответствующих этим областям некорректности (для последующего анализа подобных ситуаций).
  • Выделение поднабора обучающих примеров, на которые необходимо обращать основное внимание при обучении нейросети (остальные примеры можно отбросить или возвращаться к ним гораздо реже). Не все методы отбора примеров используют производные - но и с использованием только производных можно выделять важнейшие примеры и ускорять обучение сети.
  • и т.д.
Для кого-то будут неочевидными способы реализации отдельных указанных возможностей на основе вычисленных методом обратного распространения ошибки производных - но по каждому пункту можно указать конкретные научные работы.

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

Однако, учебники по нейронным сетям такое подробное изложение перечисленных возможностей и схем их решения не дают - например, я это отмечал для книги С.Хайкина. И изложение там ведется без акцента на универсальность принципа вычисления производных для произвольных по сложности критериев (единственное требование - дифференцируемых). Также нет указания на то, что метод обратного распространения может быть с пользой применен не только для нейронных сетей, но и в практических задачах идентификации систем (для расчета нужных производных), и может развить теорию идентификации систем возможностями решения перечисленных здесь задач (просто надо переписать алгоритмы на другой "язык", не упоминая нейросети и пользуясь терминами из другой области науки). Таким образом, имеется технология в виде набора методов/действий, абстрагируемая от узких наук и их терминов и применимая к задачам восстановления зависимостей для обеспечения нужных свойств моделей/систем, отражающих-реализующих эти зависимости. И требованиями-ограничениями будут только требование однократной непрерывной дифференцируемости и графовое представление модели и надстроенных над моделью критериев. Можно даже сформулировать методологическое требование-максиму: "приводи всё к дифференцируемому и графовому виду, дифференцируй алгоритмом обратного распространения и используй производные для коррекции параметров модели или внешних переменных".

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