Нейросети

Вводные данные

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

Электронно-вычислительная машина потребляет электричество и производит вычисления. 99% потреблённой энергии ЭВМ выделяет в виде тепла, 1% — это результат вычислений, упорядоченная информация.

ЭВМ состоит из арифметико-логического устройства (АЛУ) и ячеек памяти, организованных тем или иным образом в массивы. АЛУ умеет выполнять, по сути, всего две операции: сложение и сдвиг двоичного числа на один разряд.

Таким образом, ЭВМ — это электрическая машина с КПД 1%, умеющая складывать два двоичных числа и сдвигать двоичное число на один разряд вправо или влево. Все результаты вычислений ЭВМ получает многократным повторением этих двух операций.

Такой простой машины вполне достаточно, чтобы реализовать любые вычислительные алгоритмы. Основные недостатки всех ЭВМ – очень низкий КПД и невозможность масштабирования. То есть нет возможности повысить КПД ЭВМ, просто построив большую ЭВМ, как, например, это возможно с грузовыми автомобилями – большой грузовик тратит меньше топлива на перевозку килограмма груза, чем маленький. Все так называемые «суперкомпьютеры» — это тысячи обычных ЭВМ, соединённых проводами. КПД у такой системы меньше, чем у одной ЭВМ.

Ввиду наличия этих ограничений ЭВМ развиваются в сторону уменьшения общего потребления электроэнергии, сохраняя низкий КПД. Уменьшая размер транзистора до пяти нанометров, уменьшается общее потребление электроэнергии. Но этот путь не бесконечен. Сделать транзистор меньше атома нельзя.

Поэтому любой руководитель должен представлять себе в каком жесточайшем кризисе находится компьютерная индустрия. КПД компьютеров не растет. Растёт мощность вычислений, обусловленная снижением общего потребления энергии. При достижении минимально возможного размера транзистора этот рост остановится, и компьютерную индустрию ждут тяжёлые времена.

Нужно совершенно четко понимать, что, кроме АЛУ, человечество пока ничего не придумало и нет на самом деле никаких других вычислительных машин, пригодных для применения. Квантовые компьютеры, нейронные компьютеры и прочие «теории» – это просто способы выпрашивания денег у инвесторов, как частных, так и государственных, при помощи сказки о том, что квантовый компьютер мгновенно взломает все коды и пароли. На самом деле нет.

Собственно, о нейронных сетях

Говоря про нейронные сети, надо четко понимать, что к нейронам в мозгу человека это не имеет никакого отношения, что бы ни говорили разные люди и ни писали в разных «википедиях». Человечество, к сожалению, пока не имеет точного представления о том, как на самом деле функционирует головной мозг человека и животных, какие на самом деле функции у нейронов. Всё, о чём мы говорим, это о некой сильно упрощенной математической модели, которую представили в 1943 году Маккалок и Питтс.

В этой модели производятся массовые вычисления. То есть, логически, модель, а именно её все называют «нейросеть», состоит из большого количество логических вычислительных единиц. Вспомните АЛУ – это аппаратная реализация вычислительной единицы, оно умеет только две операции. В нейросети вычислительная единица выполнена программно. Она умеет сравнивать входные данные с неким образцом, и если сравнение удалось, то выдавать один результат, а если не удалось, то другой.

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

У модели есть одно значимое преимущество – её можно обучить. То есть можно подать на вход данные, например изображение, и при помощи человека настроить вычислительные единицы так, чтобы они выдавали правильный результат.

Выглядит это так. Предположим, необходимо отличать кошку от собаки. Готовится набор данных из тысячи фотографий кошек и тысячи фотографий собак. Создается нейросеть с некоторым количеством вычислительных единиц, для простоты скажем, что со ста. Каждая из тысячи фотографий кошек и из тысячи фотографий собак разбивается одинаковым образом на сто частей, и каждая из этих частей загружается в свою вычислительную единицу. Происходит сравнение, принадлежит ли эта сотая часть кошке или собаке, данные собираются вместе, и система выдает результат. Например, система решила, что на фото была кошка. Тут в дело вступает человек, который сравнивает результат, выданный нейросетью, с фотографией и понимает, что на самом деле изображено. Человек корректирует работу вычислительных единиц так, чтобы они выдавали правильный результат. Пройдя подобным способом обучение на двух тысячах фотографий, система начнет сама с хорошей вероятностью (80%–95%) определять кошку или собаку на фотографиях, похожих на те, которыми эту сеть обучали.

