티스토리 뷰
RNN을 사용한 Seq2Seq 모델링의 특징과 문제점
- 인풋 문장의 정보를 잘 인코딩(단어 하나하나 누적해 압축한 벡터 생성)하여 디코더가 그에 부합하는 토큰을 하나씩 꺼내는 구조입니다.
- 디코더가 참고하는 문맥은 입력문이 전부 압축된 하나의 벡터로, 이 벡터는 입력문을 모두 누적하고 있지만, 문장 앞부분의 내용은 너무 압축된 나머지 정보를 거의 잊어버리게 됩니다.
▶▶▶ 인풋/아웃풋 문장의 길이가 길어지면 Seq2Seq의 성능 저하 (Gradient Foregetting, Long term dependency)
Attention의 등장배경
(예시) " 지하철 가는 법은 노란색 간판에서 좌회전에서 300미터 정도 간 후에 초록색 표지판이 보이면 우회전을 합니다. 그리고 200미터 정도 직진하면 보입니다"란 한국어 문장을 영어로 번역하려고 합니다.
'Yellow' 란 단어를 생성할 때, 인공신경망은 전체 한국어 입력 문장을 되짚어 보며 현재 단어를 디코딩하기 위해 중요한 부분이 어디일까 생각하게 됩니다. 그 결과 입력 단어 중 "건물"에 해당하는 단어에 조금 더 주의를 기울일 필요가 있다고 판단하게 됩니다.
- 사람은 문장을 이해할 때, 문장 중에서 중요한 단어들을 좀 더 강조하여 이해합니다.
- 문장의 앞 부분 번역 시 원본 문장의 앞부분을, 문장의 뒷 부분 번역 시 원본 문장의 뒷부분을 좀 더 중요하게 봅니다.
- 이를 딥러닝에도 적용하여,
인공신경망이 입력 데이터의 전체 또는 일부를 되짚어 살펴보면서 어떤 부분이 의사결정에 중요한지, 판단하고 중요한 부분에 "집중" 하는 방식인 어텐션 메커니즘을 도입하게 됩니다. - 그렇게 되면, 번역 시에 원문을 다시 재참조하여 현재 디코딩할 단어와 연관된 중요 부분에 집중하게 되고,
입력 문장이 매우 길어진다 해도 전체 문맥을 골고루 참고할 수 있게 되므로 더 좋은 번역을 할 수 있습니다.
Attention
- 토큰에 대해 관심 있는 문맥 정보를 끌어오는 알고리즘
- 디코딩 타임스텝에서 필요한 정보를 인코터 hidden state에서 가져오게 됩니다.
- 원본 문장의 hidden vector들을 이용해 context vector(*아래 설명) 를 생성하여 활용하여 번역합니다.
- 해당 단어에 조금 더 집중하여 전체 입력을 다시 한번 재조정한 입력 데이터 인코딩 벡터를 만듭니다.
⬛ Attention Step
Step1) 디코더 hidden vector와 인풋 hidden vector 사이의 attention score(*아래 설명)를 구합니다.
- 현재 디코딩 스텝에서 중요한 히든에 높은 score를 부여합니다.
Step2) Attention score에 softmax를 취해 각각의 점수를 확률 분포로 변화(Normalize)시킵니다.
- (예) 원본 문장 중 첫 번째 단어인 "I'm'에 가중치를 많이 부여합니다.
Step3) 확률값으로 나타낸 Attention distribution을 이용해 인코더의 hidden state들의 가중합 벡터 생성합니다.
- Attention Output에는 높은 attention 점수를 받은 단어들에 대한 정보가 더 많이 포함됩니다.
Step4) Attention Output인 인코더 가중합된 정보와 디코더의 hidden state을 이용해
이번 단계의 결과를 예측하는데 사용합니다.
Step5) 디코더 타임스텝을 진행함에 따라 이러한 방식 계속 진행합니다.
- 인풋 히든들의 중요도 계산(attention score)
- 점수에 따라 가중합한 attention output 생성
- 이번 스텝의 output 생성
⬛어텐션 스코어(Attention score)
- '중요한 단어에 집중한다'는 의미는 어텐션 스코를 계산한다는 것을 의미합니다.
- 인공신경망 모델이 각 인코딩 타임스텝마다 계산된 feature를 가지고 자동으로 계산하는 0~1 사이의 값
- 1에 가까울수록 더 집중해서 봐야 하는 스텝, 0에 가까울수록 지금은 중요하지 않아 대충 봐도 되는 스텝을 의미합니다.
- 간단히 말해, 각 단어에 대한 주의 집중 가중치를 의미합니다.
- (방법1) Dot Product : 디코더 hidden과 인코더 hidden을내적해 scalar 구하기
- (방법2) Attention weight 학습
- 장점) 완전히 동일한 어순을 가지며 단어간 1:1 매칭이 되는 언어끼리의 번역이 아니라면
단어 집중 시 유연하게 대처해야하는데 어텐션 메커니즘이 그역할을 훌륭히 해냅니다.
→ 서로 다른 언어별 특징을 잘 이해하고 집중할 부분을 선택
(번역 태스크에서 어텐션 스코어 시각화 그림)
⬛컨텍스트 벡터(Context vector)
- 현재 디코딩할 단어와의 관련성을 반영하여 다시 입력 문장을 인코딩
- 중요도에 따라 전체 문맥의 정보를 잘 반영하고 있다고 하여 컨텍스트 벡터라고 부릅니다.
- 매번 디코딩마다 직전 단계의 벡터와 과거의 모든 데이터의 특징(feature)들을 고려할 뿐만 아니라,
딥러닝 모델이 스스로 집중할 영역을 파악합니다. - 해당 타임스텝의 토큰을 추출할 때 원본 문장의 필요한 부분을 표현한 컨텍스트 벡터를 활용하여 더 적절한 ouput을 생성합니다.
- 인코더 히든의 가중합(가중치 = attention score, 인코더 히든에 대한 중요도)
'Data Science&AI' 카테고리의 다른 글
[시계열 알고리즘] NHiTS : Neural Hierarchical Interpolation for Time Series Forecasting (0) | 2023.04.04 |
---|---|
[딥러닝] BERT와 GPT의 기본인 Transformer의 A to Z (1) | 2023.02.26 |
[딥러닝] Seq2Seq에 대한 설명 (0) | 2023.02.18 |
[딥러닝] GRU(Gated Recurrent Unit)에 대한 이해 (0) | 2023.02.13 |
[딥러닝] LSTM(Long-Short Term Memory)에 대한 이해 (0) | 2023.02.13 |
- Total
- Today
- Yesterday
- amazon Q
- 비즈니스 관점 AI
- Model Drift Detection
- 영화 인턴
- 시계열딥러닝
- pandas-gpt
- 추천시스템
- Model Drift
- Generative BI
- 생성형BI
- Data Drift Detection
- Concept Drift
- 데이터 드리프트
- 모델 드리프트 대응법
- amzaon quicksight
- Tableau vs QuickSight
- 영어공부
- SQLD 정리
- Data Drift와 Concept Drift 차이
- 오토인코더
- 모델 배포
- 최신시계열
- pandas-ai
- NHITS설명
- AutoEncoder
- data drift
- SQLD자격증
- SQLD
- On-premise BI vs Cloud BI
- 모델 드리프트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |