본문 바로가기

공부55

[실전문제연구단] GREET 코드 뜯어보기 - 4. train 과정 전 게시글들에 모델에 대한 간단한 설명을 적어놓았다. 이번엔 train 과정을 살펴보겠다. 논문에서 소개한 학습 방식의 자료이다. 먼저 Dual-channel Representation Learning Module이다. 이 모듈은 Edge Discriminating Module로부터 Homophiliy한 그래프 View(인접행렬)과 heterophily한 그래프 View(인접행렬)을 받아서 이를 필터에 통과시켜 임베딩을 구한다. 그 후 둘의 차이를 이용해서 Negative Contrastive Loss를 구하여 Back propagation을 진행한다. def train_cl(cl_model, discriminator, optimizer_cl, features, str_encodings, edges): .. 2024. 1. 15.
[실전문제연구단] GREET 코드 뜯어보기 - 3. Edge Discriminator 모델 class Edge_Discriminator(nn.Module): def __init__(self, nnodes, input_dim, alpha, sparse, hidden_dim=128, temperature=1.0, bias=0.0 + 0.0001): """ 그래프 엣지를 판별하는 모델인 Edge Discriminator의 클래스입니다. Parameters: - nnodes: 노드의 수 - input_dim: 입력 특성의 차원 - alpha: Negative sampling에서 사용되는 가중치 - sparse: 희소 그래프 여부 - hidden_dim: 은닉 레이어의 차원 (기본값: 128) - temperature: Gumbel-Softmax 샘플링의 온도 매개변수 (기본값: 1.0) - bias:.. 2024. 1. 13.
[실전문제연구단] GREET 코드 뜯어보기 - 2. GCL 모델 코드에 모델이 두 개 있다. 하나는 GCL, 하나는 Edge_Discriminator이다. 이 게시글에서는 GCL모델이 무엇인지 설명할 것이다. GCL은 Graph Contrastive Learning의 약자로, 비교하는 방식을 학습시키는 모델이다. 간단히 말해서 두 입력의 차이를 계산한다고 할 수 있다. 논문에서 소개한 Dual-channel Representation Learning Module이다. 데이터셋 Nodes: 2708 Edges: 10556 class GCL(nn.Module): def __init__(self, nlayers, nlayers_proj, in_dim, emb_dim, proj_dim, dropout, sparse, batch_size): super(GCL, self).__.. 2024. 1. 12.
[실전문제연구단] GREET 코드 뜯어보기 - 1. data 확인 GREET을 소개한 논문에서 graph convolution을 더 잘 하기 위해서 edge가 heterophily한지 homophily한지 판별하는 판별기를 제시했다. 이 부분을 조금 자세히 볼 예정이다. 먼저 데이터 부분이다. cora 데이터를 로드하면 어떤 것이 프로그램 변수로 할당되는지 알아보았다. https://docs.dgl.ai/generated/dgl.data.CoraGraphDataset.html#dgl.data.CoraGraphDataset cora 데이터셋의 공식 문서를 보며 비교해보자. def load_data(dataset_name): path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '.', 'data', datas.. 2024. 1. 12.
[실전문제연구단] 주제 선정 학교에서 진행하는 실전문제연구단 프로젝트의 방학 후 2주동안 공부와 고민을 거듭하다가 주제가 드디어 잡혔다. 처음에는 GCN의 오버스무딩을 관찰하는 방법을 제시하려고 하였다. 첫 번째 방법은 노드 당 attention coefficient가 얼마나 같아지는지 보고, 비슷해진다면 오버스무딩이 일어났다고 보는 방법이다. 두 번째 방법은 graph conv를 할 때마다 같은 클러스터 수로 클러스터링을 진행하고, 특정 클러스터 수가 넘어가면 오버스무딩이 일어났다고 보는 방법이다. 이 두 방법 모두 교수님께 통과되지 못하고, 다른 주제로 하게 되었다. 이제는 2인 1조로 같은 연구실 친구와 함께 프로젝트를 진행한다. 우리의 주제는 노드끼리 homophily한지 heterophily한지를 구별해내는 방법을 제시하려.. 2024. 1. 11.
[학교 경진대회] AI 첫 시도 - 2023 AICOSS 해커톤 경진대회 학교에서 ai경진대회가 열렸다. 이제 막 인공지능 수업을 다 듣고 관심이 가던 차라서 지원하였다. 간단한 설명은 아래와 같다. [배경] 2023 AICOSS 해커톤 경진대회'에서는 서울시립대 재학생들에게 실제 산업 현장에서 요구되는 고급 알고리즘 최적화와 데이터 활용 전략을 경험할 수 있는 독특한 기회를 제공하고자 합니다. 또한 이론과 실전을 결합하여 참가자들이 현실 세계의 문제를 해결하는 데 필요한 실질적인 기술과 지식을 습득하며, 그 과정에서 자신의 역량을 한층 더 성장시킬 수 있을 것 입니다. [주제] 위성이미지 다중 객체 분류 [설명] 다양한 지리적, 환경적 특징을 포함하는 위성이미지를 기반으로 다중 객체 분류(Multi-Label Classification)를 수행하는 AI 모델 개발 바쁘지만 .. 2023. 12. 26.
[백준] 2293번 동전 1 (Python) 정답 코드 및 풀이는 맨 아래에 있습니다. https://www.acmicpc.net/problem/2293 다이나믹 프로그래밍은 전체적으로 구상이 매우 어려운 것 같다. 골드 5문제인데도 체감 난이도는 골드 1 정도 된다. [문제] n가지 종류의 동전이 있다. 각각의 동전이 나타내는 가치는 다르다. 이 동전을 적당히 사용해서, 그 가치의 합이 k원이 되도록 하고 싶다. 그 경우의 수를 구하시오. 각각의 동전은 몇 개라도 사용할 수 있다. 사용한 동전의 구성이 같은데, 순서만 다른 것은 같은 경우이다. [입력] 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같.. 2023. 2. 24.
[백준] 18353번 병사 배치하기 (Python) 정답 코드 및 풀이는 맨 아래에 있습니다. https://www.acmicpc.net/problem/18353 구상하기에 조금 헷갈렸던 다이나믹 프로그래밍 문제였다. [문제] N명의 병사가 무작위로 나열되어 있다. 각 병사는 특정한 값의 전투력을 보유하고 있으며, 병사를 배치할 때는 전투력이 높은 병사가 앞쪽에 오도록 내림차순으로 배치를 하고자 한다. 다시 말해 앞쪽에 있는 병사의 전투력이 항상 뒤쪽에 있는 병사보다 높아야 한다. 또한 배치 과정에서는 특정한 위치에 있는 병사를 열외시키는 방법을 이용한다. 그러면서도 남아있는 병사의 수가 최대가 되도록 하고 싶다. 예를 들어, N=7일 때 나열된 병사들의 전투력이 다음과 같다고 가정하자. 이 때 3번 병사와 6번 병사를 열외시키면, .. 2023. 2. 23.
다이나믹 프로그래밍 - 금광 [문제] n x m 크기의 금광이 있다. 금광은 1 x 1 크기의 칸으로 나누어져 있으며, 각 칸은 특정한 크기의 금이 들어 있다. 채굴자는 첫 번째 열부터 출발하여 금을 캐기 시작한다. 맨 처음에는 첫 번째 열의 어느 행에서든 출발할 수 있다. 이후에 m번에 걸쳐서 매번 오른쪽 위, 오른쪽, 오른쪽 아래 3가지 중 하나의 위치로 이동해야 한다. 결과적으로 채굴자가 얻을 수 있는 금의 최대 크기를 출력해라. 만약 다음과 같이 3 x 4 크기의 금광이 존재한다고 가정하자. [입력] 첫째 줄에 테스트 케이스 T가 입력된다.(1 2023. 2. 23.