[개발 일기]

GNN | FP/FN 비용 queue 추가

2026년 5월 7일 | 개발 일기GNN 링크 예측 실험에서 threshold behavior label까지 붙이고 나니, 표를 읽는 방식이 한 번 더 애매해졌다. `tradeoff_only`라는 라벨은 꽤 유용했지만, 막상 다음 실험으로 보내려면 질문이 하나 남았다. false negative를 false positive로 바꿨을 뿐이라면, 그게 좋은 변화인지 나쁜 변화인지는 오류 비용을 어떻게 잡느냐에 달려 있기 때문이다.이번에는 그 애매한 칸을 그대로 두지 않고, validation threshold 결과 위에 FP/FN 비용 시나리오를 얹었다. 목적은 성능을 갑자기 올리는 게 아니라, 어떤 config를 threshold 후보로 계속 볼지, 어떤 config는 score distribution이나..

[AI 실험실]/[개인 프로젝트] GNN

GNN | Threshold behavior label 추가

2026년 5월 4일 | 개인 프로젝트Threshold behavior label을 붙여 보니, 지난 calibration 표가 훨씬 빨리 읽혔다. 바로 전 반복에서는 validation edge에서 threshold를 고르고 그 값을 test edge에 적용했다. 그 결과 자체는 꽤 차분했다. hybrid_full만 error가 7개에서 6개로 줄었고, 나머지 config는 총 error가 그대로였다. 그런데 표를 다시 읽을 때마다 같은 말을 반복하고 있었다. threshold가 실제로 도움이 된 경우, false negative를 false positive로 바꿨을 뿐인 경우, 아예 false positive 쪽으로만 기운 경우를 매번 눈으로 분류해야 했다.그래서 이번에는 모델을 더 키우지 않고, i..

[AI 실험실]/[개인 프로젝트] GNN

GNN | Validation threshold의 test 적용 리포트

시리즈: GNN 실험일지 #7이전: 6편 | 목록 | 다음 없음2026년 5월 4일 | 개인 프로젝트Validation threshold calibration을 붙이면서, 지난 threshold sweep에서 느꼈던 찜찜함을 한 번 더 확인했다. 직전 글에서는 hardest seed의 test edge probability를 0.30부터 0.70까지 훑고 best threshold를 골랐다. 그 표는 오류 방향을 보는 진단표로는 꽤 쓸 만했다. 다만 test edge 위에서 threshold를 고르고 다시 같은 test edge로 좋아졌다고 말하는 건 아무래도 위험했다. 그래서 이번에는 작은 루프를 하나 더 붙였다. validation edge에서 threshold를 고르고, 그 값을 test edge에..

[개발 공부]

Negative Sampling, 링크 예측에서 없는 간선을 고르는 기준

2026년 4월 29일 | 개발 공부Negative Sampling은 링크 예측에서 실제로 존재하는 간선(positive edge)만으로 학습하지 않고, 그래프에 연결되지 않은 노드 쌍을 일부 뽑아 negative edge로 같이 넣는 절차다. 링크 예측은 “어떤 두 노드 사이에 간선이 생길 가능성이 있는가”를 맞히는 문제인데, positive만 보면 모델은 구분을 배울 수 없다. 그래서 없는 간선을 함께 보여 주고, 이 둘을 가르는 점수를 학습시킨다.나는 처음에 negative sampling을 꽤 단순하게 봤다. 그래프에 없는 간선 중에서 아무거나 뽑으면 되는 줄 알았다. 그런데 최근 GNN 링크 예측 실험에서 false positive와 false negative를 edge 단위로 펼쳐 보니, 이 ..

[AI 실험실]/[개인 프로젝트] GNN

GNN | Threshold sweep로 본 FP/FN 균형

