Loading the catalog…
Loading the catalog…
논문 리뷰: Federated Class-Incremental Learning (GLFC, CVPR 2022) 1. 한 줄 요약 연합학습(FL)에 클래스 증분 학습(CIL)을 처음 결합한 FCIL 문제를 정의하고, 두 종류의 망각을 함께 보정하는 GLFC(Global-Local Forgetting Compensation) 를 제안한 논문이다. (파괴적인 망각) 로컬 망각 : 한 클라이언트 안에서 새 클래스 데이터는 많고 옛 클래스 exemplar는 적어서 생기는 망각 글로벌 망각 : 클라이언트마다 가진 옛 클래스가 달라서(non-i.i.d.) 생기는 이질적 망각 CIL 기법에 FL을 얹은 baseline 대비 평균 정확도가 4.4~15.1%p 높다. 2. 연구 목적과 문제 설정 2.1 동기 기존 FL은 클래스 집합이 고정되어 있다고 가정한다. 현실에서는 클라이언트가 새 클래스를 스트리밍으로 수집하고, 저장 용량이 작아 옛 데이터를 다 못 들고 있으며, 새 클라이언트가 중간에 합류한다. 논문의 예시는 코로나 변종이 새 클래스로 등장하는 병원 간 진단 모델이다. 새로 합류한 병원은 옛 질병 데이터가 거의 없다. (논문에서 설명한 코로나 예제) CIL과 FL을 단순 결합하면 두 가지 문제가 생긴다. 서버가 새 클래스가 언제, 어디서 들어오는지 알아야 하는데, 이는 프라이버시 위반이다. (엔트로피를 통해서 해결 클라이언트마다 망각 양상이 달라서 로컬 CIL만으로는 부족하다. (로컬 CIL, 글로벌 CIL 분리) 2.2 FCIL 정의 태스크 스트림 $\mathcal{T}={\mathcal{T}^t}_{t=1}^{T}$. 첫 번째 학습(태스크 1), 두 번째 학습(태스크 2)-> 지속적으로 학습 태스크 $t$에는 새 클래스 $C^t$개가 있고, 옛 클래스는 $C^p=\sum_{i<t}C^i$개다. 현재가 $t$번째 학습 시점이라면, $C^t$는 지금 새롭게 배워야 할 질병(클래스)의 개수를 뜻합니다. 반면 $C^p$는 기호($\sum$)가 의미하듯, 이전에 학습했던 모든 태스크($i<t$)의 질병 개수를 다 더한 값, 즉 '누적된 옛날 질병 수'를 의미합니다 클라이언트 $l$은 새 데이터 $\mathcal{T}^t_l$과 exemplar memory $\mathcal{M}_l$을 갖고, 클래스 분포 $P_l$은 클라이언트마다 다르다. $l$번째 병원(예: 서울병원)이 이번 단계에서 새로 수집한 데이터가 $T_l^t$이고, 과거의 지식을 잃어버리지 않기 위해 1번 주제에서 다루었던 그 소량의 보관소가 바로 $M_l$ 클라이언트는 매 태스크에서 세 종류로 나뉜다. 종류 새 데이터 옛 exemplar 의미 $S_o$ 없음 있음 이번 태스크 데이터를 못 받은 기존 클라이언트 $S_b$ 있음 있음 새 데이터와 옛 exemplar를 모두 가진 클라이언트 $S_n$ 있음 없음 새로 합류한 클라이언트 태스크 개수, 분포, 새 클래스 도착 시점, 클라이언트 합류 시점은 모두 사전 정보가 없다. 3. 제안 방법 (GLFC) 3.1 로컬 망각 보정 (a) 기본 손실 $$ \mathcal{L} {CE}=\frac{1}{b}\sum {i=1}^{b}\mathcal{D} {CE}\big(P^t_l(x^t {li},\Theta^{r,t}),,y^t_{li}\big) $$ 직관. 표준 분류 손실이다(논문은 sigmoid 확률 위의 binary cross-entropy를 쓴다). 문제는 미니배치 안에 새 클래스 샘플은 많고 옛 클래스 exemplar는 적다는 점이다. 그러면 새 클래스 쪽 gradient가 압도해서 옛 클래스가 밀려난다. 이후 두 손실이 이 불균형을 고친다. 전체 오차를 줄이는 데만 집중합니다. 비유로, 교실에서 90명의 학생이 새로운 질병에 대해 큰 소리로 떠들고 있고, 단 10명의 학생만이 과거 질병에 대해 이야기하는 상황입니다. 모델이 학습하는 방향(그래디언트)은 당연히 목소리가 큰 다수 쪽에 압도당하게 됩니다. 그 결과 모델은 새로운 질병을 맞추는 데만 급급해져서 과거 질병에 대한 기억을 머릿속에서 밀어내 버립니다(파괴적 망각). 그래서 논문은 이 기본 손실($\mathcal{L}_{CE}$)만으로는 한계가 있다고 지적하는 것 교차 엔트로피($\mathcal{D} {CE}$) 앞에 곱해졌던 가중치 비율 $\frac{\vert{}\mathcal{G} {li}^t\vert{}}{\tilde{\mathcal{G}}_i}$ (b) Class-Aware Gradient Compensation Loss ($\mathcal{L}_{GC}$) 먼저 샘플 하나가 정답 뉴런에 주는 gradient를 잰다. $$ \mathcal{G}^t_{li}=\frac{\partial,\mathcal{D} {CE}\big(P^t_l(x^t {li},\Theta^{r,t} l),,y^t {li}\big)}{\partial,\mathcal{N}^t_{y^t_{li}}}=P^t_l(x^t_{li},\Theta^{r,t} l) {y^t_{li}}-1 $$ 직관. 정답 클래스 확률이 1에 가까우면 $|\mathcal{G}|\approx 0$이고, 확률이 낮으면 $|\mathcal{G}|\approx 1$이다. 즉 이 샘플이 얼마나 못 맞히고 있는가를 나타내는 숫자다. 처음 보는 새 클래스 샘플은 크고, 이미 잘 맞히는 샘플은 작다. 다음으로 새 클래스 그룹과 옛 클래스 그룹의 평균 gradient 크기를 각각 구한다. $$ \mathcal{G} n=\frac{\sum {i=1}^{b}|\mathcal{G}^t_{li}|\cdot\mathbb{I} {y^t {li}\in\mathcal{Y}^t_l}}{\sum_{i=1}^{b}\mathbb{I} {y^t {li}\in\mathcal{Y}^t_l}},\qquad \mathcal{G} o=\frac{\sum {i=1}^{b}|\mathcal{G}^t_{li}|\cdot\mathbb{I} {y^t {li}\in\cup_{j<t}\mathcal{Y}^j_l}}{\sum_{i=1}^{b}\mathbb{I} {y^t {li}\in\cup_{j<t}\mathcal{Y}^j_l}} $$ 직관. $\mathcal{G}_n$은 새 클래스 샘플들이 평균적으로 얼마나 크게 gradient를 주는지, $\mathcal{G}_o$는 옛 클래스 샘플들이 평균적으로 얼마나 주는지를 나타낸다. 이 둘의 격차가 곧 학습 속도와 망각 속도의 불균형이다. 이를 이용해 재가중한 손실은 다음과 같다. $$ \mathcal{L} {GC}=\frac{1}{b}\sum {i=1}^{b}\frac{|\mathcal{G}^t_{li}|}{\bar{\mathcal{G}} i}\cdot\mathcal{D} {CE}\big(P^t_l(x^t_{li},\Theta^{r,t} l),,y^t {li}\big),\qquad \bar{\mathcal{G}}_i=\begin{cases}\mathcal{G}_n & x_i\text{가 새 클래스}\ \mathcal{G}_o & x_i\text{가 옛 클래스}\end{cases} $$ 직관. 각 샘플의 가중치가 $|\mathcal{G}_i|/\bar{\mathcal{G}}_i$, 즉 자기 그룹 평균 대비 상대적 난이도다. 새 그룹과 옛 그룹 모두 가중치의 평균이 약 1이 되어, 어느 한쪽 그룹이 gradient를 독점하지 못한다. 그룹 간 스케일 차이가 사라진다. 그룹 안에서는 평균보다 어려운 샘플에 더 큰 가중치가 붙는다(focal loss와 비슷한 효과). 결과적으로 새 클래스는 학습 속도를 늦추고, 옛 클래스는 망각 속도를 늦춘다. 이 아이디어는 저자들의 이전 연구(AAAI'21, FL에서의 class imbalance)를 가져온 것이다. $S_o$는 $\bar{\mathcal{G}}_i$를 항상 $\mathcal{G}_o$로, $S_n$은 항상 $\mathcal{G}_n$으로 고정한다. 각각 옛 클래스만, 새 클래스만 갖고 있기 때문이다. 개별 문제의 오답률 측정 ($\mathcal{G}^t_{li}$): 모델이 데이터를 보고 예측을 했을 때 얼마나 틀렸는지(오차)를 계산합니다. 확률이 낮아 완전히 틀렸으면 1에 가까워지고, 정답을 확신하면 0에 가까워집니다. 당연히 처음 보는 '새로운 질병(클래스)' 데이터는 값이 크게 나오고, 예제 메모리에 있던 '옛 질병' 데이터는 상대적으로 작게 나올 것입니다. 그룹별 평균 목소리 크기 계산 ($\mathcal{G}_n, \mathcal{G}_o$): 새 질병 데이터들이 내는 오차의 평균($\mathcal{G}_n$)과 옛 질병 데이터들이 내는 오차의 평균($\mathcal{G}_o$)을 각각 따로 구합니다. 앞서 이야기한 것처럼 새 질병 그룹의 목소리(오차)가 훨씬 크기 때문에 전체 학습 방향을 독점하려 할 것입니다. 공평한 확성기 달아주기 ($\frac{\vert{}\mathcal{G}^t_{li}\vert{}}{\bar{\mathcal{G}}_i}$): 각 샘플이 낸 오차를 자기가 속한 그룹의 평균치로 나누어 줍니다. 이렇게 하면 새 그룹이든 옛 그룹이든 가중치의 평균이 약 '1'로 동일하게 맞춰집니다. 즉, 새 질병 데이터가 뿜어내는 거대한 오차는 자신들의 큰 평균($\mathcal{G}_n$)으로 나누어져 억제되고, 옛 질병 데이터의 작은 오차는 자신들의 작은 평균($\mathcal{G}_o$)으로 나누어져 뻥튀기(증폭)됩니다 (c) Class-Semantic Relation Distillation Loss ($\mathcal{L}_{RD}$) 옛 모델 $\Theta^{t-1}_l$의 예측 확률로 one-hot 라벨의 앞쪽 $C^p$ 차원을 교체해 soft 라벨을 만든다. $$ \tilde{Y}^t_l=\Big[\underbrace{P^{t-1} l(X^t {lb},\Theta^{t-1} l)} {\text{옛 클래스 }C^p\text{ 차원: 옛 모델의 soft 예측}}\ \Big|\ \underbrace{Y^t_{lb}[C^p{:}]}_{\text{새 클래스 차원: 원래 one-hot}}\Big] $$ $$ \mathcal{L} {RD}=\mathcal{D} {KL}\Big(P^t_l(X^t_{lb},\Theta^{r,t}_l)\ \Big|\ \tilde{Y}^t_l\Big) $$ 직관. 옛 모델이 "이 고양이 사진은 개 0.3, 호랑이 0.2 정도 닮았다"고 알던 클래스 간 유사도 구조를 현재 모델이 그대로 유지하도록 강제한다. 기존 KD(LwF, iCaRL 등)는 옛 클래스 출력만 옛 모델과 맞춘다. 이 논문은 옛 클래스 부분은 옛 모델의 soft 확률, 새 클래스 부분은 정답 one-hot으로 이어 붙인 하나의 타깃을 쓴다. 그래서 옛-새 클래스 간 관계를 한 번에 학습한다. 단, 이 방식은 사실상 옛 모델 확률을 옛 클래스 자리의 라벨로 쓰는 것이라 "새 클래스가 옛 클래스와 얼마나 비슷한가"를 새로 학습하는 것과는 다르다. 옛 모델이 새 클래스를 모른다는 점에 주의해야 한다. 모델이 예측해야 하는 전체 타깃 라벨($\tilde{Y}^t_l$)을 두 조각으로 이어 붙인 일종의 '혼합 라벨'로 만듭니다. 왼쪽 조각 (옛 클래스 부분, $C^p$ 차원): 여기에는 정답(1 또는 0) 대신, 과거의 최적 모델(선생님)이 내놓은 '부드러운 예측(soft label)'을 그대로 넣습니다. 선생님이 "이 사진은 감기일 확률 70%, 폐렴일 확률 20%, 천식일 확률 10%야"라고 말한 그 미묘한 관계성(유사도 구조) 자체를 정답처럼 사용하는 것입니다. 오른쪽 조각 (새 클래스 부분): 여기에는 방금 들어온 새로운 질병 데이터의 '진짜 정답(one-hot label)'을 넣습니다. "이것은 100% 새로운 COVID-19 변이이다"라는 확실한 정보입니다. 그리고 모델은 쿨백-라이블러 발산($\mathcal{D}_{KL}$)을 통해 이 '혼합 라벨'의 분포를 통째로 따라 하도록 학습합니다. 결과적으로 현재 모델은 새로운 질병에 대한 정답을 확실하게 배우면서도, 동시에 과거 질병들 사이의 미묘한 관계성(선생님의 지식 구조)을 잊지 않고 유지하게 됩니다 (d) 로컬 최종 목적함수 $$ \mathcal{L} l=\lambda_1\mathcal{L} {GC}+\lambda_2\mathcal{L}_{RD} $$ 직관. "새 클래스를 잘 배우되(GC, 균형 조정) 옛 지식은 유지한다(RD)"의 균형이다. $t=1$: 옛 모델이 없으므로 $(\lambda_1,\lambda_2)=(1.0,0)$ $t\ge 2$: $(0.5,0.5)$ (e) Task Transition Detection 클라이언트가 스스로 "새 클래스가 들어왔다"를 알아야 exemplar 갱신과 옛 모델 저장 시점을 정할 수 있다. 라벨을 본 적 있는지 확인하는 방법은 다른 클라이언트가 이미 본 클래스를 새 클래스로 오인할 수 있고, 성능 하락을 신호로 쓰는 방법은 클라이언트 샘플링만으로도 성능이 요동쳐서 안 된다. 그래서 전역 모델의 평균 엔트로피를 쓴다. $$ H^{r,t} l=\frac{1}{N^t_l}\sum {i=1}^{N^t_l}\mathcal{I}\big(P^t_l(x^t_{li},\Theta^{r,t})\big),\qquad \mathcal{I}(p)=-\sum_i p_i\log p_i $$ $$ H^{r,t}_l-H^{r-1,t}_l\ \ge\ r_h\ (=1.2)\ \Longrightarrow\ \text{새 태스크 도착},\ t\leftarrow t+1 $$ 직관. 전역 모델이 처음 보는 클래스의 샘플을 만나면 "이게 뭔지 모르겠다"며 예측이 퍼져서 엔트로피가 급등한다. 절대값이 아니라 직전 라운드 대비 변화량을 보므로, 클라이언트 샘플링으로 정확도가 완만하게 흔들리는 것과 구분된다는 논리다. 감지되면 $\mathcal{M}_l$을 갱신하고 옛 모델 $\Theta^{t-1}_l$을 저장한다. 3.2 글로벌 망각 보정: Proxy Server 문제. $\mathcal{L}_{RD}$에 쓰는 옛 모델의 질이 전역 망각을 좌우한다. 각 클라이언트가 자기 데이터로 옛 모델을 고르면 자기가 가진 일부 클래스에만 최적이다. 그래서 별도의 proxy server $S_P$ 가 전역 관점에서 최선의 옛 모델을 골라 배포한다. 다만 클라이언트의 원본 데이터를 보내면 안 되므로 다음의 프라이버시 통신을 쓴다. (a) Prototype Gradient-Based Communication 클라이언트는 새 클래스마다 특징 공간에서 클래스 평균에 가장 가까운 prototype 샘플 하나 를 고른다. 얕은 4층 LeNet $\Gamma={W_i}_{i=1}^{L}$에 넣어 gradient만 계산해 $S_P$에 보낸다. $$ \nabla_{W_i}\Gamma_{lc}=\nabla_{W_i}\mathcal{D} {CE}\big(P^t_l(x^t {lc^ },\Gamma),,y^t_{lc^ }\big) $$ 직관. FL이 원본 데이터 대신 gradient를 공유하는 것과 같은 논리다. 여기서는 클래스당 대표 샘플 하나의 gradient만 보내므로 통신량이 매우 작다. $S_P$는 받은 gradient를 섞어(shuffle) 풀을 만든다. 어느 클라이언트가 보냈는지 추적하지 못하게 하려는 것이다. 라벨은 마지막 층 gradient의 부호로 복원한다(iDLG 방식). gradient inversion으로 샘플을 복원한다. 무작위 dummy $\bar{x}\sim\mathcal{N}(0,1)$에서 시작한다. $$ \mathcal{L} {RT}=\sum {i=1}^{L}\Big|\nabla_{W_i}\mathcal{D} {CE}\big(P^t(\bar{x}^t_n,\Gamma),,y^t_n\big)-\nabla {W_i}\Gamma^t_n\Big|^2 $$ $$ \bar{x}^t_n\leftarrow\bar{x}^t_n-\eta,\nabla_{\bar{x}^t_n}\mathcal{L}_{RT} $$ 직관. "이 gradient를 만들어 낼 만한 입력이 무엇인가"를 거꾸로 찾는 것이다. dummy 입력의 gradient가 받은 gradient와 일치하도록 dummy 이미지를 깎아 나간다(Deep Leakage from Gradients 계열). 정보를 숨긴 것이 아니라 $S_P$가 복원하도록 놔두고, 대신 아래처럼 복원되어도 안전하도록 미리 변형해 둔다. 실제 구현은 L-BFGS를 쓰고, gradient당 200 iteration을 돌린다. (b) Perturbed Prototype 생성 (프라이버시 보호) Prototype을 그대로 보내면 원본이 복원되므로, 보내기 전에 노이즈를 섞은 변형본으로 바꾼다. $$ \mathcal{L} {GP}=\mathcal{D} {CE}\Big(P^t_l\big(\Phi(x^t_{lc^ })+\gamma,\mathcal{N}(0,\sigma^2),\ \Theta^{r,t} l\big),\ y^t {lc^ }\Big) $$ $$ x^t_{lc^ }\leftarrow x^t_{lc^ }-\eta,\nabla_{x^t_{lc^*}}\mathcal{L}_{GP} $$ 직관. latent feature $\Phi(x)$에 노이즈($\gamma=0.1$, $\sigma^2$은 해당 클래스 feature의 분산)를 더한 상태로도 정답을 맞히도록 입력 이미지를 역전파로 수정한다. 그 결과 이미지는 원본과 눈으로 달라 보이지만 모델 입장에서는 "같은 클래스"로 취급되는 샘플이 된다. 공격자가 복원해도 원본 모습이 아니라 변형된 모습만 얻는다는 논리다(Fig. 2). 다만 형식적 프라이버시 보장은 없다. (c) Best Old Model 선택 $S_P$는 복원된 prototype으로 각 라운드의 전역 모델 $\Theta^{r,t}$를 평가해 정확도가 가장 높은 모델을 $\Theta^t$로 저장한다. $t\ge2$부터 $\Theta^{t-1}$과 $\Theta^t$를 선택된 클라이언트에 배포한다. 새 클래스를 감지한 클라이언트: $\Theta^t$를 옛 모델로 사용 감지하지 못한 클라이언트: $\Theta^{t-1}$을 옛 모델로 사용 직관. 여러 클라이언트의 대표 샘플로 만든 "전역 검증 세트"로 모델을 고르는 것이다. 개별 클라이언트는 자기 클래스만 볼 수 있지만, $S_P$는 모든 클라이언트의 prototype을 모아 볼 수 있다는 점이 핵심이다. 📡 통신 최소화 및 역추적 (a): 병원(클라이언트)은 원본 사진을 보내는 대신, 특정 질병을 가장 잘 대표하는 사진 1장(프로토타입)을 고른 뒤 그 사진에 대한 '학습 방향(그래디언트)'만 프록시 서버로 보냅니다. 서버는 이 그래디언트를 역추적(gradient inversion)해서 이미지를 억지로 복원해 냅니다. 🛡️ 프라이버시 씌우기 (b): 서버가 이미지를 복원해 낸다는 점을 역이용하는 아주 영리한 단계입니다. 클라이언트는 애초에 원본 이미지가 복원되지 않도록, 보내기 전에 미리 노이즈를 섞어 이미지를 일그러뜨려 놓습니다(Perturbed Prototype). 🏆 전역 모의고사 실시 (c): 프록시 서버는 각 클라이언트가 보낸 그래디언트들을 이리저리 섞은(shuffle) 뒤, 이 일그러진 이미지들을 복원해 냅니다. 그리고 이 이미지들을 몽땅 모아 전체 네트워크를 아우르는 '전역 검증 세트(모의고사)'로 삼아, 가장 실력이 좋고 덜 편향된 모델을 골라냅니다 3.3 전체 파이프라인 매 라운드 초입에 모든 클라이언트가 엔트로피를 계산하고 iCaRL 방식으로 exemplar를 갱신한다. 서버 $S_G$가 클라이언트를 무작위로 선택하고, 선택된 클라이언트가 $\mathcal{L}_l$로 로컬 학습을 한 뒤 집계한다. 새 클래스를 감지한 클라이언트는 perturbed prototype gradient를 $S_P$에 전송한다. $S_P$는 복원, 평가, best old model 선택 및 배포를 수행한다. 스스로 상태 점검 (엔트로피 계산 및 메모리 갱신): 라운드가 시작되면 로컬 클라이언트(병원)들은 모델의 불확실성(엔트로피)을 계산해 "새로운 질병 데이터가 도착했는지" 파악합니다. 새로운 클래스를 감지하면 예전 모델을 따로 저장해두고, 소중한 과거 데이터(exemplar)를 메모리에 갱신해 둡니다. 균형 잡힌 로컬 학습: 중앙 서버($S_G$)가 무작위로 학습에 참여할 병원들을 선택합니다. 선택된 병원들은 우리가 배운 손실 함수들(기본 손실 + 그래디언트 보상 $\mathcal{L} {GC}$ + 의미론적 증류 $\mathca
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
Federated Class-Incremental Learning. 논문 리뷰: Federated Class-Incremental Learning (GLFC, CVPR 2022) 1. 한 줄 요약 연합학습(FL)에 클래스 증분 학습(CIL)을 처음 결합한 FCIL 문제를 정의하고, 두 종류의 망각을 함께 보정하는 GLFC(Global-Local Forgetting Compensation) 를 제안한 논문이다. (파괴적인 망각) 로컬 망각 : 한 클라이언트 안에서 새 클래스 데이터는 많고 옛 클래스 exemplar는 적어서 생기는 망각 글로벌 망각 : 클라이언트마다 가진 옛 클래스가 달라서(non-i.i.d.) 생기는 이질적 망각 CIL 기법에 FL을 얹은 baseline 대비 평균 정확도가…
Open source