[논문 리뷰] Let Physics Guide Your Protein Flows, Topology-aware Unfolding and Generation

정우현·2026년 6월 4일

서울대

목록 보기
39/44

✅ ABSTRACT

기존 protein diffusion/flow 모델들이 단백질을 생성할 때 물리적으로 말이 안 되는 noising 과정을 사용한다고 보고, 이를 해결하기 위해 물리 법칙에 기반한 unfolding 과정을 만들고, 그 과정을 flow matching과 결합한 PhysFlow라는 모델을 제안


단백질 구조 예측과 folding이 생물학을 이해하는 데 핵심


기존 방법의 문제: noising 과정이 물리적이지 않다

기존 diffusion/flow 모델들은 단백질 구조를 점점 noise 상태로 만들고, 다시 그 noise에서 folded protein을 복원하는 방식으로 학습
그런데 이때 noising 과정이 실제 단백질이 물리적으로 펼쳐지는 방식과 다르다는 것
기존 모델에서는 noising 과정에서 residue나 backbone frame들이 서로 연결된 사슬처럼 움직이기보다, 각각의 residue가 독립적인 점처럼 흩어질 수 있음


문제는 단백질은 실제로 peptide bond로 연결된 polymer임
따라서 noising 중에도 다음과 같은 물리적 제약이 어느 정도 유지되어야 함

  • backbone bond length가 너무 이상하게 깨지면 안 됨
  • bond angle이 비현실적으로 변하면 안 됨
  • residue끼리 서로 겹치는 steric clash가 생기면 안 됨
  • 단백질 chain의 topology, 즉 연결 관계가 보존되어야 함

하지만 기존 diffusion/flow 모델의 forward noising은 이런 물리적 조건을 충분히 반영하지 못함


그래서 물리 기반 non-linear noising process 를 제안

  1. “physically motivated”

양자역학이나 molecular dynamics 수준의 정밀한 물리 시뮬레이션을 한다는 뜻은 아님
대신 단백질이 물리적으로 말이 되는 방향으로 펼쳐지도록, 고전역학적 아이디어를 noising 과정에 넣겠다는 의미

  1. “non-linear noising process”

기존 모델들은 보통 linear noising을 사용
-> folded structure와 noise structure 사이를 직선적으로 섞는 방식

하지만 단백질은 실제로 직선적으로 흩어지는 물체가 아님
residue들이 연결되어 있고, 회전각, 결합각, 충돌 회피 같은 제약이 있기 때문에 실제 unfolding 경로는 비선형적일 수밖에 없음

그래서 논문은 단순 linear interpolation이 아니라, Hamiltonian dynamics에서 영감을 받은 비선형 unfolding 과정을 사용


핵심 아이디어: folded protein을 secondary structure 방향으로 펼친다

이 논문에서 forward process는 단백질을 완전히 무작위 noise로 부수는 게 아님

대신 단백질을 α-helix나 linear β-sheet 같은 secondary structure 형태로 펼치는 방향으로 보냄

즉 기존 diffusion 모델이 folded protein → residue들이 흩어진 random soup 로 보냈다면,
PhysFlow는 folded protein → topology가 유지된 unfolded secondary-structure-like chain 으로 보냄

reverse generation 과정에서는 그 반대로
secondary-structure-like unfolded chain → folded protein 을 학습

즉 생성 과정 자체가 “단백질 folding”에 더 가까운 형태


SE(3) flow matching과 결합

논문은 이 물리 기반 unfolding 과정을 SE(3) flow matching과 결합

SE(3)는 3차원 공간에서의 rotation + translation을 함께 다루는 수학적 공간

단백질 구조는 절대 좌표가 중요한 게 아니라, 회전하거나 이동해도 같은 구조로 봐야함


sequence-conditioned folding까지 확장

즉 PhysFlow는 두 가지 일을 할 수 있음

첫째, sequence 없이 새로운 backbone을 생성하는 unconditional generation

둘째, amino acid sequence가 주어졌을 때 그 sequence에 맞는 구조를 접는 sequence-conditioned folding

✅ INTRODUCTION

기존 diffusion/flow protein model의 기본 구조

학습할 때는: 실제 folded protein → noise 상태
생성할 때는: noise 상태 → folded protein

이때 모델은 noise에서 원래 단백질 구조를 복원하는 denoiser 또는 velocity field를 학습

단백질에서는 이미지와 다르게 물리적 제약이 강하게 존재

픽셀은 서로 분리되어 있어도 되지만, 단백질 residue는 peptide bond로 연결되어 있어야 하고, 원자끼리 겹치면 안 됨


핵심 비판: 기존 forward noising이 protein physics를 무시한다

기존 protein diffusion/flow 모델의 forward noising 과정이 보통 너무 단순
-> 특히 많은 방법은 linear forward noising을 사용

folded structure에서 random noise structure로 가는 경로를 거의 직선적으로 만든다는 뜻

문제는 이 과정에서 단백질 backbone이 다음과 같이 망가질 수 있음

  • residue 사이 연결이 끊긴 것처럼 보임
  • residue들이 서로 독립적으로 움직임
  • 서로 지나가면서 충돌함
  • bond length, bond angle 같은 기본 구조 제약이 깨짐
  • secondary structure나 tertiary motif가 일관되게 유지되지 않음

이런 문제가 forward process에만 머무르지 않음

diffusion/flow 모델은 forward process를 뒤집는 reverse process를 배우기 때문에, forward noising이 물리적으로 이상하면 reverse generation도 그 영향을 받음


논문의 핵심 질문

de novo protein design을 위한 generative model에서, 어떻게 physics를 활용해 physically motivated forward noising process를 만들 수 있을까?

단순히 “더 큰 모델을 쓰자”가 아니라, “forward process 자체를 단백질 물리에 맞게 바꾸자”가 이 논문의 방향

✅ BACKGROUND ON PROTEIN GENERATIVE MODELS

✅ Protein backbone을 어떻게 표현하는가

단백질 backbone을 frame으로 표현
-> AlphaFold2에서 사용한 backbone frame parameterization을 따름

각 residue마다 하나의 frame을 둠
-> 전체 단백질은 N개의 frame으로 표현

각 frame은 SE(3) transformation
-> 즉, residue 하나하나가 다음 두 가지 정보를 가짐

  • rotation: 이 residue의 local coordinate system이 3D 공간에서 어떻게 회전되어 있는지
  • translation: 이 residue가 3D 공간의 어디에 위치하는지

residue i의 transformation을 다음처럼 표현


ri: rotation matrix
xi: translation vector

residue i의 backbone frame은 “방향 + 위치”를 가진 rigid body

이 frame은 idealized alanine의 backbone atom 좌표인 N∗, Cα∗, C∗, O∗ 를 기준으로 정의


fixed reference coordinates
-> 실제 단백질의 좌표가 아니라, 모든 residue에 공통으로 사용하는 “기준 모양”

단백질 backbone의 기본 원자

각 residue마다 backbone은 거의 같은 기본 기하 구조를 가짐
즉 bond length, bond angle은 대체로 정해져 있음

-> 이상적인 alanine residue 하나”를 기준으로 잡아, 기준 residue 안에서 atom들의 위치를 미리 정해두는 것

기준 residue에서는 Cα를 원점에 둠
N∗, C∗, O∗ 이상적인 bond length와 bond angle에 맞게 원점 주변에 배치
-> 각 residue의 backbone 모양은 일단 표준 템플릿으로 고정해두고, 그 템플릿을 3D 공간에서 돌리고(rotation) 옮겨서(translation) 실제 residue 위치

“왜 alanine인가?”

backbone은 amino acid 종류가 달라도 기본 구조가 거의 공통적이기 때문
아미노산마다 크게 다른 건 side chain
backbone은 기본적으로 구조를 공유


"왜 frame 표현을 쓰는가?"

단백질 구조를 더 자연스럽고 안정적으로 표현하기 위해서
->
1. frame을 쓰면 local geometry를 보존하기 좋음

frame 표현에서는 기준 residue 모양은 이미 정해져 있음
모델은 residue 안의 atom 배치를 하나하나 따로 만들 필요가 없고, 그냥 기준 residue를 어디로 옮길지, 어떻게 돌릴지만 예측하면 됨

  1. 단백질은 회전/이동해도 같은 구조다

단백질 전체를 3D 공간에서 회전하거나 이동해도 같은 단백질임
즉, 단백질 모델은 absolute coordinate에 너무 의존하면 안 됨


Angular Representation

각 residue zi는 다음 6개의 angle로 표현됨

backbone dihedral angle: ϕ,ψ,ω
bond angle: θ1,θ2,θ3

angular representation은 단백질 backbone을 Cartesian coordinate가 아니라 내부 좌표, 즉 torsion angle과 bond angle 중심으로 표현하는 방식

dihedral angle은 네 개의 원자가 만들고 있는 회전각

ϕ: N-Cα bond 주변 회전
ψ: Cα-C bond 주변 회전
ω: peptide bond 주변 회전

이 값들이 단백질의 local conformation을 결정
α-helix나 β-sheet도 결국 특정 ϕ, ψ angle 패턴을 가진 구조


왜 angular representation이 중요한가?

PhysFlow의 물리 기반 unfolding 과정은 Cartesian coordinate에서 직접 하는 것이 아니라, backbone angle space에서 정의되기 때문

Cartesian coordinate에서 residue를 직접 움직이면 chain이 끊어지거나 bond geometry가 깨질 수 있음
반면 angle을 조절하면, backbone 연결성을 유지한 상태에서 구조를 변화시킬 수 있음


mp-NeRF로 angle에서 Cartesian coordinate (3차원 좌표)를 복원

angular representation z에서 Cartesian coordinate x를 복원할 수 있음
-> 단백질 backbone을 각도 정보로만 가지고 있다가, 그 각도들을 이용해서 실제 3D 원자 좌표 (x,y,z)를 다시 계산한다는 뜻

PhysFlow가 단백질을 “좌표 점들을 막 움직이는 방식”이 아니라 “연결된 backbone의 각도를 조절하는 방식”으로 unfold하려고 하기 때문
하지만 충돌 계산과 구조 출력은 3D 좌표가 필요하므로, angle을 mp-NeRF로 Cartesian coordinate로 바꿔서 사용

NeRF는 protein coordinate reconstruction에서 쓰는 Natural extension Reference Frame / NeRF algorithm 계열 (여기서는 mp-NeRF 사용)

mp-NeRF: z=각도 정보 가 주어졌을 때, x=3D 원자 좌표 를 만들어줌
-> backbone angle들을 입력하면, mp-NeRF가 그 angle들에 맞는 3D backbone 좌표를 재구성

중요한 점은 이 변환이 differentiable하다는 것
-> angle z를 조금 바꾸면 coordinate x가 어떻게 바뀌는지 gradient를 계산할 수 있다는 뜻

