본문 바로가기
728x90

Drawing (AI)/DeepLearning38

Building Distance Estimation Depth estimation건물과 같이 거리가 멀고 거대한 물체까지의 거리를 estimation하는 모델은 없기에 기존에 있는 Depth estimation기법에 조금 손을 봐서 결과를 내보고자 했다.우선 내가 사용한 Depth estimation모델은 intel에서 2021년쯤 발표한 Vision Transformers for Dense Prediction(DPT) 논문이 제시한 모델이다.도로 주행중 촬영된 이미지를 대신하기 위해 구글맵에서 제공하는 streetview를 이용했다.https://github.com/isl-org/DPT GitHub - isl-org/DPT: Dense Prediction TransformersDense Prediction Transformers. Contribute t.. 2024. 8. 14.
Multi-modal Learning Intro Multi-modal Learning은 말그대로 여러개의 modality, 즉 여러개의 데이터 형식으로부터 학습하는 인공지능을 말한다. 예를들어 이미지+텍스트를 input으로 넣어서 사람의 표정과 그 상황을 기반으로 더 정확한 감성분석을 진행할 수 있겠다. 흔히 modality의 종류는 VARK(Visual, Auditory, Read/Write, Kinesthetic) 4가지정도로 추려진다. 멀티모달의 종류 멀티모달에는 크게 Early Fusion, Late Fusion, Joint or Intermediate Fusion 3가지 종류가 있다. Early Fusion은 다양한 모달리티의 데이터를 입력 단계에서 결합한다. 여러 유형의 데이터를 하나의 통합된 특성 벡터로 변환해 모델에 입력하는 .. 2024. 3. 20.
딥러닝 직접 구현하기 - (word2vec 보충) 확률적인 관점 우선 CBOW 모델을 확률적인 개념을 적용하여 개선을 해보고자 한다. 확률의 표기법을 간단히 살펴보자. 확률의 표기법을 간단하게 살펴보자. 확률은 P(.)이라고 한다. A의 확률은 P(A)라고 표기한다는 것이다. P(A,B), A와 B가 동시에 일어날 확률을 말한다. P(A|B), 사건이 일어난 후의 확률 즉 사후확률인데 이는 다시 말해서 B라는 정보가 주어졌을 때, A가 일어날 확률을 말한다. 그럼 CBOW 모델을 확률 표기법으로 기술해보자. CBOW 모델이 하는 일은, 맥락을 주면 타깃 단어가 출현할 확률을 출력하는 것이다. 이번에는 아래와 같이 말뭉치를 w1, w2, w3, .... wt로 단어 시퀀스를 표기하고 t번째 단어에 대해 윈도우 크기가 1인 맥락을 고려하도록 하자. 이를 w.. 2024. 2. 4.
딥러닝 직접 구현하기 - (word2vec 학습) 학습 데이터 준비 word2vec에서 이용하는 신경망의 입력은 맥락이다. 그리고 정답 레이블은 맥락에 둘러싸인 중앙의 단어, 즉 타깃이다. 우리가 해야 할 일은 신경망에 맥락을 입력했을 때 타깃이 출현할 확률을 높이는 것이다. 말뭉치에서 맥락과 타깃을 만드는 작업을 진행해보자. 우선 말뭉치 텍스트를 단어 ID 로 변환해야 한다. import sys sys.path.append('..') from common.util import preprocess text = 'You say goodbye and I say hello.' corpus, word_to_id, id_to_word = preprocess(text) print(corpus) print(id_to_word) 그런 다음 단어 ID의 배열인 corp.. 2024. 2. 2.
딥러닝 직접 구현하기 - (word2vec) 단순한 word2vec 지금까지 살펴본 모델을 신경망으로 구축하도록 하자. 사용해볼 신경망은 word2vec에서 제안하는 CBOW(continuous bag-of-words)모델이다. CBOW 모델은 맥락으로부터 타깃을 추측하는 용도의 신경망이다. 타깃은 중앙 단어이고, 그 주변 단어들이 맥락이다. 이 CBOW 모델이 가능한 한 정확하게 추론하도록 훈련시켜서 단어의 분산 표현을 얻어내는 것이 목표이다. CBOW 모델의 input은 맥락이다. 따라서 맥락을 one-hot 표현으로 변환하여 CBOW 모델이 처리할 수 있도록 한다. 위 그림은 CBOW 모델의 신경망이다. 입력층이 2개 있고, 은닉층을 거쳐 출력층에 도달한다. 두 입력층에서 은닉층으로 변환은 똑같은 FCN이 처리한다. 그후 은닉층에서 출력층 뉴.. 2024. 2. 1.
딥러닝 직접 구현하기 - (추론 기반 기법) 추론 기반 기법 지금까지 통계 기반 기법으로 단어의 분산 표현을 얻었는데, 이번에는 더 강력한 기법인 추론 기반 기법을 살펴보자. 추론 기반 기법의 추론 과정에서 신경망을 이용하는데 여기서 word2vec 이 등장한다. 우선 통계 기반 기법과 마찬가지로 추론 기반 기법도 그 배경에는 분포 가설이 있다. 통계 기반 기법의 문제점을 알아보고 그 대안인 추론 기반 기법에 대해서 알아보자. 통계 기반 기법의 문제 통계 기반 기법에서는 주변 단어의 빈도를 기초로 단어를 표현했다. 정확히는 동시발생 행렬을 만들고 그 행렬에 SVD를 적용하여 밀집벡터 즉 단어의 분산 표현을 얻었다. 그러나 실제로 다뤄야하는 말뭉치의 어휘 수는 너무 많다. SVD를 n X n 행렬ㄹ에 적용할때 시간 복잡도는 O(n^3)이다. 말뭉치의.. 2024. 2. 1.
딥러닝 직접 구현하기 - (통계 기반 기법 개선) 상호정보량 단어의 동시발생 행렬에는 개선할 점들이 있다. 왜냐하면 발생횟수라는 것은 그리 좋은 특징이 아니기 때문이다. 예를들어 "the"와 "car"의 동시발생을 생각해보면 두 단어의 동시발생 횟수는 아주 많을 것이다. 이때 "car"와 "drive"는 관련이 깊은데도 불구하고, 단순히 등장 횟수만을 본다면 "car"는 "drive"보다 "the"와의 관련성이 훨씬 강하다고 나올 것이다. "the"가 고빈도 단어라서 "car"와 강한 관련성을 갖는다고 평가되기 때문이다. 이 문제를 해결하기 위해 점별 상호정보량(PMI; Pointwise Mutual Information)이라는 척도를 사용한다. 이를 이용하여 단어 수 10,000개의 말뭉치가 있다고 할 때 "the", "car", "drice"가 각각.. 2024. 1. 29.
딥러닝 직접 구현하기 - (자연어처리) 자연어처리 자연어처리는 흔히 NLP라고 불리는 Natural Language Processing을 의미한다. 이는 말그대로 인간이 사용하는 말을 컴퓨터가 이해하고 처리하기 위한 기술이다. 컴퓨터가 이해할 수 있는 프로그래밍 언어가 아닌 인간들이 사용하는 영어, 한글과 같은 자연어를 이해할 수 있도록 하는 것이다. 이때 말은 '문자'로 구성되어있고 말의 의미는 '단어'로 인해 만들어진다. 따라서 컴퓨터가 '단어의 의미만 이해하면 인간의 '말'을 이해할 수 있을 것이다. 따라서 이런 '단어의 의미'를 컴퓨터에게 파악시키는 것은 자연어처리에서 굉장히 핵심적인 부분이다. Thesaurus Thesaurus는 단어의 의미를 정의를 통해 설명하여 이해하는 방식과는 다르게 동의어나 유의어를 통해 단어의 의미를 알아가.. 2024. 1. 28.
Udemy - 딥러닝의 모든 것(AutoEncoder구축하기) 데이터 이번에도 볼츠만 머신 구축할 때 이용했던 Movie Lens 데이터를 이용해볼 것이다. 이전에도 봤지만 아래와 같은 형식으로 구성된 데이터이다. Autoencoder 구축 import numpy as np import pandas as pd import torch import torch.nn as nn import torch.nn.parallel import torch.optim as optim import torch.utils.data from torch.autograd import Variable training_set = pd.read_csv('ml-100k/u1.base', delimiter = '\t') training_set = np.array(training_set, dtype = '.. 2024. 1. 24.
728x90