붙이는 자리까지 함께 배우는 분자 설계, Fraglingo가 묻는 것
조각 고르기와 붙일 자리 예측을 하나의 연속 벡터로 묶은 Fraglingo를 자기회귀 생성, 와일드카드 읽기, 검색 기반 확장과 네 가지 설계 작업 중심으로 읽는다.
원문 논문 보기
Fraglingo: Molecular Design via Attachment-Aware Autoregressive Fragment Generation는 arXiv에 공개된 분자 생성 연구로 arXiv 번호 2609.13519로 등록되어 있다. 원문 링크는 제목 아래에 걸어두었다.
이 연구가 내세우는 주장은 하나의 문장으로 정리된다. 조각이 무엇인지 고르는 일과 그 조각을 어디에 붙일지 정하는 일을 나누지 않고, 붙는 자리를 의식한 하나의 연속 벡터로 함께 예측한 뒤 검색으로 다음 조각을 가져오는 분자 생성기를 만들자는 것이다. 이 글에서는 그 문제의식에서 출발해 조각 기반 설계의 어색함과 하나의 벡터로 묻는 방식, 와일드카드 읽기, 검색으로서의 생성, 네 가지 작업으로의 확장, 그리고 네 배 큰 조각 상자에서 본 일반화까지 차례로 따라간다.
왜 이 논문을 끝까지 읽게 됐을까
안녕하세요, 패트릭입니다.
저는 분자 생성 논문을 볼 때마다 묘한 거리감을 느껴왔습니다. 분자는 분명 화학자가 만지는 물건인데, 생성 모델 속에서는 자꾸 추상적인 문자열이나 그래프 점들의 나열로 바뀌기 때문입니다. 화학자가 하는 일은 스캐폴드를 늘리거나 치환기를 바꾸거나 특정 자리에 장식을 다는 일인데, 모델은 그런 손놀림을 모르는 채 원자를 하나씩 찍어내는 경우가 많았죠. 그래서 읽다가 자꾸 이런 질문이 남았습니다. 우리가 모델에게 시키는 일이 화학자가 실제로 하는 일과 같은 일일까요.
Fraglingo는 바로 그 간격을 정면으로 건드립니다. 분자 설계를 화학자의 편집 동작에 가깝게 되돌리자는 제안인데, 조각을 이어 붙이는 과정을 autoregressive하게 배우되 조각의 정체와 붙는 자리를 따로 예측하지 않겠다는 것이죠. 제가 이 논문에서 가장 흥미롭게 본 부분은 이 태도였습니다. 점수를 올리는 요령이 아니라 일하는 단위를 다시 정하는 일인데, 이런 논문은 숫자를 보기 전에 구조를 먼저 보게 됩니다. 그렇다면 기존 방식은 어디에서 어긋나 있었을까요. 그 이야기는 분자를 그리는 방식에서 시작하는 편이 맞겠습니다.
분자를 원자부터 그리는 일은 어디에서 어긋날까
분자를 만드는 가장 직관적인 방법은 원자를 하나씩 놓는 일입니다. 탄소 다음에 산소, 산소 다음에 고리 닫기 같은 식으로 말이죠. 언어로 치면 알파벳을 하나씩 찍어 문장을 만드는 것과 비슷한데, 처음에는 이 방식이 꽤 자연스러워 보입니다. 원자는 어차피 분자의 알파벳이니까요. 그런데 막상 이 방식으로 약이 될 만한 분자를 만들려고 하면 어색한 장면이 자꾸 생깁니다. 화학적으로 말이 안 되는 중간 상태가 나타나거나, 그럴듯해 보이는데 합성하기 어려운 구조가 나오거나, 원하는 성질을 맞추려고 하면 전체를 처음부터 다시 그려야 하거나 말이죠.
생각해보면 사람도 비슷하게 배웁니다. 글을 처음 배울 때는 자모를 하나씩 익히지만, 능숙해지면 단어와 구절 단위로 생각하죠. 화학자도 마찬가지인데, 원자를 하나씩 세면서 설계하지 않습니다. 벤젠 고리나 아미드 같은 검증된 조각을 손에 쥐고, 그 조각들을 어디에 붙이면 성질이 어떻게 바뀔지를 떠올리니까요. 조각은 단순한 부품이 아니라 지금까지의 합성 경험이 압축된 단위입니다. 그래서 조각 단위로 설계하면 화학적으로 말이 되는 구조가 나올 가능성이 커지고, 합성 경로도 함께 떠올리기 쉬워집니다.
문제는 그다음입니다. 조각 단위로 만들겠다고 결심해도, 기존 모델들은 대개 두 가지 일을 순서대로 나누었습니다. 먼저 다음에 쓸 조각이 무엇인지 고르고, 그다음에 그 조각을 어디에 붙일지 정하는 식이었죠. 얼핏 보면 합리적인 분업처럼 보이는데, 실제로 분자를 만져본 사람에게는 어색하게 느껴집니다. 조각이 무엇인지는 어디에 붙느냐에 따라 달라지기 때문입니다. 같은 조각이라도 왼쪽에 붙을 때와 오른쪽에 붙을 때 의미가 달라지는데, 이 둘을 따로 고르면 서로 어긋나는 선택이 나올 수 있죠. 저는 여기서 멈칫했습니다. 우리가 모델에게 조각과 자리를 따로 묻는 순간, 이미 화학자의 직관에서 멀어지고 있는 것은 아닐까요.

조각 고르기와 붙일 자리 고르기가 따로 놀면 무슨 일이 생길까
조금 더 구체적인 장면을 떠올려 봅시다. 월요일 오후, 신약 팀이 특정 스캐폴드에 새로운 치환기를 달려고 합니다. 원하는 성질은 정해져 있는데, 예를 들어 용해도는 올리면서 특정 단백질에 대한 결합은 유지해야 합니다. 화학자는 스캐폴드를 책상 위에 올려놓고 가능한 붙는 자리들을 눈으로 훑습니다. 여기 달면 너무 커지고, 저기 달면 전자 분포가 깨지고, 그렇다면 이 자리에 이 정도 크기의 조각이 들어가면 어떨까 하는 식으로 말이죠. 이 과정에서 조각 고르기와 자리 고르기는 분리되지 않습니다. 자리를 보면서 조각을 떠올리고, 조각을 떠올리면서 자리를 다시 봅니다.
그런데 두 단계를 분리한 모델에서는 이 대화가 끊깁니다. 먼저 조각 분류기(classifier)가 수만 개 조각 중에서 하나를 고르고, 이어서 붙는 자리 예측기가 그 조각을 어디에 붙일지 정하는데, 앞 단계가 뒤 단계를 모른 채 결정하는 것이죠. 앞 단계에서 고른 조각이 지금 열려 있는 자리에 잘 맞지 않으면 어떻게 될까요. 뒤 단계는 어쩔 수 없이 어색한 부착을 시도하거나, 아예 유효하지 않은 분자를 내놓게 됩니다. 반대로 자리 예측이 먼저라면 사정은 마찬가지인데, 자리가 정해져도 그 자리에 어울리는 조각을 모르면 선택이 겉돌기 때문입니다.
저는 이 숫자보다 그 뒤의 구조가 더 중요하다고 봅니다. 분리된 예측이 틀렸다는 이야기가 아니라, 분리가 만드는 오류의 성격이 문제라는 것이죠. 조각과 자리가 서로를 모르면 오류가 조용히 쌓입니다. 각 단계의 정확도는 그럴듯해 보이는데, 막상 붙여놓으면 어색한 분자가 나오는 식인데요. 이런 오류는 benchmark 표에서 잘 드러나지 않습니다. 각 모듈의 점수는 따로 재어지니까요. 그렇다면 둘을 애초에 나누지 않고 함께 묻는 방법은 없을까요. 그 질문이 Fraglingo의 출발점입니다.
그렇다면 조각과 자리를 하나의 벡터로 묻는다는 말은 무엇일까
Fraglingo의 대답은 문장을 바꾸는 데서 시작합니다. 다음 조각은 무엇인가, 그리고 어디에 붙일 것인가라는 두 질문을 던지는 대신, 지금 열려 있는 자리에 어울리는 다음 조각의 모습을 하나의 벡터로 예측하겠다는 것이죠. 이 벡터를 논문은 attachment-aware fragment embedding이라고 부르는데, 말 그대로 붙는 자리를 의식한 조각 임베딩입니다. 조각의 정체와 붙는 맥락이 하나의 연속 공간 안에 함께 녹아 있다는 뜻인데요. 저는 이 표현을 처음 보고 레고 설명서가 떠올랐습니다. 부품 번호만 적힌 목록이 아니라, 이 부품이 지금 조립 중인 모형의 어느 돌기에 어떤 방향으로 꽂히는지가 함께 그려진 그림 같은 것이죠.
이 차이가 왜 중요한지는 학습 방식에서 드러납니다. 고정된 조각 식별자(identifier) 위에서 분류 문제를 푸는 대신, 모델은 연속 공간 속의 한 점을 찍는 법을 배웁니다. 정답 조각의 임베딩에 가까운 점을 예측하도록 학습하는데, 이렇게 되면 조각 고르기와 자리 고르기의 경계가 사라집니다. 예측된 벡터는 이미 지금 자리에서 본 조각의 모습을 담고 있기 때문입니다. 그래서 모델은 무엇을 고를지와 어디에 붙일지를 따로 고민하지 않고, 지금 자리에 어울리는 조각의 모습을 한 번에 떠올리는 셈이죠. 저는 이 한 번에라는 대목에서 논문의 태도가 가장 분명해졌다고 느꼈습니다.
여기서 재미있는 질문이 생깁니다. 분류가 아니라 좌표를 찍으면 무엇이 좋아질까요. 답은 뒤에서 차근차근 풀겠지만, 일단 감각적인 차이는 분명합니다. 분류는 정해진 보기 중에서 고르는 시험이고, 좌표 찍기는 비슷한 느낌의 이웃을 찾아가는 일인데요. 전자는 보기가 바뀌면 처음부터 다시 배워야 하지만, 후자는 공간 자체가 의미를 가지기 때문에 보기가 늘어나도 헤매지 않습니다. 이 감각이 Fraglingo 전체를 관통하는데, 저는 그래서 이 벡터 하나를 논문의 문법이라고 봅니다. 문법이 바뀌면 문장이 바뀌고, 문장이 바뀌면 할 수 있는 일이 바뀌니까요.

