Что физикам-теоретикам нужно от компьютерщиков?

Недавно я совместно с некоторыми химиками написал статью (к сожалению, еще не в Интернете), которая, по сути, дала ответы на вопрос: «Что нужно химикам от компьютерных ученых?» Это включало решение теоретических задач, таких как комбинаторное перечисление и выборка определенных классов графов; и практические проблемы программирования, такие как реализации алгоритмов с открытым исходным кодом, которые в настоящее время реализованы только в дорогих пакетах программного обеспечения.

Это побуждает меня спросить: а как насчет этого поля? Существуют ли теоретические вопросы комбинаторики, анализа алгоритмов, для решения которых физике нужен теоретик-компьютерщик? Или как насчет создания практических инструментов, которые позволили бы физику-теоретику работать лучше: «Если бы у меня была программа, которая решала бы за меня такие задачи!»

Предназначен как вики сообщества.

Ответы (5)

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

Большая часть физики (включая квантовую физику) является непрерывной, поэтому используемый тип математики больше склонен к непрерывной математике (решение PDE, поиск геодезических и т. д.) по сравнению с дискретными структурами, изучаемыми в теоретической информатике. Таким образом, совпадений не так много. Статистическая механика, как правило, больше занимается дискретными структурами, поэтому здесь больше совпадений.

Одна огромная область совпадения на самом деле связана с вычислительной физикой, где люди занимаются вычислением определенных свойств физических систем. В частности, моделирование физических систем является огромной областью исследований, и большое внимание уделяется поиску эффективных алгоритмов моделирования физических систем. В частности, поиск квантовых основных состояний и моделирование квантовой динамики — это те области, в которых у меня есть самый непосредственный опыт. Достигнут значительный прогресс как с точки зрения доказательства результатов твердости (например, недавняя статья Скотта Аароснсона о сложности моделирования линейной оптики, QMA-полноты нахождения квантовых основных состояний даже весьма ограниченных систем , моделирования коммутирующих операторови т.д.), а также эффективные алгоритмы (например , match gates или теорема Gottesman-Knill ).

Основные модели являются дискретными, но есть и другие модели, которые имеют дело с непрерывными. Старый добрый пример здесь . Также есть интересное взаимодействие по вопросам, связанным со случайным k-SAT.
@Kaveh: Да, я знаю. Я просто имел в виду, что на высоком уровне математика имеет тенденцию быть другой.
Хотя мне определенно нравится этот ответ, я не нахожу в вопросе никаких указаний на то, что Аарон намеревается направить его в основном на область теоретической информатики; он даже спрашивает о «создании практических инструментов». Конечно, задающий вопрос теоретик в области компьютерных наук, но, насколько я могу судить, вопрос в равной степени касается всех областей компьютерных наук.
@Logan: Он конкретно говорит: «Есть ли теоретические проблемы комбинаторики, анализа алгоритмов, для решения которых физике нужен теоретик-компьютерщик?»
@Joe: Да, но уже в следующем предложении он спрашивает о практических проблемах, что для меня было признаком того, что он искал ответы как с теоретической, так и с прикладной точки зрения. Кроме того, чтобы уточнить, я не рассматривал вычисления и информатику как синонимы, но я должен признать, что мало знаю о том, из чего состоит теоретическая информатика, кроме, скажем, Хопкрофта и Уллмана. Ученые-теоретики здесь занимаются исследованиями в таких областях, как биологические вычисления, что, насколько я могу судить, не имеет в виду большинство людей, говоря о теоретической информатике.
@LoganMaingi: Возможно, эта цитата в сочетании с моим предыдущим взаимодействием с Аароном повлияла на мою интерпретацию того, о чем он спрашивал.

РЕДАКТИРОВАТЬ: Этот ответ конкретно с точки зрения очень ориентированных на вычисления областей, таких как теоретическая физика плазмы.

Большинство физиков умеют программировать, и на самом деле многие из них довольно хорошие программисты. Было бы трудно работать в современной физике, не умея программировать. К сожалению, многие из них также не очень хорошие программисты (я читал много кода на Фортране, где goto был основным методом управления потоком).

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

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

Еще одна область, в которой вычислительной физике придется развиваться, — это теории, управляемые данными. Ученым-компьютерщикам это лучше известно как машинное обучение. Я просто приведу пример проекта, который я сделал, опять же по физике плазмы. При расчете турбулентного переноса для стеллараторов золотым стандартом являются так называемые гирокинетические симуляции. Они могут потреблять 100 миллионов часов ЦП и более и генерировать огромные объемы данных. Мой советник (в то время я был стажером) предложил изучить вывод файлов с помощью нейронных сетей. Идея заключалась в том, чтобы обучить нейронную сеть, используя как можно больше гирокинетических симуляций, а затем посмотреть, на что она способна. Мы ожидали, что он, вероятно, ничего не сможет сделать.

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

Я не думаю, что можно создать код нейронной сети, который будет полезен для широкого круга дисциплин. Если бы существовал способ встроить симметрии в код, которому должна была бы следовать сеть, это было бы чрезвычайно полезно для теории, управляемой данными. Я предполагаю, однако, что каждый из них, вероятно, придется изготавливать отдельно. Это та область, в которой физики-теоретики (вычислители) и ученые-компьютерщики могут и, вероятно, должны больше сотрудничать. Нейронные сети, очевидно, тоже не единственная вещь; Я полагаю, что в таких областях, как вычислительная физика плазмы, теория, основанная на данных, переживет огромный бум, если мы сможем использовать машинное обучение с частью встроенной физики.

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

Что касается скорости алгоритма, то в случае с физикой плазмы ограничивающим фактором не обязательно является возможность моделирования. Сегодня даже самые дорогостоящие модели, которые нас интересуют, могут быть выполнены на суперкомпьютерах. Так называемое «полное» моделирование потребует некоторого 10 30 больше вычислений, что вряд ли когда-либо будет возможно. Промежуточная область до сих пор оказывалась довольно хаотичной, и не похоже, чтобы ответы значительно улучшились, просто случайным образом добавляя больше точек сетки к проблеме. Нам нужно сначала понять, что происходит в малых масштабах, а затем мы сможем применить это. Существует ряд методов для выполнения таких вычислений, таких как вышеупомянутое моделирование гирокинетики, но они, по сути, являются лишь нашим лучшим предположением и лишь приблизительно совпадают с экспериментом.

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

Хорошо, я должен признать, что это не совсем соответствует вашему комментарию к сообщению Майкла, но я думаю, что это начало.
Я думаю, вы можете обобщить свой ответ на идеи машинного обучения, а не только на нейронные сети.
Поскольку я отозвал свой пост, просто чтобы прояснить, что Логан Майнги имел в виду под «комментарием к сообщению Майкла»: я опубликовал пример с очень общей потребностью в информатике, но вопрос касается явной проблемы/примера в TP, который требует КС
Я упомянул машинное обучение в более широком контексте, см., например, последнее предложение. Я не могу утверждать, что разбираюсь в чем-либо в этой области, кроме небольшого количества нейронных сетей, поэтому ответ почти исключительно обсуждает их. Я согласен с тем, что помимо нейронных сетей можно получить еще многое, но я не совсем понимаю, что это такое.
Я вынужден не согласиться. Именно алгоритмы, работающие на суперкомпьютерах, нужно ускорить. (Я не говорю, что теоретики-компьютерщики могут помочь, но сказать, что «мы всегда можем запускать что-то на более быстрых компьютерах», определенно неправильно.) В какой-то момент я увидел анализ ускорения при решении линейных программ. в течение нескольких десятков лет. Был фактор в несколько миллионов, полученный от более быстрых машин. Был значительно больший фактор, связанный с улучшением алгоритмов. И людям все равно хотелось бы быстрее решать линейные программы.
Хотя я не могу не согласиться с тем, что было бы неплохо ускорить их, учитывая объем работы, проделанной для оптимизации каждого аспекта конкретных кодов, с которыми я работал (как профессиональными программистами, так и физиками), я был бы удивлен если бы их можно было ускорить более чем линейно. Хотя ускорение в миллион раз, безусловно, повысит качество симуляции, в данном случае система по своей сути хаотична, и даже миллион раз больше вычислений не продвинет вас так далеко. В таких сложных системах теория, основанная на данных, кажется лучшим подходом.
Кроме того, позвольте мне добавить, что очень приятно видеть такого известного исследователя на этом сайте. Если бы вы могли написать свой собственный опыт более подробно в качестве ответа, я уверен, что все здесь были бы высоко оценены.
@Peter Прочитав мое письмо еще раз, я вижу, с чем вы не согласны. Я удалил второй абзац, в котором говорилось, что алгоритмический анализ бесполезен. Я имел в виду это только в очень узком контексте, с которым имел дело, и даже тогда это не было хорошо объяснено. Я все еще думаю, что более быстрые алгоритмы не решат поставленных здесь задач, но они, конечно, помогут.
@LoganMaingi: поиск лучшего алгоритма для решения проблемы выходит далеко за рамки оптимизации кода для конкретного алгоритма. Примером этого является матричное умножение: независимо от того, насколько хорошо вы выполняете умножение, которое вы выучили в школе или колледже, оно требует О ( н 3 ) . Однако есть лучшие алгоритмы, которые дают масштабирование О ( н к ) за к < 3 , чего вы никогда не получите, пытаясь оптимизировать реализацию наивного умножения. См. en.wikipedia.org/wiki/…
Я хорошо осведомлен о проблеме оптимизации матричного умножения, но я не уверен, что это то, чего особенно или особенно хотят физики. Практически все в мире, кто занимается какими-либо вычислениями, хотят быстрее перемножать матрицы. Конечно, если кто-то сможет найти более быстрый алгоритм умножения матриц, разложения по сингулярным числам, преобразования Фурье и т. д., то это принесет большую пользу физикам, но это и так очевидно. Кроме того, когда я опубликовал этот ответ, Аарон просил конкретные примеры; следовательно, я старался оставаться достаточно конкретным с проблемой.
@LoganMaingi: я не говорил об умножении матриц. Это был просто пример разницы между лучшим алгоритмом и оптимизированным кодом.
Боюсь, тогда я не понимаю, что вы пытаетесь донести. Я согласен с тем, что алгоритмы можно улучшить, но, за исключением довольно радикального и маловероятного прогресса, одни только программные вычисления не решат поставленные проблемы. Вы тут со мной не согласны? Или вы не согласны, когда я говорю, что использование методов машинного обучения может помочь решить проблему? Я ловлю себя на том, что согласен с тем, что вы говорите, поэтому я не уверен, что я сказал, с чем вы не согласны. Я подозреваю, что это может быть недоразумение. Не могли бы вы привести цитату, к какому моему утверждению вы не согласны?
Я имел в виду ваш комментарий к Питеру, в котором вы сказали: «Хотя я не могу не согласиться с тем, что было бы неплохо ускорить их, учитывая объем работы, проделанной для оптимизации каждого аспекта конкретных кодов, с которыми я работал (профессионалами). программисты, а также физики), я был бы удивлен, если бы их можно было ускорить более чем линейно». Мне показалось, что вы были сосредоточены на оптимизации своей программы, а он говорил о лучших алгоритмах.
Хорошо, теперь я понимаю, о чем вы говорите, и вижу, что вы, возможно, правы. Однако, если это то, что он имел в виду с этим комментарием, я думаю, что это не по теме на этом сайте и в этом вопросе. Вопрос в том, чего конкретно хотят физики-теоретики, а не в том, чего хотят вообще все, кто занимается вычислениями. я был бы в восторге от О ( н 2 ) умножение матриц, но я не думаю, что это разумно спрашивать. Это все равно что просить математиков ответить на гипотезу Ходжа. Это уже широко разрекламировано, и люди работают над этим, но это непростая проблема.
Чего бы я действительно хотел увидеть, так это того, сможет ли кто-нибудь составить список широко используемых в физике алгоритмов, малоизвестных за пределами физики. Это был бы пост в области анализа алгоритмов, который я бы поддержал. Но я думаю, что такие общие вещи, как «Улучшите свои алгоритмы» или «Дайте нам О ( н 2 ) умножение матриц» не очень хорошие примеры для этого вопроса. Первый несколько безответственен, не прочитав сам алгоритм. Откуда вы знаете, что улучшение алгоритма решит проблему лучше, чем машинное обучение? Последнее обсуждается в предыдущем комментарии. .
Я должен добавить предостережение, что я полностью согласен с первоначальным комментарием Питера, когда я его читал. Я думал, что он безответственно комментирует идею о том, что «всегда будут доступны более мощные компьютеры». Если мне кажется, что я поддерживаю такую ​​позицию, то на самом деле это не так. То, что так думали некоторые из моих колледжей, отчасти объясняет, почему я перешел от вычислений к более математическим областям. Из-за этого анализ алгоритмов кажется бессмысленным, но это не так. Однако я также думаю, что программирование на основе процедур и алгоритмов имеет свои пределы. Машинное обучение и теория, основанная на данных, — это следующий шаг, когда что-то упирается в стену.
@LoganMaingi: я думаю, вы все еще упускаете мою мысль. Сказать «нам нужны лучшие алгоритмы моделирования» вполне разумно. Как я уже сказал, я использовал умножение матриц только в качестве примера, чтобы проиллюстрировать разницу между лучшими алгоритмами и более быстрым кодом.
«Что бы я действительно хотел увидеть, так это то, что кто-то может составить список часто используемых алгоритмов в физике, которые мало известны за пределами физики». -- Я бы тоже! ... но я подожду до публичной бета-версии, чтобы задать этот вопрос. :-)
@Aaron: Вы знаете, что физики используют рандомизированные алгоритмы с 40-х годов?
@Joe: Я бы сказал, что мои «знания» об алгоритмах в физике находятся на том уровне, когда они скорее введут меня в заблуждение, чем проинформируют.

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

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

Однажды мне пришлось рассмотреть какую-то 10-мерную метрику д с 10 знак равно д с С 5 + д с М и решить упрощенную задачу на собственные значения: каково наименьшее собственное значение оператора Лапласа-Бельтрами, связанного с д с 10 . Физическая значимость проблемы оказалась в том, что мы могли использовать дипольное приближение, которое зависит только от наименьшего ненулевого собственного значения. Потратив несколько недель на аналитические попытки найти это собственное значение, я решил попытаться сделать это численно. Мой консультант убедил меня, что численные инструменты для этого уже существуют и что это должна быть простая задача. К сожалению, три месяца спустя я понял, что было несколько программ с открытым исходным кодом/коммерческих программ, которые могли бы решить эту задачу, и, кроме того, было разработано несколько алгоритмов для аппроксимации УЧП несколько большей размерности (нелинейных). Я действительно верю, что численные методы существуют (я разговаривал с несколькими численными аналитиками в Куранте, которые сказали, что, по их мнению, эта проблема решена,

Я думаю, что, хотя физиков-теоретиков часто учат решать проблемы только аналитически, было бы неплохо получить некоторую интуицию на основе численных решений. Более того, существует множество алгоритмов таких математиков, как Роберт Грист, для вычисления важных инвариантов, таких как гомология Морзе, и я думаю, что было бы здорово, если бы мы смогли найти правильный баланс между информатикой и физикой для реализации таких методов. У меня есть некоторый опыт работы с CS и параллельным программированием, и я все еще чувствую, что две стороны (CS, теоретическая физика) настолько разобщены, что такие решения трудно реализовать.

Спасибо большое. Это именно то, что я искал.

Мой старый советник, физик, работающий в CS, написал статью, показывающую, что пространство-время категорически эквивалентно интервальным областям. Его зовут Панангаден. Домены полезны в cs как семантика для языков программирования. В каузальном подходе к квантовой гравитации (который я рассматриваю как общее место для уникальных форм новой актуальной физики) время больше похоже на логические часы, которые мы видим при анализе распределенного и параллельного анализа компьютерных систем. Некоторые аспекты cs полезны для новейших разработок в физике, таких как категориальная квантовая механика.

Пракаш — особый случай, так как у него значительный опыт в физике.

Математика для физики то же, что мастурбация для секса - Ричард Фейнман. Это означает, что в физике речь идет о взаимодействиях в реальном мире, а не о простых абстрактных концепциях. То же самое можно сказать и о науке по сравнению с инженерией: наука разрабатывает абстрактные инструменты, которые инженеры используют для представления моделей вычислений реального мира.

Информатика — это не наука, а инженерная дисциплина. Дело даже не в компьютерах; речь идет о моделировании вычислений. Компьютер — это среда, связывающая мысли с физикой в ​​виде программ.

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

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

Программирование — это практическое занятие, так чего же вы ждете? Разгоните пальцы!

Я проголосовал за это, потому что считаю это бесполезным, а не настоящим ответом.