Жизнь и работа с моделями
Продолжение жизни и работы с ошибками — обсудим штуки на уровень выше.
Эссе получилось большим, но точно найдутся упущенные моменты. Если я что-то забыл — пишите. Буду благодарен и за более интересные примеры.
Итак. Давайте подумаем, как мы предсказываем будущее всякое.
Предсказаниями мы занимаемся постоянно — это буквально суть нашего существования:
- Переходя из комнаты в комнату мы знаем предполагаем, что мебель будет расставлена аналогично прошлому посещению.
- В холодильнике мы ожидаем увидеть еду, которая, по нашему прогнозу, утолит голод.
- Мы ожидаем, что участники дорожного движения будут вести себя в рамках общеизвестных правил. Если машина даёт сигнал поворота, мы прогнозируем, что она повернёт.
Это примеры «гарантированных» предсказаний, но даже они могут не исполнится:
- Мебель в комнате могла быть переставлена во время нашего отсутствия. В некоторых случаях самой комнаты может уже не быть.
- Супруг мог подъесть оставшуюся еду или та могла испортиться.
- Водитель мог включить поворотник из-за ошибки, а может он просто человек такой.
Фактически, мы никогда не знаем актуальное состояние мира вокруг нас:
- Не воспринимаем весь спектр информации об окружении, например, не видим в инфракрасном свете.
- Сигналы до органов восприятия и от них до мозга передаются не мгновенно.
- Мозг тоже работает не мгновенно.
Мы даже не обладаем всей информацией о прошедших событиях.
Поэтому.
Каждое наше решение и действие основывается на предположениях о прошлом, настоящем и будущем.
Штуки, которыми мы создаём предсказания, называются моделями.
Модели
Исторически, понятие «модель» воспринимается как сугубо научная штука, максимум — инженерная. Иногда — детская.
На мой взгляд, это существенное упущение нашей культуры. Понимание моделирования как отдельной деятельности улучшит решения, которые принимают люди. Например, станет проще корректировать ошибки.
Поэтому сложных определений использовать не буду.
Модель — это штука, которая позволяет предсказывать состояние реальности других штук. В любой момент времени. Почему «реальность» зачёркнута, станет ясно далее.
Модели находятся не только в нашем мозгу. Они бывают внешними:
- Расписание автобусов — модель, которая предсказывает наличие транспорта на остановке.
- Игрушечная машинка предсказывает некоторые свойства автомобилей. С её помощью ребёнок учится взаимодействовать с транспортом, а взрослый коллекционер услаждает взгляд образом дорогого авто.
- Программа — модель, которая «предсказывает» правильное поведение моделируемой системы. Например, бухгалтерская программа «предсказывает» поведение идеальной бухгалтерии, согласно существующим законам и соглашениям. Хорошая бухгалтерская программа (модель) разрешает проводить (предсказывает) только разрешённые операции.
Работают модели также по-разному:
- Компьютерная модель рассчитает силу и последствия ядерного взрыва путём числовых преобразований.
- Деревянная «лодочка» поможет рассчитать движение крупного судна с помощью реальных физических взаимодействий с потоком воды.
- Мысленная модель девушки с помощью сети нейронов подскажет: ответит та на поцелуй или влепит пощёчину.
В контексте этого эссе не важно как физически реализована модель, если это не оговорено явно.
Независимо от реализации, автором модели, напрямую или косвенно, всегда является мозг.
Часто, особенно в начале жизни, модели появляются в виде неявных мысленных конструкций и только позже, по мере развития человека, становятся более выраженными и переходят в реальный мир, формируя:
- разум сообщества, как расширенный фенотип;
- экзокортекс — инструменты для расширения умственных возможностей человека.
Подозреваю, мозг только моделированием и занимается. Возможно, даже сознание — результат моделирования. Но для дальнейшего изложения эти мои верования не важны.
Можно ли обойтись без моделирования?
Давайте попробуем.
Варианта два:
- Ничего не предсказывать.
- Не использовать модели для предсказания.
Жизнь без предсказаний — жизнь камня или бревна. Причём не метафорического, а реального. Даже если человек плывёт бревном по жизни, он всё равно предсказывает. Хотя бы то, что ему надо есть, чтобы жить.
Второй вариант сложнее.
Допустим, мы хотим узнать, куда попадёт ядро при выстреле из пушки. И без моделей.
Для этого мы можем…
Вспомнить, что из этого места при таких же условиях погоды из такой же пушки стреляли таким же ядром и попали воооон в то место. Ууупс, мы использовали модель стрельбы из пушки, сохранённую в нашей памяти. Модель описывается набором случаев, но всё-ещё остаётся штукой, которая делает предсказания.
Достать такую же пушку, такое же ядро, поставить её на нужное место и выстрелить. Теперь мы использовали полноразмерную физическую модель.
Использовать математику, физические формулы, компьютеры, само собой, смысла нет — это явное моделирование.
Два раза выстрелить из целевой пушки целевым ядром тоже не получится: состояние и пушки и ядра после выстрела изменятся — это будут уже «новые» пушка и ядро. В этом чувствуется что-то родственное принципу неопределённости.
Остаётся наугад ткнуть пальцем. Нооо… рука с пальцем — тоже предсказательная штука. Она обладает свойствами, которые влияют на предсказания. Например, если рука больная и её тяжело поднимать вверх, то в точки на горе она будет указывать реже.
Получается, без моделей не обойтись.
Даже это эссе — описание модели работы моделей.
Особенности моделей
Раз без моделей никуда, необходимо уметь с ними обращаться, знать их особенности:
- Насколько дорого поддерживать работу модели, сколько ресурсов она потребляет.
- Насколько точный прогноз даёт модель.
Ресурсы, как всегда, будем понимать в широком смысле: время, деньги, люди, нейроны, электричество, объём жёсткого диска, размер склада для хранения модели.
В случае точности важно помнить, что не бывает идеальных моделей:
- Допустим мы хотим предсказать состояние куска реальности.
- Для этого мы должны учесть все влияющие на него факторы.
- Часть факторов будет находиться вне выбранной области, поскольку не бывает идеально замкнутых систем.
- Следовательно, необходимо предсказывать поведение большего куска мира, чем планировалось. Переходим к пункту 2.
Чтобы получить идеальное предсказание, необходимо моделировать всю вселенную, что в данный момент невозможно.
Следовательно, все модели используют неполную информацию о реальности, а значит — ошибаются.
Исключение — математические модели.
Математика — штука абстрактная, к реальности не привязана, позволяет создавать замкнутые теории и метатеории. Например, евклидова геометрия — частный случай метрической геометрии — обе могут одинаково предсказывать, например, площадь треугольника.
Полезность
Назовём полезностью модели — отношение точности предсказания к тратам ресурсов. Чем больше — тем лучше.
От полезности обычно зависит используем ли мы модель и как часто. Полезность определяет удаление модели из нашего инструментария.
Например, из-за большей полезности в быту мы пользуемся евклидовой геометрией, а не её обобщениями, хотя точность предсказания одинакова.
За полезностью моделей необходимо следить и выбирать уместную в текущем контексте.
Во время прогулки по городу мы можем пытаться предсказывать движение пешеходов, подробно представляя их мысли и чувства. Но это приведёт к тому, что мы будем тупить и стоять на месте — люди будут проходить мимо быстрее, чем мы что-нибудь надумаем. Эту модель лучше оставить для общения с друзьями.
Планируя постройку здания, мы можем захотеть построить его копию, чтобы убедиться в надёжности конструкций. Вряд ли это решение окажется экономически целесообразным. Лучше оставить моделирование на откуп специализированному софту и моделям в меньшем масштабе.
Далее полезность будет мало упоминаться явно, но многие решения будут от неё зависеть.
Точность
Затрачиваемые моделью ресурсы зависят от способа реализации и желаемой точности.
Со способами реализации, на мой взгляд, всё ясно — они бывают очень разными.
А вот о точности лучше поговорить.
Предсказание модели зависит от:
- данных, которые подают ей на вход;
- конкретной реализации.
Эти факторы могут как уменьшать точность предсказания, так и увеличивать его.
Входные данные
Чем точнее входные данные, тем лучше предсказание модели.
Звучит банально, но многие об этом забывают. Например, начинают скармливать своему высшему образованию данные из телевизора. Мусор на входе даёт мусор на выходе, какое бы крутое образование у вас не было.
Из-за особенностей моделируемого явления и реализации модели, разные части данных могут по-разному влиять на результат. Поэтому, в первую очередь необходимо вкладываться в точность их самой влиятельной части.
Допустим, мы хотим предсказать движение плота на море.
Поскольку плот — штука пассивная, нам необходимо знать силу и направления течения, силу ветра. Плоты обычно плоские, поэтому течение будет сильнее влиять на движение плота, следовательно, на его измерении нам надо сосредоточится.
Но если мы поставили на плот парус, то потребуется не только пересмотреть реализацию модели, изменив учёт ветра, но и пересмотреть приоритеты получения входных данных в пользу точного измерения силы и направления ветра.
Конечно, лучше всего измерять и то и другое с максимальной точность. Мореплаватели прошлого с этим неплохо справлялись.
Реализация
Со входными данными всегда можно что-нибудь нахимичить, а вот модель часто делается один раз, после чего поддаётся изменению в довольно узком промежутке.
Более того, стоимость разработки модели растёт нелинейно с её точностью.
При этом в затраты следует записывать не только стоимость создания и поддержания работы самой модели, но и стоимость подготовки данных, которая зависит от реализации. Если модель предполагает сложную подготовку, это обязательно скажется на её полезности и применимости.
Чтобы сделать модели дешевле, их упрощают, уменьшая:
- детализацию предсказаний;
- количество учитываемых факторов;
- область применения.
Детализация предсказаний
Надеюсь, архитекторы поправят меня в случае ошибки в этом примере, а не пойдут сразу убивать.
Допустим, мы хотим узнать как поведёт себя новое здание.
Для этого мы можем построить его модель с точностью для кирпича. Любым способом реализации, не обязательно физической постройкой. Благодаря такой модели мы бы узнали не только устойчивость конструкций, но и в каком кирпиче появятся трещины, если таковые будут.
Но, скорее всего, такая точность не нужна. Куда важнее знать будут ли трещины в целом и если будут, то в какой части здания.
Поэтому проще смоделировать его на уровне крупных элементов: стен, перекрытий.
Это решение сократит количество элементов модели, а значит удешевит её и уменьшит пространство для появления ошибок. Модель станет гибче. Например, мы без изменения модели сможем менять материал и технологию возведения стен — достаточно сохранять их базовые характеристики.
Учитываемые факторы
Допустим, мы выбираем другу подарок. Для этого нам необходимо предсказать, чего бы он хотел, — создать модель желаний нашего товарища.
Модель может учитывать разные параметры: пол, возраст, цвет волос, гендер (не дай бог промахнуться), хобби, предпочтения в одежде и еде, финансовое состояние, его высказывания о подарках.
При желании можно развести бурную деятельность: заполнять списки, составлять таблицы, опрашивать соседей по лестничной клетке, детсадовских друзей, etc. Но надо ли тратить столько сил?
Определённо нет. Можно сократить усилия: вычеркнуть несущественные факторы и лишние источники информации.
Маловероятно, что подарок будет зависеть от цвета волос или одежды человека. Дарить одежду — моветон. Вряд ли отдалённые знакомые дадут дельный совет.
Убрав лишние факторы мы сконцентрируемся на важном. Это точно удешевит её создание, может быть даже улучшит её предсказания.
В то же время, сокращать факторы следует аккуратно, чтобы не упустить существенные детали. Если ваш друг — девочка младшего школьного возраста, то она определённо может мечтать о красивой заколке, которая должна подходить как к цвету волос, так и к её одежде.
Область применения
Возвращаясь к примеру со зданием.
Мы можем создать модель, которая рассчитывает поведение конструкций при температурах от абсолютного нуля до 6000 градусов, учитывает скачки гравитации, порывы ветра до 100500 м/с и землетрясения в 10 баллов.
Наша модель получится всеобъемлющей, дорогой, неимоверно крутой и произведёт кучу ненужных результатов.
Проще и дешевле изучить реальные условия эксплуатации и разрабатывать модель сразу под них. Например, под температуру от -50 до 50 градусов цельсия. Да, здание нельзя будет построить на полюсе или в пустыне, но скорее всего его там строить и не требуется.
А на случай пожара сделать отдельную модель, которая просчитывает важные для пожара характеристики постройки.
Ограничения
Как видно из соображений выше, по своей природе каждая модель имеет ограниченную область определения/применения.
Это следует учитывать при любом взаимодействии с моделью: создании, изменении, использовании. Достоверная в одном контексте модель может сослужить злую шутку при его изменении, которое вы не заметите или не осознаете.
Хорошим примером будет изменение поведения человека в экстремальных условиях. Если, попав в такие условия, продолжить взаимодействовать с людьми по стандартной модели, можно нарваться на большие неприятности.
Возьмём спасение утопающих. Часто утопающие от страха ведут себя нерационально и топят спасающих вместе с собой. Поэтому при оказании помощи нужно переключиться с модели, предсказывающей поведение обычного человека, на модель, предсказывающую поведение утопающего, и действовать в соответствии с правилами спасения на воде.
Управление моделями
- Человеку надо предсказывать состояние мира.
- Чем лучше предсказания, тем человек успешнее.
- Для предсказаний используются модели.
- Следовательно, чем лучше человек использует модели, тем он успешнее.
Выглядит просто, но с управлением моделями бывают сложности.
Мы не в состоянии иметь бесконечное количество моделей: их будет негде хранить, независимо от реализации. Но даже если бы мы распоряжались достаточным количеством моделей, чтобы считать его бесконечным, мы не смогли бы оперативно выбирать из них нужную для использования.
Поэтому перечень доступных моделей ограничен и лучше бы он не разрастался сверх меры.
Не менее важная проблема: как убедиться, что модель работает правильно? До этого момента мы рассуждали о моделях, как о чём-то данном. Дескать, модель дана нам свыше вместе с информацией о всех нюансах её работы. Но ведь это не так.
От того, как человек работает с этими проблемами, зависит скорость и точность его решений.
Эксперты, профессионалы выделяются как раз набором моделей и навыками по его преобразованию.
Если же человек управляет моделями плохо, то кроме обычных ошибок, он может словить и что-нибудь поинтересней. Например, когнитивный диссонанс или шапочку из фольги.
Верификация
Я уже затрагивал вопрос верификации моделей в статьях:
- Тесты, которые тестируют тесты
- Дублирование логики — единственный способ верификации ПО
- Верификация частными случаями
Не смотрите, что там о тестировании. Тесты — частный случай моделей.
Поэтому повторю кратко.
Вариантов проверить модель всего два:
- сравнить её работу с другой моделью;
- сравнить её работу с реальностью.
Второй вариант я вижу частным случаем первого. Реальность — модель, которая не совсем нам подконтрольна. Утрируя, не факт, что мы отличим реальность от симуляции.
Иными словами, набор моделей по суммарной области определения должен быть эквивалентен модели реальности.
Поэтому удобно считать, что у нас в запасе модели с разным уровнем доверия, где реальность — самая-самая доверенная модель.
В таком случае мы можем взять несколько моделей с пересекающимися областями определения, скормить им данные из этих областей и сравнить результаты. Тут нам особенно поможет модель-реальность, так как её область определения включает все остальные.
В зависимости от результата мы изменим уровень доверия к использованным моделям.
Делать это можно по-разному:
- Повышать до максимального уровня из использованных моделей, если результаты совпадают.
- Понижать, если предсказания модели противоречат более доверенной модели.
- Понижать, если предсказания модели противоречат множеству прочих моделей.
- Повышать сверх максимального, если результаты всех моделей совпадают.
- И так далее. Обсуждение подобных эвристик — отдельная большая тема.
Отдельно отмечу: хорошим признаком надёжности является совпадение результатов моделей, созданных разными методами. Подробно об этом я писал в статьях о тестировании.
Для примера:
- Совпадение результатов моделей, созданных разными людьми, обычно более показательно, чем совпадение результатов моделей созданных одним человеком.
- Совпадение результатов моделей, работающих разными способами (математической моделью, статистической моделью, физической моделью), обычно более показательно, чем совпадение результатов моделей на одной технологии (например, двух статистических).
Собственно, так и работает наука: теорию сравнивают с практикой и пытаются воспроизводить результаты в разных условиях разными командами.
Инженерия так тоже работает: в важных системах (самолёты, АЭС, ракеты) все компоненты имеют, как минимум, один дубликат.
Само собой, кроме изменения уровня доверия, можно менять область определения модели или её реализацию. Об этом поговорим ниже.
Требования к перечню и моделям
Разберёмся, что конкретно мы хотим от перечня.
Модели должны быть доступны
Модель не окупит затрат на своё создание и поддержку, если ей не пользоваться.
В первую очередь это значит, что модели должны быть ближе к телу. Самое важное — в голове; чуть менее важное — в мобильнике, ноутбуке, записной книжке; совсем неважное — в книжном шкафу, в голове другого человека, в облаках.
Не каждую модель разместится в голове или мобильнике. Поэтому приходится соблюдать баланс между размером/точностью модели и её доступностью.
Кроме того, важны как потенциальная возможность доступа, так и скорость его получения.
Например:
- Базовую юридическую информацию люди стараются запоминать. По крайней мере, границу между уголовной и административной ответственностью обычно представляют.
- Менее важную, но потенциально полезную, хранят в своих записях.
- На случай, если нужна полная модель юридической области, обращаются к специализированным юристам.
Обычно мы не таскаем за собой юриста, но примерно знаем за какое время и как получить доступ к его услугам.
Модели должны использоваться
Внезапно, но факт.
Область определения модели должна пересекаться с теми задачами, которые вы решаете или потенциально будете решать. Иначе модель будет лежать мёртвым грузом.
Предсказания модели должны иметь значимое влияние на ваши решения. В частности, модель будет бесполезна, если:
- Вы не учитываете предсказания модели. Этим грешат многие менеджеры при взаимодействии с аналитиками.
- Модель даёт очень неточный прогноз. Например, предсказывает место попадания выстрела из пушки с точностью в километр.
- Модель будет работать дольше, чем время до момента принятия решения.
- Модель даёт предсказание для областей, с которыми вы не работаете.
- Создание и обслуживание модели дороже, чем потери от неверного решения.
Дорогое обслуживание модели — частая и не очевидная ошибка. Так или иначе с ней сталкиваются многие:
- Предприниматели проводят дорогие исследования вместо того, чтобы быстро и дёшево проверить реализацию идеи.
- Люди впрягаются в получение образования, которое им никогда не потребуется.
Модели должны быть надёжны
Само собой, они должны соответствовать реальности и давать применимые предсказания, но это необходимый минимум.
Хороший набор моделей устойчив к пертурбациям: изменениям реальности, ошибкам входных данных, ошибкам использования моделей, проявлению новых факторов. В конце концов, ошибки неизбежны.
Единственный известный мне способ обеспечить надёжность — дублирование.
Для каждой возможной ситуации лучше иметь несколько альтернативных моделей. Не обязательно все они должны быть легко доступны и одинаково точны, но необходимо знать, как проверить результаты одной модели другой.
Дублирование моделей не только усиливает уверенность в результатах, но позволяет и точнее определять источник ошибок.
Представим, что у нас три модели, описывающие поведение сложной штуки. Допустим первая из них даёт предсказание А, а две другие Б. Логично предположить, что в первой модели ошибка.
Эта идея перекликается с изложенным в части о верификации, включая статьи, на которые та ссылается.
Схожий подход применяется в археологии.
Раскапывая древности, необходимо определять к какому времени относятся находки. Проблема в том, что нет единственного универсального способа определить датировку. Каждый из существующих способов имеет границы применения и разную точность.
Например, дендрохронология позволяет определять время максимум в пределах последних 10000 лет, и то, в зависимости от географии.
В то же время, за счёт пересечения разных моделей определения возраста находок, удалось построить более-менее непрерывную датировку. Более того, сами шкалы дендрохронологии строятся на основе аналогичного сопоставления найденной древесины.
Операции над перечнем и моделями
Если существует перечень, то его элементы можно добавлять, удалять, изменять. Это очевидные вещи.
Не очевидно, что это же можно делать с моделями. Особенно с моделями в нашем мозгу.
Если имеется некий расчёт на листе бумаги или программа, то многие ещё понимают — это не единственно возможные реализации моделей. Расчёты могут быть сделаны с разным качеством, программа может быть изменена и даже переписана с нуля.
В случае моделей в мозгу непонимание распространено шире. Людям сложно представить, что их знания (возможно и личность, сознание) — не цельное неделимое явление, а множество штук, каждую из которых возможно оценить, изменить, заменить или удалить.
Каждая часть вашей картины мира — каждая модель — не вылита в границе, не идеальна, она может и должна быть улучшена или заменена на более полезную альтернативу. Со временем.
Это единственный путь к лучшей модели реальности и лучшему себе.
Об улучшении себя я говорю потому, что каждая ваша модель — кусочек вас. Даже внешняя модель, как часть экзокортекса, является вашей частью — человек уже давно вышел за пределы своего тела. Представьте, насколько болезненной может оказаться потеря мобильника или доступа к вашей почте.
Поэтому перед нами стоит вопрос не что делать, а как. Выделим несколько направлений деятельности. Как всегда.
Осознанно работать с перечнем и моделями
Все люди изменяют собственную картину мира. Но делают это, в основном, инстинктивно, как придётся.
Классический пример: учить учиться, якобы, начинают в университетах, хотя человек уже прошёл и детсад и школу. Мало того, что это неверно, по крайней мере для образования в СНГ, так ещё и не ясно как люди учатся до университетов. Однако ж учатся.
Как все инстинктивные действия, инстинктивная модификация себя ненадёжна. Нет гарантий, что после изменений вы станете лучше, а не хуже.
Чтобы переключиться на осознанное управление моделями, требуется некоторое упорство и понимание. Но если это сделать, то эффект для человека, как личности, будет сравним с эффектом изобретения науки на человечество.
Опробовал на себе :-D
Следить за качеством перечня и моделей
Критерии качества мы уже обсудили.
Ещё раз обращу внимание на дублирование — обеспечение пересечения областей определения моделей.
В идеале следовало бы обеспечивать и пересечение областей значений, но это сложно.
Следить за уровнем достоверности моделей
Не достаточно один раз оценить точность модели, это и не всегда можно сделать.
Необходимо постоянно сверять её с реальностью и другими моделями, поскольку всегда и везде случаются ошибки.
Изменять область определения модели или даже разбивать модель на несколько специализированных — нормально.
Само собой, от неверных моделей надо избавляться. Важно признавать свои ошибки, равно как и их причины.
Заимствовать модели выгоднее
Создание хорошей модели — занятие сложное, требует времени, ресурсов, опыта.
В наше время один человек своими усилиями не создаст конкурентную картину мира. Какие бы способности у него ни были.
Поэтому следует заимствовать чужие модели, модифицировать их под свои нужды.
Делать это надо с умом. Бездумное, бессистемное накопительство не только не принесёт пользы, но может и ухудшить ваш набор моделей из-за появления противоречивости или перегруженности одинаковыми моделями.
Я, например, пополняю перечень моделей, читая книги. Подбираю их так, чтобы они закрывали наиболее проблемные/острые части моей картины мира и при этом их тематика частично пересекалась с уже усвоеными мной знаниями.
Модели могут иметь разный вид, храниться в разных местах
Не обязательно всё держать в голове или блокноте. Иметь разнородные модели не только нормально, но и правильно. Особенно в наш век автоматизации, когда часть моделей можно сразу оформить в виде программы или формул в электронных таблицах.
Я выношу модели в блог и делюсь с вами. В голове оставляю только базовые концепции. Это не только разгружает мозг, но и позволяет лучше проработать модели и проверять их взаимодействие друг с другом — обратите внимание на обилие кроссылок между ключевыми постами блога.
Добавлено 19.02.2022. Модели могут по-разному храниться даже в вашем мозгу. Вспомним как человек учится делать новое: сначала приходится все действия проделывать осознанно, явно думать о каждой манипуляции, но позднее часть действий (а то и все) переходят в рефлексы, становятся автоматическими. Также и с моделями. Модель может быть перемещена на уровень рефлексов, чуйки, а при необходимости более сложных манипуляций (или изменения самой модели) может быть возвращена в осознаннаваемую часть деятельности. Более того, можно иметь несколько моделей разного качества: простую рефлекторную и сложную осознанную.
Следить за иерархией моделей
Модели иерархичны. Модель может включать в себя дочерние, используя их результаты, и быть частью родительской модели.
Соответственно, ошибки, ограничения, точность и прочие свойства моделей склонны распространяться в обе стороны по иерархии.
Часто, точка интереса: источник ошибок, место траты ресурсов, etc — находится не в самой «проблемной» модели, а где-то рядом. Навык правильного поиска точек интереса позволит упростить изменение моделей.