728x90 Drawing (AI)111 [논문 리뷰] Attention is all you need(1) Attention is all you need NIPS 2017 Google 기존에 SOTA를 달성하였던 Seq2Seq보다 뛰어난 성능으로 인공지능 학계를 뒤집은 Transformer가 데뷔한 논문이다. 현재는 vision분야에서도 ViT(Vision Transformer)라는 이름으로 이용되고 있다. 가장 최근에 얀르쿤이 공동저자로 참여하여 Meta에서 발표한 논문에서도 ViT를 이용하였다. Background Seq2Seq Sequence-to-Sequence는 아래와 같이인코더와 디코더라는 두 개의 모듈로 구성된다. 인코더는 입력 문장의 모든 단어들을 순차적으로 입력받은 뒤에 마지막에 이 모든 단어 정보들을 압축해서 하나의 벡터로 만드는데, 이를 컨텍스트 벡터(context vector)라고 한다... 2023. 7. 19. [논문 리뷰] AutoRec: Autoencoders Meet Collaborative Filtering AutoRec: Autoencoders Meet Collaborative Filtering Suvash Sedhain, Aditya Krishna Menon, Scott Sanner, Lexing Xie Abstract 이 논문에서는 collaborative filtering(CF)을 위한 새로운 autoencoder 프레임워크인 AutoRec를 제안한다. 실증적으로, AutoRec를 이용하여 적절하게 설계된 모델은 Movielens와 Netflix 데이터셋을 이용한 CF 기술에서 SOTA를 달성했다. Background Collaborative Filtering 협업 필터링(Collaborative Filtering)은 사용자와 아이템 간의 상호 관계(interaction)를 기반으로 사용자들에게 적절.. 2023. 7. 10. 딥러닝 직접 구현하기 - (신경망 학습) 데이터 접근 방법 아래와 같은 손글씨 5에 대한 데이터를 보고 5라고 판단하기 위한 로직을 만들어보려고 하면 크게 두 가지의 접근법이 있다. (1) 사람이 생각한 특징(SIFT, SURF, HOG 등) -> Machine Learning(SVM, KNN등) 이미지에서 특징(feature)을 추출. SIFG, SURF, HOG 등의 특징 사용. 벡터로 기술. Machine Learning: 데이터로부터 규칙을 찾아내는 역할 (2) 신경망(Deep Learning): 이미지를 그대로 학습 손실함수(loss function) 신경망은 어떠한 지표를 기준으로 최적의 매개변수 값을 탐색하기 위해 손실함수를 이용한다. Sum of squares for error(SSE) 오차 제곱합은 아래와 같이 계산된다. 이는 .. 2023. 7. 6. 딥러닝 직접 구현하기 - (신경망) 손글씨 숫자 인식 MNIST 데이터셋을 이용하여 손글씨 숫자를 분류하는 실습을 진행해 보았다. 이때의 추론 과정은 신경망의 순전파를 통해 진행된다. MNIST 데이터 셋은 아래와 같이 28 x 28 사이즈의 회색조 이미지이다. 훈련 이미지 60,000장, 테스트 이미지 10,000장이 존재한다. 이러한 데이터셋을 구분해내는 능력이 현재 학계에서 평가하는 지표로 많이 쓰이곤 한다. 아래와 같은 코드를 이용해 MNIST 데이터셋을 내려받아 이미지를 넘파이 배열로 전환할 수 있다. import sys, os sys.path.append(os.pardir) # 부모 디렉터리의 파일을 가져올 수 있도록 설정 from dataset.mnist import load_mnist # 처음 한 번은 몇 분 정도 걸립니다... 2023. 7. 1. 딥러닝 직접 구현하기 - (퍼셉트론) Intro 이 공부 시리즈는 다양한 딥러닝 기술들을 직접 구현해보는 능력을 키우기 위한 공부이다. 밑바닥부터 시작하는 딥러닝이라는 책과 다양한 웹사이트를 참고하여 해보려한다. 이미 아는 내용도 있지만 직접 구현해본 내용은 많지 않아서 책을 한번 따라가 보려고 한다. 따라서 구현해보는 것이 의미가 있어 보이는 내용들을 위주로 블로그에 정리해 보고자 한다. 신경망 신경망에서의 행렬곱은 아래와 같이 연산된다. 이러한 행렬곱에 해당하는 간단한 예시를 코드로 표현해보면 numpy를 활용하여 아래와 같이된다. import numpy as np X = np.array([1,2]) print(X.shape) W = np.array([[1,3,5], [2,4,6]]) print(W) print(W.shape) Y = n.. 2023. 6. 21. Udemy - 머신러닝의 모든 것 (Naive Bayes) Bayes theorem (베이즈 정리) 베이즈 정리는 데이터라는 조건이 주어졌을 때의 조건부확률을 구하는 공식이다. 베이즈 정리를 쓰면 데이터가 주어지기 전의 사전확률값이 데이터가 주어지면서 어떻게 변하는지 계산할 수 있다. 따라서 데이터가 주어지기 전에 이미 어느 정도 확률값을 예측하고 있을 때 이를 새로 수집한 데이터와 합쳐서 최종 결과에 반영할 수 있다. 데이터의 개수가 부족한 경우 아주 유용하다. 데이터를 매일 추가적으로 얻는 상황에서도 매일 전체 데이터를 대상으로 새로 분석작업을 할 필요없이 어제 분석결과에 오늘 들어온 데이터를 합쳐서 업데이트만 하면 되므로 유용하게 활용할 수 있다. 베이즈 정리의 식은 아래와 같이 쓸 수 있다. 𝑃(𝐴|𝐵): 사후확률(posterior). 사건 B가 발생한 .. 2023. 6. 20. Fake news detection Introduction 간단한 프로젝트를 진행하기 위해 사회적으로 문제가 되는 이슈를 해결해보고자 한다. 가짜뉴스는 최근 몇년간 더욱 그 문제가 부각되고있다. 왜냐하면 디지털 시대에 우리는 정보에 쉽게 접근할 수 있지만, 그만큼 거짓 정보와 혼란스러운 소식에 노출되기 때문이다. 특히 가짜 뉴스는 사회적 분열과 혼란을 일으키며, 개인과 사회의 안녕을 위협한다. 이러한 상황에서 진실을 매도하고 극심하게 확산되는 가짜 뉴스를 탐지하는 혁신적인 솔루션을 필요로 한다고 생각했다. Data Analysis 아래의 데이터들을 조합하여 새로운 데이터셋을 만들어서 하나의 데이터 셋의 스타일에 overfitting되는 것을 방지하고자 하였다. import pandas as pd SEED = 10 # Load the WEL.. 2023. 6. 15. Word Embedding(2) Skip-Gram with Negative Sampling (SGNS) 네거티브 샘플링(Negative Sampling)을 사용하는 Word2Vec을 직접 케라스(Keras)를 통해 구현해보고자 한다. 네거티브 샘플링 (Negative Sampling) Word2Vec의 출력층에서는 소프트맥스 함수를 통과한 단어 집합 크기의 벡터와 실제값인 one-hot 벡터와의 오차를 구하고 이로부터 임베딩 테이블에 있는 모든 단어에 대한 임베딩 벡터 값을 업데이트합니다. Word2Vec은 역전파 과정에서 모든 단어의 임베딩 벡터값의 업데이트를 수행하지만, 만약 현재 집중하고 있는 중심 단어와 주변 단어가 '강아지'와 '고양이', '귀여운'과 같은 단어라면, 이 단어들과 별 연관 관계가 없는 '돈가스'나 '컴퓨터'와 .. 2023. 5. 14. Word Embedding(1) 희소 표현(Sparse Representation) one-hot 인코딩과 같은 방식으로 인코딩을 한 결과인 one-hot 벡터들은 하나의 인덱스의 값만 1이고 나머지 인덱스는 전부 0으로 표현하는 벡터표현 방법을 희소표현이라고 하고 이때 one-hot 벡터는 희소 벡터이다. 희소 벡터의 문제점은 단어의 개수가 늘어나면 벡터의 차원이 계속 커진다는 점이다. 단어가 10,000개였다면 벡터의 차원은 10,000이어야한다. 심지어 그 중에서 단어의 인덱스에 해당되는 부분만 1이고 나머지는 0의 값을 가져야만 한다. 단어 집합이 클수록 고차원의 벡터가 된다. 예를 들어 단어가 10,000개 있고 인덱스가 0부터 시작하면서 강아지란 단어의 인덱스는 4였다면 one-hot 벡터는 다음과 같이 표현된다. Ex) 강.. 2023. 5. 11. 이전 1 ··· 4 5 6 7 8 9 10 ··· 13 다음 728x90