티스토리 뷰
1. RNN (Recurrent Neural Network)
RNN이 왜나왔을까? 기존 신경망은 연속적인 시퀀스를 처리하기 어렵다. 따라서 입력의 순서가 중요한 분야인 자연어 처리, 음성인식, 주식, 날씨, 음악 같은 부분에서 한계가 들어난다. RNN이란 아래의 그림과 같이 이전 출력값이 현재 결과에 영향을 미친다.
위 그림에서 식을 보면 순환 w와 입력 U의 두 개의 가중치가 존재하는것을 알 수 있다.
물론 입출력도 자유롭다는 것을 알 수 있다.
2. LSTM(Long Short Term Memory)
LSTM이 나왔는다는 RNN의 문제점이 있다는 것을 알 수 있다. 아래의 그림을 보면 처음 입력의 정보가 뒤로 갈수록 사라진다는 것을 알 수 있다.
LSTM의 목적은 입력 중 핵심적인 정보를 잊어버리지 않고 뒤로 전달하는 것이라고 할 수 있다. 아래의 그림을 보면 입력과 순환 각각 4개씩 총 8개의 가중치가 존재한다는 것을 알 수 있다.
3. Seq2Seq 모델
RNN 문장 생성의 문제점은 출력이 바로 이전 입력까지만 고려하기 때문에 정확도가 떨어지고 전체 입력 문장을 반영하지 못해 생긴 것이다. 인코더와 디코더 두 개의 LSTM으로 구성되며 인코더로 입력 문장을 먼저 처리하고 디코더로 답변 문장을 출력한다.
4. 어텐션(Attention)
LSTM과 Seq2Seq는 정보의 흐름을 조정하는 게이트만으로는 부족하다. 즉, 입력 문장이 길어지면 답변의 정확도가 떨어진다. 어텐션의 원리는 중요한 단어에 집중(attention)하여 디코더에 바로 전달하는 것이다.
위의 그림을 참고해 보면 인코더의 출력값들을 모아 디코더 계산에 같이 사용하는데 디코더에서 각 단어를 생성할 때 인코더의 어떤 단어에서 정보를 받을지 어텐션 레이어가 결정한다.
5. 트랜스포머(Transformer)
2017년 구글이 발표했고 LSTM이 필요가 없다. 다만, 어텐션 신경만만 사용하여 인코더-디코더를 구현한다. 여기서 핵심은 인코더에서 디코더가 아니라 스스로 셀프 어텐션(언어에 집중)을 한다.
위의 오른쪽 그림을 보자. 각 단어를 QKV로 변환하여 어텐션을 계산한 것이다. 좀 더 쉽게 말하면, Thinking이라는 input이 Embedding을 통해 벡터화 한 후에 Q, K, V로 변환한다. 그 후에 그것들을 이용하여 어텐션을 계산한다.
그리고 셀프어텐션, 즉 문장에서 중요한 단어들에 집중하여 각 단어의 정보를 업데이트한다.
위 그림과 같이 인코더와 디코더는 각각 여러 개로 중첩되어 구성된다.
6. BERT(Bidirectional Encoder Representations from Transformers)
2018년 10월에 구글이 발표했고, 사전 훈련 기반 딥러닝 언어모델이다. 또한 트랜스포머로 구현이 됐으며 다양한 자연어처리 분야에 응용이 가능하다.
여기서 핵심은 자연어 처리에 사전 훈련이 적용됐다는 것이다. 즉 사전 훈련 모델로 새로운 모델을 만들어 다시 학습을 시킨다는 말이다.(전이학습 Transfer Learning) 쉽게 말하면 언어를 배운 후에 부가적인 것을 배우는 것이 훨씬 적은 단어로 학습이 가능하다. 그 예로 BERT 말고도 ELMo 등등이 있다.
BERT의 구조는 위의 그림과 같이 트랜스포머의 인코다만 사용한다. BERT Base는 12개의 트랜스포머 블록으로 이루어져 있고, BERT Large는 24개의 트랜스포머 블록으로 이루어져있다.
BERT에 사용된 사전 훈련 데이터는 BooksCorpus는 8억 단어이고 Wikipedia는 25억 단어이다.
버트에 대한 기초 개념을 알려면 아래의 사이트를 따라가자.
- Total
- Today
- Yesterday
- 자료구조
- react autoFocus
- mongoDB
- DFS
- logout
- Express
- TensorFlow
- vuejs
- 자연어처리
- login
- UserCreationForm
- nodejs
- read_csv
- NextJS
- Python
- react
- nextjs autoFocus
- django
- Queue
- 클라우데라
- Vue
- error:0308010C:digital envelope routines::unsupported
- pandas
- Deque
- JavaScript
- typescript
- BFS
- useState
- next.config.js
- useHistory 안됨
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |