Я работаю специалистом по обработке и анализу данных (data scientist), поэтому большая часть моей работы включает в себя подбор оптимизируемых метрик и размышления о том, как выполнять процессы с максимальной эффективностью. Недавно я обнаружил совершенно удивительную книгу об экономических проблемах в СССР и о коллективе экономистов и компьютерных учёных, стремившихся решить их на основе данных. Книга называется Red Plenty. На самом деле она написана в жанре романа, что странно, однако представляет собой точную экономическую историю СССР. Автор активно заимствует информацию из книги 1973 года под названием Planning Problems in the USSR, которую я тоже приобрёл. При чтении этих книг я не мог не обратить внимания на параллели с планированием в любой современной организации. Факт, который покажется сегодня знакомым каждому data scientist: во второй книге есть цитата исследователя, жалующегося на то, что 90% своего времени он потратил на очистку данных, и только 10% — на само моделирование!

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

Балансовые ведомости и ручной подсчёт: настоящий кошмар


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

  • Снижение размерности при помощи устранения переменных. Поскольку приходилось отслеживать слишком много товарно-сырьевых ресурсов, чиновники часто ограничивали свой анализ 10 тысячами наиболее важных в экономике товаров. Но после планирования производства этих товаров часто возникала скрытая нехватка товаров, производство которых не планировалось централизованно, однако они при этом использовались как ресурсы для изготовления одного из 10 тысяч запланированных продуктов. Заводы, зависящие от этих товаров, часто простаивали месяцами, ожидая завершения дефицита.
  • Снижение размерности при помощи обобщения. Очевидно, что сортамент стальных труб состоит из тысяч различных типов. Они могут иметь различные длины, формы и состав. Чтобы снизить размерность задачи, чиновники вместо использования подробной схемы классификации часто отслеживали в моделях только общий тоннаж нескольких широких классов стальных труб. Хотя их модели успешно балансировали тоннаж труб для широких категорий (выход продукции в тоннах трубопрокатных заводов соответствовал тоннажу входящих ресурсов для заводов, где использовались эти трубы), существовали постоянные излишки определённых типов труб и дефицит других определённых типов труб. В частности, поскольку в качестве метрики использовался тоннаж, у трубопрокатных заводов был огромный стимул производить простые в изготовлении трубы большого диаметра. В результате этого существовал постоянный дефицит тонких труб.
  • Распространение корректировок только на несколько степеней назад. Допустим, при подсчёте баланса чиновники поняли, что им необходимо повысить выпуск одного товара. Если они его увеличат, то также потребуется увеличить целевые значения выпуска товаров, являющихся ресурсами для производства этого товара. Но если они сделают это, им также потребуется увеличить выпуск товаров, используемых как ресурсы для этих товаров, и так далее! Для этого при каждой корректировке требовался безумный объём дополнительных ручных вычислений. Чтобы упростить процесс, чиновники обычно вносили корректировки в значения для поставщиков первого порядка, не внося необходимых корректировок в планы для поставщиков поставщиков. Разумеется, это приводило к критической нехватке товарно-сырьевых ресурсов, что опять-таки вело к простоям фабрик и заводов.



Рисунок 1. Некоторые примеры ресурсов и товаров советской экономики в 1951 году, заданные в единицах веса. В этой сводке показано утрированное снижение размерности, более обобщённое, чем использовалось в планировании. На этой схеме большинство товарно-сырьевых ресурсов исключено и каждый отображённый товар сводится к нескольким типам продуктов. Множественные ступени цепи поставок сведены в единую ступень. (Источник: ЦРУ)

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

Оптимизации цепи поставок


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


Рисунок 2. Леонид Канторович, изобретатель линейного программирования и лауреат Нобелевской премии по экономике 1975 года.