그래서 나중에 energy potential을 angle에 대해 미분하고,
= “현재 backbone 각도들을 어느 방향으로 바꾸면 에너지가 줄어드는지 계산한다”
= “그 방향으로 단백질을 조금씩 펼쳐나간다”

그 결과를 이용해 unfolding dynamics를 만들 수 있음


energy potential U(z)는 쉽게 말하면 현재 단백질 구조가 얼마나 ‘원하는 상태’에서 벗어나 있고, 얼마나 물리적으로 불편한 상태인지 점수화한 함수

Utarget은 단백질 각도가 목표 secondary structure,
예를 들면 β-sheet 각도 쪽으로 가도록 만드는 항
Urepulsion은 residue들이 너무 가까워져 충돌하지 않도록 밀어내는 항
그리고 nerf(zt)는 angle zt를 Cartesian coordinate로 바꿔주는 변환

-> 전체 에너지=β-sheet 같은 목표 구조로 가고 싶은 힘+서로 겹치지 않게 밀어내는 힘


왜 energy를 미분하면 “움직일 방향”이 나오는가?

물리에서 아주 중요한 원리
-> 물체는 보통 에너지가 낮아지는 방향으로 움직인다.

공이 언덕 위에 있다
공은 높은 곳에서 낮은 곳으로 굴러감
그때 “어느 방향이 내리막인지” 알려주는 게 gradient

∇U가 에너지가 가장 빠르게 증가하는 방향
−∇U는 에너지가 가장 빠르게 감소하는 방향

unfolding dynamics

현재 angle 상태 zt에서 energy U를 계산하고, 그 energy를 angle에 대해 미분해서, 각도를 어느 방향으로 바꿔야 에너지가 줄어드는지 찾음


“angle에 대해 미분한다”

zt=(ϕ1,ψ1,ω1,θ1,1,…)
energy U(zt)

ϕ1을 조금 증가시키면 energy가 증가하는가, 감소하는가?
-> 모든 angle에 대해 이런 정보를 계산

gradient는 이런 벡터가 됨

이 벡터를 보면 각 angle을 어느 방향으로 바꿔야 하는지 알 수 있음


target energy

현재 각도 zi,t가 목표 각도 zi,target에서 멀수록 energy가 커진다
-> 단백질을 점점 β-sheet 같은 unfolded secondary structure 방향으로 펼치도록 함


residue 충돌을 줄이려면 angle zt를 어떻게 바꿔야 하지?

즉 필요한 미분은

여기서 Urepulsion은 좌표 x에서 계산되지만, 실제로 조절하는 변수는 angle z
-> chain rule이 필요

-> “mp-NeRF가 differentiable해야 한다”는 말의 핵심

만약 nerf(z)가 differentiable하지 않으면, 좌표상에서 충돌이 있다는 건 알 수 있어도, 그 충돌을 줄이기 위해 ϕ,ψ,ω를 어느 방향으로 바꿔야 하는지는 알기 어려움


unfolding dynamics를 만든다는 말은?

angle zt를 그냥 한 번에 바꾸는 게 아니라, 물리 시뮬레이션처럼 시간에 따라 움직이게 함


정리

현재 단백질이 접힌 상태
PhysFlow는 이 단백질을 β-sheet 같은 펼쳐진 상태로 보내고 싶음
그런데 아무렇게나 펼치면 residue들이 서로 겹칠 수 있음

그래서 매 순간 이런 계산을 함

“지금 각도에서 β-sheet로 가려면 어떤 각도를 바꿔야 하지?”
“그런데 그렇게 바꾸면 residue끼리 충돌하나?”
“충돌한다면 어떤 각도를 틀어야 서로 멀어지지?”

이 질문의 답을 주는 게 −∇zU(z)

그래서 energy potential을 angle에 대해 미분한다는 말은
-> 단백질 backbone 각도들을 물리적으로 말이 되게 바꾸기 위한 방향 신호를 계산한다
는 뜻


mp-NeRF가 differentiable하기 때문에, “3D 공간에서 residue가 충돌한다”는 정보를 다시 angle z 쪽으로 역전파할 수 있고, 그 결과 ϕ,ψ,ω 같은 backbone angle을 어느 방향으로 바꿔야 충돌을 피하면서 β-sheet 방향으로 펼쳐지는지 계산할 수 있음

이 계산된 방향을 힘처럼 사용해서 단백질을 시간에 따라 펼치는 것이 unfolding dynamics

✅ 기존 diffusion/flow protein model은 어떤 방식이고 무엇이 문제인가

초기 방법: Cartesian coordinate에서 직접 diffusion/flow

초기 protein generative model들은 backbone의 Cartesian coordinate에 직접 diffusion이나 flow를 적용

즉, 각 atom 또는 residue 위치를 3D 좌표 (x,y,z)로 놓고, 여기에 noise를 넣는 방식

이 방식은 직관적이고 구현하기 쉬우나,
단백질 전체를 3D 점들의 집합처럼 다루기 때문에, rotation/translation symmetry나 backbone 연결성을 충분히 반영하기 어려움


이후 방법: translation-rotation frame 사용

최근 방법들은 protein backbone을 Cartesian point cloud가 아니라, residue별 translation-rotation frame으로 표현

즉, 각 residue를 SE(3) frame으로 보고, rotation과 translation을 함께 모델링

이렇게 하면 SE(3) invariance 또는 equivariance를 더 잘 반영할 수 있음

여기서 중요한 개념은
단백질 전체를 회전하거나 이동해도 단백질 자체는 같은 구조이기 때문에, 따라서 모델은 “절대 좌표”에 휘둘리면 안 되고, 구조의 상대적 배치를 잘 학습해야 함


