Attention의 원리와 계산과정(완전 쉬움!)
기존 Attention 포스팅에서 부족한 부분을 추가 설명하는 포스팅입니다. 사전지식 특정 정보를 가진 텐서는 Weight Matrix를 통과해도 정보는 보존된다. 각각 다른 정보를 가진 텐서A와 텐서B를 Weighted sum을 하면 두 정보 중에서 Weight가 큰 ...
기존 Attention 포스팅에서 부족한 부분을 추가 설명하는 포스팅입니다. 사전지식 특정 정보를 가진 텐서는 Weight Matrix를 통과해도 정보는 보존된다. 각각 다른 정보를 가진 텐서A와 텐서B를 Weighted sum을 하면 두 정보 중에서 Weight가 큰 ...
오늘은 지난 트랜스포머 1편에 대한 구체적인 동작 원리를 코드를 통해 알아보도록 하겠다. 지난 포스팅이 궁금한 사람은 여기를 참고하기 바란다.
정말 오랜만에 다시 글을 쓰러 왔다. 지금까지는 학부생이었는데, 지금은 직장인이 되었다.. 오늘은 Transformer에 대해서 알아보려고 한다. 공부하는데 어려움이 있었지만 꽤 흥미로웠다!! 본 포스팅은 2편으로 만들 예정이고, 1편에서는 간단한 구조를 알아보고 2편에서는 코드를...
어텐션을 적용한 seq2seq 지난시간 seq2seq에 이어 이번 포스팅에서는 어텐션 매커니즘을 추가한 seq2seq를 만들어보겠다. seq2seq 포스팅은 여기, 어텐션 매커니즘 포스팅은 여기를 참고하면된다. 데이터 불러오기 및 전처리는 seq2seq포스팅과 같기때문에 모델...
return_state=False, return_sequences=False
지난시간에 seq2seq모델에 대해서 포스팅 했었다. 여기 이번 시간에는 자연어처리 시리즈 4번째인 어텐션 메커니즘에 대해 알아보자. seq2seq모델의 한계 seq2seq모델에 대해서 잠깐 복습해보자. 입력 시퀀스가 들어오면 인코더를 거쳐서 고정된 길이의 컨텍스트 벡터를 내보...
데이터 불러오기 우선 번역기를 만드려면 두개의 언어가 병렬적으로 구성된 데이터가 필요하다. 오늘 사용할 데이터는 ‘프랑스어-영어’ 로 구성된 데이터를 사용하겠다. 데이터는 (http://www.manythings.org/anki/fra-eng.zip) 에서 받을 수 있다. 압축을 ...
seq2seq(Sequence-to-Sequence)란? seq2seq는 입력된 시퀀스로부터 다른 시퀀스를 출력하는 모델이다. 입력 시퀀스에 질문, 출력 시퀀스에 답변으로 구성하면 챗봇을 만들 수 있고, 입력 시퀀스에 문장과 출력 시퀀스에 번역문장으로 구성하면 번역기를 만들 수 ...
학습이란 어떤 데이터로부터 규칙을 찾는것이라고 할 수 있다. 간단한 예시를 보자 x = [1, 2, 3, 4, 5] y = [13, 23, 33, 43, 53] x, y의 데이터가 있다. 사람이라면 x와 y사이의 규칙을 쉽게 찾을 수 있다. x에 10을 곱해서 3을 더하거나, x...
앞에서 NNLM에 대해서 간단하게 살펴보았다. N-gram 언어모델과 NNLM은 고정된 개수의 단어만 입력으로 받을 수 있다는 단점이 있었다. 지금 살펴볼 RNNLM은 timestep이라는 개념이 도입된 RNN으로 언어 모델을 만든 것이다. 예측과정 RNNLM은 기본적으로 ...
RNN(Recurrent Neural Network)은 피드포워드 신경망과 다르게 내부의 메모리를 이용해 입력과 출력을 시퀀스 단위로 처리하는 시퀀스 모델이다. 시퀀스란 순서대로 이어진 것을 말한다. 시계열 데이터 같은 경우는 시간의 흐름에 따른 데이터이기 때문에 시퀀스 데이터이고...
피드 포워드 신경망 순방향 신경망이라고도 하며, 일반적인 신경망을 피드 포워드 신경망이라고 한다. 딥러닝에서의 피드 포워드란, 입력층으로 데이터가 들어오고, 1개 이상의 은닉층을 거쳐서 일련의 가중치를 통해 출력층으로 직접 feed되는 것을 말한다. N-gram 언어모델 피드 ...
이번에는 시계열 데이터를 이미지로 변환하는 방법에 대해서 알아보자! pyts는 시계열 분류, 클러스터링 및 전처리를 위한 Python 라이브러리이다. 시계열 데이터 작업을 위한 다양한 메서드를 지원한다! 여기서 제공하는 기능 중 하나인 시계열 이미지 변환 기능을 사용해보겠다. ...
어떤 천재적인 고등학생이 리버스엔지니어링을 통해 vscode에서 chatgpt를 이용할 수 있게 만들어 놓았다. 사용방법은 엄청 쉽지만, 내가 헤메었던 부분을 위주로 작성하였다. 원본 깃허브 레포는 여기로 가면 된다. 수시로 업데이트 되기 때문에 사용하기전 반드시 확인해야한다! ...
이번 예제는 CNN을 이용하여 Mnist 데이터셋을 분류합니다. CNN에 대해 모르신다면 여기를 참고해 주세요!
이 글은 OpenAI의 ChatGPT를 이용하여 생성된 글입니다. ChatGPT최고..!
LSTM(Long Short-Term Memory)이란? RNN(Recurrent Neural Networks)의 한 종류 RNN의 장기 의존성 문제 때문에 고완됨
tsaug 라이브러리 시계열 확장을 위한 Python패키지 시계열에 대한 augmentation 방법을 제공 여러개의 augmentation 방법을 파이프라인에 연결하는 API도 제공 시계열 뿐 아니라 2채널 오디오도 augmentation가능
본 예제는 기본적으로 텐서플로우 공식 사이트 예제를 이용하고 추가로 코드를 작성하였습니다!
오토인코더(Autoencoder)란?
역전파(Back propagation)란? 신경망을 학습시키기 위한 순전파의 반대 개념이다. 순전파랑은 다르게 뒤에서부터 계산하기 때문에 역전파라고 한다. t의 값과 실제 모델이 계산한 y의 오차를 구한 후 오차값을 다시 뒤로 전파해가면서 각 노드들의 매개변수들을 갱신한다.
순전파(Foward propagation)란? 신경망모델의 입력층부터 출력층까지 순서대로 변수들을 계산하여 최종 출력으로 나오는 것. 각 은닉층에는 활성화함수(sigmoid, tanh, relu)등을 사용한다.
데코레이터 장식자 라고도 함 어떤 함수가 있을 때 해당 함수를 직접적으로 수정하지 않고 함수에 기능을 추가하고 싶을 때 사용
제너레이터 이터레이터를 만드는 간단하고 강력한 도구 함수 안에서 yield를 사용하면 그 함수는 제너레이터가 됨 모든 제너레이터 객체는 이터레이터임 간단하게 이터레이터를 구현할 수 있음
Iterable 반복가능한 객체를 iterable 객체라고 함 대표적으로 리스트, 튜플, 세트, str 등을 iterable 객체라고 함
매직 메소드 클래스 안에 정의된 함수를 메서드라고 부름 메서드 중에서 __로 시작해서 __로 끝나는 메서드를 매직 메서드 라고함 파이썬에서 클래스를 사용하면 사용자가 직접 타입을 만들 수 있음 리스트, 튜플, 정수, 문자열 등과 같은 타입도 클래스를 통해 만들어짐
내장함수 파이썬에 기본적으로 내장(built-in)되어 있는 함수 import를 하지 않아도 기본적으로 사용이 가능 내장함수 목록
모듈 데이터, 함수, 클래스 등이 담겨져 있는 파일 외부의 라이브러리(모듈)을 사용하기 위해서는 따로 import하는 작업이 필요
에러 기본적인 에러 종류
파일 입력 파이썬에서 파일을 읽고 쓸 수 있음 모드가 존재 존재하는 파일에서 쓰기 모드로 할 경우 내용이 초기화됨 파일을 열었으면 close()로 반드시 닫아줘야함
출력 파이썬에서는 print() 함수를 사용하여 출력
클래스 프로그램이 실행되어을 때 실행되는 객체가 어떤 멤버변수와 메소드를 가지는지 정의해둔것 간단히 말해서 변수와 함수를 모아놓고 필요할 때 가져다 쓰는 것 객체마다 고유의 성격을 가지기 때문에, 동일한 클래스로 만든 객체들은 서로 영향을 주지 않음
반복문 조건에 따라 반복을 실행하는 문장
조건문 조건에 따라 실행을 제어하는 문장
세트 데이터 중복을 허용하지 않음 순서 상관없는 데이터 집합 인덱싱으로 값을 접근할 수 없음
딕셔너리 key:value 쌍으로 이루어진 데이터 순서가 없는 데이터 key를 통해 value를 얻을 수 있음 동일한 키가 있을 경우 덮어씀
튜플 리스트와는 다르게 내용변경, 추가가 불가능 하나의 변수에 여러 값 할당 가능
리스트 순서를 가지는 객체의 집합 수정이 가능
문자열 처리
연산자
람다 함수 코드의 간결함 및 메모리 절약 이유로 많이 사용 return 키워드 없이 자동으로 return
함수 입력값을 가지고 어떤 일을 수행한 다음에 그 결과물을 내는것 반복되는 부분이 있을 경우 반복되는 부분을 한 뭉치로 묶어놓는 기능
변수와 자료형
Introduction Dense representation만을 이용해서 Retrieval을 구현함 1) 기존에는 Sparse representation을 사용해서 retrieval을 수행(TF-IDF, BM25) 2) Q: Who is the bad guy in l...
본 논문 중 수식적인 부분은 제외하고 최대한 제가 이해한 대로 작성하였습니다. 수식에 관련한 부분은 논문을 참고해 주세요!
원문링크: LONG SHORT-TERM MEMORY Introduction Long Short-Term Memory(LSTM) 논문은 딥러닝 분야, 특히 RNN(Recurrent Neural Networks) 분야에서 중요한 논문이다. Sepp Hochreiter와 Jü...
원문링크: Denoising Diffusion Probabilistic Models
원문링크: Auto-Encoding Variational Bayes
TAnoGAN 논문 리뷰 원문 링크: TAnoGAN: Time Series Anomaly Detection with Generative Adversarial Networks
원문링크: Unsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery
저번에는 타이타닉 데이터세트로 회귀분석을 해보았다. 타이타닉 분석 타이타닉 데이터세트는 종속변수의 클래스가 2개(0, 1)였지만 이번에는 클래스가 3개이다. 예측해야할 클래스가 3개일 때, 어떻게 로지스틱 회귀분석을 하는지 알아보자! import numpy as np import...
이번에는 단순로지스틱 회귀를 해보자. 로지스틱회귀를 모르는 사람은 이글을 참고하자. 먼저 간단한 데이터로 먼저 감만 익힌다고 생각하자. 다중 로지스틱회귀는 단순 로지스틱 회귀에서 독립변수만 여러개로 설정하면 된다. 단순 로지스틱회귀(케라스) 케라스를 이용해서 로지스틱 회귀분석을 ...
이번에는 다중로지스틱 회귀를 해보자. 로지스틱회귀를 모르는 사람은 이글을 참고하자. 데이터셋 로드 타이타닉 데이터 세트이다. 각 컬럼은 승객 ID, 생존여부, 좌석등급, 승객 이름, 성별, 나이, 함께 탑승한 형제 또는 배우자의 수, 함께 탑승한 부모 또는 자녀의 수, 티켓번호,...
정의 Logistic Regression는 이름에 ‘Regression’이 들어가지만 결론적으로 클래스가 2개인 이진분류를 위한 모델이다. 데이터가 어떤 범주에 속할 확률을 0에서 1사이의 확률 값으로 예측하고 그값에 따라 가능성이 더 높은 범주에 속하는 것으로 분류한다. 클래스...
선형회귀를 모르시는 분들은 선형회귀 한번에 이해하기! 이 글을 참고해 주세요!
선형회귀를 모르시는 분들은 선형회귀 한번에 이해하기! 이 글을 참고해 주세요! 데이터는 임의로 만들어서 사용합니다.
선형회귀란? 알 수 있는 데이터 값을 사용하여 알 수 없는 데이터의 값을 예측하는 분석 기법이다. 다른 변수의 값을 변하게 하는 변수를 $x$, 변수 $x$의 값에 의해서 값이 종속적으로 변하는 변수를 y라고 할 때, $x$를 독립변수, $y$를 종속변수 라고한다. 선형 회귀는 $...
딥러닝에서 모델을 만든다는 것은 곧 계산그래프를 만든다는 것이다. 일반적인 계산그래프와는 다르게 딥러닝에서는 예측과 손실값을 계산하는 순전파와 편미분, 체인룰을 이용한 역전파가 존재한다. 텐서플로우의 Gradient Tape를 이용하면 즉시실행모드(Eager Excution)에서 ...
모델이 생성되었으면 텐서플로우에서 제공하는 compile() 메서드와 fit() 메서드로 학습이 가능하다.
텐서플로우에는 가중치를 초기화 및 확인이 가능하다. 일반적으로 layer의 build()함수가 작동할 때, 또는 모델에서 call()함수가 들어올 때 자동으로 초기화가 된다. 가중치와 편향은 각 layer.get_weight()로 확인이 가능한데, return값이 두개이므로(we...
텐서플로우 모델을 만드는 방법은 크게 세 가지가 있다. Sequential로 만드는 모델 Funcional로 만드는 모델 Class로 만드는 모델 이번 예제에서는 세 가지 방법으로 Basic Autoencoder를 만들어 보는 것이다.
본 포스팅은 DDPM을 구현합니다. DDPM에 대해서 모르시는 분들은 여기 참고해주세요.
VAE논문리뷰에서 살펴봤던 것처럼 이번에는 텐서플로우를 이용하여 직접 구현해보도록 하겠다. z를 샘플링하는 task나 loss를 구하는 task는 사진과 함께 설명하겠다!
본 포스팅은 langchain==0.0.229를 사용합니다. 현재(2024/04/15)기준 최신 버전은langchain==0.1.16이므로 참고 바랍니다. 또한 gpt-3.5-turbo-0125모델을 사용하므로 openai api키가 있어야합니다.
오늘은 시계열 데이터를 이미지로 바꿔서 정상, 비정상 분류를 해보겠다. 부끄럽지만,, 학부생 논문으로 낸 프로젝트이다.(논문은 여기로) 사용한 데이터는 기계시설물 고장 예지 센서 데이터를 사용하였다. 데이터는 여기에서 받을 수 있다. 본 포스팅에서 데이터의 구조는 따로 설명을 안하...
파이토치에서는 데이터를 좀 더 쉽게 다룰 수 있도록 하는 Dataset 클래스가 있다. 최근에 프로젝트를 진행할 때 100GB나 되는 데이터를 한번에 전처리 해서 데이터를 gpu에 올려놨었는데, 이렇게 하면 전처리 과정에서 시스템 메모리를 엄청나게 먹고 데이터도 gpu공간을 너무 ...