Схема против нейросети

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.
Мы снова недооцениваем сложность задач.

Перцептрон известен нам уже более полувека. И мы до сих пор используем его в том же виде, лишь наращивая вычислительные мощности.

Свёрточная нейронная сеть — математическая реализация зрительной подсистемы (палочки под разным углом и их иерархические комбинации в более сложные образы). В первом слое хватит и фильтра Собеля. Без обучения. Процесс упростится.
По мне, так это давно надо вынести на аппаратный уровень камер и систем техзрения.

В интернете можно найти много информации о нашей нейрофизиологии. Вот великолепная статья на хабре как раз в тему. Автор пишет, что не только нейрон является нелинейным сумматором, но и синапсы. То есть количество переменных уже вырастает на порядок. А ведь
Нейрон это не статический аналоговый сумматор. Нейрон, а тем более мозг, это цифровой процессор, который постоянно обменивается импульсами с частотой до сотен герц.

Ключевое здесь — постоянно.
Миллиарды десятков нейронов и триллионы синапсов постоянно перестраивают свой потенциал и связи под текущую Задачу. Накапливают опыт. Формируют Личность.
А мы разделили этот процесс минимум на две части: обучение и исполнение, и жалуемся, что как-то много ошибок и в том и другом.

Постоянно, а не обучили CNN и используем ее в статике для классификации.
Еще и соревнования устраиваем на лучшую архитектуру нейросети. Но лучшая она лишь для определенного набора данных и постоянно эволюционирует.
Автопилот Тесла увидел частично заляпанный знак и всё — авария. Сразу шумиха в прессе: «Не работает DeepLearning!», «Роботы — зло».
Или вот еще интереснее сюжет про рекламу Burger King и Tesla.

Если нам попадается новый образ, мы обычно испытываем страх, выброс адреналина и экстренную перестройку мозга. Не всегда это ощущаем, потому что изменения зачастую незначительные. При попадании в незнакомую или неожиданную ситуацию мы, вероятнее всего, впадаем в ступор.

Наш мозг так поступает — почему так не должен поступать «силиконовый»?
Ведь есть интересные разработки по спайковым нейросетям. Обратите внимание на модель нейрона — как вам такой «персептрон»?
Забыли мы так же про SOINN, а ведь это очень оригинальный алгоритм, который совмещает в себе и обучение и исполнение, причем в динамике.
Возможно, у него есть продолжение где-то в секретных лабораториях японцев.

Мы пытаемся воспроизвести весь процесс на архитектуре (кремниевых полупроводниковых микросхемах), которая отличается от строения биологического мозга радикально. И мы снижаем количество переменных, чтобы уложиться в realtime на слабом процессоре. Подгоняем архитектуру нейросети не под её биологический аналог, а под наши технические средства и сетуем, что только классифицировать и можем. Что нет в машине мышления, моделирования, творчества.

Как бы и не надо.

Мы «затачивали» наши машины на расчет формул, а если быть точнее на базовые операции: сложение, вычитание, умножение и деление (взять и положить по адресу и другие инструкции пока не будем трогать).
Так пусть они этим и занимаются. И делают это они весьма эффективно.

Если задана формула, машина считает её со скоростью недостижимой человеку. Яркий пример: траектории полетов космических кораблей. А ведь начиналось все с таких приборов, но даже они превосходили в итоге людей в скорости расчетов.
Нет нужды заставлять C/G/TPU имитировать биологические нейроны.

Машина может оперировать более абстрактными ментальными блоками, чем нейрон. У нас есть множество наработок на эту тему. Причем нам не надо 20 лет обучать машину, чтобы она «понимала» абстракции уровня «логистика», «кулинария», «квантовая механика». Сервер включается в процесс сразу после загрузки данных, которых у нас уже масса.

Когда то, вдохновившись работами Boston Dynamics я экспериментировал с робототехникой.
Жаль, что у меня не было таких мощностей как сейчас, но это привело к очень интересным идеям.
Долго не получалось обучить что-то адекватное на стандарной полносвязной сети и сигмоиде. Решил попробовать функцию, более подходящую механике модели, основываясь на простой идее:
Вращение шарниров конечностей робота — это тригонометрия.

Функция cos в качестве активационной и ограничение значений входов и выходов [-1;1] повысила качество управления и скорость обучения в разы, снизила размер сети.

Да cos не самая быстрая функция — она вычисляется по таблице или разложением в ряд Тейлора, но она уже есть. Тем более если делать подобные функции как ядро ASIC, то будем иметь примерно 10-тикратный прирост в скорости вычислений.
Её не надо искать, вычислять, тратить время на обучение ИНС — уже всё давно сделано с помощью наших «нейросеток».
Есть множество функций еще более ресурсоемких, чем тригонометрия. Алгоритм тот же:
Берем функцию из базы — соединяем с нужными блоками входы и выходы.

Эти функции могут быть очень высокого порядка. Вроде тех, что используются в программировании. А их параметры — ID объектов класса Товар, Марка, Цвет, Адрес и так далее.
Другими словами — передаем спайк (код объекта, ID) в нужное место, а не вектор из рациональных чисел, который обозначает непонятно что.

Возвращаясь к нейросети, как классификатору, получаем из потока образов классы объектов. Это, по сути, кодировщик образов к которому можно присоединить подобную систему и получим память и интуицию.

Есть множество схем в электронном виде, уже «обученных» и отлаженных. Их так же можно использовать как функции. Главное правильно подсоединить. Я говорю о BPMN и им подобных.
BPMN схемы понятнее человеку, чем многослойная нейросеть.

В итоге Data Scientist программируют… схемы — архитектуры нейросетей. Где-то интуитивно, где-то на основании литературно-технического опыта или после отбора AutoML.
«Танцы с бубном» — по другому не получается. Потому что DeepLearning красиво работает на учебных датасетах — реальность ставит всё на место.

Как реализовать «процесс мышления» схемами на программном уровне описано в этой статье, в которой идет нешуточная полемика.
Там, на простом прикладном примере, описан процесс оптимальных соединений функций — по сути обучения, подобному подбору весов в нейросети.
Причем обучение (поиск) ведется не в области рациональных чисел, а в дискретном пространстве возможных состояний системы.

Область поиска значительно снижается не только этим, но и добавлением списка допустимых классов/значений каждого параметра функций.

Выбор функционального базиса и целевой функции для подобной системы — темы для отдельных статей. Надеюсь, у меня хватит вдохновения, чтобы написать их.
Искренне надеюсь на вашу поддержку.
Источник: https://habr.com/ru/post/508482/


Интересные статьи

Интересные статьи

VUE.JS - это javascript фрэймворк, с версии 18.5 его добавили в ядро битрикса, поэтому можно его использовать из коробки.
Две недели назад мы узнали, как Парижские музеи сделали 60 тысяч исторических фото общественным достоянием. А что же в России? Как российские музеи застраховались от такого убытка? Сейчас расскаж...
Я очень много пишу про Авалонию и часто восторгаюсь этим фреймворком, но, как и у любой технологии, у нее есть свои достоинства и недостатки, о них и хотелось бы поговорить. ...
Компании растут и меняются. Если для небольшого бизнеса легко прогнозировать последствия любых изменений, то у крупного для такого предвидения — необходимо изучение деталей.
В Европе пришли к выводу, что cookie-баннеры не соответствуют требованиям GDPR. Обсуждаем предысторию вопроса, делимся мнениями экспертов и смотрим на варианты развития ситуации. ...