그래도 문제는 남는다: forward process가 backbone을 끊어버린다

SE(3) frame을 사용한다고 해서 forward noising이 자동으로 물리적으로 타당해지는 것은 아님

많은 모델에서 forward process는 residue frame들을 점점 독립적인 noise 상태로 보냄
그러면 backbone이 실제 peptide chain처럼 연결되어 있기보다, 떠다니는 residue frame들의 집합처럼 변할 수 있음

이때 residue들의 이동 경로가 서로 교차하면 steric clash가 생길 수 있음


PhysFlow의 차별점

자신들의 방법이 단백질을 secondary chain으로 unfold하면서도,

  • bond를 보존하고
  • backbone topology를 유지하고
  • collision을 피하는

physics-inspired noising process를 사용한다고 주장

즉, 기존 모델이 structure를 noise로 망가뜨리는 과정에 가까웠다면,
PhysFlow는 protein을 물리적으로 그럴듯하게 펼치는 과정에 가깝게 forward process를 설계


✅ Figure 1

PhysFlow와 Cartesian diffusion/flow-based method의 generation trajectory를 비교

위쪽은 PhysFlow의 trajectory
시간 t=0에서 시작해 t=1.0으로 갈수록 구조가 점점 folded protein처럼 형성
중요한 점은 중간 과정에서도 chain이 어느 정도 연결된 구조처럼 보인다는 것


아래쪽은 Cartesian diffusion/flow 방식
초기에는 residue들이 흩어진 점 또는 조각처럼 보이고, 중간 과정에서도 서로 분리된 fragment들이 움직이다가 최종적으로 구조를 형성하는 느낌

✅ HOW REALISTIC IS THE GENERATIVE PROCESS?

생성 과정이 얼마나 현실적인가?
-> 기존 단백질 생성 모델들은 결과적으로 괜찮은 구조를 만들 수는 있지만, 그 구조를 만들어가는 중간 과정이 물리적으로 말이 되느냐

기존 diffusion/flow 모델은 단백질을 실제 물리적 사슬처럼 다루지 않고, residue들을 독립적인 점처럼 흩뜨림


기존 linear diffusion/flow의 문제

기존 모델들이 보통 linear Ornstein–Uhlenbeck process 같은 선형 noising을 씀
(수학적으로 다루기 쉽고 transition kernel을 closed-form으로 계산할 수 있어서 편리)

But, 단백질 구조는 다음 조건들을 지켜야 함

  • backbone bond length가 너무 틀어지면 안 됨
  • bond angle이 비현실적으로 깨지면 안 됨
  • residue들이 서로 겹치면 안 됨, 즉 steric clash가 없어야 함
  • 전체 chain의 topology, 즉 연결성이 유지되어야 함
  • α-helix, β-sheet 같은 secondary structure motif가 자연스럽게 유지되거나 생성되어야 함

기존 linear noising은 각 residue 좌표를 거의 독립적인 점처럼 이동시키기 때문에, residue 사이의 물리적 관계를 제대로 보존하지 못함


Forward/noising process
실제 folded protein structure를 점점 noise가 낀 단순한 상태로 보냄

Reverse/generative process
noise 상태에서 다시 folded protein structure를 생성함

그런데 forward process가 물리적으로 이상하면, reverse process도 그 이상한 bias를 배우게 됨
-> 모델이 학습 과정에서 “단백질은 중간에 bond가 깨져도 되고, residue가 충돌해도 된다”는 식의 잘못된 생성 경로를 암묵적으로 배우게 됨
-> 문제 발생

  • steric clash 발생
  • bond length violation
  • bond angle violation
  • secondary structure motif 복원이 불안정함
  • tertiary motif 회복이 일관적이지 않음

왜 non-linear process가 필요한가?

현실적인 generative process를 만들려면 forward process부터 바꿔야 함
-> 단순히 모델 architecture를 더 크게 하거나 loss를 추가하는 것만으로는 부족하고, noising 자체가 단백질의 물리적 특성을 반영해야함

forward process는 다음 조건을 만족

  • collision을 피해야 함
  • residue들이 서로 뚫고 지나가거나 겹치면 안 됨.
  • topological integrity를 보존해야 함
  • 단백질 backbone chain의 연결성이 유지되어야 함.
  • bond와 angle constraint를 크게 깨지 않아야 함
  • 단백질이 실제 물리적 사슬처럼 움직여야 함.
  • secondary structure 형태로 unfolded되어야 함
  • 완전히 random cloud로 흩어지는 것이 아니라, α-helix나 linear β-sheet 같은 물리적으로 해석 가능한 상태로 펼쳐져야 함.

-> 단순 선형 dynamics로는 표현하기 어렵기 때문에, non-linear noising process가 필요

단백질의 구조 constraint, angular dependency, collision avoidance 같은 요소들은 residue 좌표를 단순히 선형 보간하거나 Gaussian noise로 흩뜨리는 방식으로는 자연스럽게 보존되지 않음
-> 그래서 classical physics, 특히 Hamiltonian dynamics에서 영감을 받은 noising process를 제안

✅ METHOD

큰 구조

  1. 단백질 backbone을 SE(3) frame으로 표현한다.
  2. SE(3)를 rotation 부분인 SO(3)와 translation 부분인 R³로 나눈다.
  3. rotation은 SO(3) flow로 처리한다.
  4. translation/coordinate 부분은 angular representation을 이용한 physics-based unfolding으로 처리한다.
  5. 이 trajectory를 학습할 neural network architecture를 구성한다.