붙는 자리에서 분자를 바라보는 일은 왜 다를까
벡터를 찍겠다고 결심해도 다음 문제가 남습니다. 성장 중인 분자를 어떻게 읽을 것인가 하는 문제인데요. 분자는 그래프이고, 읽는 방법은 여러 가지인데, Fraglingo는 여기서 와일드카드에 앵커를 둔 읽기(wildcard-anchored readout)라는 장치를 꺼냅니다. 이름이 조금 낯설게 들릴 수 있는데, 하는 일은 직관적입니다. 지금 붙이려는 자리, 즉 와일드카드 자리에 서서 분자 전체를 바라보겠다는 것이죠.
지도 앱에 비유하면 이해가 쉬운데요. 같은 도시라도 시청 앞에서 보는 지도와 기차역 앞에서 보는 지도는 강조점이 다릅니다. 내 위치가 바뀌면 어디가 가깝고 어디가 막혀 있는지가 달라지기 때문입니다. 분자도 마찬가지인데, 지금 열려 있는 붙는 자리가 어디냐에 따라 분자 전체의 의미가 달라집니다. 같은 스캐폴드라도 왼쪽 자리가 열려 있을 때와 오른쪽 자리가 열려 있을 때, 다음에 와야 할 조각은 전혀 다르죠. 그래서 전체를 뭉뚱그려 읽는 대신, 지금 자리라는 관점에서 읽는 일이 필요합니다. 와일드카드 읽기는 바로 그 관점을 벡터로 만드는 장치입니다.
실제 시스템 관점에서 보면 다음 질문이 바로 생깁니다. 관점을 매번 바꾸면 계산이 복잡해지지 않을까요. 맞는 지적인데, 저는 이 비용이 아깝지 않다고 봅니다. 관점 없는 읽기는 매번 같은 설명을 반복하고, 관점 있는 읽기는 지금 필요한 정보를 먼저 내놓기 때문입니다. 저희가 새로운 AI 아키텍처를 볼 때도 benchmark 숫자만 보지는 않습니다. 실제로 무엇이 바뀌었고, 그 변화가 시스템에서 어떤 비용 구조를 만드는지를 함께 봅니다. 와일드카드 읽기는 읽는 비용을 조금 더 쓰는 대신, 예측이 헤맬 여지를 줄이는 선택인데요. 어디에 붙느냐를 모른 채 무엇을 고르는 일은 애초에 어려운 질문이기 때문에, 질문을 쉽게 만드는 데 계산을 쓰는 셈입니다. 그렇다면 이렇게 읽어서 얻은 벡터로 다음 조각은 어떻게 고를까요. 그 장면이 다음 이야기입니다.

정답을 고르는 대신 근처를 찾는 방식은 어떻게 작동할까
Fraglingo의 생성은 한 걸음씩 나아갑니다. 성장 중인 분자와 지금 열려 있는 자리가 주어지면, 모델은 다음에 올 조각의 임베딩을 예측하고, 조각 라이브러리에서 그 예측과 가장 가까운 실제 조각을 검색으로 가져옵니다. latent-space nearest-neighbor search라는 말이 가리키는 일이 바로 이것인데요. 분류기가 정답 번호를 찍는 대신, 모델이 좌표를 찍고 라이브러리에서 그 근처에 사는 조각을 데려오는 것이죠. autoregressive라는 수식어가 붙는 이유도 여기에 있는데, 방금 붙인 조각까지 포함한 분자가 다음 예측의 입력이 되면서 분자가 한 조각씩 자라나기 때문입니다.
이 방식의 맛을 알려면 도서관 비유가 도움이 됩니다. 분류 방식은 사서에게 책 제목을 정확히 말하는 일이고, 검색 방식은 읽고 싶은 책의 느낌을 설명하면 사서가 서가에서 가장 비슷한 책을 찾아주는 일인데요. 전자는 제목을 외워야 하지만, 후자는 느낌만 알면 됩니다. Fraglingo는 후자에 가깝습니다. 모델은 조각 번호를 외우지 않고, 지금 자리에 어울리는 조각의 느낌을 벡터로 설명하는데, 그러면 라이브러리가 그 느낌에 가장 가까운 조각을 내놓죠. (참고로 이 느낌이라는 말은 비유인데, 실제로는 학습된 연속 공간에서의 거리로 잰다는 점이 다릅니다.)
여기서는 조금 조심해서 읽을 필요가 있습니다. 검색이 만능이라는 이야기가 아니기 때문입니다. 검색이 잘되려면 공간 자체가 잘 학습되어 있어야 하고, 라이브러리에 좋은 조각이 들어 있어야 하죠. 공간이 엉망이면 가까운 이웃도 엉망이고, 라이브러리가 빈약하면 느낌이 좋아도 가져올 조각이 없습니다. 그런데 이 약점은 뒤집으면 장점이 되는데, 공간만 잘 배워두면 라이브러리는 나중에 바꿀 수 있기 때문입니다. 번호를 외우는 모델은 보기가 바뀌면 다시 외워야 하지만, 느낌을 아는 모델은 서가만 바꾸면 되죠. 이 차이가 나중에 네 배 실험에서 다시 등장하는데, 그 이야기는 잠시 뒤에 다루겠습니다.

하나의 생성기로 네 가지 일을 한다는 말은 과장일까
Fraglingo를 설명하는 문장 중에는 처음에 크게 들리는 것이 있습니다. 같은 검색 기반 공식으로 분자 생성과 스캐폴드 생성, 스캐폴드 데커레이션, 분자 최적화를 하나의 원리로 다룬다는 대목인데요. 저는 이 대목을 처음 보고 살짝 의심했습니다. 하나의 모델로 여러 일을 한다는 말은 흔하고, 막상 뜯어보면 각 작업마다 다른 손질이 들어가는 경우가 많기 때문입니다. 그런데 구조를 따라가 보니 의심이 절반쯤 풀렸습니다. 생성의 한 걸음이 워낙 일반적이라서 시작점과 조건만 바꾸면 여러 작업이 되기 때문입니다.
예를 들어 처음부터 분자를 만든다면 빈 곳에서 시작해 조각을 하나씩 붙이면 됩니다. 스캐폴드를 만든다면 뼈대가 될 조각들만 먼저 이어 붙이고, 데커레이션이 목표라면 주어진 스캐폴드의 지정된 자리에 조건을 걸고 다음 조각을 검색하면 되죠. 분자 최적화도 같은 걸음으로 설명되는데, 지금 분자의 일부를 떼어내고 성질을 의식한 벡터를 예측해 더 나은 이웃 조각으로 교체하는 식입니다. 화학자가 실제로 하는 편집 동작, 즉 스캐폴드를 늘리고 치환기를 바꾸고 지정된 자리에 장식을 다는 일이 하나의 걸음으로 표현되는 것이죠. 시작 상태와 멈춤 조건, 그리고 성질 조건만 다를 뿐, 움직이는 근육은 같다는 뜻입니다.
개인적으로 인상 깊었던 점은, 이 통일이 사후적인 포장이 아니라 생성 방식에서 자연스럽게 나온다는 것입니다. 조각 번호를 외우는 분류기는 작업이 바뀌면 출력층부터 손봐야 하지만, 벡터를 찍어 검색하는 방식은 라이브러리와 조건만 바꾸면 되니까요. 물론 이것만으로 모든 작업에서 잘한다는 보장은 없습니다. 통일된 원리와 각 작업에서의 성능은 다른 이야기인데요. 그래서 다음에는 점수표를 봐야 하는데, 저는 이 점수표를 구조와 함께 읽는 편이 맞다고 봅니다.
점수표보다 구조를 먼저 봐야 하는 이유
성질 조건을 건 생성(controlled property-conditional) 실험에서 Fraglingo는 함께 학습된 기준선(baseline)들보다 여러 성질을 동시에 맞추는 일에서 더 나은 모습을 보였다고 보고됩니다. 그러면서 유효성(validity)과 유일성(uniqueness), 신규성(novelty)에서는 경쟁력 있는 수준을 유지했다고 하는데요. 문장만 보면 심심한 결과처럼 들릴 수 있습니다. 다 잘했다는 말이니까요. 그런데 분자 생성에서 여러 성질을 동시에 맞춘다는 말이 왜 어려운지를 알면 이 문장이 달리 들립니다.
약 설계를 떠올려보자. 용해도 하나만 올리는 일은 상대적으로 쉽습니다. 극성기를 달면 되니까요. 그런데 용해도를 올리면서 지용성도 적정 범위에 두고, 독성 위험은 낮추고, 합성 가능성까지 챙기려면 이야기가 달라집니다. 하나를 당기면 다른 하나가 밀리는데, 마치 여러 손잡이를 동시에 잡고 줄다리기를 하는 것과 비슷하죠. 단일 성질 맞추기는 손잡이 하나를 당기는 일이고, 다중 성질 맞추기는 서로 당기는 손잡이들 사이에서 균형을 찾는 일인데요. 후자가 훨씬 어렵고, 현장에서 필요한 일도 후자입니다. 그래서 여러 성질을 함께 맞추는 점수는 연구실 장난이 아니라 현장 감각에 가까운 시험이라고 저는 봅니다.
여기서도 과하게 읽지 않는 태도가 필요합니다. 유효성과 유일성, 신규성이 경쟁력 있다는 말은 틀렸다는 말이 아니라 충분하다는 말에 가깝기 때문입니다. 분자가 말이 되고, 서로 다르고, 학습 데이터의 베낌이 아니라면 생성기로서 출발선에 선 것이죠. 진짜 변별점은 여러 성질을 함께 맞추는 능력인데, 조각과 자리를 함께 보는 표현이 여기에서 힘을 발휘했을 가능성이 큽니다. 자리를 모른 채 조각만 고르면 성질을 맞추기 어렵고, 조각을 모른 채 자리만 봐도 마찬가지인데, 둘을 함께 보면 성질 조건을 벡터에 녹이기 쉬워지기 때문입니다. 그렇다면 이 구조는 처음 본 상자보다 큰 상자에서도 통할까요. 다음 실험이 바로 그 질문에 답합니다.

