Мы также уделяем большое внимание экологии и стараемся, чтобы в нашем автопарке было как можно больше электрических или гибридных автомобилей, что означает, что мы заботимся о качестве и лучших такси, выполняющих заказы. Это три основных параметра, которые я пытаюсь оптимизировать с помощью алгоритма выдачи заказов.
Некоторые из точек будут находиться на поверхности озера, некоторые - нет. Если разделить количество точек, принадлежащих озеру, на количество всех точек, то получится оценка того, какую часть квадрата занимает озеро, а поскольку вы знаете площадь поверхности квадрата, это также дает вам оценку площади поверхности озера. Очень просто и элегантно. Конечно, вам придется сделать много таких отрисовок, но это очень здорово для оценки, например, просто площади, если кто-то вроде меня не очень любит интегралы, это также здорово для вычисления площади под графиком.
И я использовал этот метод для оценки распределения вероятностей для моего симулятора. Например, чтобы смоделировать спрос, я взял все заказы клиентов за соответствующий период в прошлом. Если, например, я хотел бы сделать симулятор дня, когда я ожидаю двести заказов, то просто из прошлого, из подобных дней я просто взял двести заказов и взял все признаки этих заказов, т.е. то, что было у пассажира. Характеристики, где именно появился заказ, какой был адрес получателя, в какое время и так далее. Подобным образом я оценивал и другие признаки, даже моделировал их для них. А потом нужно было построить симулятор. Если бы вы визуализировали это, что я и сделал, а в симуляторе есть возможность посмотреть, как выглядел город в какой-то итерации, это выглядело бы, скажем, как такси на карте Варшавы. И тут появляется заказ. И заказ назначается одному из такси самой важной функцией в этом алгоритме, потому что мы ее оптимизируем.
Затем, на следующей итерации, такси движется к клиенту. Может появиться больше заказов, может появиться больше такси, потому что какой-то таксист только начал работу, может исчезнуть какое-то такси, потому что какой-то таксист закончил работу, может произойти какое-то другое событие. Они могут изменить, например, скорость. Затем еще одна итерация. Выбранное нами такси прибудет к пассажиру в определенное время, затем вместе с пассажиром доедет до адреса назначения, высадит пассажира, снова изменит статус на доступный и будет готово принять другой заказ. И так я моделирую весь день. Затем, конечно, возникают такие проблемы, как отсутствие работы у таксистов, отказ таксистов от заказов, потому что они считают, что поездка займет слишком много времени, пассажир не хочет ждать так долго, и многие другие проблемы. А затем нужно просто провести множество симуляций.
Проверяем, есть ли у нас нестабильность, т.е. сильно ли отличаются результаты отдельных симуляций, потому что если да, то либо проблема хаотична, потому что такое тоже может случиться. К счастью, в нашем случае это было не так.
И вообще, моделирование хаоса - не лучшая идея, или если расхождение велико, это может указывать на то, что в симуляторе есть какие-то нестабильные элементы, и их нужно найти, и исправить. Затем, когда мы видим, что стабильность усредняет результаты этих многочисленных симуляций, находя наилучшие параметры, у нас есть что-то, что, по нашему мнению, лучше всего работает в симуляторе, теперь нам нужно проверить, будет ли это лучше всего работать в реальности. Вот здесь мы и подходим к проверке реальности. Для этого мы провели классические A/B-тесты, то есть для одних заказов мы использовали новые признаки, которые придумали в симуляторе, для других - оставили старые и проверили, действительно ли улучшение было таким, как мы ожидали. Вот примерно как это происходило.
Действительно, это самая большая проблема. И так: на первом этапе я просто попытался составить карту нашего прошлого. То есть в симуляторе применимой функцией была та, которая до сих пор реализована в реальности. Я брал реальный день из прошлого и проверял, что результаты в симуляторе отражают этот день, один к одному. Сначала на самом общем уровне. Например, соответствует ли среднее медианное время прибытия реальности. Был ли не обработан аналогичный процент заказов.. Затем я спустился еще глубже. Выполнялись ли, например, примерно одинаковые заказы, не было ли такого, что симулятор хорошо ведет себя в часы пик и совершенно не отражает реальность ночью. Конечно, не то чтобы я требовал от симулятора делать все один в один, как это происходило в реальности, и некоторые отклонения допустимы, ведь это симулятор, но если система вела себя совершенно иначе, то было ясно, что симулятор работает плохо. Что ж, это был первый этап такой предварительной калибровки на будущее, когда мы еще совсем не проверяем новые гипотезы.
Я визуализировал ее на картах и смотрел, насколько логично выглядит схема, насколько логично то, что я вижу на карте. Если нет, я пытался изменить это. Позже, когда мы уже проводили A/B-тесты, в основном процедура была очень похожей, но я также тестировал стабильность системы из-за определенных параметров. То есть, если я тестировал, что произойдет, если я немного или больше изменю какой-либо параметр, сильно ли это повлияет на результат. Если эта чувствительность к данному параметру мала, то, вероятно, нет смысла возиться с этим конкретным параметром вообще, и он не так уж важен для результата. Если же она очень велика, то нужно присмотреться к ней, изучить некоторые отдельные случаи. И вот что это было, так это много поисков и попыток, подгонки этого симулятора к реальности таким образом, чтобы он был как можно ближе, но не так, как это часто пытаются сделать аналитики, так что да, я нашел что-то, что минимизирует некоторую среднюю ошибку, то есть просто что-то, что отражает реальность как можно ближе чисто физически.
Как я уже говорил ранее, у нас есть три проблемы, которые мы хотим оптимизировать, поэтому метрика успеха должна быть подобрана для каждой из них. Первый вопрос - это время на дорогу, и здесь естественным вопросом для меня было просто среднее время на дорогу. Медиана, а не среднее значение, потому что я хотел получить показатель, невосприимчивый к выбросам. Медиана - да, а среднее - нет. Второй вопрос - сколько заказов мы можем правильно обработать, и это показатель, который мы называем коэффициентом надежности, что на самом деле является отношением количества обработанных заказов ко всему спросу, который поступил, и третий вопрос - качество подаваемых такси.
И здесь, поскольку каждому из наших таксистов присваивается балл, который может меняться со временем, в зависимости от того, как их оценивают клиенты, как мы оцениваем их работу, поэтому в качестве такой метрики этого качества я взял средний балл, но средний не по таксистам, потому что это фиксировано, а по выданным заказам. То есть, высокий средний балл означает, что заказы достаются в основном тем, кто лучше по баллам таксистов. И это были три метрики.
Итак, что мне удалось сделать? Я сделал это первое предположение, так или иначе, вам придется иметь дело с многокритериальными проблемами. Либо вы можете создать некий синтетический индикатор, включающий несколько критериев, либо сделать некое предположение. Наш подход заключался в том, что мы считаем, что качество наших водителей в настоящее время является адекватным, т.е. граничное условие - не ухудшать средний балл, в то время как мы боремся за сокращение времени поездок на работу и повышение эффективности удовлетворения спроса, и оба эти фактора находятся на равном уровне.
И чего мы достигли, где мы сейчас? Сейчас мы находимся в такой точке, что по сравнению с тем, что было до симулятора, средний скоринг увеличился на 0,4%, а медиана времени в пути уменьшилась на 4,5%, а количество выданных заказов увеличилось на 3%. И что это значит? Это не очень большие значения, но даже последний показатель говорит о том, что на тех же исправлениях в алгоритме компания заработала на 3% больше.
Я просто объясню, почему так мало, сначала. А может быть, я даже начну сначала с чего-то другого. Всего два месяца назад этот рост составлял несколько процентов, тогда как сейчас разрыв сократился, и этому есть несколько вполне логичных причин.
Было намного лучше, но наша ситуация как компании значительно изменилась. Недавно наша компания выиграла тендеры на эксплуатацию Центрального и Западного железнодорожных вокзалов Варшавы и аэропорта Шопена, что привело к полному изменению ситуации. У нас совершенно другая структура заказов, чем была некоторое время назад, и вдруг выяснилось, что я должен вернуться к этому решению, потому что то, что было оптимальным до этого изменения спроса, теперь уже не оптимально. И это одна из таких причин. Вторая причина на самом деле является основной причиной того, что этот рост не так уж велик. Прежде чем я начал копаться в этом, у нас уже был довольно хороший алгоритм.
Действительно очень эффективен в выдаче заказов. Так что возможности для улучшения, конечно, есть, но они не такие, как если бы, например, у нас был такой классический, жадный алгоритм, то есть он всегда отправляет ближайшее такси. И третья причина, почему этот прирост не так велик. Тестирование того, что получается в симуляторе в таких классических A/B-тестах, должно занимать время. Мы должны помнить, что мы проводим тестирование на живом организме, и если случится так, что наш симулятор покажет, что он будет работать хорошо, но реальность этого не отразит, мы потеряем клиентов, возможно, потеряем таксистов, которые не будут получать заказы, и в целом это очень плохо скажется на нашем бизнесе, поэтому мы должны проводить эти тесты медленно и осторожно, чтобы тестирование длилось долго.
Поэтому процесс оптимизации идет не так быстро, как мне бы хотелось, мы все еще не остановились. Ты также спросил о том, к чему мы стремимся. Ну, у меня есть предположение, что в течение года - это максимально реально, и я стремлюсь к этому. Я хочу сократить время поездки на работу на 15% и уменьшить количество невыполненных заказов на 20%. Это, я абсолютно точно вижу, что это достижимо. Это требует немного изменения подхода и еще большего усложнения симуляции, потому что мы только начинаем работу над динамическим механизмом, который должен адаптироваться, и можно сказать что интеллект, или еще более модное - искусственный интеллект, применим к нынешним условиям.
То есть, к тому, сколько такси доступно, интенсивность заказов, загруженность города, т.е. для примера: если у нас вечер, город хорошо загружен, у нас много свободных такси, то, наверное, оптимально послать клиенту лучшую машину, даже если он будет ждать семь минут вместо шести. В этом случае клиент будет более удовлетворен. С другой стороны, в пиковое время, когда город парализован, мы предпочитаем не пробовать ничего другого, а просто отправить ближайшее такси, потому что разница во времени в пути будет весьма существенной. И, конечно, речь идет не о механическом утверждении, что пик приходится на каждый день, с понедельника по пятницу, между 7.30 и 9.30 утра, а о том, что система сама, исходя из состояния спроса, предложения и загруженности дорог, должна определить, какая функция должна быть использована в данный момент. То есть, чтобы была своего рода оптимизация параметров этого алгоритма в реальном времени, и здесь я вижу очень большой потенциал роста.
Мм, и здесь я, вероятно, удивлю тебя, потому что мы довольно маленькая компания, так что этот симулятор был в основном построен мной. Консультировался с несколькими людьми, но большая часть такой работы все же была самостоятельной. Я создавал симулятор в течение примерно трех месяцев, но поскольку у меня также много других задач в компании, могу сказать, что реальное время составило, вероятно, около тридцати рабочих дней. Для создания и такой начальной версии. То есть в тот момент, когда у меня есть симулятор, который хорошо отражает прошлое, поэтому я знаю, что он хорошо работает для той функции, которая была раньше. А потом, после этого, вы можете начать его использовать, и тогда работа над ним уже будет непрерывной, то есть я ищу решение, я ввожу A/B тесты, я проверяю результаты, я корректирую симулятор, и так далее, и так далее, и это, конечно, может продолжаться бесконечно. Но этих тридцати дней одного человека было достаточно, чтобы построить симулятор.
Пожалуй, сначала я скажу о том, чего я не советую делать. Я вижу такую общую тенденцию на рынке, которую я бы назвал: "Сделай свой собственный Data Science". То есть разрабатывается все больше и больше программного обеспечения, которое позволяет ввести некоторые данные, указать, какой эффект вы хотите получить, нажать кнопку, и это программное обеспечение само выберет модель, само рассчитает, создаст прогноз, классификацию или какой-то другой результат, и все готово. Вам не нужен специалист по анализу данных, чтобы самостоятельно заниматься машинным обучением. Вам не нужно иметь никакого представления о том, как работает метод, который вы только что использовали.
И это, вероятно, очень заманчивый сценарий для многих людей, которые не хотят тратить деньги на наем аналитика. На самом деле, программное обеспечение, хотя оно тоже не дешевое, всегда будет дешевле аналитика. С другой стороны, я бы сравнил это с самостоятельным электромонтажом дома. Это легко, не так ли? Необходимо проложить кабели от источника энергии туда, где они нужны. И, возможно, даже многим из нас это сойдет с рук, а время от времени у кого-то произойдет короткое замыкание, пожар, и все сгорит. То же самое, на мой взгляд, справедливо и в отношении использования таких "черных ящиков".
Менеджер, который выбирает легкий путь, рискует получить такой пожар. Это программное обеспечение может предложить ему нечто, что очень хорошо соответствует данным, использованным для создания модели, но совершенно не отражает будущее. И наступит катастрофа. У меня не так много иллюзий. Эта тенденция будет усугубляться. Станет все проще и проще проводить сложную аналитику людьми, которые не до конца понимают, что происходит в этом черном ящике.
С другой стороны, я также считаю, что до тех пор, пока мы не получим такой настоящий искусственный интеллект, все еще будет лучше нанять хорошего аналитика на очень долгое время, чем купить программное обеспечение с большой красной кнопкой для проведения сегментации, например. Кроме того, нужно помнить, что если кто-то показывает вам такую систему, которая так красиво делает аналитику, обычно реальные бизнес-кейсы намного сложнее, чем эти академические примеры. Таким классическим академическим примером является набор Iris, который отлично подходит для демонстрации того, как, например, работает алгоритм k-means, т.е. как группировать, сегментировать определенные наблюдения в отдельные классы, но полностью на этом наборе мы не показываем, что может произойти, если мы применим алгоритм k-means, если отдельные наборы, на которые мы должны сегментировать, на самом деле невыпуклые.
Или если мы знаем, что мы должны сегментировать на два сегмента, но эти два сегмента сильно неравнозначны, например, один представляет только 1% наблюдений.
И тогда такие методы, как алгоритм k-means, который отлично работает на обработанных данных, практически могут не работать. Тогда человек, не понимающий идеи, лежащие в основе этих методов, оказывается беспомощным. Это можно свести к простому совету - нанимайте специалистов в этой области. Не рассчитывайте на то, что хорошо сделанный автомат заменит аналитика. Эти программные продукты очень полезны, но именно для аналитиков. Они могут повысить эффективность работы аналитика, поскольку он сможет работать намного быстрее, используя эти программы, но они не заменят его. Это похоже на то, как я считаю, что хороший топор повышает эффективность работы дровосека, а хорошее программное обеспечение помогает исследователю данных, но сам по себе топор не срубит дерево.
Я знаю, что технологии сильно ускоряются, но для меня это все еще короткий промежуток времени. Что точно произойдет, так это то, что машины будут лучше распознавать изображения и речь, они будут лучше распознавать контекст, у нас будет все больше и больше аудиоинтерфейсов, ботов, вещей, которые еще недавно были совершенно недоступны. То есть мы сможем хорошо автоматизировать те виды деятельности, которые являются механически повторяющимися.
Возможно, если задуматься, это тоже довольно механически повторяющийся механизм, но автономные автомобили сделают нашу жизнь проще. Многие другие процессы будут упрощены и оптимизированы. Это будет иметь социальные последствия, поскольку многие профессии могут потерять смысл своего существования или стать редкими. И такие очень разные, как, например, авиадиспетчер, потому что автомат может сделать это не хуже человека. Начальник станции, что в некотором роде похоже, а также контролер билетов в общественном транспорте может быть заменен автоматом, или другим способом автоматического сбора платы за проезд в транспорте.
Безусловно, выявление множества заболеваний с помощью автоматов может помочь нам жить дольше и болеть реже. С другой стороны, я думаю, что в какой-то момент мы начнем переживать, если уже не боимся того, к чему все это приведет. Я тоже испытываю этот страх, потому что у меня есть теория, что именно развитие искусственного интеллекта приведет к уничтожению человечества. Я имею в виду, что это не только моя теория, потому что еще в девятнадцатом веке парень по фамилии Батлер придумал нечто подобное, что люди создадут искусственный интеллект, который уничтожит человечество.
Позже эта концепция была прекрасно повторена Фрэнком Гербертом в его серии "Дюна". Это научно-фантастическая серия. Тем, кто еще не прочитал его, я советую это сделать. Это 1960-е годы, но они по-прежнему очень интересны, и можно найти очень много параллелей с тем, как трансформируется мир. Там, в Герберте, люди в какой-то момент уничтожили все мыслящие машины, избегая самих растений, и наложили очень жесткий запрет на создание любых мыслящих машин.
Я думаю, что мы по какой-то причине делаем несколько необоснованное предположение, что этот искусственный интеллект, который мы в конечном итоге выведем, будет иметь добрые намерения по отношению к нам. В конце концов, мы сами их создали. Но на самом деле я не понимаю, почему это должно быть так. Почему у него не должно быть этого классического, скажем так, менталитета дикаря из каменного века, который только и смотрит, как бы побить человечество булавой по голове и перестать о нем заботиться. Поэтому я задаюсь вопросом, в правильном ли направлении мы движемся, хотя, конечно, нельзя полностью отрицать, что сейчас в краткосрочной перспективе любое развитие этих методов, которые мы обычно называем искусственным интеллектом, делает нашу жизнь проще и будет продолжать делать это еще какое-то время.
Спасибо тебе.