В этой задаче оптимальные планировщики добились некоторого успеха. Например, в металлургии примерно 60 тысячам потребителей требовалось 10 тысяч различных типов продуктов, изготовленных 500 производителями. Производители были неодинаково эффективны в своём производстве. Некоторые производители были эффективны в изготовлении некоторых стальных изделий, но менее эффективны в другой стальной продукции. Зная общее требуемое количество каждого из продуктов и ограничения объёма товаров, производимых каждым заводом, нужно было решить, какой объём каждого из типов продуктов должен производить каждый из заводов. Если мы упростим эту задачу, только спросив, сколько каждый завод должен производить без учёта способа распределения его продуктов заводам-потребителям, то это однозначно становится примером решения задачи об оптимальных назначениях — хорошо изученного частного случая линейного программирования. Если нам дополнительно нужно оптимизировать распределение, учитывая зависящие от расстояния затраты на доставку с одного завода на другой, то задача становится более сложной, но всё равно решаемой. Эта задача становится похожей на транспортную задачу — ещё один хорошо изученный частный случай линейного программирования, но на этот раз обобщённый на множество товаров вместо одного.


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

Идеи оптимизации всей экономики


Хотя оптимальные планировщики смогли повысить эффективность нескольких отраслей, их планы были более амбициозными. Они считали, что смогут использовать линейное программирование для оптимизации всей экономики и превзойти по производительности капиталистические страны. Для решения этой задачи недостаточно было просто увеличить масштаб оптимизаций цепей поставок, используемых в отдельных отраслях. В неё входили теневые цены и процентные ставки, а также некоторые другие аспекты, которые я, честно говоря, не полностью понял. Однако, хотя я не полностью понимаю их реализацию, мне кажется, более общую цель планировщиков понять и объяснить проще:

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

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

Что произошло


В реальности ничего этого не получилось. Амбициозные идеи оптимальных планировщиков так никогда и не были приняты, и к 1970-м стало очевидно, что стандарты жизни в СССР ещё сильнее отдаляются от стандартов Запада. Вероятно, всё было бы лучше, если бы оптимальные планировщики смогли реализовать свои задумки, но, похоже, существует консенсус о том, что их планы бы провалились даже в случае реализации. Ниже перечислены некоторые из основных проблем, с которыми бы они столкнулись.

  • Вычислительная сложность. Как говорится в замечательном посте Косма Шализи, количество вычислений, необходимое для решения задачи линейного программирования, равно $(m+n)^{3/2} n^2 log(1/h)$, где $n$ — число продуктов, $m$ — число ограничений, а $h$ — величина допустимой погрешности. Поскольку количество продуктов $n$ исчислялось миллионами, а сложность пропорциональна $n^{3.5}$, на практике СССР невозможно было бы вычислить решение задачи планирования с достаточной детализацией (однако см. ниже). Любые попытки снижения размерности привели бы к тому же искажённому стимулированию и дефициту, которые одолевали предыдущие системы, руководствовавшиеся ручными подсчётами.
  • Качество данных. Оптимальные планировщики считали, что оптимальные компьютерные методы могут находить цены, более точно приближающиеся к равновесию, чем это возможно в рыночной экономике, где подверженные ошибкам живые агенты угадывали их методом проб и ошибок. Однако в реальности всё было бы с точностью до наоборот. Индивидуальные агенты в рыночной экономике достаточно хорошо понимают свои локальные ограничения и потребности, в то время как централизованные планировщики, по сути, не имеют представления о происходящем. Например, централизованные планировщики не обладают качественной информацией о том, когда заводу не удаётся получить поставку и они не имеют точного понимания того, насколько эффективнее одни устройства по сравнению с другими. Хуже того, для того, чтобы получить больше ресурсов, руководители заводов в СССР периодически лгали централизованным планировщикам о своей производительности. Ситуация стала настолько плохой, что, согласно одному из глубочайших государственных секретов СССР, централизованные планировщики в качестве информации об отдельных советских товарах вместо отчётов местных партийных руководителей предпочитали использовать анализ ЦРУ! Особенно безумно это звучит, если знать, что ЦРУ описывала свои собственные данные как «ужасно» низкокачественные.
  • Нелинейность. Оптимальные планировщики подразумевали в своих моделях линейность, например, стоимость тысячной детали для завода предполагалась равной стоимости производства первой детали. В реальном мире это очевидно не так, поскольку существует явление возрастающей отдачи от масштаба. Её можно смоделировать, но при этом усложняется численное решение задачи.
  • Выбор целевой функции. Выбор того, что ценно обществу, на самом деле является политической задачей, и Косма Шализи очень хорошо описал, почему очень сложно будет прийти к согласию.
  • Стимулирование инноваций. Централизованные планировщики не могли определить объём выделяемых ресурсов на ещё несуществующие продукты, и, что более важно, ни они, ни заводы, не имели стимулов к изобретению новых продуктов. Именно поэтому Советский Союз по-прежнему оставался настолько сосредоточенным на экономике металлургии/угля/цемента, в то время как государства Запада сосредоточились на пластмассах и микроэлектронике.
  • Политическое неприятие. Как говорилось в предыдущем примере, обоснованные моделью рекомендации по закрытию определённых заводов игнорировались по политическим причинам. Вероятно, и многие рекомендации для более масштабной экономики тоже остались бы без внимания. Например, если компьютер порекомендует повысить вдвое цену мазута зимой, то какие политики позволят это сделать?

Может ли такая система работать в будущем?


Если бы идеи оптимальных планировщиков были приняты в своё время, их бы ожидал провал. Но как насчёт будущего? Будет ли у нас спустя сотню лет техническая возможность реализации абсолютно плановой экономики? Я немного поискал в Интернете, и, к своему удивлению, выяснил, что это вероятно. Оказалось, что две из наиболее серьёзных проблем централизованного планирования могут иметь технологические решения, которые кажутся натянутыми, но не невозможными:

Начнём с вычислительной сложности. Как сказано выше и в посте Косма Шализи, количество шагов, требуемых для решения задачи линейного программирования при $n$ продуктов и $m$ ограничений пропорционально $(m+n)^{3/2} n^2$. В СССР существовало примерно 12 миллионов видов товаров. Если умножить их на более чем тысячу возможных местоположений, то мы получим 12 миллиардов переменных; по словам Косма, это будет соответствовать задаче оптимизации, решение которой на современном настольном компьютере потребует тысячу лет. Однако, если действие закона Мура сохранится, то через сто лет будет возможным решить эту задачу за разумно короткое время. Стоит также заметить, что матрица ресурсов-товаров в экономике является разреженной, потому что не каждый продукт зависит от каждого другого продукта в качестве ресурса. Возможно, кто-нибудь сможет разработать быстрый алгоритм, использующий эту разреженность, однако Косма довольно скептично относится к такой возможности. [В предыдущей версии этого поста я говорил о основанном на разреженности предположении, которое, по идее, сводит задачу к сложности $m \times n$. Похоже, это оказалось ложным следом, на самом деле не решающим задачу оптимизации.]

Как говорилось выше, вторая серьёзная проблема экономики с централизованным планированием заключалась в качестве данных: знания централизованных планировщиков о требованиях к ресурсам и номинальной производительности отдельных заводов были не так велики по сравнению со знаниями людей, работающих на заводе. Хотя это определённо было справедливо для Советского Союза, мы можем представить возможности технологических усовершенствований в управлении цепью поставок. Представьте, что каждый продукт имеет отслеживающее устройство, а также другие датчики и камеры, определяющие качество продукта. Amazon уже движется в этом направлении в сфере почти всех потребительских товаров, поэтому можно представить мир, в котором спрос можно измерять при помощи Интернета вещей. Сомнительно, что государство сможет управлять этими данными столь же компетентно, как и Amazon, и определённо стоит задаться вопросом, захотим ли мы, чтобы государство использовало подобный тип данных. Но с технической точки зрения вероятно, что проблемы с качеством данных, уничтожившие СССР, в будущем могут оказаться гораздо менее серьёзными.

Тем не менее, мне всё равно непонятно, как можно выбрать целевую функцию таким образом, чтобы она могла удовлетворять потребностям людей демократичным образом, как можно стимулировать инновации и как сохранить политические свободы. Исторически социализм обладает плохим послужным списком, он нарушил много обещаний, что «на этот раз получится лучше». Если вы хотите больше узнать о том, как всё работало в СССР, то вам определённо стоит прочитать Red Plenty. Это одна из самых странных и интересных книг, которые я когда-либо читал.





На правах рекламы


Наша компания предлагает серверы с Windows или Linux. Не экономим на железе — только современное оборудование и одни из лучших дата-центров в России и ЕС. Поспешите проверить!

Комментарии (2043)