생성형 인공지능 2주차
2주차 핵심
컴퓨터가 문장처럼 순서가 있는 데이터를 어떻게 기억하면서 처리하는가?
ANN(Artificial Neural Network)과 CNN(Convolutional Neural Network)
둘다 공통적으로 각 계층 요소는 독립적이며 추가 메모리가 필요 없다는 특징이 있다. 무슨 의미인지 아래에서 자세히 살펴보자.
ANN
가장 기본적인 신경망으로, 입력층 -> 은닉층 -> 출력층의 구조로 되어 있다.
각 층은 독립적으로 계산하기에 이전 데이터를 기억하지 않는다.
CNN
주로 이미지 처리에 사용된다. 마찬가지로 이전에 본 데이터를 기억하지 않는다.
여기서 발생하는 문제는 언어의 순서를 기억하지 못한다는 점이다. 따라서 순서를 기억할 수 있는 신경망이 필요하다.
재귀신경망(RNN, Recurrent Neural Network)
재귀신경망은 순서가 있는 데이터를 처리하기 위해 만들어진 신경망이다. 이전 정보를 기억하면서 현재 정보를 처리하는 신경망이다.
은닉층에서는 이전 층의 데이터와 현재 층의 데이터 정보를 저장한다.
1. 단방향 RNN
모델은 과거 정보에만 접근 가능
2. 양방향 RNN
모델은 과거 미래 정보 모두 접근 가능
RNN의 문제
문장이 길어지는 등, 처리에 오랜시간이 걸리면 RNN은 이전 정보를 기억하지 못한다. 따라서 역전파중에 기울기가 없어지거나 발산할 수도 있다.
이를 해결하기 위해 등장한, LSTM과 GRU
1. LSTM(Long Short-Term Memory)
오래 기억하도록 만든 RNN으로 가장 중요한 것은 Cell State이다.LSTM 네트워크에서의 메모리 역할을 한다.
3개의 게이트를 갖는다.
- Forget Gate: 필요없는 정보를 버린다.
- Input Gate(입력 게이트): 새로운 정보를 저장한다.
- Output Gate(출력 게이트): 최종 출력에 어떤 정보를 사용할지 결정한다.
2. GRU
LSTM 간소화 버전으로, LSTM은 3개의 게이트를 갖는다면, GRU에서는 2개의 게이트만 갖는다.
Cell State가 없고, Hidden state가 있다. Hidden state가 메모리 역할을 한다.
2개의 게이트를 갖는다.
- Update Gate: Forget Gate + Input Gate를 합친 것으로 무엇을 기억할지 결정한다.
- Reset Gate: 과거 정보를 얼마나 무시할지 결정한다.
주의(어텐션) 메커니즘(Attention Mechanism)
신경망이 입력 전체를 똑같이 보는 것이 아니라, 현재 작업에 중요한 부분에 더 집중하도록 하는 방법이다.
RNN은 긴 문장에서는 잘 동작하지 않는다. 모든 정보를 하나의 컨텍스트 벡터에 넣어야 하는데, 뒷쪽으로 갈 수록 성능이 떨어진다. 이 문제를 해결하기 위해 어텐션이라는 개념이 등장했다.
어텐션을 이용하여, 기존의 인코더-디코더의 한계를 극복했다. 어텐션은 인코더와 디코더 사이에 위치한다.
LSTM의 중간 출력을 유지한다.(이전 단계에서 생성된 출력(h1, h2, …)을 버리지 않고 다음 단계 계산에 계속 사용한다라는 의미)
어텐션 매커니즘을 사용하면, 긴문장에서도 퍼포먼스가 잘 나온다.
Association을 weight 벡터로 학습한다.
- Association은 연관관계 즉, 관련성을 의미한다. 즉 "I love deep learning"라는 문장에서 love와 I라는 단어의 관계를 의미하여, 이 연결 사이에 가중치가 있다.
- 즉, 단어들 사이의 연관 관계(association)를 가중치 벡터(weight vector)로 표현하여 학습한다.
예: 바흐다나우 어텐션
==양방향 RNN 인코더 + RNN 디코더 + Attention==으로 구성되어 있으며, 초기의 대표적인 어텐션 모델이다.
어텐션 매커니즘의 본질
어텐션 매커니즘의 본질은 쿼리를 key-value쌍의 집합에 매핑하는 것이다.
- 쿼리: 현재 필요한 정보 - 질문
- 키: 각 단어의 특징 - 주소
- 값: 실제 정보 - 내용
Query -> Key와 비교 -> Softmax -> 가중합 -> Attention 결과 순서로 작동한다.
- 유사도 계산: 쿼리와 Key를 비교하여 가장 비슷한 것에 높은 점수를 준다.
- Softmax: 점수를 확률처럼 변환
- 가중합: 중요한 정보들을 가중치 계산하여 반영
긴문장에 대해서 각 단어의 연관도를 계산할 때 전통적인 RNN을 사용할 수 있다. 근데 문제는 RNN은 문장이 길어질 수로 앞의 내용을 기억하지 못한다.
그래서 글로벌 어텐션을 사용할 수 있는데, 인코더의 모든 숨겨진 상태를 고려하는 방식이며, 모든 문장에 관한 상관관계, 기억을 할 수 있다.
따라서 글로벌 어텐션이 필요하다.