문서와 함께 넣고, 생성한 결과물로부터 문서를 유도하는 인-아웃 구조
문서를 구분하여 메모리를 저장하는 것은 명시적인 메모리 사용을 유도하며 정보의 위치를 알 수 있는 중요한 단서이다. 그러나 의존적으로 생성하는 것이 아닌, 입력 프롬프트에 기대어 생성하는 경우는 내부적으로 불명확한 정보를 사용하게 된다. 현재까지 된 부분을 살펴보면 다음과 같다.
연구 | 정보의 위치 | 프롬프트 의존 생성시 정보의 출처 |
---|---|---|
기존 GPT 학습 | 알 수 없음 | 알 수 없음 |
Guidance Memorization | 문서 수준까지 알 수 있음 | 알 수 없음 |
MinHash/LSH | 문서 수준까지 알 수 있음 | 알 수 없음 |
Source Identification | 알 수 없음 | End-to-End 맵핑으로 알 수 있음 |
따라서 현재까지 진행된 연구에서는 정보의 위치를 알면서, 정보 사용시 문서를 추정하는 것은 불가능하다. 궁극적으로 우리에게 필요한 구조는 다음과 같다.
메모리를 명시적으로 할당하는 것은 표현 자체에 대한 가정보다는 위치적인 가정이다. 따라서, 정보의 위치는 알 수 있지만, 생성된 정보 자체의 의미를 해석해주지 못한다. 예를 들어, 1-5번 구멍에서 물이 나오면, 어떤 브랜드인지 아는 것과 물 맛을 보고 물을 아는 것은 다르다. 따라서 추가적인 연구에서는 위치적인 가정보다 표현에 정보가 녹아 있다는 가정을 해야 한다.
위의 예시에서 만일 생성물을 만드는 학습과정에서 다른 물의 종류가 들어가며, 생성할 때는 원래 물의 정보를 뽑아내고 싶다고 하자. 여기서 물과 생성물 자체는 관계가 존재하지 않는다. 만일 우리가 생성물을 만드는 과정을 학습하면서 물에 대한 표현을 집어넣고, 생성물로부터 다시 물의 표현을 뽑아내고 싶다고 하면, 가장 간단한 구조는 다음과 같다.
내가 파견을 보낸 요리사는 여러 나라를 돌아다니며 계란 요리 만드는 방법을 배웠다.
요리사에게 계란을 주면 본인이 직접 요리를 하면서 다양한 계란요리를 만들 수 있다.
어느날 나는 요리사가 건낸 계란말이를 먹으며, 어떤 나라의 요리인지 궁금했다.
“어떤 나라에서 배운 요리인가요?”
요리사는 대답했다.
계란의 신선도, 날씨를 봤을 때 오늘은 오믈렛을 만든 겁니다.”
나는 레시피를 만든 나라를 알려달라고 했고,
요리사는 다시 계란 크기와 날씨를 봤을 때 오믈렛이 적합헀다고 한다.
나는 요리사를 다시 파견 보내면서 이번에는 어떤 나라의 요리인지 제대로 구분해서 배우라고 말했다. 몇달 후 요리사는 돌아와 나에게 계란찜을 건낸다. 나는 계란찜이 어느 나라 요리냐고 물어봤고 한국에서 만드는 방법이라고 말해줬다. 며칠 후 나는 계란말이를 먹고 있었고, 요리사는 한국 또는 일본식이라고 말한다.
나는 요리사에게 어떻게 국가를 기억해냈냐고 물었다. 요리사는 계란 요리가 별로 없으니, 그냥 만들고 나서 암기했다고 말헀다. 나는 다시 요리사에게 물었다. “그럼 요리하는 중간에는 국가를 기억하지 않는 건가요?” 요리사는 그렇다고 대답헀다.
나는 사실을 확인하기 위해 비서가 찍어준 요리사의 연수 사진을 내밀며 말했다. “이 사진이 어떤 나라에서 배우는 건지 기억나나요?” 요리사는 대답했다. “완성된 요리 사진을 보여주시면 대답할 수 있습니다. 나는 계란말이가 어떤 나라인지 압니다. 그러나, 중간 과정은 어떤 나라인지 모릅니다.”
나는 요리사를 다시 파견 보내면서 말했다. “이번에는 배우는 과정 모든 곳에 내가 어떤 나라에서 배우는지 기억할 수 있게 배워오세요.” 요리사는 그러려면 요리를 배우는 과정과 나라를 기억하는 과정을 계속해야 하지 않냐고 투덜거렸다.
이번에 요리사는 더 오랜 시간이 걸려 파견을 다녀왔다. 나는 돌아온 요리사에게 다시 계란 요리를 하나 만들어달라고 했다. 요리를 시작하기 전, 나는 요리사에게 물었다. 어떤 나라의 요리를 만들고 있어? 요리사는 대답했다. “그건 아직 정하지 않았습니다.”
요리사는 계란요리를 만들기 시작했고, (추측하건데, 날씨와 기분에 따라서 확률적으로 행동하는 것 같다.) 나는 요리사에게 어떤 나라의 요리를 만들고 있냐고 물었다. 저번과 다르게 이번에는 요리사가 대답을 줬다. 지금 방식은 유럽식 계란 요리를 만드는 겁니다.
나는 요리사에게 어떻게 기억했냐고 물었다. 그는 대답했다.
“이 과정은 유럽에게 특히 많이 사용되는 방법입니다. 제가 정확히 어떤 지역의 계란요리를 만들진 모르겠지만, 적어도 유럽식인건 알 수 있습니다.”
요리가 거의 끝나갈 때, 요리사는 갑자기 놋그릇에 계란요리를 옮겨담고 있었다. 나는 왜 유럽식인데 놋그릇에 담냐고 물었다. 요리사는 말했다. “일반 접시보다는 한국에서 사용되는 접시에 담는 것도 나쁘지 않을 것 같아서요. 제가 요리하는 과정에서 유럽식으로 시작한 건 맞지만, 중간에 사용한 도구들은 일본식이었고 담은 그릇은 한국식입니다.”
나는 요리사에게 물었다. “그냥 유럽 요리니까, 유럽에서 배운대로 하면 되잖아”
요리사는 말했다. “제가 유럽식 요리를 배운 건 맞지만, 사장님은 한국사람이니, 놋그릇을 좋아할 것 같아서요. “놋그릇은 한국 경주에서 계란전을 배울 때 사용하는 방식이었습니다”
나는 문득 요리사가 모든 요리과정과 지역을 연결한 방법이 궁금해졌다. 요리사는 대답했다.
“계란을 보며 무엇을 만들지, 어떻게 처리할지 생각하는 그 모든 과정에서 저는 정보를 책에 기록해뒀기에 지역인지 대답할 수 있었습니다. 그러니, 제가 떠오른 정보들은 모두 어떤 지역인지 자명하죠.”
알고보니 요리사는 책이 있었고, 책을 참조해서 요리했으며, 국가는 그 책에 적힌 지역을 말해주는 것이었다. 나는 책을 압수하고 이번에 다시 요리사를 파견 보내며 말했다. “이번에는 아무것도 적지 말고 기억해봐.”
다시 돌아온 요리사는 놀랍게도 이번에도 국가를 잘 말해줬고 나는 어떻게 한 거냐고 물었다.
“제가 떠올린 정보는 놋그릇이 이지만, 정확하게는 ‘대청마루의 놋그릇 입니다. 제가 떠올린 정보와 사용한 정보가 달랐기에 제가 떠올린 대청마루로부터 한국이라고 알려드린 겁니다.”
대단한 요리사는 단순히 놋그릇이 아닌 더 많은 정보를 암기하고 있었다. 나는 요리사에게 비빔밥은 어떻게 기억하냐고 물었고, 그는 전주한옥마을을 이야기 했다.
결국 요리사가 최종적으로 암기한 것은 단순히 요리과정이 아닌, 요리가 놓은 장소를 포함했던 것이다. 그리고 그 장소들은 동일한 국가여도 다양하게 형성되어 있었고, 국가를 떠올리기에 아주 쉽게 형성되어 있었다.
나는 요리사에게 한 번 더 물었다. 그냥 대청마루에 놋그릇과 비빔밥을 모두 기억하면 되지 않았냐고. 그럼 좀더 적은 용량으로 기억하지 않았냐고. 요리사는 대답한다. 비빔밥은 전주와 연결해서 외우는 게 차라리 쉬웠다고. 오히려 비빔밥을 놋그릇과 연결하는 게 쉽지 않았다고 한다.
나는 이제 요리사를 파견 보내지 않는다. 요리사는 내가 원하는 국가 정보를 요리하는 과정에서 언제든 줄 수 있기 떄문이다. 요리사가 국가를 암기하는 방법은 요리과정을 국가와 관련된, 그리고 외우기 쉬운 정보로 매칭하는 것이었다. 국가마다 랜드마크는 다시 많겠지만, 서로 구분되는 랜드마크가 도움이 되었다고 한다.
근데, 요리사야. 대청마루는 일본에도 있을 수 있잖아? 대청마루를 떠올려서 한국 요리라는 건 오류가 아닐까? 요리사는 대답한다. “대청마루를 일본에서도 사용했다면,, 큰일이었겠어요.”
특정한 벡터에 물종류의 정보가 특정 dimension에 그대로 유지된 상태로 올라가는 것이다.
[물종류, 녹차잎1, 녹차잎2,…] –> [물종류, 녹차]
두 번째 경우는 출력 자체에 물종류가 녹아 있는 경우다.
[물종류, 녹차잎1, 녹차잎2,…] –> [녹차] –> [물종류 유추]
세 번째 경우는 입력에 물종류가 녹아 있으며, 출력은 따로 존재하는 경우다.
[물종류] -> [녹차잎1, 녹차잎2] –> [물종류, 녹차]
마지막 경우는 두 가지 표현 모두에 물 종류가 녹아있는 경우다.
[물종류] -> [녹차잎1, 녹차잎2] –> [녹차] –> [물종류]
이러한 모델링은 결국 (X,Y)에 대해서 conditional distribution을 만드는 것과 유사하다고 본다.
P(Y | X) –> P(\hat{Y} | Y) –> P(X | \hat{Y}) |
P(\hat{Y} | X,Y) –> P(X | \hat{Y}) |
위 네가지 경우 중에서 가장 우선적으로 연구할 부분은 1번, 입력의 특정 차원에 문서 정보가 들어가고, 출력을 학습하는 과정에서 다시 복원하는 경우다. 이 때, hidden dimension 의 일부분은 문서를 추정하기 위한 부분으로 남는다.