본문 바로가기

Data Science/밑바닥부터시작하는딥러닝(2)

(12)
[밑시딥] Transformer 동작과정을 밑바닥부터 뜯어보자! 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권 책에 나오진 않지만 책의 개념을 기반해 작성함을 알립니다. 또한 Transformer의 동작과정을 자세하게 이해하는 데 큰 참조 자료가 된 원본 블로그 출처는 여기임을 알립니다. - 아래 그림 자료에서 '아다마르 곱'을 사용해도 된다고 나와있지만 오타임을 알립니다! 행렬 내적(Matmul 또는 dot)을 수행해주어야 합니다! 저번 포스팅에서는 Transformer 라는 모델이 등장하게 된 이유과 모델의 큰 구조를 그림으로 살펴면서 각 구성요소가 어떠한 역할을 했는지도 알아보았다. 아쉬웠던 점은 트랜스포머라는 모델이 $key, query, value$라는 것을 입력으로 받는다고 했는데, 구체적으로 이 입력들이 무엇을 의미하는지, 그리고 트..
[밑시딥] RNN의 역할도 어텐션으로 대체한 seq2seq 모델, Transformer 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용의 마지막 챕터인 Transformer에 대해 간단히 소개하는 개념과 더불어 Transformer 논문인 "Attention Is All You Need"를 읽고 개인적으로 요약 및 정리한 글임을 알립니다. 본격 내용에 들어가기에 앞서 앞으로 Transformer(트랜스포머)에 대한 내용을 2개의 포스팅으로 나누어 게시하려고 한다. 첫 번째인 이번 포스팅에서는 트랜스포머 모델 논문에 기반하여 트랜스포머 모델이 나오게 된 이유를 알아보고 개괄적인 모델 구조를 그림으로 살펴보면서 어떤 기법이 들어가있는지에 대해 집중적으로 다룬다. 그리고 다음 포스팅에서는 트랜스포머 모델의 '진짜' 구조를 그야말로 밑바닥부터 파헤쳐보도록 하자. 1. 거추장스러운 R..
[밑시딥] 어텐션을 적용한 seq2seq을 한층 더 응용해보자 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 저번 포스팅까지 해서 seq2seq 모델을 '크게' 개선하는 기법으로 어텐션(Attention)을 적용한 seq2seq 모델에 대해 알아보았다. 이번 포스팅은 밑시딥 2권의 마지막 포스팅으로 어텐션을 적용한 seq2seq 모델을 좀 더 응용할 수 있는 몇 가지 방법에 대해 알아보려고 한다. 1. Encoder의 RNN 계열 모델을 양방향(Bidire..
[밑시딥] seq2seq를 더 강력하게, 어텐션(Attention)을 적용한 seq2seq 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 저번 포스팅에서는 2개의 RNN을 이어 붙힌 seq2seq 모델에 대해 배웠다. seq2seq 모델은 각각 RNN으로 이루어져있는 Encoder, Decoder로 구성되어 있다는 것과 각 역할에 대해서도 알아보았다. 그리고 이 seq2seq 모델의 성능을 개선하는 2가지의 '작은' 기법으로서 입력 시퀀스(출발어)를 반전시켜 Encoder에 넣는 기법..
[밑시딥] RNN을 사용한 문장 생성, 그리고 RNN을 이어 붙인 seq2seq(Encoder-Decoder) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 저번 포스팅까지 해서 RNN에 게이트를 추가한 모델인 LSTM과 GRU에 대해 알아보았다. 또 이러한 RNN 계열 신경망을 활용해 다음에 나올 '단어'를 예측하는 언어 모델(LM, Language Model)의 성능을 개선하는 방법들에 대해서도 알아보았다. 이번 포스팅에서는 다음에 나올 '단어'만을 예측하는 것이 아닌 '문장'을 예측하는 언어 모델을..
[밑시딥] 게이트를 추가한 GRU와 RNN LM 성능 개선 방법 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 저번 포스팅에서는 기본 RNN 모델에 게이트를 추가한 LSTM 모델에 대해 알아보았다. 이번 포스팅에서는 RNN에 게이트를 추가한 또 다른 모델인 GRU(Gated Recurrent Unit)에 대해 알아보자. 그리고 난 후, LSTM, GRU 등과 같은 게이트가 추가된 RNN 모델로 설계한 언어 모델(LM, Language Model)의 성능을 개..
[밑시딥] 게이트가 추가된 RNN, LSTM(Long-Short Term Memory) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 저번 포스팅에서는 hidden state라고 불리는 '은닉 상태 벡터'라는 것을 활용해 과거의 기억을 유지하며 시계열(시퀀스) 데이터의 특징을 학습할 수 있었던 기본 RNN 신경망에 대해 알아보았다. 그리고 이 기본 RNN 신경망으로 다음에 나올 단어를 예측하는 언어 모델인 RNN LM(Language Model)을 구현해보기도 했다. 하지만 저번에..
[밑시딥] 과거의 기억을 그대로, 순환신경망(RNN) 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 이전 포스팅까지는 Feed-Forward Neural Network(FNN)에 대해서 다루었다. 단어의 분산을 표현하기 위해 학습시켰던 신경망 모델인 CBOW 모델, Skip-gram 모델 모두 하나의 은닉층으로 하는 FNN 신경망 모델이었다. 하지만 이 FNN 모델은 순서가 중요한 특성으로 여겨지는 시퀀스 데이터 즉, 시계열 데이터를 잘 다루지 못..
[밑시딥] Embedding 계층과 Negative Sampling으로 효율적인 word2vec 구현하기 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 지난 포스팅에서는 word2vec를 구현하기 위한 신경망 모델로 CBOW 모델과 Skip-gram 모델에 대해 알아보았다. 그리고 간단하게 한 문장의 말뭉치를 활용해서 신경망 모델을 학습시키고 학습된 신경망의 입력층 파라미터 즉, 우리가 구하고자 하는 단어의 분산 표현을 얻어보기도 했다.(이것이 word2vec를 구현한 셈!) 그런데 아직 개선할 문..
[밑시딥] 단어의 분산을 표현하는 또 다른 기법, word2vec 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 이번 포스팅에서는 단어의 분산을 표현하는 또 다른 방법으로 신경망을 사용하는 추론 기법인 word2vec에 대해 배워본다. word2vec를 구현하기 위한 신경망 모델의 종류 중 하나로 CBOW 모델에 대해 알아보고 이를 넘파이로 구현하는 방법도 알아보자. 1. 추론 기법의 등장 단어의 분산을 표현하는 또 다른 방법으로 추론 기법이 등장했다. 그런데..
[밑시딥] 오직! Numpy로 단어의 분산 표현하기 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 이번 포스팅에서는 자연어 처리의 가장 기본인 단어의 분산 표현에 대해 알아보고 이를 넘파이로 구현하는 방법에 대해 알아보자. 1. 단어의 의미를 표현하는 방법 최근에는 대부분 딥러닝으로 단어의 의미를 표현하지만 딥러닝이 등장하기 이전에도 단어의 의미를 표현하는 방법들이 존재했다. 단어의 의미를 표현하는 방법에는 크게 3가지 방법이 존재한다. 시소러스..
[밑시딥] 오직! Numpy로 구현했던 딥러닝 신경망 복습 🔊 해당 포스팅은 밑바닥부터 시작하는 딥러닝 2권의 교재 내용을 기반으로 자연어처리 딥러닝 신경망을 Tensorflow, Pytorch와 같은 딥러닝 프레임워크를 사용하지 않고 순수한 Numpy로 구현하면서 자연어 처리의 기초를 탄탄히 하고자 하는 목적 하에 게시되는 포스팅입니다. 내용은 주로 필자가 중요하다고 생각되는 내용 위주로 작성되었음을 알려드립니다. 이번 포스팅부터는 밑바닥부터 시작하는 딥러닝 2권을 학습하면서 배운 내용을 기록해보려 한다. 2권은 주로 자연어 처리에 관련된 내용이다. 필자는 개인적으로 Weekly NLP를 통해서 자연어 처리에 입문했었는데, 그 때는 이론적인 측면에서 접근했다고 한다면 이번엔 이론을 더 깊게 파보면서 넘파이로 구현하는 과정까지 어떻게 신경망으로 자연어 처리를 할..