История исследования
искусственных нейронных сетей (ИНС) насчитывает уже около 50
лет. За это время интерес к ИНС то возрастал, то ослабевал.
Однако число публикаций, посвященных ИНС, и сообщений о
создании прикладных систем с использованием ИНС неуклонно
растет. ИНС зарекомендовали себя в качестве полезного
инструмента во многих приложениях [],
которые можно рассматривать как системы обработки
информации.
В литературе имеется множество
как работ, посвященных отдельным реализациям ИНС различных
авторов, так и обзоров, рассматривающих различные направления
создания систем обработки информации с использованием ИНС.
Однако все это многообразие информации дает несколько
мозаичное представление о данной теме.
Поэтому в настоящей работе
вопросы практической реализации ИНС будут рассматриваться на
базе опыта, накопленного отдельным разработчиком в ходе
создания систем обработки изображений с использованием ИНС.
Такой подход, конечно, в некотором роде сужает предмет
рассмотрения, ограничивая его только теми парадигмами и
приложениями ИНС, которые нашли применение в конкретных
разработках. Зато он позволит проиллюстрировать как
проверенные практикой подходы, так и их гносеологию. И в целом
создать пусть и не всеобъемлющую (базирующуюся на опыте только
отдельного разработчика, хотя и с ретроспективой), но
законченную картину создания приложений определенного класса с
использованием ИНС.
В области ИНС работают и
отдельные исследователи и коллективы. Один из таких
коллективов – НТЦ “Модуль”, где в ходе многолетних
исследований были выработаны свои подходы к практическому
использованию ИНС.
Таки образом цель настоящего
материала заключается в том, чтобы продемонстрировать
подходы к реализации систем обработки информации, в том числе
и на базе ИНС, выработанные в ходе работ, провидимых в НТЦ
“Модуль”. Кроме того – высветить проблемы, встающие пред
разработчиками аппаратных реализаций ИНС, по возможности,
предложить пути их решения.
Главная цель, ради которой тут
рассматриваются ИНС – создание приложений. Под приложением
понимается законченный аппаратно-программный комплекс,
решающий конкретные прикладные задачи, который можно
рассматривать как систему обработки информации. В такой
системе ИНС могут быть одним из некоторой совокупности методов
обработки информации. При таком подходе место ИНС в структуре
прикладной системы обработки информации отображает Рисунок
1.
Рисунок 1. Место ИНС в системе
обработки информации.
Так, например, для системы
обработки изображения вводом информации может быть реализован
посредством видеокамеры, вывод – на основании монитора,
отображающего результаты обработи. Подобное обрамление ИНС
влияет на выбор аппаратной платформы, которая должна оказаться
одинаково удобной как для воспроизведения ИНС, так и для
стыковки с другими частями системы обработки
информации.
При подобном подходе к ИНС как
к составной части системы обработки информации ее практическая
реализация связана с решением таких задач, как:
·
определение структуры обработки информации и места ИНС
в ней;
·
выбор аппаратной платформы для реализации;
·
выбор парадигмы ИНС;
·
разработка методики подготовки ИНС к работе (подготовки
исходных данных и собственно обучения ИНС).
Первая из этих задач связана с
определением роли (удельного веса), которую ИНС должна играть
в процессе обработки информации. В значительной мере решение
этой задачи опирается на успехи, достигнутые к настоящему
времени в области обработки информации на базе ИНС. Однако
вопросы практической реализации определяют то, что первой
будет рассмотрена проблема выбора аппаратной платформы
реализации ИНС.
При аппаратной реализация ИНС
возможны два подхода:
·
использование нейровычислителей – аппаратное
моделирование структуры ИНС;
·
применение нейроэмуляторов – программное моделирование
вычислительного процесса в ИНС.
Очевидно, при реализации
прикладных задач последний подход более перспективен в силу
своей универсальности. Поэтому дальнейшее рассмотрение будет
вестись именно применительно к этому подходу.
Использование ИНС можно
рассматривать как один из способов обработки информации. В
этой трактовке реализация ИНС представляет собой создание
некоторого устройства, реализующего соответствующие
вычисления. Эти вычисления могут быть выполнены как в
аналоговой, так и в цифровой форме. Первый вариант наиболее
характерен для реализаций ИНС прошлых лет. Современное
развитие цифровой вычислительной техники определяет
преимущественное применение цифровых вычислительных
устройств.
Если говорить о цифровой реализации ИНС, то отдельный
нейрон можно рассматривать как некоторый элементарный
вычислитель (процессор). Весовые коэффициенты (синапсы) при
этом будут множителями, на которые следует умножать
соответствующие входные сигналы.
Очевидно, подобную схему вычислений легко
реализовать, например, на современном персональном компьютере
(ПК). В данном случае процессор ПК последовательно во времени
будет выполнять вычисления, соответствующие каждому из
нейронов ИНС, а весовые коэффициенты, а также входные и
выходные сигналы нейронов будут храниться в памяти ПК. Такой способ
реализации ИНС зачастую называют эмуляцией ИНС на
ПК.
При реализации приложений практические
потребности, зачастую не позволяют использовать указанный путь
реализации ИНС, поскольку может оказаться,
что:
·
производительность ПК недостаточна, чтобы реализовать
все необходимые операции с требуемым темпом;
·
габариты (устойчивость к внешним условиям, масса,
энергопотребление и т.п.) ПК не удовлетворяют требованиям,
предъявляемым в данном приложении.
В этих случаях говорят о необходимости
аппаратной поддержки вычислений.
Десятилетие назад, когда ПК только
начинали свое победоносное шествие, наиболее актуальной
являлась даже не вторая, а первая из указанных причин. Следует
сразу оговориться, что в данном контексте существующие тогда
«большие» вычислительные машины в качестве альтернативы ПК не
рассматриваются, поскольку заведомо не подходят для создания
приложений по критерию цены, габаритов, мобильности (и
т.п.)
В эпоху относительно малопроизводительных
ПК основной путь преодоления этого их недостатка
заключался в использовании многопроцессорных устройств. Этот
подход будет рассмотрен ниже, в частности, когда речь пойдет
об ускорительных платах.
К настоящему времени производительность
ПК многократно возросла. Появились также ПК в «защищенном»,
например, в индустриальном исполнении, снявшие отчасти
проблемы с работой систем обработки информации в жестких
условиях эксплуатации. Но возросли и потребные
производительности, поскольку по мере развития систем
обработки информации, задачи, которые ставятся перед ними,
существенно усложняются. В итоге путь добавления
производительности ПК за счет установки в него дополнительных
вычислительных устройств, например ускорительных плат,
сохраняет актуальность и в настоящее время.
С другой стороны, современный уровень
цифровой вычислительной техники позволяет сейчас создавать
устройства, обладающие как довольно высокой
производительностью, так и способные удовлетворить
специфические требования по габаритам, устойчивости к внешним
условиям и т.п., выдвигаемые различными
приложениями.
Таким образом, для исследовательских
работ в области ИНС в настоящее время вполне применима
стандартная аппаратная база в виде ПК. Однако, для создания
приложений, решающих практические задачи, требуется создание
специализированных аппаратных средств (Рисунок
2).
Другими словами, представляется
актуальным использования для реализации ИНС аппаратного
нейроэмулятора на базе цифрового вычислителя – процессора или
нескольких процессоров, работающих совместно. При создании
прикладных систем в качестве аппаратной базы зачастую
целесообразно использовать специализированный
вычислитель.
Рисунок 2.
Аппаратная база прикладных ИНС
Прежде
всего, следует определить
основные требования реализации
ИНС.
При
реализации ИНС важными
параметрами являются время
вычислений и точность. Как уже
говорилось выше, существенным
параметром является и объем
аппаратуры, требуемый для
реализации.
Под
временем вычислений понимается
время, требуемое всей ИНС для
формирования выходного
результата. Точность тут
рассматривается двояко – как
точность получаемого результата (на
выходе ИНС) и как точность
промежуточных вычислений (выход
отдельного нейрона).
В
контексте аппаратной реализации
ключевым словом в термине «ИНС»
является «сеть». Иначе говоря,
создание ИНС связано с
реализацией многократно
повторяющегося элемента (нейрона),
информационно соединенного с
другими такими же элементами,
окружающими его. С учетом этого
можно сформулировать основные
требования к аппаратным
средствам, предназначенным для
реализации ИНС в следующем виде:
·
минимизировать время
вычислений сети;
·
уменьшить объем используемой
аппаратуры;
·
обеспечить требуемую
точность вычислений.
Последнее
из приведенных требований
связано, в первую очередь, со
способом реализации элемента,
реализующего функции отдельного
нейрона. Два первых условия – с
выбором числа таких элементов.
Очевидно, они являются
противоречивыми.
Для
поиска компромиссного числа
элементов,
реализующих функции отдельного
нейрона, следует принять во
внимание следующие соображения.
Вычисления,
соответствующие отдельному
нейрону, имеют конечную
длительность
. При использовании только одного
вычислителя
, последовательно решающего
задачи каждого из
нейронов
сети, время вычислений сети
многократно увеличится
по сравнению с интервалом
, составив величину
.
Для
снижения времени вычислений сети,
проводимых всей сетью,
естественно увеличить число
элементов, реализующих функции
отдельного нейрона и работающих
параллельно во времени.
На
практике используются различные
структуры ИНС. Часто применяются
многослойные сети. Послойная
организация сети оказывает
влияние на пути ее практической
реализации. Пусть
нейронов
сети разбиты на
слоев.
Как правило, число нейронов в
разных слоях разное. Пусть
наибольшее число нейронов в
отдельном слое составляет
.
Послойная
структура ИНС определяет
необходимость проведения
вычисления сначала в первом слое,
затем – во втором, и так далее.
Другими словами, в отдельный
момент времени работают
вычислители (нейроны) только
одного слоя. Естественно при этом
должно быть обеспечено
поступление соответствующих
входных данных (выходы нейронов
предыдущего слоя) и фиксация
результатов вычислений.
Отсюда
следует, что для многослойной
сети все вычислители не смогут
работать одновременно. Даже если
число аппаратно реализованных
элементарных вычислителей равно
числу нейронов, то есть каждый
вычислитель работает в качестве
только одного нейрона
Другой
вывод – для многослойной ИНС
целесообразно использовать число
элементов, реализующих функции
отдельного нейрона и работающих
параллельно во времени, не
меньшим, чем число нейронов в
самом насыщенном слое
. В этом случае то время
вычислений сети составит
.
Следует
иметь в виду также следующее
обстоятельство. При практической
реализации ИНС с использованием
больше, чем одного вычислителя
встает
проблема обмена данными между
отдельными вычислителями.
Обеспечение эффективного обмена
данными между вычислителями
может привести к усложнению
аппаратной реализации. Поэтому
может оказаться целесообразным «разменять»
время вычислений сети на простоту
ее аппаратной реализации,
уменьшая число вычислителей
.
Из
приведенных рассуждений следует
важный практический вывод. Для
актуальной многослойной ИНС
увеличение числа элементов,
реализующих функции отдельного
нейрона, свыше наибольшего числа
нейронов в отдельном слое
не
приведет к сокращению времени
вычислений сети. Кроме того, не
всегда есть смысл использовать
даже такое
количество
элементов. Так, исходя из удобства
реализации связей между
нейронами, может оказаться
целесообразным использовать
уменьшенное по сравнению с
количеством нейронов в самом
насыщенном слое число
вычислителей
, а в пределе – только один
вычислитель
.
Как
упоминалось выше, применительно к
ИНС понятие «точность» имеет
двойной смысл.
Рассматривая
отдельный элемент (вычислитель),
реализующий функции отдельного
нейрона, следует говорить о
точности вычислений,
производимых им. Актуальность
такого рассмотрения определяется
ограниченностью разрядности
такого вычислителя.
Еще
более остро встает эта проблема,
если для эмуляции ИНС, работающей
с действительными числами,
используется вычислитель,
использующий целочисленную
арифметику. В этом случае,
используется масштабирование
обрабатываемых величин,
обеспечивающее переход от
действительных чисел к целым (и
обратно).
Однако
опыт показывает, что при
рациональном выборе параметров
ИНС даже использование
целочисленной арифметики
позволяет получать точность
вычислений, обеспечивающую
успешное решение прикладной
задачи
Второй
смысл понятия «точность» в данном
контексте связан с корректностью
результата, получаемого на выходе
ИНС. Пусть вычисления,
соответствующие отдельному
нейрону, проводятся с идеальной
точностью. Кроме того, для
цифровых устройств можно
погрешности хранения
промежуточных результатов
вычислений отсутствуют. Но даже в
этом случае результат, получаемый
на выходе ИНС, может быть далеким
от идеала. Рассматриваемая
точность выходного результата
зависит от того, насколько
корректно заданы параметры ИНС.
Под параметрами тут понимаются
структура сети, а для сетей,
использующих предварительное
обучение, еще и значения весовых
коэффициентов и смещений.
Указанные
параметры не связаны
непосредственно с аппаратной
реализацией сети, а определяются
на этапах конструирования сети (структура
сети) и подготовки ее к работе –
обучения (значения весовых
коэффициентов и смещений).
Целесообразно остановиться на
последнем этапе подробнее.
Наибольший
интерес при практической
реализации обычно представляют
ИНС, решающие задачи:
·
кластеризации;
·
классификации (при
использовании предварительного
обучения).
Применительно
к сетям, решающих задачи
классификации, цикл
функционирования можно разбить
на два этапа:
·
обучение – подготовка сети к
работе;
·
работа – однократное
формирование результата
классификации предъявленных
входных данных.
После
того как ИНС спроектирована –
выбрана ее структура, а
применительно к многослойной
сети это число нейронов в каждом
слое и связи между слоями –
должно быть проведено ее обучение.
Для проведения обучения
требуется обеспечить:
·
формирование обучающей
выборки;
·
представительность и
непротиворечивость обучающей
выборки;
·
сходимость процесса обучения.
Для
формирования
обучающей выборки необходимо
отобрать обучающие примеры и
преобразовать соответствующую
информацию к виду, используемому
на входе ИНС. Так, например,
применительно к системе
распознавания объектов на
изображениях это соответствует
выбору некоторого набора
изображений (или участков на
изображениях) и преобразованию
участков изображений,
соответствующих выбранным
объектам в некоторое множество
чисел, число которых
соответствует числу входов ИНС.
Такой набор чисел удобно назвать
записью. Совокупность записей,
каждая из которых сформирована по
отдельному объекту, класс
которого требуется распознавать,
образует обучающую выборку.
Практика показала, что
формирование обучающей выборки
наиболее целесообразно проводить
«учителю» с использованием
специализированного
программного обеспечения.
Для
успешного обучения ИНС полезно,
чтобы различные классы, которые
ИНС должна распознавать, были
представлены в обучающей выборке
примерно поровну. Лучше всего это
обеспечивать на этапе
формирования обучающей выборки. В
противном случае можно
прореживать выборки наиболее
широко представленных классов
или, что дублировать выборки,
соответствующие классам, имеющим
малое представительство. При
таком прореживании (размножении)
полезно использовать понятие «качества
записи» в выборке, рассмотренное
в [].
Для
этого в ходе формирования выборки
каждому используемому объекту,
следует приписать некоторую
оценку. Например, оценку того,
насколько уверенно его можно
отнести к данному классу. Другой
вариант формирования оценки –
учет того, насколько часто такой
объект может встречаться на
практике. При прореживании (размножении)
какая оценка может служить
формальным критерием
отбрасывания (дублирования)
конкретной записи.
Сформированная
выборка должна быть
представительной и
непротиворечивой.
Представительность еще можно
контролировать в процессе
формирования. Однако для проверки
непротиворечивости наиболее
удобно использовать
специализированное программное
обеспечение. Простейшая проверка
может быть основана на кластерном
анализе.
Процесс
обучения ИНС с использованием
обучающей выборке является
недетерминированным. Это
означает, что в зависимости от
свойств используемой выборки и,
конечно, используемого алгоритма
обучения он может или идти
чрезмерно долго, или не
обеспечивать требуемой точности
решения (классификации). Вопросы
обучения ИНС, которым посвящено
большое количество публикаций, не
являются темой настоящего
рассмотрения. Тем не менее,
представляется полезным
упомянуть подходы к этой проблеме,
представляющиеся
целесообразными, хотя и не
бесспорными, с точки зрения
создания прикладных систем.
Аппаратно
реализовать обучение возможно
либо на ПК, либо на некотором
многопроцессорном вычислителе. В
последнем случае, как говорилось
выше, могут возникнуть проблемы с
обменом данными между
процессорами. Поэтому, с учетом
удобства реализации (программирования)
предпочтительным представляется
использование ПК.
Произвольность
формирования обучающей выборки, в
зависимости от строгости ее
проверки на противоречивость и
объема, может привести к
чрезмерному росту времени
обучения или к тому, что его
результаты будут
неудовлетворительными. Типичный
подход к этой ситуации,
упоминаемый в литературе,
заключается в модификации
процесса обучения, сводящейся,
как правило, к уложению алгоритма.
Однако, при создании прикладных
систем можно рекомендовать и иной
подход. Он заключается в
упрощении задачи, возлагаемой на
ИНС, за счет дополнительной
нагрузки на ненейросетевые
алгоритмы обработки информации.
Степень такого упрощения задачи
ИНС выбирается таким образом,
чтобы обеспечить эффективность
обучения сети.
|