Возможность обучения модели – это очень важно! При помощи обучения можно «перенести» в ЭВМ часть, пусть и очень маленькую, человеческого знания.

Но и тут есть проблема: если что-то поменяется, например, формат фотографии или освещение, то систему нужно будет обучать снова.

Теоретически, если построить и обучить очень большую модель, то она будет способна «впитать» в себя бОльшую часть человеческого знания. Совсем теоретически, очень, очень большая модель способна впитать в себя всё знание человека. Этим и живут «фантасты», которые рассказывают про искусственный интеллект. Но, к сожалению, у нас пока нет таких мощных вычислительных машин. Помните, КПД компьютеров мало и, как сделать большой компьютер, мы пока не знаем.

Практическое применение нейросетей

Теперь, когда мы в общих чертах разобрались с тем, что такое нейросети и как они работают, можно поговорить об их применении в реальной жизни. Самое частое – это анализ фото и видео. Тут очень широкая область применения. Перечислю только те, с чем сам имел опыт работы.

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

Контроль периметра – определение появления людей в определённых местах. Как опасных периметров, так и, например, если в периметре должно работать два человека, а пришел один или три. Учёт и фиксирование факта проведения работ на стройках.

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

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

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

С чего начать?

Вам нужно внедрить нейросеть. С чего начать? Какие ресурсы потребуются, как ставить задачи и как контролировать их выполнение?

Тут всё несложно. Первое, что нужно знать: нейросеть должна обеспечивать точность распознавания не менее 85%. Ста процентов не бывает в реальной жизни. Рабочий диапазон 85%–90%, то есть из ста раз нейросеть ошибается и выдает неверный результат десять-пятнадцать раз.

Второе, что нужно знать: нейросеть – это массовые вычисления, и для этих вычислений нужны соответствующие мощности. Тут всё определяет время вычислений. Если у вас процессы позволяют ждать 1–5 сек., то железо будет стоить в пять раз дороже, чем для процессов, которые позволяют ждать от десяти секунд при том же объеме вычислений. Не стоит ожидать времени получения результата от нейросети меньше, чем 1–5 секунд. Это я говорю в том смысле, что даже самое дорогое железо тут не поможет. Помните, люди не умеют пока делать большие компьютеры.

Третье, что нужно знать: все алгоритмы для нейросетей уже разработаны. Большинство реализовано в программном коде и доступно в интернете, так что программировать нейросеть с «ноля» не нужно. Достаточно собрать, как из кубиков, модель с необходимым количеством вычислительных единиц.

Теперь от том, что необходимо сделать для внедрения нейросети: нужно собрать данные и подготовить их. Это называется подготовка дата-сетов. Данные собираются в зависимости от поставленной задачи. Тут нужен специалист по подготовке данных.

Дальше нейросеть нужно обучить на основе собранных данных. Обычно для этого нанимают фрилансеров, которые за две-три недели сделают первичное обучение. На этом этапе хорошим результатом работы модели будет точность от 75%.

После этого в модель начинают загружать реальные данные и донастраивают её с целью получения максимальной точности вычислений. Этот процесс может длиться один, два, три или даже пять месяцев, в зависимости от сложности и желаемой точности. Делается это силами двух-трех человек.

Выводы

Нейронные сети вполне можно использовать в работе. Они применимы как в распознавании образов, так и в других задачах. Например, в предсказании отказов оборудования. Среднее время обучения типовой модели – 10-20 недель, в зависимости от сложности. Оборудование для создания моделей вполне доступно по цене и есть в продаже в РФ.

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

Рад буду ответить на вопросы.
Владимир Репин

09-10-2021