Поделиться

суббота, 15 июня 2013 г.

Игры и наблюдения 10

Давно не отчитывался (наверное, когда-нибудь напишу книжку про 1001 игру, в которые играл... одна такая уже есть, ну да мне до моей все равно еще очень далеко).

Долго игрался в Sleeping Dogs, потому как зацепило. Зацепило несмотря на то, что это игра в открытом мире, которые я, вообще-то, не слишком жалую. Но игрушка живая, персонаж в чем-то симпатичен, возможностей много, но не слишком. Правда, DLC, который разрабы к нему выпустили, ужасен. Он ужасен не потому, что сделан, чтобы заколотить еще немного денег, - все DLC предназначены для этого. Почему он ужасен, поймет каждый, кому довелось поиграть за полицейского под прикрытием в бытность его одним из Триады. В это "чудесное" время у него было много крутых шмоток и тачек, а в рамках DLC его опустили на землю: и такой свободы уже нет, и таких шмоток, и таких тачек. В общем, пахнет халтурой и как-то... деморализует.

К играм в открытом мире относится и второй мой фаворит последних месяцев - FarCry 3. Вышел он давно, но у меня до него руки не доходили. Вообще, интересное дело: то ли разработчики все же эволюционируют в части открытых миров, то ли моя личная планка качества быстро снижается. В FarCry 3 мне нравится абсолютно все, по крайней мере, пока. Нормальный герой, которого ты чувствуешь, видишь его действия, слышишь его реплики. В общем опять-таки, "живой". Меня вот эта же неуловимая живость радовала в первом Dragon Age: там герой не разговаривал, но за счет множества диалоговых опций создавалось впечатление, что ты не просто роботам инструкции отдаешь на поле боя, но и какие-то социальные связи строишь, как-то влияешь на жизнь героя. А вот, например, во втором Dragon Age и в Mass Effect-ах герои логарифмированы по основанию 2 - неважно, сколько вопросов тебе или им задается, у вас только два варианта ответа на каждый из них, вот и измеряется все в порядках двойки. Лара в Tomb Raider - она вообще сама по себе, у нее какие-то свои проблемы всю игру, которые со мной как с игроком никак не связаны.

Но самое сильное впечатление на меня в последний месяц произвела игрушка Remember Me. Представьте себе деградировавший Париж будущего и развитую индустрию по отбору воспоминаний, охотников и корпорации, которые крадут оные или того круче - делают ремикс, то есть секунду назад ты думал, что послал бывшую девушку далеко и надолго, а сейчас считаешь, что ты ее убил, и ничего тебе больше не остается, как покончить с собой от горя и чувства вины. Круто! Но, как и любую хорошую концепцию, эту тоже можно обгадить фиговой реализацией. Для этого необходимо:
  • Сделать игру абсолютно линейной, линейной до такой степени, что даже слово "линейность" кажется недостаточным.
  • Блокировать или обрезать обратный путь практически на каждом метре, чтобы ничего нельзя было толком исследовать. Скажем перед тобой два пути: налево и направо, один основной, другой - со спрятанными ништяками. Понять, какой из них какой - невозможно, а делаешь хотя бы шаг в сторону основного пути - тебе тут же заставку и бетонную дверь за спиной, чтобы не вернулся.
  • Обещанных ремиксов памяти - самой интересной фишки игры (можно прокручивать воспоминание какого-либо человека взад и вперед, менять там что-нибудь и смотреть, что получается у него в голове) нужно сделать всего 4 на всю игру, а остальное забить невнятными локациями и нудными боями.
  • Боевая система - это вообще самое главное. Без того, чтобы испортить ее, игру целиком не испортить. Но тут уж разработчики постарались... Трудно описать все минусы, потому что их много, и они связываются в устойчивую систему, скажу лишь одно: у меня от боевой системы такое ощущение, как будто я в ржавом корыте съезжаю вниз по бетонной лестнице... корыто гремит и разваливается по дороге, а меня трясет и суррогатит на каждой ступеньке. Игрок поставлен в зависимость от ритма нажатий клавиш, в то время как противники таких причуд не имеют - атакуют один за другим, когда хотят. Бои очень долгие и нудные, их очень много (хотя, когда их нет минут 5, нудным начинает казаться уже процесс навигации по коридорам с традиционно футуристичными серыми или белыми стенами).