네 배 큰 조각 상자를 그대로 쓸 수 있다는 말의 무게
Fraglingo에서 제가 앞으로 보고 싶은 것보다 먼저 짚고 싶은 결과가 있습니다. 학습 때 쓴 것보다 최대 네 배 큰 조각 라이브러리에서도 다시 학습하지 않고 그대로 동작했다는 대목인데요. 처음 들으면 단순한 확장 실험처럼 들리지만, 이 차이는 생각보다 중요합니다. 분류기 방식에서는 상자가 바뀌면 출력층부터 다시 만들어야 하는데, 검색 방식에서는 상자만 갈아 끼우면 되기 때문입니다.
이 장면을 실험실 서랍에 비유해볼 수 있습니다. 분류기는 서랍마다 번호를 외운 학생이고, 검색 방식은 도구의 생김새와 용도를 아는 학생인데요. 서랍이 네 배로 늘어나면 번호 외운 학생은 처음부터 다시 외워야 하지만, 용도를 아는 학생은 새 서랍을 열어서 생김새가 비슷한 도구를 집으면 됩니다. Fraglingo는 후자 쪽인데, 연속 임베딩 공간에서 동작하기 때문에 고정된 조각 식별자에 묶이지 않죠. 학습이 끝난 뒤에 새로운 조각을 추론 시점에 추가할 수 있다는 말이 바로 이 뜻입니다. 임베딩만 구해두면 라이브러리에 얹을 수 있으니까요.
운영 측면에서 보면 이 차이는 상당히 큽니다. 신약 팀의 조각 라이브러리는 박제된 표가 아니라 살아 있는 목록인데, 새로운 합성 경험이 쌓일 때마다 좋은 조각이 추가되고 오래된 조각은 빠지기 때문입니다. 모델을 바꿀 때마다 다시 학습해야 한다면 현장에서는 쓰기 어렵죠. 학습 비용도 문제지만, 검증과 문서화까지 다시 해야 하니까요. 반면 라이브러리만 갈아 끼울 수 있다면 이야기가 달라지는데, 모델은 그대로 두고 화학자의 지식만 업데이트할 수 있기 때문입니다. 저는 그래서 이 네 배라는 숫자를 확장성 점수 이상으로 평가했습니다. 연구실 점수를 넘어 현장의 아침을 지켜주는 장치에 가깝기 때문입니다.
그런데 여기서도 물을 것이 남습니다. 네 배까지 된다고 해서 마냥 커져도 괜찮을까요. 라이브러리가 커지면 검색 공간이 넓어지고, 비슷한 조각들이 몰려 있는 지역에서는 변별이 어려워질 수 있는데요. 이 실험은 통한다는 가능성을 보여주지만, 어디까지 통하는지에 대한 한계선은 아직 그어지지 않았습니다. 검색 품질과 라이브러리 구성 사이의 관계가 다음에 밝혀져야 할 숙제라고 봅니다. 그렇다면 언어로 된 생성 모델의 흐름에서 이 조각 이야기는 어디에 놓일까요. 마지막에 그 그림을 그려보겠습니다.
분자 설계를 언어로 다시 쓴다면 무엇이 남을까
질문도 바뀌었습니다. 분자를 어떻게 그리느냐에서 화학자의 편집을 어떻게 배우느냐로 말이죠. 원자를 하나씩 찍던 시절의 질문은 유효한 분자를 어떻게 더 많이 만드느냐였는데, 조각 시절의 질문은 화학적으로 말 되는 분자를 어떻게 효율적으로 만드느냐가 되었고, Fraglingo가 던지는 질문은 조각과 자리를 함께 보면 어디까지 할 수 있느냐가 되었습니다. 저는 이 흐름이 언어 모델의 흐름과 겹쳐 보였습니다. 토큰을 하나씩 찍던 시절에서 의미를 담은 덩어리로 생각하게 된 것처럼, 분자도 원자에서 조각으로, 조각에서 자리까지 의식한 조각으로 시야가 넓어지고 있기 때문입니다.
저는 이 논문을 닫으면서 묘한 안도감을 느꼈습니다. 분자 생성이 다시 화학자의 손에 가까워지고 있다는 느낌 때문인데요. 스캐폴드를 늘리고 치환기를 바꾸고 지정된 자리에 장식을 다는 일, 성질을 조건으로 걸고 함께 맞추는 일, 라이브러리가 커져도 다시 배우지 않는 일은 모두 현장의 언어입니다. Fraglingo는 그 언어를 벡터와 검색이라는 기계의 언어로 번역했는데, 번역이 꽤 매끄럽게 읽혔습니다. 물론 번역이 매끄럽다고 현장이 쉬워지는 것은 아닙니다. 성질 조건을 걸어도 합성이 막히면 소용없고, 검색이 잘돼도 독성 같은 조용한 실패를 놓치면 안 되니까요.
그렇다면 사람의 역할은 무엇일까요. 모델이 조각과 자리를 함께 볼 수 있게 된 뒤에도 남는 일은 여전히 조건을 정하는 일이라고 봅니다. 어떤 스캐폴드에서 시작할지, 어느 자리를 열어둘지, 어떤 성질들을 함께 맞출지, 그리고 새로 들어온 조각을 라이브러리에 올릴지 말지를 정하는 일인데요. 시스템이 스스로 조각을 찾아오는 시대일수록 무엇을 만들지, 그리고 어떤 결과를 좋은 분자로 정의할지가 더 중요해질 것입니다. 저는 다음에 이 모델이 실제 합성 팀의 서랍과 만나서 어떤 조각을 집어 오는지 보고 싶습니다. 그 장면을 보면 이 벡터가 진짜 화학을 배웠는지 알 수 있으니까요.