Как стать автором
Обновить

Комментарии 42

Но неужели все понятно и нет вопросов?

Лично у меня мозг свернулся уже на второй статье D:
Я хотел бы написать так чтобы любому было понятно, но не могу без обратной связи… это такое дело — знания накладывают отпечаток, и со временем уже не можешь просто выражаться — пишите где я такое допустил
Мысли вслух. Если область глобального минимума очень мала, и функция не уменьшается к ней (т.е. что-нибудь вроде e^{-x^2/2-y^2/2-...}+0.1*sin(x)+0.1*sin(y)+… и переменные от -1000 до 1000), то во-первых никакой эвристический алгоритм не найдет этот минимум, а во-вторых сама природа не найдет этот минимум (без посторонней помощи). Если же все не так плохо, но локальных минимумов все равно астрономическое число, то можно опять-таки задаться вопросом как природа находит глобальный минимум? Дело в том, что тепловое движение выбрасывает молекулу из локальных минимумов. Соответственно разумно применить метод отжига и его вариации которые это симулируют. Либо он найдет ответ, либо природа тоже найти его не сможет. В этом смысле глубокий, но не биологически правдоподобный, локальный минимум — это не ошибка алгоритмов, а ошибка природы.
Спасибо за интересный вопрос. «задаться вопросом как природа находит глобальный минимум?» — вот Левинталь и задался — теперь это называется парадокс Левинталя.

Действительно все так плохо, и по мне еще хуже. Это по мне похоже на такой процесс: есть некий хитроумный механизм состоящий из множества шестеренок и вот под действием теплового движения там все скачем и прыгает, эти шестеренки друг друга цепляют — и в итоге собирается особый механизм и только один конкретный — «машина определенный фирмы и марки». Поэтому область глобального минимума не просто мала, а еще хитроумно и нелинейно закручивается вниз. А если этого бы не было — это было бы не сборка РНК/белка — а получилось бы нечто тягучие, аморфное и не имеющие формы. А тут получается жесткая форма, которую потом уже ни какими тепловыми воздействиями не развалишь.

Метод отжига, похоже не сильно лучше Монте-Карло: "Алгоритм имитации отжига похож на градиентный спуск, но за счёт случайности выбора промежуточной точки должен будет попадать в локальные минимумы реже, чем градиентный спуск. Алгоритм имитации отжига не гарантирует нахождения минимума функции, однако при правильной политике генерации случайной точки в пространстве, как правило, происходит улучшение начального приближения."

Хотя конечно шаг вперед. Но уж очень маленький.

Ошибок в природе не бывает :) Я еще вернусь к этой теме в следующей статье.
Чтобы что-то цеплялось — должны быть предпосылки к минимуму. Если везде энергия одинаковая, а только в небольшом районе минимума она падает, то ничего цепляться не будет и ничего не соберется. Молекула будет хаотично блуждать по фазовому пространству астрономическое время.
Когда же функция в окрестности минимума в целом уменьшается не смотря на множественные колебания, то метод отжига работает ну или по крайней мере может работать.
Приведенная вами цитата не точна — метод отжига не попадает в локальные минимумы реже, он может из них выходить. Это очень важное отличие. В результате получается не перебор всех вариантов, а перебор разумных вариантов, поскольку из разумного перейти в неразумный сложно, а из разумного в другой разумный — легко. Плюс если что-то уменьшает энергию, это будет стремиться остаться. Я видел не мало успешных примеров применения этого алгоритма (успешных не в смысле, что алгоритм решает задачу, а в смысле, что алгоритм решает задачу наилучшим известным на данный момент способом).
Учтите, что у метода отжига много вариантов и его можно сочетать с множеством других идей. Как, к примеру, выбирать соседей? Ходить одной точкой или множеством? Хранить и использовать как-либо историю (например, чтобы выяснить статистику углов) или нет? Оставлять величину воздействия для получения нового соседа постоянной или изменять в зависимости от динамики изменения энергии/решения?
«Если везде энергия одинаковая, а только в небольшом районе минимума она падает, то ничего цепляться не будет и ничего не соберется. Молекула будет хаотично блуждать по фазовому пространству астрономическое время.»

на мой взгляд это противоречит как минимум расчетам, и видимо как-то отражается в природе. Думаю то, что вы описали — не более чем математическая гипотеза — но вряд ли выполняется в тех условиях в которых находится РНК.
Смею предположить, что это наши расчеты просто гуляют астрономическое время т.к. они не могут быть реально параллельными, а выполняются последовательно. В природе же — 100 углов изменяются одновременно — и не просто произвольно, а автоматически так чтобы быть коррелированными между собой. Это то и обеспечивает сразу попадание в расщелину, а мы вместо этого последовательно перебираем варианты — но этого молекула не делает, хотя условия у нее такие же. В этом то похоже и хитрость этой проблематики сворачивания.
Кстати, у настойщей молекулы уже стабилизированный участок имеет меньшую вероятность повернуться чем остальные, так как его уже держат водородные связи и на преодоление этой ямы (плавление) нужно затратить дополнительную энергию. Часто при моделировании об этом забывают и крутят все участки равновероятно.
я кручу как раз с учетом образования водородных связей… буду рассказывать
> В природе же — 100 углов изменяются одновременно — и не просто произвольно, а автоматически так чтобы быть коррелированными между собой.

