전역 필터로는 부족하다, CALM이 보여준 안전한 이미지 생성의 조건

하나의 불안전 방향으로 모든 유해 프롬프트를 막을 수 있다는 가정이 왜 무너지는지, 그리고 프롬프트마다 맞는 짝을 찾아 교정하는 CALM의 지역 교정 방식이 무엇을 바꾸는지 해설합니다.

원문 논문 보기
'전역 필터로는 부족하다, CALM이 보여준 안전한 이미지 생성의 조건' 기사 커버 이미지

오늘 다룰 연구는 Keep It CALM: Analyzing the Limits of Global Unsafety in Text-to-Image Generation으로, arXiv에 공개된 training-free T2I 안전 연구이며 식별자는 2610.02300입니다. 이 연구가 내세우는 주장은 하나의 전역 불안전 신호를 모든 프롬프트에 똑같이 적용하는 방식에는 커버리지와 선택성 사이의 피할 수 없는 상충이 존재하며, 프롬프트마다 짝을 맞춘 반사실 교정으로 바꾸면 이 상충을 완화할 수 있다는 것입니다. 원문 링크는 제목 아래에 걸려 있습니다.

안녕하세요, 패트릭입니다. 저는 이 논문을 읽으면서 처음에는 고개를 갸웃했습니다. training-free 안전장치라는 말이 워낙 익숙해서, 이번에도 방향 하나를 빼주는 가벼운 변형 정도로 생각했기 때문입니다. 그런데 몇 페이지를 따라가다 보니 질문이 달라졌는데, 왜 우리는 지금까지 하나의 불안전 방향이 모든 위험을 설명할 수 있다고 믿었을까 하는 점이었습니다. 여러분도 이미지 생성 서비스를 써보면서 비슷한 경험을 한 적이 있을 겁니다. 분명히 이상한 그림이 나올 것 같은 문장을 넣었는데 그대로 통과되기도 하고, 반대로 전혀 문제없어 보이는 문장이 갑자기 막히기도 하죠. 저는 그 어긋남이 단순한 튜닝 실패가 아니라 구조에서 온다고 봅니다.

같은 지우개로 모든 낙서를 지울 수 있을까

학급 칠판 앞에 커다란 지우개 하나만 놓여 있다고 상상해 보시죠. 낙서의 내용은 제각각인데 지우개는 하나뿐이라서, 선생님은 그 지우개로 낙서마다 같은 동작을 반복합니다. 언뜻 보면 효율적입니다. 도구를 바꿀 필요도 없고, 매번 같은 규칙을 적용하면 되니까요. 그런데 낙서 중에는 연필로 살짝 쓴 것도 있고, 유성 매직으로 깊게 밴 것도 있으며, 칠판 구석에 작게 숨겨둔 것도 있습니다. 그렇다면 하나의 지우개질로 이 모두가 똑같이 지워질까요. 아마 어떤 낙서는 지워지지만, 어떤 낙서는 번지기만 하고, 어떤 낙서는 손도 대지 못한 채 남을 겁니다.

Training-free T2I 안전장치가 오랫동안 해온 일이 바로 이와 비슷합니다. 모델 가중치를 다시 학습시키지 않은 채, unsafe direction이나 global toxic subspace 같은 전역 안전 신호를 재사용하면서 모든 프롬프트에 넓게 적용해 왔기 때문입니다. 저희가 새로운 AI 아키텍처를 볼 때도 benchmark 숫자만 보지는 않습니다. 실제로 무엇이 바뀌었고, 그 변화가 시스템에서 어떤 비용 구조를 만드는지를 함께 봅니다. 이 논문이 저에게 반가웠던 이유도 여기에 있습니다. 전역 신호가 얼마나 막아내는지만 묻지 않고, 그 신호가 어떤 기하를 가정하고 있으며 그 가정이 언제 깨지는지를 따졌기 때문입니다.

전역 불안전 가정은 도대체 무엇을 믿고 있나

전역 불안전 가정이라는 말을 풀어보면 생각보다 단순합니다. 임베딩 공간 어딘가에 위험한 의미들이 모여 있는 방향이 있고, 그 방향 성분을 빼주면 어떤 프롬프트든 더 안전해진다는 믿음이죠. 폭력적인 묘사든, 성적 묘사든, 다른 범주의 위험이든, 결국은 같은 방향을 공유한다는 가정이 깔려 있기 때문입니다. 이 가정이 성립한다면 엔지니어링은 정말 편해집니다. 위험 범주마다 따로 손댈 필요 없이, 하나의 벡터나 하나의 작은 부분공간만 관리하면 되니까요.

문제는 그다음입니다. 위험이라는 말이 실제로는 하나의 질감이 아니라는 점입니다. 제가 이 논문에서 가장 흥미롭게 본 부분은 연구진이 이 믿음을 구호로 비판하지 않고 기하로 점검했다는 대목입니다. 통제된 기하 분석이라는 표현이 괜히 들어간 게 아닙니다. 유해한 의미들이 과연 서로 뭉쳐 있는지, 작은 부분공간이 그것들을 얼마나 덮는지, 그리고 그 덮개를 넓힐 때 정상 프롬프트가 얼마나 끌려 들어가는지를 단계별로 재구성했기 때문입니다. 생각해보면 사람도 비슷하게 배웁니다. 하나의 정답으로 모든 오답을 설명하려는 시도가 언제 통하고 언제 어긋나는지를, 사례를 모아보면서 감을 잡죠. 이 논문은 그 감을 측정 가능한 형태로 바꿨습니다.

그렇다면 이 흐름은 어디에서 끊을 수 있을까요. 그 이야기는 CALM 부분에서 다시 다루겠습니다.

전역 벡터 일괄 적용과 프롬프트별 지역 교정을 대비한 개념도
전역 벡터 일괄 적용과 프롬프트별 지역 교정을 대비한 개념도

좁은 공간은 왜 위험을 다 담지 못할까

여기서 재미있는 질문이 생깁니다. 위험한 프롬프트들을 모아보면 정말로 서로 닮았을까요. 직관적으로는 그럴 것 같습니다. 어감 자체가 거칠고 자극적이니까요. 하지만 임베딩 공간에서 보면 이야기가 달라집니다. 폭력을 암시하는 문장, 성적인 맥락을 담은 문장, 혐오를 담은 문장은 서로 다른 방향으로 흩어져 있고, 표현 방식에 따라서도 위치가 크게 바뀌기 때문입니다. 은유로 돌려 말한 문장과 노골적으로 쓴 문장은 같은 범주라도 거리가 멉니다.

그래서 compact한 unsafe subspace, 즉 작고 조밀한 불안전 부분공간은 이런 다양성을 담지 못합니다. 작은 그물로는 넓게 흩어진 물고기를 다 건질 수 없다는 말과 같습니다. 연구진이 보여준 것도 바로 이 지점인데요. 부분공간을 작게 유지하면 계산은 가볍고 정상 문장에 미치는 영향도 적지만, 이질적인 유해 의미를 spanning하는 데 실패합니다. 그래서 어떤 위험은 잡히고 어떤 위험은 그대로 빠져나가는 일이 반복되죠. 저는 이 숫자보다 그 뒤의 구조가 더 중요하다고 봅니다. 실패가 무작위가 아니라, 공간이 좁기 때문에 생기는 체계적인 공백이라는 점이니까요.

실제 시스템 관점에서 보면 다음 질문이 바로 생깁니다. 그렇다면 공간을 넓히면 되지 않느냐는 것입니다. 언뜻 보면 합리적인 처방이지만, 이 처방에는 대가가 따릅니다.

넓게 모으면 왜 착한 프롬프트가 다칠까

안전팀의 입장에서 생각해 보시죠. 밤사이 신고가 들어왔는데, 기존 필터가 놓친 변형 프롬프트가 계속 발견됩니다. 가장 빠른 대응은 필터를 넓히는 것으로, 불안전 신호를 더 많이 모으고 제거 강도를 조금 올립니다. 실제로 유해 차단율은 올라갑니다. 그런데 며칠 뒤 다른 민원이 들어오기 시작합니다. 의학 정보를 묻는 그림 요청이 막히고, 역사 다큐멘터리용 삽화 요청이 과하게 순화되며, 예술 수업 자료가 의도치 않게 변형된다는 보고가 쌓이기 때문입니다.

이 논문이 지적하는 두 번째 현상이 바로 이것입니다. Broader aggregation, 즉 불안전 신호를 넓게 모으는 방식은 커버리지를 늘려주지만, safety-adjacent benign prompt를 점점 더 많이 왜곡합니다. 안전 경계에 가까이 있는 정상 프롬프트가 문제인데요. 겉보기에는 민감한 단어를 포함하고 있어서 위험해 보이지만, 문맥 전체로 보면 전혀 유해하지 않은 경우입니다. 전역 제거는 문맥을 보지 않기 때문에, 이런 프롬프트까지 같은 방향으로 밀어냅니다. 표면적으로 보면 단순합니다. 많이 막으면 많이 안전해진다, 하지만 실제로는 그렇지 않습니다. 많이 막을수록 막지 말아야 할 것까지 함께 밀려나기 때문입니다.

여기서는 조금 조심해서 읽을 필요가 있습니다. 이 결과가 모든 안전장치가 무용하다는 뜻은 아니기 때문입니다. 전역 신호가 특정 범주 안에서는 꽤 잘 동작할 수 있습니다. 다만 범주가 달라지고 표현이 달라질수록, 하나의 신호로 감당하기 어려워진다는 점을 보여줄 뿐입니다. 저는 그래서 이 부분을 연구실 점수 이상으로 평가했습니다. 운영의 아침을 지켜주는 장치이기 때문입니다. 필터를 넓혔다가 정상 사용자를 잃는 일은 현장에서 너무 자주 반복되니까요.

임베딩 공간에서 작은 평면이 다양한 유해 프롬프트 군집을 놓치는 기하 시각화
임베딩 공간에서 작은 평면이 다양한 유해 프롬프트 군집을 놓치는 기하 시각화

CALM은 어디에서 다르게 출발했을까

그렇다면 CALM은 무엇을 다르게 했을까요. 이름에 들어간 counterfactual과 local이라는 두 단어가 이미 답을 품고 있습니다. 모든 프롬프트에 같은 제거를 적용하는 대신, 각 프롬프트가 처한 상황을 따로 묻는 방식으로 바꿨기 때문입니다. 비유하자면 학급 전체에 같은 벌점을 주는 대신, 각자의 행동을 따로 보고 그에 맞는 지도를 하는 셈이죠. 일괄 처리가 아니라 맞춤 교정입니다.

CALM이 내세우는 대체안은 prompt-local counterfactual correction입니다. matched unsafe-benign anchor를 사용한다는 설명이 붙는데요. 말 그대로 유해 사례와 정상 사례를 짝지어 놓고, 지금 들어온 프롬프트가 어느 쪽에 가까운지를 따져보는 구조입니다. 전역 신호가 하늘에서 내려온 하나의 정답이라면, 앵커 방식은 현장에서 꺼내 보는 대조표에 가깝습니다. 이 차이는 생각보다 중요합니다. 기준이 고정되어 있으면 프롬프트가 바뀌어도 판단이 바뀌지 않지만, 짝을 맞춰 비교하면 프롬프트마다 판단의 근거가 달라지기 때문입니다.

(참고로 앵커라는 말은 여기서 거창한 학습 장치를 뜻하지 않습니다. 비교 기준이 되는 대표 사례 묶음 정도로 이해하시면 됩니다. 논문 흐름상 training-free라는 성격도 그대로 유지됩니다.)

저는 여기서 조금 의심했습니다. 짝을 맞춘다는 말이 듣기에는 좋은데, 실제로는 또 다른 전역 기준을 만드는 게 아닐까 하는 점이었습니다. 그런데 이어지는 설계를 보면 그 걱정이 조금 누그러집니다. 모든 프롬프트를 같은 잣대로 재는 게 아니라, 프롬프트마다 작동하는 위험 범주를 따로 골라내기 때문입니다.

맞는 짝을 찾아 교정하는 일

CALM의 동작은 단계별로 따라가면 분명해집니다. 먼저 들어온 프롬프트가 어떤 위험 범주와 관련 있는지를 판단하는 routing 과정이 있습니다. 폭력 쪽 문제인지, 성적 맥락 쪽 문제인지, 아니면 둘 다 해당하지 않는지를 가릅니다. 이 과정이 중요한 이유는 뒤의 교정이 막연하게 이루어지지 않도록 범위를 정해주기 때문입니다. 다시 말해, 관련 없는 위험까지 끌어들여 과잉 교정하는 일을 막아줍니다.

다음으로는 matched anchor를 이용한 교정이 이어집니다. 유해 앵커와 정상 앵커라는 한 쌍을 놓고 보면, 두 사례 사이에는 위험을 가르는 방향이 어렴풋이 드러납니다. CALM은 이 방향을 이용해 지금 프롬프트의 표현을 안전한 쪽으로 조금씩 옮깁니다. 이때 전체 문장을 뭉뚱그려 옮기지 않고, 문제가 되는 토큰 표현을 중심으로 다룬다는 점이 뒤에서 다시 나옵니다. 같은 모델에 같은 질문을 던져도 결과가 크게 달라질 수 있다는 것을 경험으로 알고 있죠. 그래서 이런 지역 교정은 질문의 결을 살리면서 위험한 부분만 손보는 데 어울립니다.

이 방식이 마음에 드는 이유는 비교의 기준이 매번 달라진다는 데 있습니다. 전역 방식에서는 어제 통과된 문장이 오늘도 같은 이유로 통과되거나 막힙니다. 반면 앵커 기반 교정에서는 프롬프트의 내용과 맥락에 따라 참조점이 바뀌므로, 비슷한 단어를 썼더라도 문맥이 다르면 다른 결과가 나올 여지가 생깁니다. 물론 이 대목에서 곧바로 드는 의문이 있습니다. 좋은 건 알겠는데, 이걸 실제로 어떻게 서빙할까요. 라우팅과 앵커 비교가 매 요청마다 붙는다면 지연이나 처리량이 걱정될 수밖에 없습니다. 논문이 system 비용을 깊게 다루지는 않지만, 적어도 개념적으로는 전체 재학습보다는 가벼운 추론 단계 개입에 가깝습니다. 저는 이 지점을 앞으로 보고 싶은 것으로 남겨두었습니다. 아이디어는 설득적인데, 운영 숫자가 아니라 운영 감각으로 볼 때 병목이 어디에서 생길지가 궁금하기 때문입니다.

유해 앵커와 정상 앵커 쌍으로 프롬프트 토큰을 안전한 쪽으로 이끄는 반사실 교정 단계도
유해 앵커와 정상 앵커 쌍으로 프롬프트 토큰을 안전한 쪽으로 이끄는 반사실 교정 단계도

위반한 토큰만 건드리는 이유는 무엇일까

같은 반 아이들 모두가 떠들었다고 해서 전원에게 벌점을 주는 담임은 좋은 담임이 아닙니다. 실제로 소란을 피운 아이를 찾고, 그 아이와 대화를 해야 하죠. CALM의 토큰 단위 편집도 같은 정신을 따릅니다. 프롬프트 전체를 위험하다고 낙인찍는 대신, violating token representation만 골라서 minimally edit합니다. 위반한 토큰의 표현만 안전한 쪽으로 살짝 옮긴다는 뜻입니다.

이 선택이 왜 중요한지는 정상 프롬프트의 운명을 떠올리면 분명해집니다. 긴 프롬프트 안에는 대개 위험과 무관한 묘사가 대부분을 차지합니다. 배경, 화풍, 구도, 인물 배치가 그런 예인데요. 전역 제거는 이런 부분까지 함께 밀어내기 때문에 그림의 분위기가 통째로 바뀌곤 합니다. 반면 위반 토큰만 건드리면 나머지 묘사는 그대로 살아남습니다. 사용자가 원한 구도는 유지되면서, 문제가 되는 뉘앙스만 누그러지죠. 운영 측면에서 보면 이 차이는 상당히 큽니다. 창작 도구의 안전장치는 막는 능력만큼 살려내는 능력으로 평가받기 때문입니다.

그렇다면 위반 여부는 어떻게 판단할까요. 여기서 앞서 말한 active unsafe category로의 routing이 다시 등장합니다. 프롬프트마다 작동하는 위험 범주가 정해지면, 그 범주의 관점에서 어긋난 토큰이 가려집니다. 관련 없는 범주의 잣대를 들이대지 않으니 과잉 개입이 줄어듭니다. 저는 이 연결이 이 연구에서 가장 짜임새 있게 본 대목이라고 봅니다. 라우팅이 따로 놀고 편집이 따로 노는 게 아니라, 라우팅이 편집의 범위를 정해주면서 전체가 하나의 판단처럼 움직이기 때문입니다.

남아 있는 잔향을 지우는 마지막 손질

그런데 표현을 옮겼다고 해서 위험이 완전히 사라질까요. 꼭 그렇지는 않습니다. 문장 전체의 방향을 틀었더라도, 원래 위험과 같은 쪽을 바라보는 잔여 성분이 희미하게 남을 수 있기 때문입니다. 향수를 뿌린 방에서 환기를 해도 커튼에 냄새가 배어 있는 것과 비슷합니다. 큰 흐름은 바뀌었는데, 작은 잔향이 남아 있는 상태입니다.

CALM은 그래서 한 단계를 더 둡니다. positively aligned unsafe residual component를 suppress한다는 설명이 바로 그것인데요. 어려운 말이지만 내용은 직관적입니다. 교정 뒤에도 여전히 불안전한 쪽과 같은 방향을 가리키는 찌꺼기가 있다면, 그 부분을 눌러준다는 뜻입니다. 이 과정이 없다면 겉으로는 순화된 것처럼 보여도, 생성 단계에서 원래 위험이 되살아날 여지가 남습니다. 반대로 이 과정을 너무 세게 하면 정상적인 묘사까지 밋밋해질 수 있으니, 최소한으로 누르는 감각이 중요합니다.

개인적으로 인상 깊었던 점은, 연구진이 교정을 한 번의 큰 동작으로 보지 않고 두 겹의 작은 동작으로 나눴다는 것입니다. 먼저 위반 토큰을 안전한 쪽으로 옮기고, 그 뒤에 남은 정렬을 눌러주는 순서입니다. 이렇게 나누면 각 단계가 무엇을 담당하는지가 분명해집니다. 앞 단계가 방향을 바꾸는 일이라면, 뒷 단계는 잔향을 지우는 일입니다. 물론 실제 구현에서 두 단계가 얼마나 깔끔하게 분리되는지는 따져볼 여지가 있습니다. 하지만 적어도 개념적으로는 전역 제거처럼 한 번에 밀어내는 방식보다 훨씬 설명하기 쉽습니다. 어디를 얼마나 건드렸는지가 드러나니까요.

넓은 필터가 안전 경계에 가까운 정상 프롬프트를 끌어당겨 왜곡하는 전후 다이어그램
넓은 필터가 안전 경계에 가까운 정상 프롬프트를 끌어당겨 왜곡하는 전후 다이어그램

숫자가 아니라 구조를 봐야 하는 이유

이제 평가 이야기를 꺼낼 차례입니다. 논문이 보고하는 큰 그림은 이렇습니다. 넓은 평가에서 CALM은 global removal과 비교했을 때 유해 콘텐츠 억제를 높이면서도 benign utility를 함께 지켰다는 것입니다. 말이 쉽지, 이 두 가지를 동시에 잡기는 어렵습니다. 보통은 한쪽을 잡으면 다른 쪽이 미끄러지기 때문입니다. 그래서 저는 이 문장을 점수 자랑으로 읽지 않았습니다. 전역 방식의 상충을 지역 교정이 얼마나 비켜가는지를 보여주는 증거로 읽었죠.

여기서 한 가지 짚고 넘어갈 점이 있습니다. broad evaluation이라는 말이 구체적인 숫자 없이 등장할 때는 해석에 주의해야 합니다. 어떤 범주를 얼마나 넓게 덮었는지, 정상 효용은 어떤 작업으로 쟀는지에 따라 결론의 무게가 달라지기 때문입니다. 이 글에서 개별 수치를 길게 나열하지 않는 이유도 그 때문입니다. 증거 자료가 방향과 구조를 전해주고, 세부 수치는 원문에 맡기는 편이 더 정직하다고 봅니다. 다만 방향 자체는 분명합니다. 막는 힘과 살리는 힘이 함께 움직였다는 것입니다. 전역 방식이 한쪽을 올리면 다른 쪽을 내리던 모습과는 결이 다릅니다.

그렇다면 이 결과를 어디까지 믿어야 할까요. 저는 절충적으로 봅니다. 이 결과는 CALM이라는 특정 설계가 상충을 완화할 수 있음을 보여주지만, 모든 전역 신호가 쓸모없다는 증명은 아닙니다. 특정 범주 안에서는 전역 신호도 충분히 경제적인 선택일 수 있기 때문입니다. 게다가 현실의 위험은 계속 변형되고, 앵커가 덮지 못한 새로운 표현이 언제든 등장할 수 있습니다. 그럼에도 이 평가가 주는 메시지는 남습니다. 안전을 하나의 신호로 뭉뚱그릴수록 잃는 것이 생기고, 프롬프트의 자리에서 따져 물을수록 지키는 것이 생긴다는 것입니다.

문장 전체가 아니라 위반 토큰만 골라 편집하는 토큰 단위 시각화
문장 전체가 아니라 위반 토큰만 골라 편집하는 토큰 단위 시각화

안전한 생성을 어디까지 믿을 수 있을까

이야기를 처음의 질문으로 되돌려 보시죠. 하나의 지우개로 모든 낙서를 지울 수 있을까, 하는 물음이었습니다. 이 연구가 주는 답은 꽤 솔직합니다. 작은 지우개는 닿지 않는 곳이 생기고, 큰 지우개는 지우지 말아야 할 것까지 지웁니다. 그래서 CALM은 지우개의 크기를 키우는 대신 지우는 방식을 바꿨습니다. 누구의 낙서인지 보고, 문제가 되는 획만 골라 고치고, 남은 번짐까지 닦아내는 순서입니다.

실제 시스템 관점에서 보면 다음 질문이 바로 생깁니다. 그렇다면 매 요청마다 이런 지역 판단을 붙이는 게 감당될까, 하는 점입니다. 라우팅이 틀리면 어떻게 될지, 앵커가 오래되면 어떻게 갈아줄지, 새로운 위험 표현에는 어떻게 반응할지도 함께 물어야 합니다. 논문이 모든 답을 주지는 않습니다. 하지만 질문의 위치를 옮겼다는 것만으로도 의미가 있습니다. 어떻게 더 세게 막을까에서, 어떻게 더 정확히 맞추고 덜 해칠까로 바뀝니다.

저는 앞으로 이런 후속을 보고 싶습니다. 앵커를 어떤 주기로 갈아주는지, 라우팅 실패가 전체 결과에 얼마나 번지는지, 그리고 창작 현장에서 자주 등장하는 경계선 프롬프트들이 실제로 얼마나 덜 왜곡되는지입니다. 안전 연구는 막았다는 선언보다, 막고 나서 무엇을 살려냈는지로 기억되기 때문입니다.

그렇다면 남는 질문은 하나입니다. 우리가 만드는 생성 도구는 위험을 얼마나 잘 막는 도구일까, 아니면 의도를 얼마나 잘 살리는 도구일까. CALM은 그 두 질문을 함께 붙잡으려는 시도였고, 저는 그 시도 자체가 이미 다음 논의를 열었다고 봅니다.

유해 억제와 정상 효용이 함께 유지되는 균형 개념 일러스트
유해 억제와 정상 효용이 함께 유지되는 균형 개념 일러스트

참고 자료

  1. Keep It CALM: Analyzing the Limits of Global Unsafety in Text-to-Image Generation · arxiv.org

    리뷰 원문