인공지능공부

인공지능공부/프레임워크

pytorch lightning multi-gpu사용하기

pytorch lightning에 대한 전반적인 내용은 아래 포스팅을 참고해주세요. pytorch lightning을 사용해보자 pytorch는 가장 널리 쓰이는 딥러닝 프레임워크중 하나이죠. 딥러닝, 머신러닝을 공부하시는 분이라면 들어보셨을겁니다. 써보신 분들은 아시겠지만 pytorch 자체가 굉장히 자유도가 높은 프레임워 jaeyoon-95.tistory.com pytorch lightning은 multi-gpu또한 쉽게 사용하실 수 있습니다. 방법을 찾아보면 아래와 같이 trainer 선언 부에 gpu의 개수를 적어주면 되는데요. trainer = pl.Trainer(max_epochs=10,gpus=4,num_sanity_val_steps=1) 저도 위와 같이 적어주어 GPU 4개인 환경에서 돌리..

인공지능공부/프레임워크

pytorch lightning을 사용해보자

pytorch는 가장 널리 쓰이는 딥러닝 프레임워크중 하나이죠. 딥러닝, 머신러닝을 공부하시는 분이라면 들어보셨을겁니다. 써보신 분들은 아시겠지만 pytorch 자체가 굉장히 자유도가 높은 프레임워크이죠. 일반적으로 딥러닝 모델을 구현할 경우 크게 복잡하지는 않지만 GPU, 분산 처리 등을 구현할 경우 코드가 조금씩 복잡해집니다. pytorch lightning은 굉장히 잘 정돈된 하나의 틀을 제공해줍으로써 pytorch의 가독성을 높여줍니다. 이제 본격적으로 pytorch lightning에 대해서 알아보도록 하죠. pytorch lightning 사용 이유 1. 간단한 학습, 검증과정 pytorch lightning은 pytorch의 학습, 검증 과정을 training_step, validation_..

인공지능공부/그래프

[Stanford/CS224W] 8. GNN Augmentation and Training(1) : Graph Augmentation for GNNs

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 단일 레이어를 어떻게 쌓는지 한번 살펴보았습니다. 이번 포스팅에서는 graph augmentation에 대해서 알아보겠습니다. Graph Augmentation 일반적인 그래프 프레임워크는 아래와 같이 구성되어 있다는 것을 배웠었죠. 정리하자면, 이웃 노드로부터 메세지를 받아 변환하고 기준 노드로 넘기는 Message과정, 기준 노드와 변환된 이웃 노드를 받아 하나로 합쳐주는 Aggregation과정, 이 계층을 이어주는 Layer connectivity, 그래프의 표현을 더 풍부하게 만들어주는 graph augmentation, 마지막으로 어떻게 학습할지에 대한 Learning Objective입니다. 이번 포스팅에서는 그래프의 표현을 더 풍부..

인공지능공부/그래프

[Stanford/CS224W] 7. GNN2(3) : Stacking Layers of a GNN

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 단일 레이어에서 GNN이 어떻게 동작하는지 살펴보았습니다. 이번 포스팅에서는 단일 레이어를 어떻게 쌓는지 한번 살펴보겠습니다. Stacking Layer 앞의 포스팅에서 단일 레이어를 배웠으니 이제 쌓아서 여러 계층의 GNN을 만들어 봅시다. 일반적으로 딥러닝 모델에서 레이어를 쌓는다고 하면, 더 "깊은"계층을 가지게 됩니다. 하지만 GNN에서는 깊이라기 보다는 너비의 의미가 강한데요. 더 깊게 쌓을 수록 더 멀리있는 노드의 정보를 받을 수 있습니다. 즉, GNN에서 깊은 계층이란 거쳐올 hop의 수를 뜻합니다. 아키텍처를 한번 그려보자면, 다음과 같이 그릴 수 있습니다. 초기 임베딩 값인 xv을 받아서 각 GNN layer를 거치고, 결과로 나..

인공지능공부/그래프

[Stanford/CS224W] 7. GNN2(2) : A Single Layer of a GNN

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 GNN이 어떻게 사용되는지 설명하기 전 GNN Framework에 대해 간단하게 정리했습니다. 이번 포스팅에서는 단일 레이어에서 GNN이 어떻게 동작하는지 살펴보겠습니다. GNN Layer GNN의 레이어는 Message, Aggregation 이렇게 두 단계로 나뉠 수 있습니다. 레이어의 목표는 현재 기준이 되는 노드의 주변 노드를 입력받아 각 메세지들을 계산하고, 압축하여 현재 노드를 갱신하는 것 입니다. 조금 더 자세히 보시면 다음과 같습니다. 기존에 자기 자신의 노드와 주변 노드를 입력받아 메세지를 결합하여 노드를 업데이트합니다. 그럼 이제 각 단계를 살펴볼까요? 1. Message Computation 메세지 계산단계는 이전 레이어에서 ..

인공지능공부/그래프

