알파폴드. 단백질 구조를 예측하는 AI. 이번에 노벨화학상을 수상했다. 그래서 이름은 들어봤을 법 하지만 어떻게 작동하는지까지 공부하는 사람은 드물다. 그냥 어려워 보인다. 그리고 인공지능 하면, 챗GPT를 떠올린다. 그래서 인공지능이라고 하면 뭔가 내가 대화를 해야 되는 프로그램이나 웹사이트라고 인지하는 경우도 많다.
일단 인공지능의 정체는 무엇일까?
인공지능은 모델 내부에 있는 파라미터 값들의 집합이다. 파라미터 값들이 본체다. 챗GPT를 예로 들어보자. 챗GPT에 문장을 입력하면 각 문장을 숫자로 바꿔준다. 그러면 이 숫자값에 모델의 파라미터를 곱해주고 더해주고 하면서 계산이 이루어진다. 그리고 모델에서 최종적으로 계산된 숫자 값을 다시 문장으로 전환시킨다. 챗GPT는 이렇게 프롬프트를 이해하고 답변을 제공한다. 인공지능 모델은 다 이런 방식으로 작동한다. QSAR 모델은 구조를 입력한다. 그러면 구조를 먼저 숫자로 바꿔주는 작업을 거치게 된다. 그 후에 모델의 최종 값이 그 화학물질의 실험값이 되도록 한다. 이미지 생성 모델에 프롬프트를 넣어주면, 이 문장이 숫자로 바뀌고 그 값을 파라미터와 곱하고 더하면서 이미지에서 제거해야 하는 노이즈를 조금씩 계산하게 된다. 그래서 처음에는 노이즈만 있는 의미없는 이미지에서 시작한다. 여기에 조금씩 프롬프트의 의도에 맞는 이미지가 만들어지도록 모델의 파라미터가 곱해지고 더해지고 하는 과정이 반복되면서 최종 이미지가 얻어진다.
이미지 모델이든, 화학물질에 사용하는 모델이든, 언어 모델이든 모든 모델은 파라미터 값들을 갖고 있다. 모델에게 주어지는 정보와 계산을 하는데 필요한 숫자 값들이다. 모델을 훈련할 때 초기에는 파라미터 값을 임의로 지정해준다. 그리고 데이터를 통해 반복적으로 학습과정을 거치게 되면 파라미터 값들이 점점 업데이트가 된다. 그래서 모델의 결과물이 성능이 좋을 때 얻어진 파라미터 값들. 이것이 인공지능 모델의 정체다. 학습을 통해 얻게 된 최종 파라미터 값들을 모델의 본체라고 할 수 있다. 사용자는 모델에 입력한 것과 출력된 것만 확인할 수 있다. 하지만 사용자가 입력한 값은 모델 내부에 있는 파라미터 들과의 다양한 계산과정을 거쳐서 최종 답변으로 만들어진다. 그래서 모델 파라미터는 우리가 입력한 값으로부터 최종 결과물을 도출하는데 꼭 필요하다. 이렇게 데이터로부터 학습된 파라미터를 이용해서 연산을 수행하는 모델을 모두 인공지능이라고 부른다. 데이터로부터 파라미터를 업데이트하는 알고리즘을 기계학습 알고리즘이라고 부르는 것이다. 그래서 모델이 데이터로부터 학습한다는 의미는, 데이터를 이용해서 모델의 파라미터를 업데이트 해준다는 의미다. 인공지능의 본체는 바로 이 파라미터 값들이다. 데이터를 바탕으로 업데이트된 파라미터 값들 전체!
알파폴드는 어떻게 작동할까?
언어 모델에서 문장을 숫자로 바꾼다고 설명했다. 언어 모델은 문장을 토큰 (token)으로 나눈다. 쉽게 말하면 단어라고 할 수도 있다. 그런데 정확하게 단어는 아니다. ?????? 예를 들어, I am running to school이라는 문장이 있으면 running에서 원형은 run 그리고 nning는 문법적인 요소다. 그러면 running은 2개의 토큰으로 구성될 수도 있다. 이런 상황 때문에 정확히 단어라고 말하기는 곤란하다. 아무튼 문장을 나누는 단위를 토큰이라고 한다. 이미지 모델에서는 입력되는 이미지를 3 x 3으로 조각 낸 후 모델에 입력하기도 하는데, 이런 경우에는 이미지 조각을 이미지 토큰이라고 부를 수 있다. 즉 모델에 큰 정보를 한번에 입력하기 어려운 경우 정보를 일정 단위로 조각을 내는데, 각각의 조각을 토큰이라고 한다. 알파폴드도 입력받은 정보로부터 3차원 구조를 찾아낸다. 먼저 단백질 서열이 사용된다. 그래서 단백질 서열에 적합한 토큰을 정의하고 이를 바탕으로 예측을 한다.
논문을 살펴보면 단백질 서열 정보로 부터 3가지 정보를 추가로 확보한다. 단백질 정보, 유전자 정보, 입력된 서열로부터 만들어진 단백질 구조. 단백질 서열정보와 함께 찾아온 3가지 정보를 모두 토큰으로 변환시킨다. 그리고 그 값들을 모델이 입력하게 되어 있다. 단순히 단백질 서열 정보를 사용하지 않고 다양한 정보를 가져오는 이유? 이것을 알기위해서는 알파폴드 이전에 어떤 방식으로 단백질 구조를 예측했는지 알 필요가 있다.
원래 단백질 구조를 예측하기 위한 시뮬레이션 방법이 있었다. 호몰로지 모델링 (homology modeling)이라고 한다. 예시로 간단하게 설명해보면.. 단백질A와 단백질B가 있다. 단백질 A는 실험을 통해 3D 구조를 찾아냈다. 그런데 단백질B는 아직 없다. 하지만 단백질A와 B는 서열이 굉장히 유사하다. 그렇다면,, 단백질B도 단백질A와 구조적으로 유사하지 않을까? 이것이 homology modeling의 기본 개념이다. 즉 단백질 A의 3차원 구조를 기본 틀로 두고, 단백질 B의 서열을 덧입혀서 단백질 B의 3차원 구조를 찾아내는 방식이다. 알파폴드도 마찬가지다. 단백질 서열은 2차원 정보다. 이 정보만으로 정확한 3차원 정보를 만들어내긴 어렵다. 하지만 서열이 비슷한 다른 단백질들의 3차원 구조를 가져온 후에 그 단백질들의 구조를 기반으로 조금 수정해서 새로운 단백질의 구조를 예측한다면? 꽤 정확하게 찾아낼 가능성이 있다. 그래서 서열 정보를 이용해서 찾아낼 수 있는 모든 3차원 정보를 찾아내느라 다양한 검색을 수행하게 된다.
알파폴드3에서 최종 단백질 구조는 결국 확산 모델에서 만들어낸다. 앞에서 열심히 찾아낸 유사한 단백질 구조 정보들은 결국 확산 모델에 입력이 된다. 그리고 이 정보로 부터 입력된 단백질의 구조를 찾아간다. 확산모델은 올해 2024년 수능 언어 영역에서 비문학 지문에 등장한 인공지능 모델이다. 앞에서 설명한 이미지 생성 모델이 확산모델이다. 노이즈를 조금씩 제거해나가면서 원하는 정보를 만들어내는 식으로 동작하는 모델이다. 알파폴드에서는 단백질 구조 정보를 토큰으로 표현한다. 그래서 아무 의미없는 토큰으로부터 조금씩 노이즈를 제거하면서 실제 3차원 구조의 토큰을 생성해 나가는 방식으로 작동한다.
논문 원문에서는 사실 정확한 정보를 찾기 어려웠다. 논문의 본문에 다 넣지 못한 추가 정보를 supplementary information이라고 하는데 모델에 실제 사용된 토큰에 대한 자세한 세부 내용은 추가 자료에 자세하게 언급되어 있다.
https://www.nature.com/articles/s41586-024-07487-w
alphafold3의 github에 따르면 코드의 최종 결과물은 cif 파일라고 한다. cif (Cyrstallographic information file)은 결정구조를 표현하는 파일 형식 중 하나다. 단백질을 보통 결정화해서 구조를 밝혀내다 보니 단백질 구조를 표현하는 파일 양식 중 하나다. PDB (Protein Data Bank)도 많이 사용하는 양식이다. 나는 실제로 단백질 구조 정보를 사용할 때 PDB파일을 주로 사용했다. cif 파일은 무기화합물을 다룰 때만 사용해봤다. 언어 모델은 문장 속에 있는 토큰에서 특징을 추출해서 답변을 생성한다. 알파폴드도 기본적으로 단백질 서열로부터 알아낼 수 있는 다양한 정보를 토큰으로 바꾼 후 특징을 추출해서 새로운 구조를 예측한다. 확산모델에 대해서 좀 더 자세하게 알고 싶다면 아래 강의를 추천한다 :)
https://www.deeplearning.ai/short-courses/how-diffusion-models-work/
How Diffusion Models Work
Learn and build diffusion models. Start with noise, and arrive at a final image, learning and building intuition at each step along the way.
www.deeplearning.ai
'AI와 화학물질' 카테고리의 다른 글
돈 잘 벌고 있는 독성 예측 서비스 5가지 (딥러닝 없어도 정확해요) (3) | 2024.11.27 |
---|---|
AI로 알아보는 마리화나의 독성 (0) | 2024.11.24 |
노벨화학상 받은 AI? 잘 사용하지 않는 이유... (1) | 2024.11.23 |
AI는 어떻게 악용될 수 있을까? (1) | 2024.11.22 |
속내를 알 수 없는 AI (0) | 2024.11.21 |