✅ 전체 목표: SE(3)-invariant density 학습

목표는 단백질 backbone distribution을 학습하는 것

단백질 구조는 3D 공간에 놓여 있기 때문에, 전체 구조를 회전하거나 평행이동해도 같은 단백질 구조로 봐야 함
-> 그래서 모델은 SE(3)-invariant해야 함
(단백질의 각 residue를 하나의 rigid frame으로 보고, 전체 단백질을 residue별 SE(3) frame들의 집합으로 표현)

그리고 translation invariance를 위해 각 protein을 center of mass 기준으로 centering
-> 전체 구조의 중심이 원점에 오도록 좌표를 재정렬
-> 이렇게 하면 전체 단백질이 어디에 놓여 있는지에 덜 민감해지고, 구조 자체를 중심으로 학습할 수 있음

주의할 점: translation invariance와 rotation invariance는 다름
-> 여기서 centering이 해결하는 것은 translation, 즉 평행이동
전체 단백질을 회전시키는 문제는 centering만으로 해결되지 않음
-> 그래서 SE(3)로 다룸


✅ SE(3)를 SO(3)와 R³로 분해

SO(3): residue frame의 회전
R³: residue frame의 위치, translation

-> 단백질 backbone frame의 변화는 “회전 변화”와 “위치 변화”를 따로 나눠서 다룰 수 있다는 것

-> 따라서, PhysFlow는 다음 두 가지 flow를 따로 만든 뒤 결합
SO(3) flow: residue frame rotation을 생성
R³ flow: residue 위치 또는 backbone geometry를 생성
이게 Method의 기본 골격


✅ BUILDING SO(3) FLOWS

rotation을 어떻게 flow matching으로 다루는지

단백질의 각 residue frame에는 orientation이 있음
-> 즉, N, Cα, C, O 원자들이 어떤 방향을 보고 있는지를 나타내는 rotation matrix가 필요
-> 이 rotation은 일반적인 Euclidean vector가 아니라 SO(3) manifold 위의 값
-> 그래서 단순히 두 rotation matrix를 선형 보간하면 안 됨
-> SO(3) 위의 geodesic interpolation을 사용

✅ Geodesic interpolation

rotation 공간 위에서 r0에서 r1까지 가장 자연스러운 곡선을 따라 이동하는 것
-> 평면 좌표에서는 직선이 최단 경로지만, rotation manifold에서는 geodesic이 “직선 역할”


다만, SO(3)에서 exponential map과 logarithm map을 직접 계산하는 것은 계산 비용이 들고, numerical instability도 생길 수 있음
-> Bose et al.의 방식을 따라, rotation을 axis-angle representation으로 바꾸고 parallel transport를 사용하는 수치적 전략 사용

✅ SO(3) velocity field

현재 rotation rt에서 기준 rotation r0 방향으로 가는 tangent vector를 시간 t로 나눈 것

중요한 점은 velocity가 그냥 Euclidean vector가 아니라, SO(3)의 tangent space에 있는 vector라는 것

✅ UNFOLDING IN R³

논문의 가장 중요한 아이디어

PhysFlow는 Cartesian coordinate에 직접 noising하지 않고, 먼저 backbone을 angular representation으로 바꿔서 unfolding dynamics를 정의

✅ Angular representation을 쓰는 이유

단백질 backbone은 Cartesian coordinate x로 표현할 수도 있지만, internal angle들로 표현할 수도 있음

각 residue의 angular representation

zi=(ϕ,ψ,ω,θ1,θ2,θ3)

즉, residue의 위치 자체보다 backbone이 어떻게 꺾이고 회전하는지를 나타내는 internal coordinate
-> 이 표현의 장점은 translation-invariant하다는 것
(단백질 전체를 공간상에서 어디로 옮겨도 internal angle은 바뀌지 않음)

Angular space에서 Cartesian space로 복원
-> angular representation과 Cartesian coordinate 사이에 bijection이 있다고 가정하고, mp-NeRF 알고리즘을 이용해 angle에서 Cartesian coordinate를 복원

x=nerf(z)

즉, angle z를 알면 실제 3D backbone coordinate x를 만들 수 있음

-> PhysFlow는 angular space에서 물리 기반 dynamics를 정의하고, 필요할 때는 nerf(z)를 통해 Cartesian coordinate로 변환해 collision 등을 계산

  • angular space에서 움직이면 backbone 연결성이 더 잘 유지됨
  • Cartesian coordinate로 복원하면서 residue 간 거리를 계산할 수 있음
  • collision avoidance term을 넣을 수 있음
  • translation invariance가 자연스럽게 유지됨

✅ Decay-Hamiltonian unfolding process

angular space z 위에서 second-order Decay-Hamiltonian dynamics를 정의

-> 이 구조는 물리에서 말하는 “힘을 받아 움직이는 동역학”과 비슷
-> 단순히 zt를 target으로 선형 이동시키는 것이 아니라, potential energy, repulsion, friction을 이용해서 물리적으로 그럴듯한 unfolding trajectory를 만드는 것

✅ Potential energy의 구성

potential energy는 두 항으로 구성

즉,
1. target secondary structure로 끌어당기는 항
2. residue collision을 막는 repulsion 항
을 합친 것

k1: target secondary structure로 끌어당기는 힘의 세기
k2: collision을 막는 repulsion의 세기
-> k1이 크면 protein을 target β-sheet-like unfolded structure로 강하게 끌고 가고, k2가 크면 residue 간 충돌을 더 강하게 피하게 됨


