일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 블레이저
- attention
- 데이터사이언스
- Python
- 클라우드
- gcp
- DataScience
- 알고리즘
- 코드업100제
- 구글퀵랩
- 파이썬기초
- 머신러닝
- 코드업파이썬
- 생성형AI
- 빅데이터
- 파이썬
- nlp
- codeup
- 한빛미디어
- Microsoft
- Blazor
- GenAI
- 자연어처리
- 코드업
- 파이썬기초100제
- C#
- GenerativeAI
- Azure
- 파이썬알고리즘
- 데이터분석
- Today
- Total
Tech for good
자연어 언어모델 ‘BERT’ 2강 - 언어 모델(Language Model) | T아카데미 본문
모든 출처: Sk techx Tacademy (www.youtube.com/watch?v=zia49ZyKiX0&t=4s)
강의 목표
- 자연어 처리의 종류와, 자연어 처리가 현업에서 적용된 예제를 소개한다.
- BERT가 탄생하게 된 과정과, BERT에 적용된 메커니즘을 살펴본다.
- BERT를 이용한 다양한 자연어 처리 실험 결과들을 소개한다.
- Open source로 공개된 BERT 코드를 이용해 한국어 BERT를 학습해보고, 다양한 자연어 처리 task를 직접 실습해본다.
목차
- 2.언어 모델(Language Model)
- 2.1. 모델이란?
- 2.2. 언어 모델
- 2.2.1. Markov 확률 기반의 언어 모델
- 2.2.2. Recurrent Neural Network(RNN)기반의 언어 모델
- (1) RNN 언어 모델
- (2) Seq2Seq(Sequence to Sequence)
- (3) RNN의 구조적 한계점
- 2.2.3. Attention모델
- 2.2.4. Self-attention모델
- 2.2.5. Multi-head Self Attention모델
- 2.2.6. Multi-head Self Attention encoder 모델
- 2.2.7. Transformer 모델
2. 언어 모델(Language Model)
- 언어 모델의 개념과, BERT가 탄생하기 이전의 언어모델들을 살펴본다.
2.1. 모델이란?
- 자연 법칙을 컴퓨터로 모사함으로써 시뮬레이션이 가능
- 이전 state를 기반으로 미래의 state를 예측할 수 있음 (e.g. 습도와 바람 세기 등으로 내일 날씨 예측)
- 즉, 미래의 state를 올바르게 예측하는 방식으로 모델 학습이 가능함.
2.2. 언어 모델
- '자연어'의 법칙을 컴퓨터로 모사한 모델 -> 언어 '모델'
- 주어진 단어들로부터 그 다음에 등장한 단어의 확률을 예측하는 방식으로 학습 (이전 state로 미래 state를 예측)
- 다음의 등장할 단어를 잘 예측하는 모델은 그 언어의 특성이 잘 반영된 모델이자, 문맥을 잘 계산하는 좋은 언어 모델
2.2.1. Markov 확률 기반의 언어 모델
2.2.2. Recurrent Neural Network (RNN) 기반의 언어 모델
(1) RNN 언어 모델
: 위의 Markov 확률 기반의 언어 모델을 신경망 구조로 바꾼 모델
-> RNN은 이전 state를 입력으로 받아 현재의 state를 예측하는 방식이다.
-> RNN을 이용하면 매우 간단한 언어 모델을 만들 수 있다.
-> RNN을 이용하면 앞에 나온 단어들의 문맥을 고려한 아웃풋을 얻을 수 있다.
-> 인풋을 모두 고려하여 Context vector가 만들어진다. 이렇게 만들어진 Context vector는 좌표평면에 나열이 되므로 분류(Classification)가 가능해진다.
-> 즉, 문맥을 데이터로 인코딩(Encoding)할 수 있다는 것이다.
(2) Seq2Seq (Sequence to Sequence)
- Seq2Seq(Sequence to Sequence)
- 입력이 시퀀스로 들어가고, 출력이 시퀀스로 나오는 모델.
- Input이 문맥이 고려된 RNN 네트워크를 거쳐 Context vector를 생성하고, 이 Context vector를 다시 RNN으로 Decoder하게 되면 그 벡터에 대한 해석이 가능해지는 것!
- 보통 번역에서 많이 사용 (e.g. 한국어로 인코딩하여 영어로 디코딩)
e.g)
- 음성이 RNN 네트워크를 거쳐 인코딩이 되고, 디코딩을 텍스트로 하는 형태 ---- (Seq2Seq로 음성인식)
- 비디오가 인풋으로 들어가 RNN 네트워크를 거치고, 텍스트로 디코딩 하는 형태 ---- (Seq2Seq로 영상인식)
(3) RNN의 구조적 한계점
2.2.3. Attention 모델
모든 픽셀 하나하나의 데이터가 아닌, 집중해야 하는 데이터만 중요하게 여기자!
-> 즉, 특정한 단어에 attention을 줘서 그 단어에만 집중하는 것이 핵심.
좋지 못한 Context vector를 보정하는 방법
: 어텐션 웨이트(Attention weight)를 조정 <- Attention weight는 fully connected에서 만들어짐.
-> Attention을 이용하면 어떤 피쳐들이 서로 강하게 연결되어 있는지 시각화가 가능해짐. 즉, Attention을 통해 피드백을 받아서 고칠 수 있음.
-> 디코더에 인풋으로 들어가는 Context vector를 attention weight을 통해 다이나믹하게 획득할 수 있다.
-> 이 Attention 모델을 통해 기존의 인코더-디코더 구조로 이루어졌던 모든 NLP 어플리케이션의 성능을 향상시킴.
-> BUT, 어찌됐든 이 Attention 모델도 RNN 네트워크를 거침.
-> RNN 네트워크의 가장 큰 단점은 시간이 오래 걸린다는 것 (Why? 다음 state를 예측하기 위해 이전 state의 상태를 기다려야 하기 때문. 시계열 단계로 이루어지는 학습이기 때문에.)
-> 그럼 그냥 이 RNN을 없애면 안되나?
2.2.4. Self-Attention 모델
- Self-Attention의 구조
- Query: 얻고자 하는 context vector
- Key: Query와의 상관관계를 나타내고자 하는 대상
- Value: Query와 Key의 상관관계 값
-> 모두가 다 행렬연산으로 표현되어 있어서 GPU를 사용하면 이것을 병렬처리로 한 번에 처리할 수 있게 된다.
Query * Key = Score -----> 여기에 Softmax 함수를 취하면 0-1사이의 값이 나온다.
-> Softmax함수로 나온 값 * Value = 얻고자 하는 context vector, 즉 Query에 대해서 각각의 중요도(벡터값)를 산출할 수 있음.
-> 이 만들어진 벡터들을 모두 합산하게 되면 Attention layer output, 즉 문장 속에서 단어 'I'가 지닌 의미를 context vector로 표현할 수 있음.
-> 즉 이 문장 속에서 'I'가 가지는 중요도를 context vector로 표현할 수 있고, 마찬가지로 문장 내에서 'Study'가 가지는 중요도를 context vector로 표현하고 (...) 이런 식으로 각각의 토큰들에 대한 context vector를 독립적으로 구할 수 있는 것이다.
2.2.5. Multi-head Self Attention 모델
-> BERT는 이 Multi-head Self Attention 모델을 12개 갖추고 있는 것.
2.2.6. Multi-head Self Attention encoder 모델
-> I study at school 이 입력으로 들어갔을 때, 합성을 통해 자신을 표현하는 context vector를 얻어낼 수 있다.
-> 각각의 Self Attention에서 나온 값들을 concat을 하고, Feed-forward Network를 거쳐 최종 아웃풋이 나오게 되는 것.
* 참고: What's the difference between 'feed-forward network' and 'fully-connected network?'
2.2.7. Transformer 모델
'IT > Data Science' 카테고리의 다른 글
[Colab] 구글 코랩 한글 폰트 깨짐 문제 해결하는 방법 (0) | 2021.06.01 |
---|---|
[Reading a thesis every week] Continual learning for named entity recognition(2021) (0) | 2021.05.30 |
자연어 언어모델 ‘BERT’ 1강 - 자연어 처리 (NLP) | T아카데미 (0) | 2021.04.18 |
빅데이터 분석기사 개념정리 - 수제비 2021 빅데이터분석기사 필기 최종 모의고사 3회 (0) | 2021.04.16 |
빅데이터 분석기사 개념정리 - 수제비 2021 빅데이터분석기사 필기 최종 모의고사 2회 (0) | 2021.04.15 |