May 2, 2022

Как учатся боты

В интернете алгоритмы и боты окружают нас повсюду каждую секунду. Алгоритмы рекомендуют нам какие видео посмотреть на ютубе, какие твиты мы увидем в ленте твиттера, алгоритмы устанавливают цены на торговых площадках и интернет-магазинах. Даже если вы просто ищите какую-то фотку в галерее смартфона, ее для вас ищет алгоритм, который к тому же может сделать для вас из них небольшое видео. Банковский алгоритм проверяет ваши транзакции на законность, а на фондовой бирже вообще большинство сделок заключают не люди, а боты, которые торгуют с ботами.
Зная все это, вы возможно захотите разобраться, как же эти алгоритмические боты работают — особенно, когда они работают плохо.

Когда-то люди создавали ботов, выдавая им точные инструкции к действию по схеме «if—then» т. е. если происходит действие А, то необходимо сделать действие Б. Однако, сегодня находится все больше проблем, решение к которым слишком сложно описать набором простых инструкций, понятных человеку.
Ежемоментно происходят тысячи финансовых операций, как понять какие из них могут быть нелегальны? Как из миллионов видео на ютубе выбрать те 10, что стоит показать человеку на главной странице? Алгоритмические боты находят ответы на все эти вопросы. Не идеальные ответы, но учитывая сложность задач, по крайней мере лучше тех, что люди бы могли найти вручную.
Но то, как именно боты находят эти ответы, люди понимают все меньше и меньше. Причем даже те, кто их создал или как уместнее будет написать «создал».

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

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

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

Закрепим, у нас есть бот-строитель, который случайно строит что попало, бот-учитель, который не умеет учить, а лишь тестировать и боты-ученики, которые не умеют учиться, а мы лишь проверяем какими они получились. И по идее это, конечно же, не может работать, но тем ни менее на практике работает. Что неудивительно, ведь каждое новое поколение бот-строитель создает только на основе тех алгоритмов, что справились с задачей лучше остальных из предыдущего поколения. А бот-учитель тестирует не одного бота за раз, но сотни и тысячи. Да и сам тест состоит не из десяти вопросов, но из миллионов примеров. А потому после бесчисленного количества повторений мы получаем алгоритм, который способен эффективно решать, поставленную перед ним задачу.

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

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

Именно эта проблема является причиной, почему современные компании (и не только IT) столь одержимы сбором данных. Чем больше данных — тем больше тестов для ботов — тем лучше становятся боты.
Так что, когда вы проходите очередной тест (капчу) на то, являетесь ли вы человеком (надеюсь да), вы буквально помогаете подготовить вопросы для тестирования ботов, самостоятельно вписывая верные ответы. Так что, если в очередной капче вы увидите вопросы на различение дорожных знаков, думаю вы догадаетесь для тренировки каких алгоритмов это нужно.

По такому же принципу алгоритмы учатся работать с тестами на реальных людях. Так например Ютуб совершенствует свой рекомендательный алгоритм. Каждому боту выдается набор пользователей, для которых нужно подобрать видео в рекомендации и ключевая метрика: например, время удержания человека на сайте. У тех ботов, которые лучше справляются с рекомендацией видео, пользователи дольше остаются на сайте ютуба, а значит смотрят рекламу, а значит ютуб больше зарабатывает.
Но именно поэтому все вопросы о том, как тот или иной алгоритмизации выбирает что порекомендовать — несколько бессмысленны потому, что никто не может дать на них определенный ответ. Мы можем лишь ткнуть пальцем в бота, указать какой набор данных для тестирования мы скормили и какие критерии при оценке поставили.

Со всеми остальными нашими инструментами мы обычно осознаем, что даже если не мы лично, то хоть кто-то в мире понимает, как они устроены и работают. Однако в нашем новом цифровом мире мы вынуждены все больше и больше полагаться на использование инструментов, которые никто, даже их создатели не могут полностью понять. И можем только надеяться направить и откалибровать эти инструменты в нужную сторону через тесты, которые мы для них создаем.
И похоже наши маленькие алгоритмические помощники никуда не денуться в ближайшее время, а потому нужно свыкнуться с этой мыслью и научиться с ней работать.
__________
поддержать автора:
5228 6005 8566 7878
или на DonationAlerts

Подписывайтесь на канал в Telegram
YouTube
Twitter