Target potential (첫번째 항)

현재 angle zi,t가 target angle zi,target과 다르면 energy가 커짐

따라서 dynamics는 energy를 줄이는 방향으로 움직이고, 결국 zt는 target secondary structure의 angle로 가까워짐

target state는 예를 들어 linear β-sheet 같은 secondary structure chain

-> folded protein을 완전히 무작위 점구름으로 흩뜨리는 것이 아니라, 물리적으로 의미 있는 “펼쳐진 β-strand-like chain” 쪽으로 보내는 것


Coulomb-like repulsion (두번째 항)

collision을 막기 위한 repulsion

-> 즉, residue들이 서로 너무 가까워져 충돌하지 않도록 밀어내는 barrier 역할

✅ Friction term

Potential energy만 있으면 dynamics가 너무 진동할 수 있음

공이 구덩이로 굴러갈 때 마찰이 없으면 계속 왔다 갔다 진동
protein angle dynamics도 potential만 있으면 target 근처에서 심하게 oscillation할 수 있음

그래서 drag force를 추가

K(vt)=−γvt
γ>0는 drag coefficient

-> velocity가 너무 커지지 않도록 damping을 걸어서 안정적으로 target state에 수렴하게 만드는 것
(강한 acceleration을 줄이고 trajectory를 안정화하는 역할)

✅ Terminal distribution

u=[z,v]라고 두고, prior distribution을 다음처럼 정의

-> PhysFlow의 prior는 완전한 Gaussian point cloud가 아니라, linear β-sheet-like unfolded chain 주변의 분포


실제 data distribution은 다음처럼

실제 PDB protein structure에는 angle z는 있지만 velocity는 관측되지 않음
그래서 velocity는 Gaussian noise로 augment

p1: 실제 folded protein data
p0: unfolded secondary-structure-like prior
forward/noising/unfolding: folded protein p1 → unfolded prior p0
reverse/generation/folding: unfolded prior p0 → folded protein p
1
-> 생성할 때는 p0에서 시작해서 p1로 가는 reverse process를 학습

✅ Forward simulation

Coulomb repulsion이 들어가면 transition kernel을 closed-form으로 계산하기 어려움

일반 linear diffusion에서는 p(xt∣x0) 같은 걸 수식으로 깔끔하게 쓸 수 있지만, 여기서는 non-linear ODE dynamics가 있기 때문에 직접 simulation해야함

forward transition

평균은 다음처럼 계산


-> 실제 folded state u1에서부터 dynamics를 따라 t 시점의 상태를 계산한다는 뜻

실제 folded protein을 물리 기반 unfolding ODE로 조금씩 펼쳐보고, 각 시간 t에서의 intermediate state를 저장하는 것
-> 이렇게 저장한 trajectory를 이용해 reverse process를 학습

✅ MODEL ARCHITECTURE

위에서 만든 trajectory를 neural network가 학습

model input

  1. noised structural state가 Structure Encoder로 들어감
  2. amino acid sequence가 Sequence Encoder로 들어감
  3. 두 representation이 Combiner Module에서 합쳐짐
  4. Structure Decoder가 velocity field와 auxiliary prediction을 출력함

output

✅ Structure Encoder

IPA Transformer를 사용
(AlphaFold2에서 사용된 Invariant Point Attention)
-> SE(3)-equivariant하게 구조 정보를 처리할 수 있다는 장점

Structure Encoder는 input structure를 받아서

  • residue별 single representation
  • residue pair representation
    를 만듦

✅ Sequence Encoder

ESM2 650M 모델 사용

PhysFlow가 단순 unconditional backbone generation만 하는 것이 아니라, sequence-conditioned folding도 하려 하기 때문
-> 즉, amino acid sequence가 주어졌을 때 그 sequence에 맞는 구조를 생성할 수 있어야함

✅ Conditional + unconditional을 동시에 학습

sequence 정보를 항상 주는 것이 아니라, 50% 확률로 masking


-> 절반은 sequence를 주고 학습하고, 절반은 sequence 없이 학습

그래서 모델은 두 가지를 모두 할 수 있음

  1. Unconditional generation: sequence 없이 새로운 protein backbone 생성
  2. Sequence-conditioned folding: sequence가 주어졌을 때 해당 sequence의 구조 생성

✅ Combiner Module과 Structure Decoder

Structure Encoder와 Sequence Encoder에서 나온 representation을 Combiner Module에서 합침

Huguet et al. 방식처럼 single/pair embedding을 결합하고, triangular self-attention으로 업데이트

그다음 Structure Decoder도 IPA Transformer로 구성되고, 최종적으로 velocity field와 auxiliary output을 예측

즉, PhysFlow 모델은 단순히 “최종 구조”를 바로 찍는 모델이 아니라, 현재 상태에서 앞으로 어떻게 움직여야 folded protein이 되는지, 즉 flow velocity를 예측하는 모델

✅ LEARNING OBJECTIVE

PhysFlow를 어떤 loss로 학습시키는가

  1. SO(3) flow matching loss
  2. R³ flow matching loss
  3. Look-Ahead loss
  4. Auxiliary losses: backbone atom MSE + distogram-like distance loss

전체 loss

✅ Flow Matching Loss

conditional flow matching을 이용해서 velocity field를 학습

현재 time t의 structure가 주어졌을 때, folded protein 쪽으로 가려면 어떤 방향과 속도로 움직여야 하는지 예측
-> 이 velocity를 rotation 부분과 translation/coordinate 부분으로 나눠서 학습


