생성형 AI 모델 붕괴 현상 (Generative AI Model Collapse)


여러분께서 설령 오랜 기간동안 다양한 종류의 컴퓨터 언어를 다뤄오신 프로그래밍 전문가일지라도 처음 AI와 관련된 문서들을 찾아보게 되면 너무나 생소한 설명들이 자주 등장하곤 하여 곤욕을 치루신 적이 많으실 겁니다. 프로그래밍에서 흔히 말하는 버그와 같이 하나의 문제를 특정할 수 있는 내용이 아닌 개념적 설명이 많기 때문에 더욱더 그렇죠.


1편에 이어 이번에는 모델 붕괴 현상이라는 것에 대해 초보자 분들이 쉽게 이해할 수 있도록 알아보는 시간을 한번 갖도록 해보겠습니다. 쉬운 설명을 위해 다소 과장된 비유가 많이 사용될 수 있습니다.


모델 붕괴는 보는 관점에 따라 당연히 발생할 수 있는 문제이기도 하지만 이러한 대상이 생성형 모델이라는 관점에서만 이야기를 한다면 치명적인 결과를 가져오기도 합니다. 모델 붕괴는 특정한 코딩상의 오류나 방식의 문제에서 벗어나 사회적 또는 환경적 요인이 크게 작용합니다.


여러분들 중 인스타그램과 같은 SNS를 자주 사용하시는 분들은 많은 인플루언서들의 포스팅을 보셨을거라 생각됩니다. 대부분의 사람들은 포스팅을 할 때 본인의 단점이 부각되는 사진을 올리지 않습니다. 설령 그 포스팅 자체가 긍정적이건 부정적이건 그 사람이 생각하는 또는 어필하고자 하는 내용을 포스팅하며 본인 스스로가 창피한 내용을 포스팅 하지는 않죠.


이것을 여러분의 데이터셋이라고 가정해 보시면 이해가 편하실 겁니다. 항상 좋은 자료, 좋은 모습, 완벽함과 같은 우리가 상상하는 이상적인 모습들을 데이터셋으로 모아 이것으로 AI를 학습 시키면 AI는 점차 "좋은것"만 생성을 하게 됩니다.


문제는 이러한 좋은 것들이 포스팅 되고 그들 중에 또 더 좋은 것이 선택되어 포스팅되고, 이것이 무한으로 반복되다 보면 결국 최종적으로 많은 사람들이 생각하는 "좋은것"은 극히 일부만 남게 될테죠. 여기서 좋은것과 나쁜것을 선택하는 것은 우리 인간입니다.


이렇게 좋은것의 가중치가 높아진 AI들은 사람들이 싫어하거나 나쁘다고 생각하는 것을 더이상 생성하지 못합니다. 예를들어 개성있고 독특한 케릭터를 생성하려면 매우 많은 노력이 필요할 것이고 다양한 것들을 생성해야하는 생성형 AI가 이미 나온 정답만을 출력한다면 더 이상 AI로써의 가치가 없어지게 되는 셈이죠. 이것이 모델 붕괴 입니다.


위에 설명한 내용이 거대한 바운더리 안에서 이야기하는 모델라면, 그렇다면 이것을 GAN (생성형 적대 신경망)에 비교해보면 어떨까요?


1편에서 설명드린 G (생성자) / D (판별자) 중에 "좋고 나쁨을 평가하는 사람"은 곧 "D (편별자)"의 역할을 합니다. 흔히 말하는 '이야기하기 불편한 내용'을 싹다 피하다 보면 항상 정답은 뻔한 것만 나오게 되는데 이것이 AI로써의 역할을 붕괴시키기에 '모델 붕괴'라는 무서운 단어를 사용하는 것입니다.


인간은 틀립니다. 조금 거북한 내용이실수도 있으나 PC주의가 한창 뜨거웠을때 사람들은 이러한 내용에 굉장한 조심성을 보이고 순응을 했으나 어느순간 이것이 너무 과하다고 판단되기 시작하자 그것에 반발하는 현상이 나타나기 시작했습니다.


반면 AI는 인간을 위한 도구입니다. 인간이 가고자 하는 방향으로 맞춰 가야 하기 때문에 스스로가 실증을 느끼거나 과함을 판단하고 이를 조정할 수 있는 능력이 아직 없으며, 이러한 능력을 갖는 것을 인간이 허용하지 않을 것입니다.


여튼 내용에서 너무 벗어났는데, RVC 포크에서 말하는 모델 붕괴란 대부분 판별자의 학습속도와 생성자의 학습 속도가 붕괴됨에 의해 발생합니다. 대부분은 판별자의 학습속도를 생성자가 따라가지 못함에 따라 판별자의 능력이 과도하게 높아지고 생성자는 이러한 판별자를 속이기 위해 판별자가 원하는 정답을 되풀이하며 스스로의 가중치를 늘려갑니다.


이 경우 여러분들께서 말씀하시는 "단순하고 단조로운 모델"이 생성되는 셈이죠.


일반화의 실패는 그럼 무엇일까요?



사실 결과적으로만 본다면 두 증상은 비슷합니다. 그렇기에 더욱 일반화의 실패와 모델 붕괴의 경계가 애매하게 느껴지실 수도 있습니다. 일반화의 실패라는 것은 모델 자체의 문제이기 보단 응용/예측하는 것에 실패하는 것을 말합니다. 예를 들어 사람의 정면 모습과 측면 모습을 학습한 LORA가 있다고 가정 했을때, 대부분 정면과 측면 모두에서는 뛰어난 결과값을 가져다 주지만 한번도 학습하지 못했던 45도의 얼굴을 요구 했을때는 그것을 이행하지 못하는 상태에 놓여있음을 의미합니다.


이것을 인간의 학습과 비유를 해보자면,

앞은 둥글고 뒤는 삐죽삐죽한 과일이 있다고 가정해 보겠습니다. 어린 아이가 성인이 될 때까지 둥근면의 사진을 보여주며 그 과일에 대해 설명하고 그 과일의 맛에 대해 설명을 하면 그 사람은 그 과일에 대한 절대 판단 기준이 생깁니다. 누군가 그 과일의 뒷면을 그려보라고 해도 똑같은 둥근 모양의 과일을 그리게 될 겁니다. 반대로 누군가 그 과일의 실제 뒷모습을 보여줘도 그 사람은 그것을 받아드리는 것을 거부하게 될 겁니다. 이 사람에게 있어 그 과일의 모습은 그런게 아니기 때문이겠죠. 

대부분 우리가 말하는 과적합 (OverFitting) 상태에 놓인 모델들은 너무나도 해당 데이터에 잘 적용하고 불필요할 정도의 디테일을 학습하여 우리가 원하는 변수를 납득할 수 없는 상태에 놓여있는 것이므로 이러한 상태를 일반화 실패라 합니다.


이 두 차이를 조금 더 간단하고 쉽게 설명하자면,


여러분의 데이터셋에 "A, B, D, E" 가 들어있다고 가정했을때,

모델붕괴는 이중 판별자가 원치않는 모든 값을 제외한 "A" 라는 값 이외의 다른 값을 출력 못하는 결과를 갖게 되고,

일반화 실패란, B 와 D 사이에 들어갈 C라는 단어를 추론할 수 없는 결과를 갖게 됩니다.


물론 위의 내용은 비유에 불과하지만 이 둘의 근본적인 차이를 설명하기에는 충분하다고 생각되며, 이 내용을 여러분들에게 전달드리는 이유는 모델붕괴와 일반화 실패을 판독하고 수정하기 위해서는 이 두 차이에 대한 충분한 이해가 있어야 하기 때문입니다.


TensorBoard란 모니터링 도구에 불과합니다. 모델 붕괴와 과적합으로 인한 일반화의 실패는 일반적으로 모델을 망치는 가장 큰 요인들이기 때문에 여러분이 매번 모델을 만들때 마다 더 좋은 퀄리티, 그리고 불필요하게 허비할 시간을 줄이기 위해서는 이 두가지 문제를 최소화 하기 위해 다양한 시도와 노하우가 필요합니다.


비록 정답을 드리는 것도, 디테일한 내용을 알려 드리는 것이 아니더라도 이 두 부분의 차이점을 이해하셨다면 Tensorboard의 활용이 더욱 즐겁지 않으실까 생각됩니다.


다시한번 부족하고 미흡한 글에 좋은 글 남겨주신점 감사드리며,
3회에는 Pre-Trained Model 에 대한 다양한 내용들을 남겨드리도록 하겠습니다. 
감사합니다~!