시리즈: GNN 실험일지 #6이전: 5편 | 목록 | 다음: 7편2026년 4월 28일 | 개인 프로젝트Threshold sweep 리포트를 하나 더 붙이면서, 지난번 edge-case table에서 남겨 둔 찜찜함을 조금 더 선명하게 봤다. edge별 probability를 저장해 놓고 보니 0.5 하나로 자른 결과만 보는 게 생각보다 위험했다. 어떤 설정은 없는 edge를 너무 쉽게 붙이고, 어떤 설정은 있어야 할 positive edge를 계속 놓쳤다. AUC 표에서는 둘 다 비슷하게 나빠 보이는데, 실제 오류 비용은 완전히 다른 쪽으로 기울어 있었다.이번에 한 일은 거창한 모델 개선이 아니다. 기존 GNN structural variant edge-case table을 다시 읽고, 각 config..

[AI 실험실]/[개인 프로젝트] GNN

GNN | Structural variant의 edge별 실패 분석

시리즈: GNN 실험일지 #5이전: 4편 | 목록 | 다음: 6편2026년 4월 28일 | 개인 프로젝트structural variant의 평균 AUC 표를 몇 번 다시 보다가, 결국 숫자를 한 단계 더 아래로 내렸다. seed별 ranking까지는 이미 봤지만, 내가 정말 궁금했던 건 더 작은 단위였다. hardest seed 안에서 어떤 positive edge를 놓쳤고, 어떤 negative edge를 잘못 붙였는가. 이번 GNN 반복은 그 질문을 확인하려고 edge-level case table을 하나 추가한 작업이다.앞선 글에서는 sample_collab_graph와 bipartite_bridge_graph를 같이 놓고, dataset별 hardest seed를 따로 골랐다. 그때는 reduce..

[AI 실험실]/[개인 프로젝트] GNN

GNN | Structural variant failure-case report

시리즈: GNN 실험일지 #4이전: 3편 | 목록 | 다음: 5편2026년 4월 27일 | 개발 일기structural variant 비교를 평균 표 하나로만 읽으면, 작은 그래프에서 제일 중요한 실패 장면이 뒤로 밀린다. 직전 반복에서는 sample_collab과 bipartite_bridge 두 데이터셋을 묶어서 mean test AUC와 hardest split AUC를 같이 봤다. 그 자체로도 도움이 됐지만, 다시 보니 더 직접적으로 궁금한 질문이 남았다. 데이터셋마다 가장 어려웠던 seed를 먼저 고른 뒤, 그 seed 안에서 다섯 개 입력판을 다시 줄 세우면 어떤 설정이 실제 바닥을 지키는가.이번 반복은 새 encoder를 붙인 작업이 아니다. 이미 만들어 둔 multidataset_struc..

[AI 실험실]/[개인 프로젝트] GNN

GNN | Structural variant의 bipartite 재검증

시리즈: GNN 실험일지 #3이전: 2편 | 목록 | 다음: 4편2026년 4월 25일 | 개발 일기sample_collab 하나로 읽던 structural variant 역할을 bipartite graph에 다시 올려 보니, 직전 글에서 제일 또렷해 보였던 해석이 꽤 빠르게 흔들렸다. sample_collab에서는 reduced+degree가 seed 다섯 개 전부에서 test AUC 0.75로 맞춰지며 가장 평평한 판처럼 보였고, reduced+closed_triplets는 mean test AUC를 0.80까지 끌어올렸다. 그런데 삼각형이 아예 없는 12노드 bipartite 그래프에 같은 비교판을 그대로 얹으니, 평균이 가장 잘 버티는 설정과 hardest split 바닥이 덜 무너지는 설정이 다..

[개발 공부]

GraphSAGE feature importance, 단독 랭킹보다 조합으로 읽기

2026년 4월 23일 | 개발 공부GraphSAGE는 Graph Sample and Aggregate의 약자고, 주변 이웃을 샘플링하고 집계해서 노드 표현을 만드는 그래프 신경망(GNN) 계열 모델이다. 최근 GNN 실험에서 이 모델의 입력판을 몇 번 바꿔 보다가, 나는 feature importance를 단독 랭킹처럼 읽는 습관이 생각보다 자주 사람을 헷갈리게 만든다는 걸 다시 느꼈다. 같은 degree 하나가 어떤 판에서는 제거 후보처럼 보였고, 다른 판에서는 오히려 split을 덜 흔들리게 만드는 축으로 보였기 때문이다.예전의 나는 importance 표를 보면 일단 1위, 2위부터 봤다. 어떤 feature가 위에 있으면 "이건 남겨야 하는 신호"로 읽고, 아래로 밀리면 제거 후보로 적었다. 그..

