본문 바로가기
728x90

전체 글424

BERT(2) Intro BERT(Bidirectional Encoder Representations from Transformers)는 2018년에 구글이 공개한 사전 훈련된 모델이다. BERT는 2018년에 공개되어 등장과 동시에 수많은 NLP task에서 최고 성능을 보여주면서 NLP분야의 한 획을 그은 모델로 평가받고 있다. BERT의 구조에 대해 이해하고, 간단하게 실습해보려한다. BERT의 T가 transformer인 만큼 트랜스포머를 이용하여 구현되었다. 위키피디아의 25억개 단어, BooksCorpus의 8억개 단어와 레이블이 없는 텍스트 데이터로 pre-train이 되어있는 언어모델이다. BERT가 높은 성능을 얻을 수 있었던 것은, 레이블이 없는 방대한 데이터로 사전 훈련된 모델을 가지고 Fine-t.. 2023. 8. 13.
Baekjoon Training #12865 #12865 평범한 배낭 이 문제는 Knapsack Problem(냅색 문제)이다. 배낭에 담을 수 있는 무게의 최댓값이 정해져 있고, 일정 가치와 무게가 있는 짐들을 배낭 가치의 합이 최대가 되도록 짐을 고르는 방법을 찾는 문제를 말한다. 이때, 짐을 쪼개서 넣을 수 있는 경우와 쪼개지 못하고 넣는 경우 두가지가 존재한다. 쪼갤 수 있는 경우 분할가능 배낭문제(Fractional Knapsack Problem), 쪼갤 수 없는 경우 0-1 배낭문제(0-1 Knapsack Problem)이라 부른다. 위 문제는 쪼갤 수 없는 0-1 Knapsack의 경우이고 이는 동적계획법(Dynamic Programming)으로 풀 수 있다. 알고리즘 1) x축엔 가방 1~K 까지의 무게, y축은 물건 N개 개수 만큼.. 2023. 8. 6.
BERT(1) Bert: Pre-training of deep bidirectional transformers for language understanding Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova Google AI Language Background Pre-trained Language Model 2015년 구글은 'Semi-supervised Sequence Learning'라는 논문에서 LSTM 언어 모델을 학습하고나서 이렇게 학습한 LSTM을 텍스트 분류에 추가 학습하는 방법을 보였다. 이 방법은 우선 LSTM 언어 모델을 학습합니다. 언어 모델은 주어진 텍스트로부터 이전 단어들로부터 다음 단어를 예측하도록 학습하므로 기본적으로 별도의 레이블.. 2023. 8. 2.
GAN Generative Adversarial Networks(GAN) GAN은 Generative Adversarial Networks의 약자로 우리말로는 “적대적 생성 신경망”이라고 번역되는 딥러닝기술 중 하나이다. GAN은 실제에 가까운 이미지나 사람이 쓴 것과 같은 글 등 여러 가짜 데이터들을 생성하는 생성형모델이다. “적대적 생성 신경망”이라는 이름에서 알 수 있듯 GAN은 서로 다른 두 개의 네트워크를 적대적으로(adversarial) 학습시키며 실제 데이터와 비슷한 데이터를 생성(generative)해내는 모델이며 이렇게 생성된 데이터에 정해진 label값이 없기 때문에 비지도 학습 기반 생성모델로 분류된다. GAN은 구글 브레인에서 머신러닝을 연구했던 Ian Goodfellow에 의해 2014년.. 2023. 7. 26.
[논문 리뷰] Attention is all you need (2) Attention is all you need NIPS 2017 Google Decoder 이전 글에서 다뤘던 Encoder의 결과 텐서가 Decoder에서 이된다고 보면 된다. Decoder는 Encoder와 구조적으로 굉장히 유사하다. 코드로 차이를 살펴보면 아래와 같이 빨간 표시가된 부분에만 차이가 있다. self attention layer가 decoder에서는 두번 반복되고 두번째 layer는 input에서 차이가 있음을 볼 수 있다. 또한 마스크로 encoder에서는 source mask를 이용한 반면 decoder에서는 target mask를 이용한다. Masking 인코더에서는 아래와 같이 padding에 대해서 masking을 진행하기 때문 padding masking이라고도 불리지만 디.. 2023. 7. 25.
Baekjoon Training #10828 #10828 스택 나의 오답 코드 #스택 import sys input = sys.stdin.readline n=int(input()) num_list=[] for i in range(n): command = input() if command.startswith("push "): splitted_list = command.split() value = int(splitted_list[1]) num_list.append(value) elif command == "pop": if len(num_list) == 0: print(-1) else: a = num_list.pop() print(a) elif command == "size": print(len(num_list)) elif command == "empt.. 2023. 7. 24.
CNN for NLP NLP를 위한 합성곱 신경망 CNN은 주로 vision 분야에서 사용되는 알고리즘이지만 이를 응용해서 자연어 처리에 사용하기 위한 방법들이 연구되고 있다. 합성곱 신경망이 어떤식으로 텍스트 처리에서 쓰일 수 있는지 알아보자. 우선 합성곱 신경망에 대해서 알아보자. 위는 합성곱 신경망의 기본적인 구조이다. CONV는 합성곱 연산이고 그 결과가 활성화 함수 ReLU를 통과한다. 이때 CONV와 ReLU를 합쳐서 합성곱층이라고 한다. 다음으로 POOL은 풀링 연산을 하는 부분이고 풀링층이라고 한다. 합성곱 신경망이 조명받은 이유는 아래에서 볼 수 있다. 위와 같이 정자로 쓴 Y가 있고 조금 흘려쓴 Y가 있을때 이를 1차원 텐서로 변환하여 일반적으로 분석하려하면 문제가 발생한다. 위 그림을 보면 느낌이 오겠지만.. 2023. 7. 22.
[논문 리뷰] 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.
Yale - Financial Markets (Lesson #8) Federal Funds and Interest Rates overnight 만기인 대출과 같은 콜금리는 보통 개인은 이용하지 않지만 은행간의 거래에서는 활발한 시장이다. 아래는 미국의 연방기금 이자율 그래프이다. 연방준비제도는 연방기금 금리 목표치를 발표한다. 위의 그래프를 보면 2010년부터 줄곳 0%에 가까운 금리를 띄다가 최근 5%에 가깝게 급상승한 것을 볼 수 있다. 0%의 이자율은 경제위기가 불러온 결과이다. 다음은 EONIA(Europian Over Night Index Average)그래프이다. 여기서 재밌는 점이 있는데 Fed Fund Interest Rate와는 다르게 유럽의 중앙은행이 결정한 금리는 마이너스 금리가 존재한다는 것이다. 이는 Mario Draghi가 유럽 중앙은행 총재일.. 2023. 6. 24.
728x90