본문 바로가기

전체 글55

[Recommend System] Neural Collaborative Filtering submit date : 16 Aug, 2017 Archive Link https://arxiv.org/abs/1708.05031 Neural Collaborative Filtering In recent years, deep neural networks have yielded immense success on speech recognition, computer vision and natural language processing. However, the exploration of deep neural networks on recommender systems has received relatively less scrutiny. In thi arxiv.org 기계학습 연구실 인턴 2주차에 받은 논문이다. 평.. 2023. 9. 21.
[Recommend System] NDCG 이해하기 Collborative Filtering 논문 리뷰를 마치고, 박사님께서 정리해보라는 중요한 metric이다. NDCG(Normalized Discounted Cumulated Gain)란 검색 결과나 추천에서 랭킹 성능을 측정하기 위한 지표이다. 검색이나 추천 알고리즘의 성능이 좋은 경우 쿼리나 특정 유저의 아이템의 관련성이 높을수록 높은 순위에, 낮을수록 낮은 순위에 배치된다. 이 때, NDCG는 관련성이 높은 문서가 상위에 추천되는지를 측정한다. 우선 NDCG를 이해하기 위해 Relvance Score, CG, DCG, IDCG 를 간략하게 알아보자. Relvance Score(rel) Relvance Score란 사용자가 추천된 각 아이템과 얼마나 관련이 있는지, 즉 선호하는 지를 나타내는 점수이.. 2023. 9. 21.
자카드 유사도 (Jaccard Similarity) 자카드 유사도(Jaccard Similarity), 자카드 계수(Jaccard Coefficient), 자카드 지수(Jaccard Index) 다 같은 말이다. 유사도(similarity) 유사도라 함은 우리가 흔히 알고 있듯이 A라는 아이템과 B라는 아이템이 얼마나 유사한지를 수치화한 것이다. 대표적인 유사도 측정 방법으로는 유클리디안 거리, 맨하튼 거리, 피어슨 상관계수, 코사인 유사도, 그리고 본 피드에서 다룰 자카드 유사도 등이 있다. 자카드 유사도 공식 이름이 뭐 대단해보여서 그렇지 자카드 유사도 공식은 매우 쉬운데, 교집합을 합집합으로 나눈 것으로 정의된다. 다음과 같이 예를 들어서 설명해보면 더욱 이해가 쉬울 것이다. 예시 A가 보유한 주식 종목 삼성전자, 네이버, 카카오, 셀트리온, 아시아.. 2023. 9. 18.
[PyTorch] torch.no_grad()와 model.eval()의 차이 PyTorch를 사용하면서 모델의 Evaluation을 진행할 때 Memory leak가 발생하면서 두 함수의 차이점을 분명히 해야한다는 점을 깨달았다. 따라서 본 피드에서는 두 함수의 차이에 대해 공부한 내용을 써내려가보도록 하겠다. model.eval() with torch.no_grad(): for batch in data_loader: ... 우리는 흔히 모델의 Evaluation 단계를 진행할 때 위와 같은 코드로 흔히 시작한다. 이제 두 함수의 차이점을 본격적으로 알아보자. with torch.no_grad() 이와 같이 torch.no_grad()를 with statement에 포함시키게 되면 Pytorch는 autograd engine을 꺼버린다. 이 말은 더 이상 자동으로 gradient.. 2023. 9. 18.
TypeError: unsupported format string passed to numpy.ndarray.__format__ loss 값을 출력하기 위해 format을 하다가 다음과 같은 에러를 만났다. TypeError: unsupported format string passed to numpy.ndarray.__format__" 에러는 주로 NumPy 배열을 지원하지 않는 형식 문자열로 포맷하려고 할 때 발생한다. NumPy 배열을 포맷할 때는 제공하는 형식 문자열이 배열의 요소의 데이터 유형과 호환되도록 해야한다. 다음과 같은 코드를 이용하여 해결할 수 있다. 1. 정수형 표현하기 import numpy as np arr = np.array([1, 2, 3]) # 정수 형식으로 포맷 formatted_str = "{}".format(arr) print(formatted_str) 2. 소수점 이하 자릿수 조절하기 impor.. 2023. 9. 9.
matplotlib 한글 깨지는 문제 해결 matplotlib는 대표적인 데이터 시각화를 위한 파이썬 라이브러리이다. 특히 Pandas나 NumPy 패키지를 자주 사용하시는 사람들은 아주 유용하게 사용할 수 있는 시각화 라이브러리다. 한국인이 matplotlib를 쓰다 보면 필연적으로 만나게 될 에러러를 정리해보겠다. matplotlib를 이용해서 플롯(plot)을 그릴 때, 제목, x라벨, y라벨 등에 영어가 아닌 한글을 사용하면, 한글이 제대로 표현되지 않고 깨진다. import matplotlib.pyplot as plt plt.scatter([0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5]) plt.title('산점도') plt.xlabel('변수1') plt.ylabel('변수2') plt.grid(True) plt... 2023. 9. 7.
[NLP] Attention is All You Need Submit date : 12 Jun 2017 Archive Link https://arxiv.org/abs/1706.03762 Attention Is All You NeedThe dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new arxiv.org Attention is All You Need, Transfor.. 2023. 9. 2.
[NLP] Neural Machine Translation by Jointly Learning to Align and Translate Submit date: 1 Sep, 2014 Archive Link https://arxiv.org/abs/1409.0473 Neural Machine Translation by Jointly Learning to Align and Translate Neural machine translation is a recently proposed approach to machine translation. Unlike the traditional statistical machine translation, the neural machine translation aims at building a single neural network that can be jointly tuned to maximize the tra a.. 2023. 8. 28.
Loss가 [nan]일 경우 요즘 많이 겪는 문제가 nan loss이다. 커스텀 레이어와 loss를 쓰다 보니 미처 파악하지 못한 예외가 생긴다. 그래서 nan loss이 발생했을 때 원인을 찾고 해결하는 방법에 대해 짧게 적어보려고 한다. 원인이 되는 연산 찾기 먼저 torch.autograd 함수 중에 NaN loss가 발생했을 경우 원인을 찾아주는 함수가 있다. autograd.set_detect_anomaly(True) 학습 코드에 위 코드를 추가해주고 실험을 하면, NaN loss가 발생하는 즉시 실행이 멈추고 NaN을 유발한 라인을 출력해준다. 주로 division by zero나 매우 작은 값에 대한 log 연산이 NaN loss를 유발한다. NaN은 loss 연산 뿐만 아니라 forward 연산, backward 연산.. 2023. 8. 26.