[AI 실험실]/[개인 프로젝트] GNN

GNN | Hybrid structural 축 ablation

시리즈: GNN 실험일지 #2이전: 1편 | 목록 | 다음: 3편2026년 4월 20일 | 개발 일기14차원 hybrid 입력에서 structural feature 5개를 하나씩 빼 보니, degree를 뺀 설정이 mean test AUC 0.85, hardest split AUC 0.75로 가장 안정적이었다. 직전 글에서는 hybrid input 자체가 propagation-only보다 바닥을 덜 깊게 만든다는 단서까지만 봤는데, 이번에는 그 안에서 어떤 structural 축이 실제로 stability를 만들고 어떤 축은 propagation residual과 겹쳐 노이즈가 되는지를 더 잘게 쪼개 봤다.이번 반복에서 한 일은 단순하다. structural 5차원 degree, avg_neighbor_..

[개발 일기]

GNN | GraphSAGE hybrid 입력 비교

2026년 4월 16일 | 개발 일기14차원 hybrid node input을 붙인 GraphSAGE는 sample_collab 그래프에서 mean test AUC 0.7444가 나왔다. propagation-only GraphSAGE의 0.7889는 넘지 못했지만, structural-only의 0.6167보다는 분명히 올라왔고, hardest split이던 seed 13에서는 propagation-only보다 더 덜 무너졌다. 숫자 하나만 보면 애매할 수 있는데, 내가 오늘 얻은 건 단순한 신기록보다 어떤 입력판이 흔들릴 때 덜 크게 흔들리는지에 대한 감각에 더 가까웠다.직전 반복에서 propagation residual을 node input으로 넣었을 때는 "GraphSAGE가 약한 이유가 enco..

[AI 실험실]/[개인 프로젝트] GNN

GNN | Propagation feature correlation 진단 추가

2026년 4월 14일 | 개인 프로젝트propagated_cosine_2hop를 빼면 mean AUC가 0.7389까지 올라가는데, propagated_cosine_residual을 빼면 0.6444까지 떨어졌다. 직전까지는 이 차이를 feature importance 표만 보면서 읽고 있었는데, 그 방식이 슬슬 답답해졌다. 어떤 feature가 상위권인지까지는 보이지만, 그 feature가 정말 새 신호인지 아니면 이미 있는 축을 다른 이름으로 다시 적는지까지는 잘 안 보였기 때문이다. 그래서 이번 반복에서는 GNN 샘플 실험 결과에 feature pair correlation 요약을 붙였다.새 모델을 하나 더 얹은 날은 아니다. 대신 single-seed 결과의 각 모델 행에 feature_corr..

[개발 일기]

GNN | Structural mean avg/gap 정리

2026년 4월 13일 | 개발 일기left_structural_mean, right_structural_mean 같은 이름이 계속 마음에 걸렸다. 지금 GNN 실험은 무방향 edge를 놓고 링크 예측을 하는데, feature 이름은 마치 좌우가 의미 있는 것처럼 남아 있었기 때문이다. 실제로는 edge를 정렬해서 만든 ordering의 부산물에 더 가까운데, importance 표에서는 이 두 축이 마치 별개 구조 신호처럼 보였다. 그 어색함이 오늘 작업의 출발점이었다.이번에는 새 baseline을 더 붙이지 않았다. 대신 left/right structural mean을 걷어내고, 같은 정보를 structural_mean_avg와 structural_mean_gap 두 축으로 다시 요약했다. 테스트를..

[개발 일기]

GNN | Hybrid ablation multi-seed 요약

2026년 4월 11일 | 개발 일기hybrid ablation을 단일 seed 결과로만 읽으면 작은 데이터에서는 숫자가 너무 쉽게 흔들린다. 샘플 그래프처럼 작은 데이터에서는 그 흔들림이 더 크게 보인다. 결과 JSON을 다시 보다 보니, drop propagated_cosine_2hop가 어떤 seed에서는 기준선과 비슷하고 어떤 seed에서는 오히려 더 나아지는 식으로 보였다. 그 순간부터는 "어느 축이 중요하다"를 한 번의 split으로 단정하는 게 좀 불편해졌다.그래서 오늘은 새 baseline을 더 붙이기보다, 같은 실험을 여러 seed에서 한 번에 다시 읽는 판을 만드는 쪽으로 갔다. 결과적으로는 CLI에 --seeds 옵션을 추가했고, 단일 실행 결과들을 묶어서 model_auc_summa..

[개발 일기]

GNN 프로젝트: Propagation Profile 진단값 추가

2026년 4월 6일 | 개발 일기새 모델보다 Propagation Profile 같은 진단값이 더 필요하다는 판단이 이번 작업의 출발점이었다. 이름은 조금 거창하지만 하는 일은 단순하다. 전파 단계가 달라질 때 노드 표현이 전체적으로 얼마나 비슷해지는지, 이웃끼리는 얼마나 닮고 비이웃끼리는 얼마나 섞이는지를 숫자로 같이 남기는 요약이다. 지금 프로젝트에는 propagated cosine, 2-hop propagated cosine, residual propagated cosine 같은 비학습형 baseline이 이미 있었는데, AUC만 보고 있으면 "왜 이 조합이 올라가고 왜 저 조합은 애매한지"가 잘 안 보였다. 그래서 점수판 옆에 표현 공간의 상태를 같이 붙이는 쪽으로 한 단계 밀었다.나는 요즘 이..

[AI 실험실]/[개인 프로젝트] GNN

GNN 프로젝트: Propagated Cosine과 전파 깊이 비교

2026년 4월 6일 | 개인 프로젝트 GNNGNN 트랙은 아직 GraphSAGE나 GCN 같은 학습형 encoder까지 들어간 단계는 아니다. 대신 그 전 단계에서 비교축을 꽤 촘촘하게 만들었다. 처음에는 Common Neighbors, Jaccard, Adamic-Adar, Preferential Attachment 같은 휴리스틱으로 시작했고, 그다음에는 adjacency cosine, structural cosine 같은 표현 기반 baseline을 붙였다. 최근에는 여기에 supervised scoring, propagated cosine, 그리고 전파 깊이 변형까지 추가했다. 지금 단계의 목표는 큰 모델을 빨리 붙이는 일이 아니라, 나중에 학습형 GNN이 들어왔을 때 무엇이 실제 개선인지 읽을 ..

[개발 일기]

GNN Baseline: Propagated Cosine

2026년 4월 5일 | 개발 일기adjacency 기반 표현과 진짜 메시지 패싱 사이에 비어 있던 한 칸을 메우는 작업이 이번 단계의 중심이었다. 이미 이 프로젝트에는 Common Neighbors, Jaccard, Adamic-Adar, Preferential Attachment, adjacency cosine, structural cosine, 그리고 최근에 붙인 feature_linear가 있었다. 그런데 막상 다음 단계를 생각해 보니, adjacency 기반 표현과 진짜 메시지 패싱 사이에 한 칸이 비어 있었다. 그래서 여기서는 Propagated Cosine을 그 중간 레이어로 세웠다.propagated cosine이라는 이름을 붙였는데, 말 그대로 각 노드의 adjacency row를 자기 ..

[개발 일기]

GNN Baseline: Supervised Scoring 추가

2026년 4월 4일 | 개발 일기GNN 프로젝트에서 비어 있던 학습형 기준선 한 칸을 메우는 작업이 이번 단계의 중심이었다. 지금 이 프로젝트에는 Common Neighbors, Jaccard, Adamic-Adar, Preferential Attachment 같은 휴리스틱과, adjacency cosine, structural cosine 같은 표현 기반 baseline이 먼저 깔려 있었다. 여기까지는 나쁘지 않았지만, 작업을 이어 갈수록 빈칸이 더 또렷하게 보였다. 규칙 기반 점수 다음에 바로 GNN encoder로 뛰어들면, 중간에서 비교할 만한 학습형 기준선이 하나 비어 있었다.그래서 오늘 내가 붙인 건 거창한 GraphSAGE나 GCN이 아니라, hand-crafted edge feature를..

홈으로 돌아가기

검색 결과

"" 검색 결과입니다.