
[22] Cellect Epitope – Technical Q&A
| Question 1. 왜 Epitope 예측을 하나의 모델로 해결하지 않았나요? |
| (a) 기존에 충분한 데이터가 존재하는 항원 (in-distribution), (b) 데이터베이스에 없거나 서열 유사도가 낮은 신규 항원 (out-of-distribution) 이 두 경우는 입력 서열의 분포가 경우가 달라 단일 모델로 동시에 최적화 할 경우, (a) 기존 데이터에서는 과도한 일반화, (b) 신규항원에서는 데이터 편향에 의한 오판이 발생할 가능성이 큽니다. 따라서 문제 자체를 분리하고, 각 문제에 적합한 PLM을 선택하는 전략을 채택했습니다. 두 모델의 병팽은 성능 평균을 높이기 위한 앙상블이 아닌 문제 공간 자체는 분리하여 커버리지를 확장하는 전략입니다. |
| Question 2. ProtT5를 기존 데이터 기반 Epitope 분석에 사용한 이유는 무엇인가요? |
| 대규모 단백질 서열로 사전학습된 모델, downstream task fine-tuning 시 성능 향상이 큰 구조 본 프로젝트의 Epitope 데이터는 강한 도메인 특이성을 가진 점을 고려하였을때, ProtT5를 주어진 데이터로 fine-tuning함으로써 Epitope 길이 분포, 특정 mofit, 실험 조건에 따른 결합 패턴이 Embedding 단계부터 반영되도록 유도했습니다. |
| Question 3. ESM-2를 신규 항원 예측에 사용한 이유는 무엇인가요? |
| 신규 항원 예측은 전형적인 out-of-distribusion(OOD) 문제로, 주어진 데이터에 강하게 fine-tuning된 모델은 학습 데이터에서 자주 등장한 패턴을 과신하거나 유사하지 않은 서열에 대한 과도한 확신을 보일 위험이 있습니다. ESM-2는 특정 태스크보다 진화적 보존성, 구조적 제약, 기능적 보편성을 중심으로 학습된 모델입니다. 따라서 학습 데이터에 존재하지 않는 항원이라도 단백질로서 공통적으로 나타나는 Epitope 후보 특성을 근거로 보다 안정적인 예측을 수행할 수 있다고 판단했습니다 |
| Question 4. 왜 2-Stage Cascade 구조를 사용했나요? |
| Stage 1에서는 Recall을 최우선으로 설정해 “놓치지 않는 필터” 역할을 수행하고, Stage 2에서는 Precision을 높여 실제 실험 가능한 후보만 남기도록 설계했습니다. 이는 실험 파이프라인의 비용 구조를 반영해 False Negative(i.e. '유망한 Epitope를 놓침')과 False Positive(i.e. '불필요한 후보를 포함')를 줄이기 위한 방법입니다. |
| Question 5. Final Score는 어떤 의미를 가지나요? |
| Final Score는 PLM embedding 기반 예측 결과와 2-stage 모델의 단계별 신뢰도를 통합한 의사결정 점수입니다. 단일 확률값이 아닌 연구자가 후보 간 상대적 우선순위를 비교하고 cut-off를 유연하게 조정할 수 있도록 설계된 지표입니다. |
| Question 6. 구조 기반 검증을 별도로 수행한 이유는 무엇인가요? |
| 서열 기반 예측만으로는 Epitope가 실제로 항체 접근이 가능한 위치인지 판단하기 어렵습니다. ESMFold를 통해 예측한 3D 구조 상에서 표면 노출 여부, 구조적 제약을 확인함으로써 서열 상으로는 유망하지만 물리적으로 결합 불가능한 후보를 추가로 제거할 수 있었습니다. |
| Question 7. In-silico Mutagenesis를 도입한 이유는 무엇인가요? |
| Epitope 내 모든 잔기가 결합에 동일하게 기여하지는 않습니다. 가상 변이를 통해 예측 점수 변화에 민감한 잔기와 소수성 변화에 따른 결합 안정성 변동을 분석함으로써 단순 “Epitope 후보”를 넘어 결합에 핵심적인 Hotspot Residue를 식별하고자 했습니다. |
| Question 8. 이 프로젝트에서 말하는 ‘설명 가능성’은 무엇을 의미하나요? |
| 본 프로젝트에서의 설명 가능성은 왜 이 후보가 선택되었는지, 어떤 기준으로 탈락했는지를 점수·구조·화학적 근거로 단계별로 추적 가능하게 만드는 것을 의미합니다. 이는 실제 연구 환경에서 AI 결과를 신뢰하고 활용하기 위한 최소 조건이라고 판단했습니다. |
| 문제 설명 | solution.py |
| #139 당신은 일렬로 나열된 n개의 집에 택배를 배달하려 합니다. 배달할 물건은 모두 크기가 같은 재활용 택배 상자에 담아 배달하며, 배달을 다니면서 빈 재활용 택배 상자들을 수거하려 합니다. 배달할 택배들은 모두 재활용 택배 상자에 담겨서 물류창고에 보관되어 있고, i번째 집은 물류창고에서 거리 i만큼 떨어져 있습니다. 또한 i번째 집은 j번째 집과 거리 j - i만큼 떨어져 있습니다. (1 ≤ i ≤ j ≤ n) 트럭에는 재활용 택배 상자를 최대 cap개 실을 수 있습니다. 트럭은 배달할 재활용 택배 상자들을 실어 물류창고에서 출발해 각 집에 배달하면서, 빈 재활용 택배 상자들을 수거해 물류창고에 내립니다. 각 집마다 배달할 재활용 택배 상자의 개수와 수거할 빈 재활용 택배 상자의 개수를 알고 있을 때, 트럭 하나로 모든 배달과 수거를 마치고 물류창고까지 돌아올 수 있는 최소 이동 거리를 구하려 합니다. 각 집에 배달 및 수거할 때, 원하는 개수만큼 택배를 배달 및 수거할 수 있습니다. 트럭에 실을 수 있는 재활용 택배 상자의 최대 개수를 나타내는 정수 cap, 배달할 집의 개수를 나타내는 정수 n, 각 집에 배달할 재활용 택배 상자의 개수를 담은 1차원 정수 배열 deliveries와 각 집에서 수거할 빈 재활용 택배 상자의 개수를 담은 1차원 정수 배열 pickups가 매개변수로 주어집니다. 이때, 트럭 하나로 모든 배달과 수거를 마치고 물류창고까지 돌아올 수 있는 최소 이동 거리를 return 하도록 solution 함수를 완성해 주세요. |
from itertools import zip_longest as zip
def tolist(l):
n = []
for i, d in enumerate(l):
for _ in range(d):
n.append(i + 1)
return n
def solution(cap, n, deliveries, pickups):
d = tolist(deliveries)
p = tolist(pickups)
d.reverse()
p.reverse()
d = d[::cap]
p = p[::cap]
return 2 * sum([max(x, y) for x, y
in zip(d, p, fillvalue = 0)]) |
'내일배움캠프 QAQC 3기 > 최종 프로젝트' 카테고리의 다른 글
| 최종 프로젝트 31일차: [21] Cellect Epitope - Summary (0) | 2026.02.10 |
|---|---|
| 최종 프로젝트 30일차: [20] 최종 결과물 - PPT (0) | 2026.02.09 |
| 최종 프로젝트 29일차: [19] 최종 결과물 - 대시보드 (5) (0) | 2026.02.06 |
| 최종 프로젝트 28일차: [18] 최종 결과물 - 대시보드 (4) (0) | 2026.02.05 |
| 최종 프로젝트 27일차: [17] 최종 결과물 - 대시보드 (3) (0) | 2026.02.04 |