PAPER
https://academic.oup.com/bioinformatics/article/38/19/4522/6663989
GENELink의 목적과 접근 방식
이미 주어진 GRN 그래프 A를 기반으로 학습하고, 그 구조 안에서 잠재된(score) 연결 및 인과관계를 예측하는 것
✅ 1. 입력: 부분적인 그래프 A
- $A \in \mathbb{R}^{N \times N}$: TF-유전자 조절 정보로 구성된 부분적인 인접 행렬
- $A_{ij}$= 1 → TF i가 유전자 j를 조절함 (이미 알려진 것)
- 나머지 대부분의 $A_{ij}$는 0 (아예 모르는 거거나 연결 없음)
✅ 2. 학습 목표: 이 그래프 안에서 더 많은 관계를 "추론"하는 것
🎯 구체적으로 말하면:
1. score 예측 (link prediction):
- $A_{ij}$가 비어 있던 위치에 대해
- "TF i가 유전자 j를 조절할 가능성은?"이라는 연결 점수를 예측
2. 인과 관계 방향 예측 (causal inference):
- i→j? or j→i? or 없음?
- 방향성까지 포함된 예측
✅ 3. 중요한 전제: 그래프 A는 고정
- 학습 중에는 그래프 구조를 변경하지 않습니다.
- 즉, 모델은 기존 그래프 A를 사용해 학습하고,
- 그 구조에 기반해 미지의 링크나 방향성을 추론합니다.
❗ 모델이 학습 중에 새로운 edge를 추가하거나 삭제하진 않아요.
학습 후 score가 높은 쌍을 후보 조절 관계로 제안할 수는 있죠.
📘 왜 이렇게 하느냐?
- 현실의 GRN은 불완전합니다. 일부 TF-유전자 관계만 알려져 있음.
- ChIP-seq 등으로 일부만 실험적으로 확인했기 때문에,
- 나머지는 예측 모델이 채워줘야 해요.
✅ 결론 요약
| 질문 | 답변 |
| 그래프 A는 고정인가요? | ✅ 네. 주어진 prior 조절 관계 기반입니다. |
| 모델이 그래프를 바꾸나요? | ❌ 아니요. 그래프 위에서 score를 예측할 뿐입니다. |
| 모델의 목표는? | ⭐ 기존 그래프에서 잠재된 연결(score) 및 **방향성(causality)**을 추론하는 것 |
Binary Cross-Entropy (BCE)
✅ GENELink에서의 정답이란?
👉 **"TF와 유전자 간에 조절 관계가 있는지 없는지"**를 알려주는 정보입니다.
이건 학습을 위해 미리 준비해 둔 레이블 데이터에서 가져옵니다.
논문에서는 이를 위해 다음과 같은 ground-truth networks를 사용했어요:
📚 정답 레이블(label)을 만드는 방법
▶ Positive samples (레이블 1):
- 알려진 TF → 유전자 조절 관계들
- 출처: STRING, ChIP-seq, LOF/GOF 실험 등
- 예: A_{ij} = 1 → "TF i가 유전자 j를 조절한다" → 정답 yij=1
▶ Negative samples (레이블 0):
- TF i가 조절하지 않는 것으로 간주되는 유전자 j
- 즉, Aij=0인 부분 중 일부를 샘플링해서
- 예: "조절하지 않는다" → 정답 yij=0
※ 주의: 완전히 조절 안 하는지 모를 수도 있기 때문에 uniform negative sampling 또는 hard negative sampling을 사용해서 잘 고릅니다.
✅ BCE는 이 레이블을 기반으로 학습합니다.
수식 다시 보기:
$\text{BCE} = -\sum_{(i,j)} \left[ y_{ij} \log(\hat{y}_{ij}) + (1 - y_{ij}) \log(1 - \hat{y}_{ij}) \right]$
- yij∈{0,1}: 정답 레이블 (조절 여부)
- y^ij∈(0,1): 모델이 예측한 조절 확률 (score)
- 이걸 minimize하면서 학습합니다.
✅ 1. A_{ij}와 y_{ij}: 정답 레이블의 역할
- Aij=1A_{ij} = 1: TF ii가 유전자 jj를 조절한다고 실험적으로 알려진 관계
- 학습에서는 이것을 정답 레이블 yij=1y_{ij} = 1 로 사용함
- 반면, Aij=0A_{ij} = 0인 쌍 중 일부를 뽑아서 → yij=0y_{ij} = 0로 간주 (negative sampling)
즉,
yij∈{0,1}y_{ij} \in \{0,1\}: 학습에 사용되는 실제 레이블 (label)
✅ 2. \vec{e}_i, \vec{e}_j → y^ij\hat{y}_{ij}: 예측 score 계산
GAT + MLP를 통해 각 유전자의 벡터 표현을 만든 후:
⬛ 점수(score) 방식:
\hat{y}_{ij} = \sigma\left( \vec{e}_i^\top \cdot \vec{e}_j \right)
- e⃗i,e⃗j∈Rd\vec{e}_i, \vec{e}_j \in \mathbb{R}^d: 두 유전자의 임베딩
- e⃗i⊤⋅e⃗j\vec{e}_i^\top \cdot \vec{e}_j: 두 벡터의 내적 → 유사도 (크면 조절 가능성 ↑)
- σ(⋅)\sigma(\cdot): 시그모이드 함수 → (0,1)(0,1) 사이로 변환 → 예측 확률 y^ij\hat{y}_{ij}
✅ 3. 학습(loss): BCE 사용
BCE=−∑(i,j)[yijlog(y^ij)+(1−yij)log(1−y^ij)]\text{BCE} = - \sum_{(i,j)} \left[ y_{ij} \log(\hat{y}_{ij}) + (1 - y_{ij}) \log(1 - \hat{y}_{ij}) \right]
- yijy_{ij}: 실제 정답 (A에서 나옴)
- y^ij\hat{y}_{ij}: 모델 예측 (score)
- 둘 사이의 차이를 줄이도록 모델 파라미터를 학습
🧠 전체 흐름 요약
단계 내용
| ① | Aij=1A_{ij} = 1 → 정답 yij=1y_{ij} = 1, Aij=0A_{ij} = 0 → 샘플링하여 yij=0y_{ij} = 0 |
| ② | GAT + MLP → e⃗i,e⃗j\vec{e}_i, \vec{e}_j 생성 |
| ③ | y^ij=σ(e⃗i⊤⋅e⃗j)\hat{y}_{ij} = \sigma(\vec{e}_i^\top \cdot \vec{e}_j) |
| ④ | BCE loss를 통해 yijy_{ij}와 y^ij\hat{y}_{ij}가 가까워지도록 학습 |
🔁 추론 시에는?
학습이 끝나면:
- AijA_{ij}가 비어 있는 (미지의) 유전자 쌍에 대해서도
- y^ij\hat{y}_{ij}를 계산해서
- “이 둘이 연결될 가능성은 얼마나 되는가?”를 예측할 수 있습니다
즉,
학습 중에는 A로부터 일부 yijy_{ij}를 알고 있고,
모델은 score를 예측해서 그걸 최대한 맞추도록 학습합니다.
이후에는 A에 없는 부분에 대해 y^ij\hat{y}_{ij}로 잠재적 연결을 찾습니다.