Пока все, на очереди уже лежит The Last of Us, пока даже не смотрел.

А, и еще немного про E3: мне кажется, что Sony одержала полную победу над Microsoft. Это была, как обычно, умная победа. По крайней мере, таково мое мнение как core-геймера - мне медиацентр с встроенными игровыми возможностями не нужен, у меня компьютер есть, телек с Интернетом и USB-портами, bluray-домашний кинотеатр с интернетом и USB-портами. Мне не нужно, чтобы приставка за мной следила, записывала все, что ей бог на душу положит, и отправляла это в Microsoft, а при отключении Интернета (и, следовательно, возможности таких посылок) отказывалась работать. Даже если предположить, что это все домыслы, меня искренне бесит постановка проблемы: я заплатил за приставку, я заплатил за игру, но теперь я еще должен этой приставке обеспечить Интернет минимум раз в сутки ("Тамагочи", ёлки!), чтобы она связывалась с Microsoft для решения проблем Microsoft по цифровым правам, проблем, не имеющих отношения ни к моим проблемам и желаниям, ни к функционалу игры. То есть, заплатив два раза немало денег, я, оказывается, еще и должен что-то им всем! А не охренели ли вы? Скоро вы заставите меня при запуске консоли раздеваться догола, дабы удостовериться, что это именно я - законный пользователь приставки... кстати, сначала придется сделать то же самое в магазине, чтобы потом было, с чем сверять. Максимум, на что я могу согласиться, - это реальная игровая консоль с медийными возможностями и без кромешной дури в голове.

Нужно понимать, что победа Sony на данном этапе предварительна - продажи новых приставок еще не начались, игры еще не разработаны. В целом же, мне кажется, что с момента начала продаж начнется, возможно, и последний этап борьбы консолей за выживание - именно 4-тая PS и... 1-ый XBox покажут, не пора ли концепции консолей на свалку истории - Apple вон уже поддержку джойпедов с ОС встраивает. Правда, эти джойстики размером с сам iPad, да и в целом, идея распространения по миру планшетных компьютеров, управляемых касанием, с последующим расширением их функционала... обратно до управления с помощью манипуляторов вызывает вопросы у более-менее нормального разума. Однако, как известно, бредовость замыслов Apple с лихвой компенсируется пафосом и не вызывает проблем ни у самой компании, ни у ее преданных клиентов.

понедельник, 10 июня 2013 г.

Рассказы об анализе: Почему? Открытие второе

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

Кратко изложу свой подход к решению задачи. Возьмем, к примеру, аномальную жару. Она, очевидно, может повлиять на давление в резервуаре с веществом, как следствие, на вероятность трещины в резервуаре и вероятность аварии. Но это еще не все: та же аномальная жара вполне может повлиять на радиус зоны распространения физических параметров аварии, мощность взрыва, скорость испарения ядовитых веществ. Кроме того, необходимо учитывать и эффект домино или каскадный эффект: одна авария может привести к другой, та к третьей и так далее. Иными словами, если происходит первая авария, нужно понимать, куда бежать, а бежать нужно не только к уже взорвавшемуся агрегату, чтобы ее ликвидировать, но, возможно, и к тому агрегату, который, согласно расчетам, имеет наибольшую вероятность взорваться третьим в цепочке и/или нанести при взрыве максимальный ущерб. Почему третьим, а не вторым? Потому что возможно, что второй агрегат имеет настолько большую вероятность взорваться после взрыва первого, что находиться рядом с ним опасно, или, наоборот, он имеет настолько ничтожную с точки зрения ущерба зону распространения физических параметров даже с учетом внешних природных и техногенных факторов, что о нем не стоит беспокоиться, сосредоточив усилия на агрегатах 1 и 3. Я предлагал строить модель в виде деревьев всех возможных цепочек аварий, иными словами, я предлагал использовать деревья событий, где каждый узел – это авария, и пересчитывать параметры (вероятности аварии и параметров распространения) с учетом всего пути, пройденного из корня, то есть от первой, начальной аварии до данной.