SO(3) loss (rotation)


-> 모델이 rotation 방향을 얼마나 잘 예측했는지 보는 loss
(일반 좌표 차이가 아니라 rotation manifold 위의 velocity 차이를 비교한다는 점이 중요)


R³ loss (translation/coordinate)


-> 모델이 물리 기반 unfolding trajectory의 reverse direction을 잘 학습하도록 함


Independent coupling

(x0,x1), (r0,r1)를 independent coupling으로 샘플링


-> prior 쪽 sample과 data 쪽 sample을 독립적으로 뽑아서 그 사이의 conditional path를 학습한다는 뜻

✅ Look-Ahead Loss

중요한 추가 loss

기존 flow matching loss는 보통 현재 t에서의 velocity를 맞추는 데 집중
PhysFlow의 trajectory는 non-linear
-> 즉, 지금 velocity를 조금 맞춘다고 해서 미래의 구조가 항상 정확해지는 것은 아님
-> 그래서 미래 시점 s의 구조도 맞추도록 하는 loss를 추가


-> 현재 시간 t를 뽑고, 그 이후의 미래 시간 s를 뽑음


-> residue마다 backbone atom N, C, O, Cα의 좌표를 비교

“지금 당장의 velocity만 맞추지 말고, 예측한 방향으로 갔을 때 미래 구조도 맞아야 한다.”

단백질 folding/unfolding trajectory는 비선형이기 때문에, local velocity만 맞추면 누적 오차가 생길 수 있음

Look-Ahead loss는 그 누적 오차를 줄여주고, 모델이 더 긴 시간 범위의 trajectory를 이해하도록 도와줌

특히 PhysFlow처럼 physics-based non-linear path를 배우는 모델에서는 이 loss가 중요

✅ Auxiliary Losses

최종 generation 단계에서 local protein structure를 더 잘 맞추기 위해 auxiliary loss 두 개를 추가

Lbb: backbone atom position MSE
L2D: distogram-like pairwise distance loss


Backbone atom MSE loss Lbb


-> 최종 folded structure에서 backbone atom 위치를 직접 맞추는 MSE


Distogram-like loss L2D
(AlphaFold2의 distogram loss와 비슷한 pairwise distance loss)


-> residue n의 atom a와 residue m의 atom b 사이의 실제 거리와 예측 거리를 비교

단, 모든 atom pair를 보는 게 아니라,

인 pair만
(0.6 nm는 6 Å)
-> 가까운 atom pair만 대상으로 distance error를 계산
(가까운 atom pair는 local structure와 packing quality에 중요)
-> L2D는 generated structure의 local physical quality를 높이는 데 도움

✅ 최종 loss

왜 auxiliary loss는 t>0.75에서만 적용하나?

초기 단계 t가 낮을 때는 구조가 아직 unfolded prior에 가까움
이때는 atom-level fine detail을 강하게 맞추는 것이 별로 의미가 없을 수 있음

반대로 t가 1에 가까워질수록 구조는 folded protein data에 가까워짐
그래서 최종 atom coordinate나 pairwise distance 같은 fine-grained structural loss는 late stage에서만 적용하는 게 자연스러움
-> t>0.75일 때만 Lbb, L2D를 적용

✅ EXPERIMENTS

PhysFlow를 두 가지 task에서 평가

  1. unconditional monomer backbone generation
    아무 sequence 조건 없이 새로운 단백질 backbone을 생성하는 문제

  2. sequence-conditioned monomer folding
    아미노산 sequence가 주어졌을 때 그 sequence가 접힌 구조를 예측하는 문제

✅ Unconditional monomer protein generation

모델에게 특정 sequence나 target fold를 주지 않고,
길이 N짜리 단백질 backbone을 하나 만들라고 시키는 task
-> target length를 {100, 150, 200, 250, 300}으로 두고, 각 길이에 대해 50개씩 sample을 생성한 뒤 평가


PhysFlow는 PDB에서 가져온 monomer protein으로 학습

항목내용
데이터 출처Protein Data Bank, PDB
단백질 형태monomer
길이60–512 residues
구조 해상도< 5 Å
최종 데이터 수24,003 proteins

비교한 기존 모델들

계열모델
Diffusion-basedFrameDiff, RFDiffusion, Chroma, Genie
Flow-basedFoldFlow, FoldFlow-2, FrameFlow, Proteína
Protein language model 기반ESM3

평가 metric

  1. Designability

Designability는 생성된 backbone이 실제로 sequence를 부여받고 다시 접혔을 때 원래 backbone과 비슷하게 복원될 수 있는지를 보는 지표

(1) 모델이 backbone을 생성한다.
(2) ProteinMPNN으로 그 backbone에 맞는 amino acid sequence를 설계한다.
(3) 그 sequence를 ESMFold로 다시 접는다.
(4) 다시 접힌 구조와 원래 생성 backbone의 RMSD를 계산한다.
(5) self-consistency RMSD, 즉 scRMSD가 2 Å 미만이면 designable하다고 본다.

즉, designability가 높다는 것은 모델이 만든 backbone이 “아무렇게나 생긴 구조”가 아니라, 실제 sequence가 그 구조를 안정적으로 만들 수 있을 가능성이 높다는 뜻

  1. Novelty

Novelty는 생성된 구조가 training set에 있던 구조를 그냥 따라 한 것이 아닌지를 보는 지표

(1) avg. max TM
생성된 designable protein마다 training set 구조들과 TM-score를 계산하고, 그중 가장 높은 TM-score를 찾는다.
그리고 이 최대 TM-score들의 평균을 낸다.
TM-score가 높다는 것은 training 구조와 비슷하다는 뜻이므로, avg. max TM은 낮을수록 더 novel하다고 볼 수 있음

(2) TM-Frac. < 0.3
생성된 구조 중에서 designable하면서 동시에 training set과의 maximum TM-score가 0.3보다 낮은 구조의 비율을 보는 지표

  1. Diversity

Diversity는 생성된 구조들이 서로 얼마나 다양한지를 보는 지표

(1) designable sample들 사이의 평균 pairwise TM-score
TM-score가 낮을수록 서로 덜 비슷하다는 뜻이므로, TM-Sc.는 낮을수록 diversity가 높다고 볼 수 있음

(2) cluster 수
TM-score threshold 0.5 기준으로 생성 구조들을 clustering했을 때 cluster가 많이 나오면, 생성된 구조들이 다양한 fold를 포함한다는 뜻

  1. Secondary structure composition

생성된 designable backbone이 α-helix, β-sheet, coil을 얼마나 포함하는지

Biotite의 P-SEA algorithm을 사용해서 secondary structure composition을 계산하고, α, β, coil 비율을 normalize

designability가 0.81 -> 81%가 refolding했을 때 2 Å 이내로 다시 접혔다

Novelty TM-Frac. < 0.3은 0.197 -> 더 많은 novel designable structure를 만든다

Diversity Cluster 0.34, TM-Sc. 0.22 -> 생성 구조끼리 서로 너무 비슷하지 않다는 의미이므로, diversity 측면에서도 꽤 괜찮은 결과

Secondary structure α/β가 82.2/5.7 -> 생성한 designable backbone은 α-helix 비율이 높고 β-sheet 비율은 낮은 편

✅ Sequence-conditioned monomer folding

단백질 amino acid sequence가 주어졌을 때, 그 sequence가 접힌 3D structure를 예측하는 문제

  • PDB에서 filtering한 24,003개 monomer protein을 기반 학습
  • dataset은 cluster 기준으로 0.9 : 0.1 train-test split
  • 총 4,542개 cluster 중 4,087개는 training set, 455개는 test set
  • train/test protein length distribution이 잘 맞춰져 있다고 설명
모델설명
ESMFold매우 큰 sequence dataset으로 학습된 강력한 structure prediction model
MultiFlowsequence-augmented structure generation baseline
FoldFlow-2sequence-augmented SE(3) flow matching 기반 baseline
PhysFlow이 논문이 제안하는 모델

PhysFlow가 AlphaFold/ESMFold 수준의 folding 정확도를 달성했다는 뜻 X
RMSD 11–15 Å는 큰 오차

✅ ABLATION STUDIES

  1. Runtime complexity
  2. Reverse process time step 수 변화
  3. Energy weighting k1, k2 변화

✅ Runtime Complexity

forward simulation의 계산 시간이 protein length에 따라 어떻게 증가하는지

PhysFlow는 Coulomb-like repulsion이 포함된 Hamiltonian dynamics 기반 unfolding을 사용하기 때문에 forward transition kernel을 closed-form으로 계산하기 어려움
그래서 실제로 ODE simulation을 해야 함
-> “단백질마다 forward unfolding simulation을 해야 하면 너무 느리지 않을까?”


-> protein length가 길어질수록 CPU time이 증가

✅ Effect of varying time steps

reverse process를 풀 때 사용하는 time step 수를 바꿔본 것

Flow/diffusion model에서 sampling할 때는 보통 여러 step에 걸쳐 noise 상태에서 structure 상태로 이동
여기서는 그 step 수를 50, 100, 200으로 바꿔서 성능을 비교

time step을 50에서 100, 200으로 늘려도 성능 변화가 크지 않음
-> PhysFlow는 매우 많은 sampling step을 쓰지 않아도 안정적으로 작동한다는 뜻

✅ Effect of varying k1, k2 energy weighting

forward dynamics를 결정하는 energy weight를 바꿔보는 실험

k1: “펼쳐진 β-sheet 같은 target 형태로 가라”는 힘
k2: “residue끼리 부딪히지 마라”는 힘

-> k2, 즉 Coulombic repulsion weight를 키우면 steric clash 수가 줄어듦
-> repulsion potential이 실제로 물리적 realism에 기여함을 확인

✅ CONCLUSION AND FUTURE WORK

PhysFlow는 Hamiltonian dynamics 기반의 physics-informed noising process를 protein backbone generation에 도입한 generative model

기존 linear forward process와 달리, PhysFlow의 noising은 structural integrity를 보존하고 steric clash를 방지하도록 설계됨
그리고 이 noising process를 SE(3) flow matching과 결합해서 protein backbone geometry를 존중하는 생성 모델을 만듦


(1) PhysFlow는 기존처럼 residue를 무작위로 흩뜨리는 것이 아니라, protein을 물리적으로 그럴듯하게 unfolding하는 forward process를 사용한다.

(2) 이 forward process는 topology-aware하다. 즉, backbone bond나 구조적 연결성을 완전히 깨뜨리지 않고, residue collision도 줄이려 한다.

(3) 실험적으로 PhysFlow는 unconditional generation에서 novel하고 designable한 protein backbone을 잘 만들고, sequence-conditioned monomer folding에서도 같은 데이터 조건의 baseline보다 낮은 RMSD를 달성했다.

profile
In-silico Antibody Design & Engineering Lab Researcher, Seoul National University

0개의 댓글