Существуют два режима работы нейросетей. Синхронный и асинхронный. Второй режим — когда каждый нейрон срабатывает независимо (параллельно) от других. В ЭВМ это моделируют распараллеливанием просчета нейросети на асинхронные таски.

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

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


Про псевдопараллельность — когда распараллеливают расчеты — это да, но есть нюансы, комментировал тут.

Но одно дело распараллелить расчеты, а другое то, что в природе процессы идут реально параллельно. Скажем, сооударяются несколько шаров — в природе они отскочат и займут положение так как им полагается за один квант времени, мы же будем рассчитывать как последовательно. Знаете алгоритм кластеризации к-средних? Так вот попробуйте его распараллелить — реальной параллельности вы не получите.
Если бы был компьютер способный вычислять с такими же квантами времени, что и у природы, тогда асинхронные таски давали б тот же результат. Это да.
Но тогда получается, что рассматривать эту задачу в контексте использования для обработки персональные компьютеры и софт общего назначения вообще нет смысла. Получается нужна совсем иная выч. мощность и алгебра больших чисел?
А если в грубом приближении можно пренебречь квантовыми эффектами при низкой температуре и пр. «тонкими эффектами», то и псевдопараллелизм удовлетворит.
Да, нет дело не в этом. Расчеты они и есть расчеты — они не давали бы тех же результатов, т.к. в них нет реального физического взаимодействия, и соответственно, «зацепление» молекул не может остановить расчеты в нужной точке, они пройдут мимом и будут проверять, а нет ли еще лучшего результата, а в природе этого не произойдет.

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

Честно говоря, не совсем понял тот коммент.
Если имелся в виду следующий ньюанс
«Это хорошо видно у меня 2 четырехядерных процессора, и при загрузки одной программы работает только 12% процессорного времени.»
Так оно и понятно — обсчет положения каждого атома (если правильно понял) идет в общем потоке. Что мешает хранить граф молекулы в статичном классе (или в том же синглтоне), создавать отдельные асинхронные таски (или даже отдельные треды) просчета отдельного атома. Если атомов слишком много, то можно заюзать пулл тредов.

А т.к. доступ из асинхронных тасков к хранилищу графа только на чтение, то можно реализовать «Reader-Writer Lock». Ридеры залочатся только во время записи нового состояния графа, а читать будут одновременно без локов. Далее нужно будет дождаться когда все таски отработают, после чего можно будет обновить граф.

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

В отдельном, и их можно сделать скажем два или три, от этого занятость процессора не увеличивается.
Как это не увеличивается? ОСь сама должна перекидывать треды на разные ядра/процессоры. Для того она и нужна.
Если другие ядра не задействуются, значит либо не в отдельных потоках работают, либо имеются блокировки потоков.
А если будет пулл тредов на 10, 20, 30 потоков? Занятость как раз будет эффективная.
Действительно, проверил еще раз. Глупость написал.
и конечно, энергия не просто одинакова — там «мелкие лужи», но расщелина одна, и при когда попадаешь в эту расщелину немного — снова ситуация изначальная — тебя выкидывает в поле, и снова ищешь уже другу расщелину… вот это я и называют движением по шестеренкам… только масштаб уменьшается
у меня три глупых профанских вопроса:
1- почему надо искать минимум энергии, ведь белки в организме не обязательно удовлетворяют этому условию
2- как учитывается процесс простраивания белка в клетке, ведь те же DNA/RNA последовательности образуются не сразу целиком, а по нуклеотидам, и вроде с белками та же история, а значит при сборке белка он начинает принимать какую то конформацию ещё до того как полностью соберётся (хотя если речь идёт о последовательностях в 100 нуклеотидов, возможно это и не так и важно)
3- как учитывается то что белок окружен полярным растворителем
1. Действительно, это не обязательно. И например, Финкельштейн пишет

По-видимому, самоорганизующийся белок следует по какому-то специальному “пути сворачивания”, и та структура, где этот путь заканчивается, и является его нативной структурой, вне зависимости от того, есть ли еще более стабильная укладка цепи, или нет. Иными словами, нативная структура белка определяется не стабильностью, не термодинамикой, а кинетикой, т.е. она соответствует не глобальному, а просто быстро достижимому минимуму свободной энергии цепи.


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

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