Подход был отвергнут коллегами на основании того, что при его реализации возникает «комбинаторный взрыв», то есть объем необходимых расчетов растет взрывным образом с увеличением количества возможных сценариев аварий. Скажем, в декларации безопасности объекта зафиксировано n возможных сценариев аварий, тогда количество всех возможных цепочек будет равно количеству перестановок из n элементов. При 5-ти возможных аварийных сценариях, нам нужно будет работать со 120 цепочками и 325 узлами, что не так плохо, но уже при 10-ти возможных сценариях мы имеем 3 628 800 цепочек и 9 864 100 узлов. Это и правда мощно! В одной из рассмотренных деклараций безопасности число аварийных сценариев превышало несколько сотен, со всеми вытекающими цифрами.


Ключевой момент здесь не в самом отказе коллег от подхода, а в причине этого отказа. Разумеется, в ходе решения возникает комбинаторный взрыв: чтобы понять, как ситуация будет развиваться на следующем шаге, нам необходимо оценить ее на данный момент, а она зависит от всего, что уже нагрелось, разорвалось, вытекло или горит, то есть мы вынуждены «потрогать» каждую аварию на каждом шаге. Это метод полного перебора, он предлагался мною в качестве основы, а не в качестве готового решения. Разумеется, необходимо ограничивать перебор: ввести эвристики, применить принцип разумных предположений, распространить ограничения. Например, мы можем с уверенностью сказать, что если на агрегате уже произошло возгорание, то на нем уже не может возникнуть авария по другому сценарию, который предусматривает отсутствие возгорания. Мы можем считать, что на одном агрегате происходит только одна авария. Мы можем ограничить рассмотрение 2-мя или 3-мя авариями в цепочке (уровнями в деревьях) и углубляться в деревья по мере необходимости и развития ситуации. Было, куда стремиться, нужно было только подобрать методы сокращения необходимых вычислений и требуемой памяти, в наибольшей степени отвечающие целям защиты людей и имущества. Но подход был отвергнут только из-за порождаемого комбинаторного взрыва.

На сайте JSMapReduce есть простой пример того, как из небольшого набора исходных данных – 52 карт – порождается гигантский массив для обработки – 2 598 960 комбинаций из 5 карт, которые могут достаться игроку в покер. Эта цифра получается, как количество сочетаний из n элементов по k элементов без учета различных положений элементов.

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

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

Причем здесь анализ данных? Все, опять-таки, очень просто: он зачастую связан с технологиями ничуть не меньше, чем с наукой. Деревья структуры, метод главных компонент, вычисление метрик и визуализация больших наборов данных руками не делаются, а потому требуют от аналитика «быть в теме» технологий, которые меняются куда быстрее фундаментальной науки. Иными словами, чтобы испечь пирог под названием «Результаты анализа», нужно замесить тесто из фундаментальной и прикладной науки, а также технологий, причем это касается и навыков работы с оными, а не только общих положений, и приправить все это солидной щепоткой интуиции. Методы добывания и обработки больших данных, MapReduce, программы построения статистических и других моделей, программы визуализации – это только на сегодняшний день, и это далеко не все.

воскресенье, 9 июня 2013 г.

Рассказы об анализе: Почему? Открытие первое

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

За 11 лет работы в высшей школе мне часто приходилось слышать от студентов (математиков и математиков-программистов), что их учат непонятно чему, чему бы в тот момент их ни учили, да и когда я сам был студентом, меня посещали те же мысли. И вот, спустя годы, начав заниматься регрессионными моделями, кластеризацией и прочими штуками, я стал периодически ощущать дежавю. Кластеризация, метод ближнего/дальнего соседа? – Где-то это было. Проверка гипотез? – Да, у меня был «трояк» по математической статистике, но я что-то такое помню. Средний кратчайший путь в социальном графе? – Да, да, да… И в какой-то момент меня осенило: не то, чтобы учили не тому – учат не так!

Я как-то, еще на первом курсе спросил своего преподавателя по математическому анализу Михаила Семёновича Кильдюшова (дай ему Бог здоровья и долгих лет жизни) о правильной методике преподавания с его точки зрения. Он ответил:

Мне кажется, нужно идти от частного у общему и от общего снова к частному.

Я себе это представляю так:
  1. Рассматриваем задачку, которую непонятно как решать, после чего решаем ее с помощью некоторого метода.
  2. Подробно рассматриваем сам метод, чем расширяем границы его применимости.
  3. Рассматриваем другие задачки, которые можно решать с его помощью.
Я когда-то взял за правило держать дома книги по всем областям математики и по всем технологиям, с которыми я работаю или может быть буду работать (в части технологий это была не самая умная моя идея: они устаревают). У меня есть книги по математическому, комплексному и функциональному анализу, топологии, методам оптимизации, квантовым полям и пр. и др., и, что интересно, только одна из них по характеру изложения полностью соответствует описанному выше принципу, остальные даже близко не приближаются.

Все или почти все книги по разделам математики (и, думаю, не только по ним), принадлежащие перу отечественных авторов, которые мне доводилось видеть (а это порядочно), написаны так, что их невозможно применять на практике. Они написаны фундаментальными математиками для фундаментальных математиков. Чтобы понять математическую статистику по такому труду, сначала нужно изучить том по теории вероятностей, а до него – пару томов по линейной алгебре и математическому анализу. Зачастую отсутствуют примеры практических задач. Недавно начал читать книжку по нечетким множествам. Прочитал 70 страниц, встретил один глупый пример про пирожок с нечеткой стоимостью, да и тот не был рассмотрен до конца, я уж молчу про его практическую ценность. Прочитал всю книгу, долго плевался от явных ошибок в формулах (стр. 9, первая страница основного содержания:

какое из двух высказываний «x не принадлежит A» или «x не принадлежит A» , является истинным, а какое ложным

(привет издательству «Питер»). В очередной раз убедился, что неопределенность можно формализовать, но так и не понял, что на практике со всем этим делать, когда применять, и что можно получить в результате (привет учебно-методическому объединению по «Прикладной информатике» на базе родного МЭСИ, которое рекомендовало эту книгу студентам, обеспечив гриф Министерства образования). А, между прочим, мне через неделю обрабатывать кучу анкет, где встречаются вопросы с открытым ответом. И что я должен делать?

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

Это был один полюс. Второй полюс – это «книги рецептов», где рассматриваются исключительно практические примеры. Если книгам первого типа не хватает реализации пунктов 1 и 3 из рассмотренного выше подхода, то книгам второго типа не достает содержания по пункту 2 – описания метода. В результате, если твоя задачка слегка или даже сильно похожа на рассматриваемую в таком «кулинарном справочнике», это еще отнюдь не гарантирует, что ты с его помощью свою задачку сможешь решить: нюансы, которыми твоя задача отличается от примера, могут быть критичными для используемого в книге метода, нивелирующими возможность или обоснованность его применения.

Истина, как обычно, лежит где-то посередине, между этими двумя полюсами, и там очень мало российских математических книг. Зато, что интересно, там очень много книг по программированию. Правда, лучшие и наиболее известные книги по программированию они, как бы, традиционно не отечественные (прошу прощения у российских авторов), как и соответствующие технологии. Зато разница в методологии изложения и результат обучения по фундаментальным математическим и программистским книгам лично для меня очевидны: сложный математический метод, применение которого представлено в виде программы на императивном языке программирования я способен понять, если не «влёт», то за конечное время, а вот если он расписан формулами… В общем, в последнее время и по математике я предпочитаю книги от зарубежных авторов.

Причем здесь анализ данных? Все очень просто: суть анализа данных в получении результата, но необходимость количественно оценивать свою уверенность в этом результате дополнительно требует и определенной теоретической подготовки (например, нужно понимать, корректировать ли результаты множественной проверки гипотез или нет, чем различаются разные варианты такой коррекции). То есть в рамках анализа данных мы совмещаем теорию и практику, причем это может быть теория откуда угодно и практика откуда угодно, и мы берем от теории все необходимое, но только необходимое, которое мы можем получить, опять-таки, откуда угодно (из фундаментальной, практической книги, из Интернета и т. д.). К примеру, один из методов фильтрации данных заключается в применении преобразования Фурье с последующей фильтрацией данных в их частотном представлении и обратным преобразованием. Этот метод появился давно и призван был решать проблемы, связанные с радарами и сонарами. Мы можем применять его к другим данным, не задумываясь о радарах, доказательствах теорем и физике волн, но должны представлять себе границы применимости метода. Итого, в анализе данных мы берем отовсюду столько, сколько нужно, но не больше – этим он мне и нравится, мне кажется, что он представляет собой выход из «фундаментального тупика», в котором оказываются многие люди, которые 5 лет учили математику, а теперь не могут решить ни одной практической задачи за границами 4-ех действий арифметики.