패시브 어그레시브(Passive-Aggressive)란? AI에서 마진 부족에 맞춰 온라인으로 경계를 고치는 방법
TL;DR
패시브 어그레시브는 새 사례의 마진이 충분하면 기본 가중치를 유지하고 부족하면 현재 가중치와의 변화량을 고려해 고치는 온라인 학습 방법입니다. 맞게 분류한 사례도 마진이 작으면 갱신합니다. 기본 PA와 변화 강도를 제한·완화하는 PA-I·PA-II를 구분하며, 계속 배우는 기능이 라벨 오류나 환경 변화를 저절로 해결하지는 않습니다.
핵심 3줄 요약
- 핵심 1
정답 방향과 마진을 함께 봅니다. 맞힌 사례도 경계에 가깝다면 힌지 손실이 남습니다. - 핵심 2
변화량과 현재 손실을 절충합니다. PA-I는 갱신 계수를 제한하고 PA-II는 분모를 보정합니다. - 핵심 3
정답과 입력 기준을 유지합니다. 온라인 학습은 인터넷 연결이나 무라벨 자동 학습을 뜻하지 않습니다.
이 글에서 다룰 내용
- 패시브 어그레시브의 한 문장 정의
- 맞게 분류한 사례를 다시 고치는 숫자 예시
- 마진·힌지 손실·최소 변화의 작동 순서
- PA·PA-I·PA-II와 C·eta0의 차이
- 퍼셉트론·SVM·자기 학습과의 구분
- 증분 학습의 사용처와 평가 체크리스트
- 라벨 오류·특징 변화·점수 해석의 주의점
패시브 어그레시브를 한 문장으로 정의하면 무엇인가요?
패시브 어그레시브는 정답이 차례로 주어지는 사례에서 마진 손실을 확인하고, 기존 모델을 가능한 한 덜 바꾸면서 새 사례를 반영하는 지도 온라인 학습 알고리즘 계열입니다.
영문명은 Passive-Aggressive이며 PA라고 줄여 씁니다. 수동 공격적 학습이라는 번역도 보이지만 보안 공격을 수행하는 기술은 아닙니다. 수동과 적극적이라는 이름은 손실이 없을 때 유지하고 손실이 생겼을 때 고치는 두 동작에서 나왔습니다.
이 글은 원 논문의 이진 선형 분류와 scikit-learn 1.9.1 공식 문서를 중심으로 설명합니다. 원 논문에는 회귀와 다중 클래스 등의 확장도 있습니다. 한 가지 분류 갱신 공식을 모든 작업에 그대로 적용하는 것은 아닙니다.
한 줄 정리: PA는 이미 학습한 경계를 기준으로 새 정답을 반영하되, 얼마나 고칠지를 현재 사례의 마진 부족과 연결합니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 두 숫자 특징으로 문의를 분류한다고 가정해 보겠습니다. 설명용 입력은
[2,0]
, 정답은 +1, 현재 가중치는
[0.25,0]
입니다. 편향과 별도 규제는 없고, 가중합의 부호로 방향을 봅니다. 실제 문의 데이터의 성능 실험은 아닙니다.
현재 점수는 0.5입니다. 정답이 +1이므로 방향은 맞지만 정답과 점수를 곱한 마진도 0.5여서 목표 1에 못 미칩니다. 힌지 손실은 0.5이고 입력의 제곱합은 4입니다. 이 사례를 기본 퍼셉트론은 이미 올바른 쪽으로 보지만 PA는 추가로 고칩니다.
- 기본 PA의 갱신 계수는
0.5 / 4 = 0.125입니다. 가중치가[0.5,0]이 되어 같은 사례의 새 마진은 1입니다. - PA-I에서
C=0.05이면 계수는 0.05로 제한됩니다. 가중치는[0.35,0], 새 마진은 0.7입니다. - PA-II에서
C=0.5이면 분모가 5가 됩니다. 계수 0.1, 가중치[0.45,0], 새 마진 0.9를 얻습니다.
위 값은 Python의 Fraction으로 분수 연산을 실행해 대조했습니다. scikit-learn 추정기를 학습한 결과가 아닙니다. PA-I·PA-II는 같은 사례라도 목표 마진에 한 번에 도달하지 않을 수 있습니다. 다음 사례를 반영하면 앞선 사례의 점수도 다시 바뀝니다.
쉬운 예시: 틀린 답만 수정하는 채점과 달리, 맞았어도 판정의 여유가 부족한 사례를 골라 배점을 조정한다고 생각하면 됩니다.
왜 AI에서 패시브 어그레시브가 중요한가요?
자료를 나누어 학습하는 후보가 됩니다
문서처럼 특징 수가 많고 한꺼번에 읽기 어려운 자료에서는 작은 묶음으로 계수를 갱신하는 선형 모델을 검토합니다. 온라인은 여기서 순차적인 학습을 가리킵니다. 인터넷에 접속하지 않고 저장한 자료를 순서대로 읽는 실험에도 같은 개념을 씁니다.
정답 방향과 학습 여유를 구분합니다
맞혔다는 판정만으로 학습이 끝나지 않는다는 점을 숫자로 살펴볼 수 있습니다. 경계의 어느 쪽인지와 충분한 마진을 확보했는지는 다른 조건입니다. 다만 이런 학습 기준이 실제 업무 정확도나 안전한 자동 승인을 보장하지는 않습니다.
핵심 인사이트: PA의 구별점은 단순히 조금씩 배운다는 데 있지 않습니다. 마진 위반과 기존 모델의 변화량을 함께 써서 갱신을 정합니다.
패시브 어그레시브는 어떤 순서로 작동하나요?
1. 점수와 정답 방향의 마진을 구합니다
편향을 생략한 이진 설명에서는 가중치 w와 입력 x의 내적을 점수로 쓰고 정답 y는 -1 또는 +1입니다. 함수적 마진은
y * dot(w,x)
입니다. 이 값은 가중치 길이로 나눈 기하학적 거리와 같지 않고 확률도 아닙니다.
2. 힌지 손실이 남았는지 확인합니다
손실은
max(0, 1 - y * dot(w,x))
입니다. 마진이 1 이상이면 손실이 0입니다. 여기서 다루는 별도 규제·평균화 없는 기본 갱신은 가중치를 유지합니다. 마진이 양수여도 1보다 작으면 손실이 남습니다.
3. 현재 가중치에 보정량을 더합니다
보정은
w_new = w + tau * y * x
형태입니다. 기본 PA는 현재 사례의 손실을 없애는 조건에서 기존 가중치와의 제곱 거리를 최소화합니다. 입력이 0이 아닌 예시에서 tau는 손실을 입력의 제곱합으로 나눈 값입니다. 모든 과거 사례의 손실을 동시에 0으로 만드는 조건은 아닙니다.
실전 팁: 수식과 API 기본값을 나누어 읽으세요. 위 예시는 편향을 생략했습니다. 실제 구현의 편향·표본 가중치·규제를 켜면 그 설정까지 확인합니다.
PA-I·PA-II와 주요 설정은 무엇을 뜻하나요?
PA-I는 갱신 계수에 상한을 둡니다
기본 PA가 한 사례를 강하게 따라가면 잘못 붙인 라벨에도 크게 흔들릴 수 있습니다. PA-I의 계수는
min(C, loss / norm2)
입니다. C는 양수이며 계수 tau의 상한이지 가중치 벡터 변화량 전체의 길이를 직접 제한하는 숫자는 아닙니다.
PA-II는 분모로 갱신을 완화합니다
PA-II의 계수는
loss / (norm2 + 1/(2*C))
입니다. C가 작으면 추가되는 분모가 커져 보정이 약해집니다. PA-I처럼 tau가 반드시 C 이하가 되는 규칙은 아닙니다. 두 방식은 남은 손실을 받아들이는 방식이 다릅니다. 같은 C를 넣었다고 같은 결과를 기대하지 않습니다.
현재 공식 가이드는 SGDClassifier 구성을 안내합니다
확인한 분류 가이드는
loss="hinge"
,
penalty=None
,
learning_rate="pa1"
조합을 PA-I로 안내합니다. PA-II는
learning_rate="pa2"
를 씁니다. 이때
eta0
가 원 논문의 C이며, 예시값
eta0=1.0
을 모든 업무의 최적값으로 보지 않습니다.
버전 1.8 릴리스 노트는
PassiveAggressiveClassifier
와
PassiveAggressiveRegressor
를 사용 중단 예고 대상으로 표시하고 1.10에서 제거할 예정이라고 설명합니다. 확인한 1.9.1 문서에서는 새 예시를 SGD 계열로 안내합니다. 오래된 클래스의 C를 새 클래스의 alpha로 옮기는 식으로 추측하지 않습니다.
추가 학습과 반복 상한은 다른 설정입니다
partial_fit
은 전달한 자료를 한 에폭 학습합니다. 첫 호출에는 전체 클래스 목록인
classes
가 필요하고 첫 묶음에 모든 범주가 들어 있을 필요는 없습니다.
max_iter
를 올려도 이 호출이 여러 에폭으로 바뀌지 않으며, 반복·종료·평가는 호출하는 쪽에서 관리합니다.
패시브 어그레시브와 헷갈리는 용어는 무엇이 다른가요?
퍼셉트론은 기본 갱신 조건이 다릅니다
퍼셉트론의 기본 무규제 규칙은 틀렸거나 경계 위인 사례를 고칩니다. PA는 맞게 분류됐어도 목표 마진에 못 미치면 고칩니다. 일정한 학습률과 마진 부족에서 계산한 계수도 구별합니다. 두 모델 모두 선형이라고 같은 학습법은 아닙니다.
SVM과 SGD는 같은 이름의 다른 표현이 아닙니다
SVM과 PA는 마진을 쓰지만 학습 문제를 구성하는 방식이 다릅니다. PA는 매번 기존 가중치 가까이에서 새 사례를 반영합니다. SGD는 최적화 방법의 이름이며, SGDClassifier도 손실·규제·갱신 방식을 고르므로 클래스 이름만 보고 PA라고 부르지 않습니다.
자기 학습과 드리프트 대응도 구분합니다
자기 학습은 미라벨 자료에 모델의 예측 라벨을 붙여 다시 학습하는 반지도 방법입니다. 여기서 PA는 정답 피드백을 받아 갱신합니다. 새 정답을 계속 반영할 수 있다는 사실만으로 드리프트를 감지하거나 잘못된 라벨을 걸러낸다고 해석하지 않습니다.
비교 정리: 퍼셉트론과 PA는 갱신 조건, SVM과 PA는 학습 목표의 구성, 자기 학습과 PA는 정답을 얻는 절차에서 구분합니다.
실전에서는 어디에 쓰이나요?
문서 분류의 증분 후보로 검토합니다
스팸 여부나 문의 범주처럼 정답이 나중에 확정되는 분류를 시험할 수 있습니다. 먼저 문서를 고정된 숫자 표현으로 바꾸고 정답이 붙은 묶음을 전달합니다. 문장을 생성하는 LLM의 대체물이 아니며 희소 입력의 메모리와 전처리까지 함께 봅니다.
한 번에 읽기 어려운 자료를 나눠 처리합니다
증분 추정기는 전체 자료를 한꺼번에 메모리에 올리지 않는 학습의 구성 요소입니다. 자료 읽기·특징 추출·학습까지 나누어 설계해야 합니다. 분류기만 작은 묶음으로 불러도 앞 단계가 원문 전체를 적재한다면 전체 작업의 메모리가 작다고 할 수 없습니다.
패시브 어그레시브를 적용할 때 어떤 순서로 확인하나요?
1. 라벨과 평가 시점을 먼저 고정합니다
예측할 때 알 수 있었던 특징과 나중에 확인된 정답을 구분합니다. 기간별 성능을 본다면 새 묶음을 학습하기 전 예측과 오류를 남기고 정답이 확정된 뒤 갱신합니다. 최종 테스트 자료를 반복 갱신에 다시 넣고 독립 성능이라고 보고하지 않습니다.
2. 입력 표현과 전처리를 같은 기준으로 유지합니다
특징 열의 순서와 뜻이 바뀌면 기존 가중치와의 대응이 깨집니다. 스케일링 통계나 어휘표를 바꾸는 일도 모델 갱신과 함께 설계합니다. 교차 검증에서는 각 훈련 폴드 안에서 전처리를 학습하고 검증·테스트에는 그 변환만 적용합니다.
3. 갱신 강도와 오류 유형을 함께 비교합니다
PA-I·PA-II의 강도 후보를 같은 평가 경계에서 비교합니다. 정확도 외에 드문 범주의 재현율·오탐·기간별 손실과 처리 비용을 남깁니다. 특정 설정이 한 묶음을 잘 맞혔더라도 이전 유형의 분류가 나빠졌는지 따로 봅니다. 복원할 수 있도록 특징 기준과 계수·클래스·버전을 함께 저장합니다.
사용할 때 무엇을 주의해야 하나요?
기본 PA의 강한 보정은 라벨 오류에도 작동합니다. 원 논문은 잘못된 한 사례가 가중치를 잘못된 방향으로 크게 바꾸는 문제를 설명합니다. PA-I·PA-II는 이를 완화하려는 변형이지 오류 라벨을 찾아 삭제하는 필터가 아닙니다. 정답의 출처와 검수 절차를 남깁니다.
입력의 크기와 0벡터를 확인합니다. 갱신 계수에 입력의 제곱합이 들어가므로 숫자 단위가 중요합니다. 모든 특징이 0이고 편향도 없는 사례는 가중치만 바꿔 분리할 수 없습니다. 단순 수식을 그대로 나누지 말고 빈 문서·누락 특징과 구현의 처리 방식을 점검합니다.
결정 점수는 확률이 아닙니다. 힌지 손실을 쓰는 구성은
decision_function
으로 점수를 얻지만 그 값을 정답 확률로 읽지 않습니다. 이 구성에는 기본
predict_proba
가 없습니다. 확률이 필요한 업무는 별도 보정과 독립 검증을 설계합니다.
새 클래스를 조용히 덧붙이지 않습니다. 첫 증분 호출의 전체 범주 목록과 실제 운영 라벨이 일치하는지 확인합니다. 새로운 범주가 생기거나 특징 의미가 바뀌면 학습 설계를 다시 검토합니다. 추정기가 오류 없이 실행됐다는 사실과 새로운 과제를 배웠다는 사실은 다릅니다.
주의: 온라인 갱신을 운영에 연결하기 전 사람 검토·중단 조건·이전 모델 복구를 마련하세요. 새 사례를 반영했다는 성공을 모든 과거 유형의 성능 향상으로 넓히지 않습니다.
자주 묻는 질문
Q1. 이미 맞게 분류한 사례도 학습하나요?
그렇습니다. 정답 방향의 마진이 양수여도 1에 못 미치면 힌지 손실이 남습니다. 예시의 점수 0.5가 그 경우입니다. 단순히 오분류 여부만 보고 갱신 여부를 정하지 않습니다.
Q2. 수동이라는 말은 사람이 직접 조작한다는 뜻인가요?
아닙니다. 기본 갱신에서 손실이 0일 때 가중치를 그대로 두는 동작을 뜻합니다. 정답 라벨의 준비·검수는 별도 문제이며 이름만으로 수동 운영이나 보안 공격을 가리키지 않습니다.
Q3. PA-I의 C를 크게 하면 항상 정확해지나요?
C를 키우면 한 사례를 더 강하게 반영할 여지가 생기지만 잘못된 라벨의 영향도 커질 수 있습니다. 학습 사례의 마진과 새 자료의 성능을 구분해 평가합니다. 기본 예시에서는 C가 갱신 계수의 상한입니다.
Q4. PA-II도 갱신 계수가 C 이하인가요?
아닙니다. PA-II는 입력 제곱합에 C로 정한 항을 더한 분모를 사용합니다. 손실의 크기에 따라 계수가 C보다 커질 수 있으므로 PA-I의 상한 규칙을 그대로 적용하지 않습니다.
Q5. 인터넷 없이도 온라인 학습을 하나요?
가능합니다. 저장한 자료를 정답과 함께 순서대로 읽어도 온라인 학습입니다. 여기서 온라인은 학습 자료의 제공과 갱신 방식이지 인터넷 연결 상태가 아닙니다.
Q6. partial_fit 한 번이면 수렴한 모델인가요?
전달한 묶음을 한 번 학습했다는 뜻입니다. 종료와 품질을 보장하지 않습니다. 전체 클래스 목록·특징 기준·평가 자료를 유지하고 추가 호출 횟수와 기간별 오류를 별도로 관리합니다.
출처
마무리
패시브 어그레시브는 현재 사례의 마진 부족을 보고 기존 가중치에 가까운 보정을 구하는 온라인 학습 방법입니다. 기본 PA의 목표 마진, PA-I의 계수 상한, PA-II의 분모 보정을 구분하면 맞힌 사례도 갱신하는 이유가 분명해집니다.
처음에는 작은 배열에서 점수·손실·보정량을 나란히 확인하세요. 이후 실제 라벨과 고정된 특징으로 기준 모델을 비교하고 기간별 오류를 남깁니다. 자동 갱신을 많이 반복하기 전에 입력 기준과 정답의 신뢰성부터 지키는 것이 중요합니다.