[Stanford/CS224W] 7. GNN2(1) : A General Perspective on Graph Neural Networks

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 신경망을 일반화하여 그래프에 적용해보았습니다. 오늘 포스팅에서는 본격적으로 GNN이 어떻게 사용되는지 설명하기 전 GNN Framework에 대해 간단하게 정리하겠습니다. (포스팅이 매우 짧을 예정입니다!) GNN Framework GNN Framework는 총 5개로 나뉠 수가 있습니다. Message 앞에서 설명한 그래프 모델을 보시면 모두 message를 전파시키고있습니다. 이부분은 메세지를 어떻게 받을지 결정하는 부분이라 생각하시면 됩니다. 메세지를 어떻게 받아들이냐에 따라 그래프 모델의 성능이 달라질 수 있습니다. Aggregation 받은 메세지를 어떻게 합칠것이냐에 대한 문제인데요. 앞의 포스팅에서는 단순히 평균을 이용했는데, 이 방..

인공지능공부/그래프

[Stanford/CS224W] 6. GNN(3) : Deep Learning for Graphs

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 그래프 신경망에 본격적으로 들어가기 전 딥러닝 개념에 대해서 빠르게 훑어보았습니다. 이번 포스팅에서는 신경망을 일반화하여 그래프에 적용해보겠습니다. Deep Learning for Graphs 이제 그래프와 딥러닝에 대해서 한번씩 배웠으니 두 개를 묶어서 보겠습니다. 이를 그래프 신경망, Graph Neural Network(GNN)이라고 부릅니다. 첫 번째로는 "Local Network Neighborhoods"에 대해 알아볼텐데요. 앞의 포스팅에서처럼 현재 노드는 이웃 노드들의 정보를 얻고, 그 정보를 합산해서 사용했습니다. 여기서도 똑같이 적용할 것입니다. 두 번째로는 이제 신경망을 이용하게 될텐데요. 이 신경망을 어떻게 정의하고, 학습시키..

인공지능공부/자연어처리

Self-Attentive Sentence Embedding(SASE) 구현해보기

모델 성명은 여기를 참고해주세요. pytorch version 1.8.0입니다. SASE모델을 크게 아래처럼 쪼개갰습니다. embedder self-attention classifier loss function 먼저 들어가기 전에 라이브러리 import를 해주셔야합니다. import torch import torch.nn as nn import torch.nn.functional as F 1. Embedder 임베더는 말 그대로 초기 단어를 임베딩하고, bi-LSTM을 통해 문맥정보를 압축시켜주는 역할을 하는 부분입니다. 저는 word2vec을 따로 학습시켜주었고요. 다음과 같이 구현해주었습니다. 모델 그림으로 보면 위의 빨간 네모박스 부분이라고 생각해주시면 됩니다. 수식을 한번 볼까요? 윗 부분은 wo..

인공지능공부/인공지능기본지식

[AI 기본 지식] 손실함수의 모든 것

손실 함수란? 손실함수는 딥러닝 모델을 학습하면서 적절한 가중치를 찾아가는 과정입니다. 즉, 최적화를 위해 사용하는 함수라고 보시면됩니다. 손실 함수는 loss function, cost function이라고도 합니다. ▶ MSE(Mean Squared Error) 역전파 포스팅에서 사용했던 손실함수이죠. 예측값과 실제값의 차를 제곱한 뒤 개수 n으로 나누어 주는 함수입니다. 수식은 아래와 같습니다. MSE는 주로 Regression에서 많이 이용됩니다. ▶ RMSE(Root Mean Squared Error) MSE에 루트를 씌운 손실함수입니다. MSE는 오류(실제값-예측값)의 제곱을 구하기 때문에, 실제의 오류 평균보다 더 커지기 때문에 루트를 사용하여 값의 왜곡을 줄여줍니다. ▶ MAE(Mean A..

인공지능공부/그래프

[Stanford/CS224W] 6. GNN(2) : Basic of Deep Learning

스탠포드 강의를 듣고 정리한 내용입니다. 지난 포스팅에서는 그래프 신경망이 뭔지, 이전과 뭐가 다른지 간단하게 훑어보았습니다. 이번 포스팅에서는 그래프 신경망에 본격적으로 들어가기 전 딥러닝 개념에 대해서 빠르게 훑어보겠습니다. 여기서는 정말 간단하게 훑을 예정이니 더 딥하게 보고 싶으신 분들은 아래 포스팅을 참고해주세요. 활성화 함수의 모든 것 최적화 함수의 모든 것(1) 최적화 함수의 모든 것(2) 역전파의 모든 것 손실함수의 모든 것 Machine Learning supervised learning은 입력 x를 넣어주었을 때, 라벨 y를 예측하는 것을 목표로 합니다. 입력 x는 실제 숫자 벡터, 시퀀스(자연어), 행렬(이미지), 그래프가 될 수 있습니다. 여기서 머신 러닝은 우리가 x로부터 y를 얻..

컴공누나
'인공지능공부' 카테고리의 글 목록