Сверточные нейронные сети
Продолжаем наше погружение в архитектуры нейронных сетей. Сейчас я предлагаю рассмотреть принципы работы и построения сверточных нейронных сетей (Convolutional Neural Network). Данный вид нейронных сетей широко применяется в задачах распознавания объектов на фото- и видеоизображениях. Считается, что сверточные нейронные сети устойчивы к изменению масштаба, смене ракурса и прочим пространственным искажениям изображения. Их архитектура позволяет одинаково успешно находить объекты в любом месте сцены.
Помимо архитектурных отличий, о которых мы поговорим в следующей главе, между сверточными и полносвязными нейронными сетями есть кардинальное отличие в логической обработке входящего потока данных. Ранее мы обсуждали, что в полносвязных нейронных сетях каждый нейрон имеет связи со всеми нейронами предыдущего слоя и реагирует на наличие своего целостного паттерна в исходных данных. Давайте постараемся переложить это осознание на распознавание образов на изображении.
Представьте, вы обучаете нейронную сеть на распознавание напечатанных на листке бумаге цифр. Каждая цифра напечатана на идеально чистом листке бумаги, и ваша нейронная сеть научилась идеально их распознавать. Но стоит подать на вход сигнал с небольшим шумом, и ее результат будет непредсказуем, так как шум дополняет образ, после чего он уже не соответствует идеальным образам из обучающей выборки.
Возможна и обратная ситуация. Когда вы обучаете нейронную сеть на зашумленных изображениях, где изучаемый предмет находится на каком-то фоне, полносвязная нейронная сеть при достаточном количестве нейронов и достаточной обучающей выборке способна решить такую задачу. Но при этом она воспринимает картинку как единое целое. Стоит изменить или убрать фон, как это выведет полносвязную нейронную сеть из состояния равновесия, и результат ее работы будет не предсказуем. Все дело опять же в целостности восприятия мира. Когда при обучении с учителем мы подавали на вход нейронной сети изображение с шумом и давали ей правильный ответ, нейронная сеть сопоставила изображение с ответом и запомнила. Но она не выделила из картины нужный образ, а запомнила всю картинку целиком. Поэтому отсутствие фона нейронная сеть воспринимает как отсутствие некой составляющей образа. В такой случае выдать правильный результат будет затруднительно.
Помимо фона такая же ситуация возникает и при попытке вращения или масштабирования изображения. По существу, любое, даже незначительное, изменение исходных данных воспринимается полносвязной нейронной сетью как что-то новое, ранее невиданное. Это требует дополнительных ресурсов в виде нейронов для обработки и запоминания.
Помимо указанных выше проблем распознавания есть и проблема производительности. С ростом размера обрабатываемых изображений растет и размер входящего потока данных. Как следствие, растет и матрицы весов. Поэтому требуется больше памяти для хранения матрицы весов и больше времени для обучения нейронной сети. При этом чаще всего большая часть изображения не несет полезной информации. Следовательно, ресурсы расходуются неэффективно.
Предложенные сверточные нейронные сети призваны были решить эти проблемы. В них использовалась технология, благодаря которой изображение не рассматривается целиком. Наоборот, изображение делится на мелкие составляющие и изучается как под микроскопом в поиске отдельных составляющих.
Каждый сверточный слой содержит несколько небольших фильтров-образов. Получая на входе изображение, сверточный слой раскладывает его на составные части. Каждый из составных элементов изображения проверяется на соответствие искомым образам. Такой подход призван выделить из общего изображения только составляющие искомого изображения, частично или полностью исключив влияние шума и фона на результат. Также это помогает решить проблему перемещения или масштабирования искомого образа на изображении.
Использование малых матриц весов для каждого фильтра позволяет значительно уменьшить требование к размеру памяти для их хранения. Более того, при таком подходе размер матрицы весов зависит не от размера исходного изображения, а от размера фильтра-образа. Следовательно, с ростом размера обрабатываемых изображений размер матрицы весов остается неизменным.
В дополнение к вышесказанному использование сверточных нейронных слоев позволяет с каждым слоем уменьшить размер обрабатываемых данных. Это связано с тем, что для каждой малой составной части изображения возвращается только одно значение, указывающее на меру соответствия изображения искомому образу.
Если говорить применительно к трейдингу, я попытался перевести преимущества сверточных сетей в новую плоскость. Вместо поиска малых составных искомого образа на изображении мы будем искать в потоке исходных данных малые составные части паттернов из ценовых свечей и значений индикаторов. Тем самым, мы постараемся исключить влияние шумовых колебаний на общий результат.
И конечно, большим преимуществом сверточных нейронных сетей является тот факт, что фильтры подбираются нейронной сетью в процессе обучения.
Давайте погрузимся в архитектуры этого решения и познакомимся с ним по ближе.