В наши дни трудно найти задачу, которую еще не предлагают решать нейронными сетями. А во многих задачах другие методы уже даже не рассматриваются. В такой ситуации логично, что в погоне за “серебряной пулей” исследователи и технологи предлагают все новые и новые модификации нейросетевых архитектур, которые должны принести прикладникам “счастье для всех, даром, и пусть никто не уйдет обиженным!” Впрочем, в индустриальных задачах чаще оказывается, что точность модели в основном зависит от чистоты, размера и структуры обучающей выборки, а от нейросетевой модели требуется разумность интерфейса (например, неприятно, когда ответом по логике должен быть список переменной длины).
Другое дело — производительность, быстродействие. Здесь зависимость от архитектуры прямая и вполне предсказуемая. Впрочем, не всем ученым интересная. Куда приятнее мыслить столетиями, эпохами, мысленно целиться в век, когда волшебным образом вычислительные мощности будут невообразимыми, а энергия добываться из воздуха. Однако и людей приземленных тоже хватает. И им важно, чтобы нейросети были компактнее, быстрее и энергоэффективнее уже сейчас. Например, это важно при работе на мобильных устройствах и во встроенных системах, где нет мощной видеокарты или нужно экономить аккумулятор. В этом направлении сделано немало: тут и малобитные целочисленные нейронные сети, и удаление избыточных нейронов, и тензорные декомпозиции сверток, и многое другое.
Нам же удалось убрать умножения из вычислений внутри нейрона, заменив их сложениями и взятием максимума, хотя мы и оставили возможность использовать умножения и нелинейные операции в функции активации. Предложенную модель мы назвали биполярной морфологической моделью нейрона.
![](https://habrastorage.org/webt/h9/i4/0p/h9i40p3_1ac7fz9g-0bvdov8f9u.png)
Любопытно, что и в работах по повышению быстродействия, и в алхимических работах о “более лучших” архитектурах базовая модель Маккаллока-Питтса почти никогда не подвергается ревизии. Это та самая модель, согласно которой реакция нейрона определяется взвешенной суммой входов, а определение синаптических весов и составляет процесс обучения. На первый взгляд в сохранении этой части нет ничего удивительного. С одной стороны, здесь не видно резервов для оптимизации. С другой стороны, кардинальная замена математики нейрона может породить модель, для которой все наработанные методы обучения окажутся неподходящими, и весь путь выстраивания технологических приемов придется проходить заново.
Если же взглянуть внимательнее, то центральные, графические и даже специализированные тензорные процессоры, на которых сейчас гоняются классические сети, большую часть ресурсов тратят на умножение. При этом в вентильной реализации умножение дольше и сложнее сложения, поэтому если бы удалось заменить умножение на менее ресурсоемкую операцию, тензорные процессоры можно было бы значительно оптимизировать. Есть за что бороться. Ну а технологическими сложностями нас не запугать. Labor omnia vīcit improbus et dūrīs urgēns in rēbus egestās.
Тем более, что мы — не первые. В 90-х был предложен морфологический нейрон [1, 2]. Эта модель во многом апеллирует к биологическим свойствам нейронов. Дальнейшим развитием этой идеи являются дендритные морфологические нейроны, которые позволяют отдельно моделировать процессы возбуждения и торможения [3], и обобщение предложенной модели в терминах алгебры на решетке [4]. Морфологическая нейронная сеть, как правило, представляет собой однослойный перцептрон. Для обучения такой нейронной сети используют эвристические алгоритмы [5], которые могут быть дополнены стохастическим градиентным спуском [6]. Однако, такие сети плохо масштабируются на задачи глубокого обучения и не позволяют достичь высокого качества во многих стандартных на сегодня задачах. Поэтому они представляют в первую очередь академический интерес.
Мы же хотели добиться достаточного качества распознавания в задачах классификации и распознавания, и предложили свою модель, которая не просто использует морфологические операции, но и аппроксимирует классический нейрон, что потенциально позволяет адаптировать современные нейросетевые архитектуры к этой модели.
Биполярный морфологический нейрон
Классический нейрон выполняет вот такую операцию:
То есть, он считает линейную комбинацию входных сигналов с весами
, прибавляет постоянный член и далее берет нелинейную функцию активацию
.
Мы предложили биполярный морфологический нейрон (БМ-нейрон), который аппроксимирует обычный нейрон без умножений внутри нейрона. Покажем, как он получился. Для начала, сумма произведений в классическом нейроне может быть представлена в виде 4 слагаемых, отличающихся по знаку весов и входов:
где
Дальше рассмотрим каждое слагаемое отдельно. Обозначим:
и выполним такую аппроксимацию:
где — новые входы,
— новые веса. Очевидно, что она корректна, когда
. Так как
, лучший случай наступает, если сумма содержит только одно ненулевое слагаемое (
), а худший — в случае суммы равных слагаемых (
). В худшем случае настоящая величина суммы будет в
раз больше приближенной. Не то чтобы это можно было назвать хорошей аппроксимацией, однако сеть может это компенсировать за счет наличия нелинейностей между слоями — мы не можем заранее сказать, сломает эта аппроксимация все или нет. Например, нейронные сети с малобитными целочисленными коэффициентами нельзя напрямую конвертировать из классических, зато с использованием специальных методов — можно получить качество, сравнимое с оригинальным. Поэтому мы сочли БМ-нейрон перспективным.
Схема БМ-нейрона приведена на Рис. 1. С помощью ReLU мы создаем 4 вычислительных ветки: для положительных и отрицательных входов и положительных и отрицательных весов. Далее считается логарифм входов и выполняется собственно морфологическая операция внутри нейрона. Наконец, результаты потенцируются и вычитаются для получения выхода нейрона.
Операции вычисления логарифма и экспоненты выполняются над набором входов и выходов слоя, поэтому их можно считать частью сложной функции активации и выполнять по одному разу на слой, а не для каждого нейрона. Как правило, вклад функции активации в общую вычислительную сложность сети достаточно мал, поэтому некоторое усложнение её структуры не должно представлять проблемы. В дальнейшем для ускорения можно попробовать заменить эти операции на их приближения (например, кусочно-линейное), а для сети с квантованными коэффициентами — на предподсчитанные таблицы.
![](https://habrastorage.org/webt/h9/i4/0p/h9i40p3_1ac7fz9g-0bvdov8f9u.png)
Рис. 1. Схема биполярного морфологического нейрона.
Итого, БМ-нейрон считает вот такую величину:
где
Кстати, мы назвали наш нейрон биполярным морфологическим не просто так. Слово биполярный относится к парам вычислительных веток для положительных и отрицательных сигналов, имитирующих возбуждение и торможение. В биологии такие нейроны обычно отвечают за восприятие, например, нейроны сетчатки глаза.
Обучение
Разумеется, идеальным вариантом было бы создать конвертер, который просто берет уже обученную классическую сеть, преобразует ее и вуаля: быстрая точная БМ-сетка готова! Однако, прямо так сделать не получилось и мы слегка ослабили требования к методу обучения. Мы конвертировали сеть послойно и дообучали только оставшиеся классические слои (метод 1) или всю сеть (метод 2). Зачем так сложно? При конвертации одного слоя качество не падает до нуля, и сеть не обязательно учить с нуля на большом массиве данных. Это может быть крайне полезно, если классическая сеть сама по себе требует нескольких недель на обучение.
Еще на самом деле не очевидно, как должна учиться БМ-сеть: из-за того, что нейроны считают максимум, на каждом шаге может обновляться только один вес в БМ-слое, а некоторые веса могут вообще не вносить вклад в результат, если они инициализировались особо неудачно. У нас не получилось просто взять и обучить БМ-сеть стандартными методами на основе градиентного спуска: качество было приемлемым, но все же ниже, чем другими методами, о которых мы сейчас расскажем.
Глобально, подход, который мы использовали, основан на incremental learning — мы постепенно адаптируем модель к новым данным или новой структуре, но при этом она не теряет уже полученной информации. Мы двигаемся послойно и преобразуем текущий слой к БМ виду. Веса БМ-слоя инициализируются так, чтобы он аппроксимировал оригинальный слой. После этого либо дообучается “хвост” — оставшиеся классическими слои (метод 1), — либо дообучается вся сеть (метод 2). Слово “дообучение” здесь означает, что сеть уже инициализирована разумными значениями и нуждается в не слишком большом уточнении коэффициентов, а не обучении с нуля. Таким образом, мы уходим от необходимости подбирать инициализацию сети или отдельного БМ-слоя, а также можем надеяться, что сеть обучится градиентным спуском, несмотря на трудности этого процесса для БМ-нейрона.
Эксперименты
MNIST
MNIST — это открытая выборка для обучения, состоящая из 60000 серых изображений рукописных цифр размера 28 на 28. Еще 10000 изображений составляют тестовую выборку. Мы использовали 10% для валидации, а остальные — для обучения. Примеры изображений из выборки приведены на Рис. 2.
![](https://habrastorage.org/webt/15/wk/em/15wkempnf0e8k9mfvjrgqq894hg.png)
Рис. 2. Примеры символов из выборки MNIST.
Введем следующие обозначения для слоев сети:
conv(n, w_x, w_y) — сверточный слой с n фильтрами размера w_x на w_y;
fc(n) — полносвязный слой с n нейронами;
maxpool(w_x, w_y) — слой max-pooling с окном w_x на w_y;
dropout(p) — слой dropout с вероятностью пропуска связи p;
relu — функция активации ;
softmax — функция активации softmax.
Для классификации на MNIST мы обучили две простых сверточных нейронных сети:
CNN1: conv1(30, 5, 5) — relu1 — dropout1(0,2) — fc1(10) — softmax1.
CNN2: conv1(40, 5, 5) — relu1 — maxpool1(2, 2) — conv2(40, 5, 5) — relu2 — fc1(200) — relu3 — dropout1(0,3) — fc2(10) — softmax1.
Затем мы начали последовательно конвертировать их слои в биполярный морфологический вид. Результаты приведены в Таблице 1. При этом прочерк в графе “преобразовано” отвечает исходной непреобразованной сети. А еще мы показываем качество сразу после конвертации и после конвертации (К) и дообучения (Д).
Таблица 1. Качество распознавания нейронных сетей в зависимости от преобразованной к биполярному морфологическому виду части на MNIST. К — качество после конвертации, Д — качество после дообучения.
Сеть | Преобразовано | Метод 1, К | Метод 1, К+Д | Метод 2, К | Метод 2, К+Д |
---|---|---|---|---|---|
CNN1 | - | 98,72 | - | 98,72 | - |
CNN1 | conv1 | 42,47 | 98,51 | 38,38 | 98,76 |
CNN1 | conv1 — relu1 — dropout1 — fc1 | 26,89 | - | 19,86 | 94,00 |
CNN2 | - | 99,45 | - | 99,45 | - |
CNN2 | conv1 | 94,90 | 99,41 | 96,57 | 99,42 |
CNN2 | conv1 — relu1 — maxpool1 — conv2 | 21,25 | 98,68 | 36,23 | 99,37 |
CNN2 | conv1 — relu1 — maxpool1 — conv2 — relu2 — fc1 | 10,01 | 74,95 | 17,25 | 99,04 |
CNN2 | conv1 — relu1 — maxpool1 — conv2 — relu2 — fc1 — dropout1 — relu3 — fc2 | 12,91 | - | 48,73 | 97,86 |
Когда мы не пытались обучать БМ-слои, качество падало уже на свертках, а на полносвязных БМ-слоях сеть практически прекращала распознавать. Кроме того, результат для сетки с двумя сверточными БМ-слоями не лучше, чем для сети лишь из оставшихся полносвязных слоев. Это говорит о том, что качество аппроксимации так себе и конвертировать сети без обучения не получится.
С дообучением конвертированных слоев картина уже значительно лучше: свертки преобразовались практически без потерь. Снижение качества на полносвязных слоях на наш взгляд связано с несовершенством метода обучения и не обязательно говорит о том, что они не могут работать в принципе. Однако даже текущий результат хорош: основное время в нейронных сетях считаются именно свертки и их-то и хочется в первую очередь ускорить.
Символы MRZ
Дальше мы решили использовать нашу внутреннюю выборку из символов MRZ-строки документов, удостоверяющих личность (см. Рис. 3). У нас было 280 000 полутоновых изображений размера 21 на 17 пикселей с 37 символами MRZ, полученных из изображений реальных документов.
![](https://habrastorage.org/webt/a1/eg/oz/a1egozmfe1hxsrs-5cmrwm1swk0.jpeg)
Рис. 3. Примеры символов MRZ зоны.
CNN3: conv1(8, 3, 3) — relu1 — conv2(30, 5, 5) — relu2 — conv3(30, 5, 5) — relu3 — dropout1(0,25) — fc1(37) — softmax1.
CNN4: conv1(8, 3, 3) — relu1 — conv2(8, 5, 5) — relu2 — conv3(8, 3, 3) — relu3 — dropout1(0,25) — conv4(12, 5, 5) — relu4 — conv5(12, 3, 3) — relu5 — conv6(12, 1, 1) — relu6 — fc1(37) — softmax1.
Результаты преобразования приведены в Таблице 2. При этом прочерк в графе “преобразовано” отвечает исходной непреобразованной сети. Мы опять показываем качество сразу после конвертации и после конвертации (К) и дообучения (Д).
Картина такая же, как и на MNIST: если не обучать БМ-слои, то качество заметно падает, особенно на полносвязных слоях. При обучении БМ-слоев свертки преобразовались почти без потерь, а вот полносвязные слои все-таки пострадали.
Таблица 2. Качество распознавания нейронных сетей в зависимости от преобразованной к биполярному морфологическому виду части на MRZ. К — качество после конвертации, Д — качество после дообучения.
Сеть | Преобразовано | Метод 1, К | Метод 1, К+Д | Метод 2, К | Метод 2, К+Д |
---|---|---|---|---|---|
CNN3 | - | 99,63 | - | 99,63 | - |
CNN3 | conv1 | 97,76 | 99,64 | 83,07 | 99,62 |
CNN3 | conv1 — relu1 — conv2 | 8,59 | 99,47 | 21,12 | 99,58 |
CNN3 | conv1 — relu1 — conv2 — relu2 — conv3 | 3,67 | 98,79 | 36,89 | 99,57 |
CNN3 | conv1 — relu1 — conv2 — relu2 — conv3 — relu3 — dropout1 — fc1 | 12,58 | - | 27,84 | 93,38 |
CNN4 | - | 99,67 | - | 99,67 | - |
CNN4 | conv1 | 91,20 | 99,66 | 93,71 | 99,67 |
CNN4 | conv1 — relu1 — conv2 | 6,14 | 99,52 | 73,79 | 99,66 |
CNN4 | conv1 — relu1 — conv2 — relu2 — conv3 | 23,58 | 99,42 | 70,25 | 99,66 |
CNN4 | conv1 — relu1 — conv2 — relu2 — conv3 — relu3 — dropout1 — conv4 | 29,56 | 99,04 | 77,92 | 99,63 |
CNN4 | conv1 — relu1 — conv2 — relu2 — conv3 — relu3 — dropout1 — conv4 — relu4 — conv5 | 34,18 | 98,45 | 17,08 | 99,64 |
CNN4 | conv1 — relu1 — conv2 — relu2 — conv3 — relu3 — dropout1 — conv4 — relu4 — conv5 — relu5 — conv6 | 5,83 | 98,00 | 90,46 | 99,61 |
CNN4 | conv1 — relu1 — conv2 — relu2 — conv3 — relu3 — dropout1 — conv4 — relu4 — conv5 — relu5 — conv6 -relu6 — fc1 | 4,70 | - | 27,57 | 95,46 |
Заключение
Итак, мы предложими модель биполярного морфологического нейрона, приближающую классический нейрон. Также мы показали, как преобразовать классическую сеть к БМ-структуре и дообучить ее. Наш подход продемонстрировал конвертацию сверточных слоев практически без потерь на MNIST и нашей выборке символов MRZ.
Был ли смысл так заморачиваться? С одной стороны, на современных центральных и видео- процессорах умножение и сложение практически не отличаются по времени. С другой стороны, на устройствах специального назначения подобная модель при должной доработке (например, квантовании и использовании оптимизаций логарифма и экспоненты) способна дать реальное преимущество. С учетом того, что техническое развитие идет в сторону создания отдельных устройств для исполнения нейронных сетей — нейропроцессоров или специализированных схем типа TPU, эта идея выглядит еще более интересной.
Но до этого еще много работы, но первый шаг мы сделали, и продолжим исследовать нашу модель: на глубоких сетках, в плане методов обучения и возможностей квантования.
PS. Публикация сделана по материалам доклада на международной конференции по машинному зрению ICMV 2019:
E. Limonova, D. Matveev, D. Nikolaev and V. V. Arlazarov, “Bipolar morphological neural networks: convolution without multiplication,” ICMV 2019, 11433 ed., Wolfgang Osten, Dmitry Nikolaev, Jianhong Zhou, Ed., SPIE, Jan. 2020, vol. 11433, ISSN 0277-786X, ISBN 978-15-10636-43-9, vol. 11433, 11433 3J, pp. 1-8, 2020, DOI: 10.1117/12.2559299.
Литература
- G. X. Ritter and P. Sussner, “An introduction to morphological neural networks,” Proceedings of 13th International Conference on Pattern Recognition 4, 709–717 vol.4 (1996).
- P. Sussner and E. L. Esmi, Constructive Morphological Neural Networks: Some Theoretical Aspects and Experimental Results in Classification, 123–144, Springer Berlin Heidelberg, Berlin, Heidelberg (2009).
- G. X. Ritter, L. Iancu, and G. Urcid, “Morphological perceptrons with dendritic structure,” in The 12th IEEE International Conference on Fuzzy Systems, 2003. FUZZ ’03., 2, 1296–1301 vol.2 (May 2003).
- G. X. Ritter and G. Urcid, “Lattice algebra approach to single-neuron computation,” IEEE Transactions on Neural Networks 14, 282–295 (March 2003).
- H. Sossa and E. Guevara, “Efficient training for dendrite morphological neural networks,” Neurocomputing 131, 132–142 (05 2014).
- E. Zamora and H. Sossa, “Dendrite morphological neurons trained by stochastic gradient descent,” in 2016 IEEE Symposium Series on Computational Intelligence (SSCI), 1–8 (Dec 2016).