의료 인공지능 패러다임을 바꾸고 있는 Attention 메커니즘과 Transformer 모델
의료 인공지능 패러다임을 바꾸고 있는 Attention 메커니즘과 Transformer 모델
1997년 RNN 계열의 모델인 LSTM, 그리고 1998년 CNN 계열의 모델인 LeNet이 발표된 이후 RNN과 CNN은 각각 자연어 처리 분야와 이미지 인식 분야에 효과적임이 밝혀지며 인공지능 모델을 대표하는 양대 산맥이 되었습니다. 이후, 약 20년간 인공지능 연구는 이것들의 변형과 개선의 형태가 주를 이루었습니다. 그런데 몇 해 전, RNN을 주로 사용하던 자연어 처리 분야와 CNN을 주로 사용하던 이미지 인식 분야의 인공지능 커뮤니티 모드에 충격적인 논문이 발표되었습니다. 논문의 제목마저도 네게 필요한 것은 Attention 뿐이야. 하는 심플하고 강렬한 임팩트를 가지고 있습니다. Attention 메커니즘이라는 연산 방식을 개선한 Self-Attention 기법을 제시하며 등장한 Transformer는 자연어처리 분야에서 압도적 성능과 연산 효율성을 보이며 RNN 모델의 역할을 대체하기 시작했습니다. 또한 이는 자연어 처리 분야에서만 잘 작동하는 것이 아니라 이미지 인식 분야에서도 CNN을 대체할 만큼 성능이 뛰어남이 알려지며, 이제는 인공지능 분야에서 대세 모듈로 사용되고 있습니다. 발표된 지 4년이 채 되지 않았지만 기존의 인공지능 연구에 패러다임을 바꾸고 있는 Attention 메커니즘과 Transformer 모델에 대해서 알아보겠습니다.
Attention 메커니즘
RNN 기반의 sequence-to-sequence 모델은 인코더에서 컨텍스트 벡터를 추출하고 디코더는 콘텍스트로부터 새로운 값을 예측하는 형태로 구성되어 있었습니다. 그러나 이러한 모델 구조는 여전히 몇 가지 문제를 발생시킵니다. 우선 모델이 깊어질수록 학습이 잘 이루어지지 않는 gradient vanishing 문제가 발생합니다. RNN 모델은 학습 시 back propagation 과정을 통해 gradient를 계산하고 가중치를 업데이트 하게 되는데, 모델이 깊어질수록 gradient가 점점 작아져서 결국 가중치들이 제대로 업데이트가 되지 않게 됩니다. sequence-to-sequence 모델 역시 RNN 기반의 구조를 취하고 있기 때문에 이러한 문제에서 자유롭지 못합니다. 또한 인코더의 성능과 콘텍스트의 사이즈에 따라 성능의 차이가 많이 발생하게 됩니다. 콘텍스트의 사이즈가 너무 작거나 인코더의 성능이 충분하지 못하면 입력 시퀀스를 제대로 압축하여 충분한 정보를 추출하지 못하고, 디코더의 성능도 이에 제한되게 됩니다. 이러한 문제점들은 번역문제에서 큰 한계점으로 작용하게 됩니다. 번역을 요하는 입력 길이가 길어지면 길어질수록 성능이 급격하게 떨어지게 되고, 번역을 위한 RNN 모델을 마냥 깊게 만들 수 없다 보니 그 성능도 제한되게 됩니다. 2015년 번역 문제에서 고질적 문제점들을 해결하기 위한 새로운 방법인 Attention 메커니즘이 발표됩니다. 기존의 RNN 모델은 시점 t의 단어르 번역하기 위해서 앞선 시점인 t-1이나 혹은 t-n의 이전 일부 시점들의 정보만 고려하여 번역을 수행하였다면, Attention 메커니즘에서는 시점 t의 단어를 예측할 때 직전 시점의 데이터만을 고려하는 것이 아니라 입력 문장 전체를 고려하여 번역하도록 설계되었습니다. Attention 메커니즘은 디코더에서 출력 단어를 예측하는 시점 t에서 t-n ~ t-1의 이전 시점의 데이터만 참고하는 것이 아니라 인코더의 전체 입력 문장을 참고하여 예측합니다. 이름에서 알 수 있듯이, Attention 메커니즘은 시점 t에서 출력 문장 예측을 위해 입력 문장을 참고할 때, 해당 시점에서 예측해야 할 단언 와 관련 있는 특정 단어 혹은 특정 부분에 좀 더 집중하여 연산을 수행합니다. Attention 메커니즘을 설명하기 위해서는 컴퓨터 과학 분야에서 사용되는 Dictionary 혹은 Hash table이라고 하는 자료구조에 대한 간단한 설명이 필요합니다. 이 자료구조는 Key-Value 형태의 값을 저장할 수 있고 말 그대로 사전과 같이 단어, 키와 그 설명 밸류를 정의할 수 있습니다. 여기서 키는 중복될 수 없으며 딕셔너리 내에는 순서가 존재하지 않습니다. 우리가 딕셔너리에서 키를 알면 키와 페어로 존재하는 밸류를 찾아낼 수 있습니다. 또한 Query라는 행위도 존재합니다. 이는 데이터베이스에 정보를 요청하는 것을 말합니다. 우리가 구축해둔 딕셔너리를 하나의 작은 데이터베이스라고 생각하면 Query를 통해 딕셔너리에 정보를 요청하게 되고, 우리는 딕셔너리의 키를 통해서 해당되는 결과를 찾아 그 값을 반환해줄 수 있습니다. Attention 메커니즘은 위에 언급한 세 가지 요소인 쿼리, 키, 밸류로 구성됩니다. 앞서 계속 언급한 번역 문제에 대입하여 생각하여 보면, 쿼리는 시점 t에서 디코더 셀의 히든 스테이트, 즉 현재 시점에서 출력하여할 단어를 의미하고, 키는 인코더 셀의 히든 스테이트, 즉 입력 문장의 각 단어들이 됩니다. 밸류는 쿼리와 키에 매핑되는 값으로 시점 t의 단어를 예측 과정에서 인코더의 히든 스테이트가 얼마나 유사한지, 즉 쿼리가 주어졌을 때 각 키들의 어느 정도로 영향도를 갖고 있는지를 나타내는 값입니다. 따라서 시점 t에서 예측하여할 단어, 쿼리가 결정되면 입력으로 들어왔던 문장의 단어들, 키를 다시 살펴보면서 이번 출력 단어와 모든 입력 단어 사이의 유사도 혹은 가중치 밸류를 계산하여서 이번에 단어를 출력할 때, 어떤 입력 단어를 더 많이 참고하여 출력할지를 결정합니다. 다음 두 그림에서의 사례와 같이, 현재 번역하여야 하는 시점 t의 단어가 입력 문장의 앞 쪽의 단어와 더 높은 유사도를 갖고 있다고 판단이 되면 인코더의 앞쪽 부분의 히든 스테이트에 값을 더 가중하여 분석하고 예측을 진행하게 됩니다. 이러한 메커니즘은 번역 문제에서 매우 큰 성능 향상을 가져왔습니다. 특히 한국어와 영어의 번역 문제와 같이 문장의 어순이 다른 언어 간의 번역에서 매우 효과적이었습니다. 초창기 연구는 RNN 기반의 시퀀스 투 시퀀스에 어텐션 메커니즘을 추가하는 방향으로 연구가 이루어졌습니다. 이러한 어텐션 메커니즘을 도입한 인공지능 RNN 모델은 학습 과정에서 RNN 모델의 가중치와 더불어 어텐션 밸류를 함께 업데이트하며 학습이 됩니다. 어텐션 메커니즘의 방법은 여러 가지가 있습니다. 각 방법론에 대한 자세한 내용은 본 강좌의 범위를 벗어나니 생략하겠습니다. 더 자세한 내용은 다음 표의 각 방법론이 제시된 논문을 통해서 확인하실 수 있습니다.
Transformer의 전체 구조
이제 어텐션 메커니즘에 대해 이해를 하였으니, 트랜스포머에 대한 이야기로 넘어가겠습니다. 트랜스포머는 2017년 구글에서 발표된 Attention is all you need 라는 논문을 통해 공개된 모델로 기존의 어텐션 활용 논문들이 RNN 기반 모델에 어텐션 메커니즘을 추가한 반면에 여기서는 RNN 구조를 사용하지 않고 어텐션 만으로 모델을 개발하여 번역 문제에서 그 당시 압도적인 State-of-the-art를 달성하였습니다. 트랜스포머 모델의 전체적인 구조는 다음과 같습니다. 기존 시퀀스 투 시퀀스와 동일하게 인코더와 디코더로 구성되어 있습니다. 다만 차이점은 입력이 시간 순에 따라 순차적으로 들어오지 않고 한꺼번에 들어온다는 점과 인코더에서 추출된 컨텍스트 벡터가 디코더의 입력 단으로 들어가는 것이 아니라 중간에 들어간다는 것에 차이가 있습니다.