3. Это я так понимаю — называется гидрофобность и гидрофильность. Как это описать математически? Я не знаю — может кто подскажет. Но учитывать это, кажется, излишне, как минимум для РНК.
Гидрофобность и гидрофильность это проявление Ван-дер-Ваальсовского взаимодействия
Есть некоторая формула энергии взаимодействия выглядящая как
Uij = A/Rij^12 — B/Rij^6
чему равны коэфициенты — надо искать отдельно
Математики и физики обычно хотят найти идеальную формулу и все сделать по ней. Биологи и химики не верят в формулы и предпочитают численные эксперименты исходя из базовых факторов.

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

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

Интересуюсь этой темой :) Но я наоборот, биолог, который стал компьютерщиком.
Исключение составляет сворачивание под воздействием всяких шаперонов, но это больше для белков.
Вот "Скажем, базовый фактор для фолдинга РНК в том, что части молекулы имеют тепловое движение. Никогда не происходит такого, что одна часть провернулась, а вторая все это время стоит. " — мне это не сразу дошло, только после ряда экспериментов появилась такая мысль. В этом то все и дело — в природе все происходит параллельно, а мы вынуждены рассчитывать последовательно. Вот от этого и появляются наши представления о кучи локальных минимумов — но это проблема расчетная, а в природе происходит другое. (это как мысль)
Список торсионов есть => Почему бы не поворачивать каждый из них, делая случайную выборку из списка?
Почти так и делается. см. четвертую часть. Но не случайно. При случайности в 90% есть вероятность пропустить как раз самый лучший поворот, а потом после фиксации уже может быть поздно.
Еще одна фишка связана с самим синтезом РНК. Она появляется не сразу большой, а начинает сворачиваться еще в процессе роста цепи при синтезе. После этого никто ее особо не расправляет. Поэтому и расчет реальной структуры целесообразно проводить путем добавления нуклеотидов по направлению роста РНК, а не просто взяв уже готовую молекулу.
о да, тут целая наука у меня получилась, еще не все отработано — но идеи есть. Это все важно для многоспиральных РНК — этому посветить нужно отдельную статью будет, но еще не скоро
Вот кстати прикольная иллюстрация к тому, насколько полезно тупо энергиями оперировать :)

en.wikipedia.org/wiki/File:TRNA_structure_space.png
хорошая иллюстрация, сюда выложу

1. Если задача сворачивания NP-полна, можно ли ее использовать, чтобы решать другие NP-полные задачи?
2. Раз вы приветствуете интуитивный подход, то интуитивно, метод модельной закалки должен давать правильный результат.
3. Если участвуют квантовые эффекты, возможно их описание не сильно уменьшит наглядность, но позволит уйти от «магичности» процесса сворачивания.
1. Как это? Вот алгоритмы, которые получаться в результате решения задачи сворачивания, можно и нужно использовать для решения других NP-полных задач. Собственно, именно это и есть общая цель предлагаемого мной кибернетического подхода.
Компьютер, работающий на сворачивании: задача кодируется последовательностью оснований, ответ — свернутым белком(особенностями свойств, обусловленными третичной структурой). Получим параллельный компьютер, решающий NP-полные задачи за полиномиальное время. Конечно, это фантастика, но вдруг это возможно.
Если сами придумали — респект. Существует целое направление в науке — молекулярные вычисления, ДНК-компьютер и т.д. Как раз недавно обсуждал научную статью на эту тему, так что уже не фантастика — а начало исследований.

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

Любая сложная система будет иметь множества локальных минимумов и «конечное», биологическое правдоподобное, состояние это вовсе не глобальный минимум а один из локальных, в которое система попала из своего начального положения. И собственно начальное положение и диктует какое именно «конечное» состояние будет достигнуто. А начальное состояние в этом случае — сам процесс создания цепочки. То есть по хорошему задачу надо решать итерационно — добавили первый, добавили следующий — привели систему в минимум, добавили следующий — опять привели в минимум.

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

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

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

С этим то я согласен. Но что это означает? А то, что цепь вначале находится в хаотическом состоянии. Конечно, начальное состояние — это не вытянутая целиком цепочка — а случайное состояние. Но это для моделирования еще сложнее. Поэтому я и принял за начальное положение — вытянутую целиком цепочку.

Вы сами пишите
> начальное положение и диктует какое именно «конечное» состояние будет достигнуто

Если есть связь между начальным и конечным состоянием, то начиная с любого хаосного состояния — есть большая вероятность не достичь конечного.

Поэтому вытянутая цепочка — более выгодна для моделирования. Кроме того, у этого есть чисто практическая цель — для конструирования и понимания процесса сворачивания (а не его моделирования как это происходит в природе) — важна эта идеализация «получить из конкретного начальное положения любое заданное конечное состояние».

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

Закономерности тут существуют в другом — как стабилизируются части.

Что касается

> по хорошему задачу надо решать итерационно — добавили первый, добавили следующий — привели систему в минимум, добавили следующий — опять привели в минимум

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

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

ладно пусть будет денатурализированная цепочка, но общие рассуждения остаются прежними: начальное состояние диктует результат. И вполне может быть что теоретически результатов может быть несколько, а наблюдаем только один — тут просто надо разбираться с вероятностями и матожиданием вариантов.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории