エッセイ講義 | MindSpore に基づくマルチドメイン プロトタイプ比較学習における一般化フェデレーテッド プロトタイプ学習の実装

著者:李瑞峰

論文タイトル

ドメインシフトによるフェデレーテッドラーニングの再考: プロトタイプビュー

給紙元

CVPR 2023

ペーパーリンク

https://openaccess.thecvf.com/content/CVPR2023/papers/Huang_Re Thinking_Federated_Learning_With_Domain_Shift_A_Prototype_View_CVPR_2023_paper.pdf

コードリンク

https://github.com/yuhangchen0/FPL_MS

オープンソースの AI フレームワークとして、MindSpore は、産学、研究、開発者に、フルシナリオのデバイス、エッジ、クラウドのコラボレーション、ミニマリスト開発、究極のパフォーマンス、超大規模 AI 事前トレーニング、ミニマリスト開発、安全で信頼できるシステムを提供します。 MindSpore のダウンロード数は 500 万を超え、トップ 100 以上の大学で教鞭を執り、多数の開発者が利用しています。 AI コンピューティング、金融、インテリジェント製造、金融、クラウド、ワイヤレス、データ通信、エネルギー、コンシューマー 1+8+N、スマート カー、その他のエンドエッジ クラウド カーのシナリオが徐々に広く使用されています。は、Gitee インデックスが最も高いオープンソース ソフトウェアです。誰もがオープンソースのコントリビューション、キット、モデルクラウドインテリジェンス、業界の革新とアプリケーション、アルゴリズムの革新、学術協力、AI書籍の協力などに参加することができ、クラウド側、デバイス側、エッジ側、およびアプリケーションケースを貢献することができます。セキュリティフィールド。

科学技術コミュニティ、学界、産業界からの SunSilicon MindSpore の広範なサポートにより、2023 年には SunSilicon MindSpore に基づく AI 論文が全 AI フレームワークの 7% を占め、2 年連続で世界第 2 位にランクされました。CAAI および CAAI に感謝します。全大学、先生方のご支援を得て、今後もAIの研究とイノベーションに全力で取り組んでまいります。 MindSpore コミュニティは、主要な会議論文の研究をサポートし、オリジナルの AI 結果を構築し続けています。私は時々、優れた論文を選択して解釈していきますが、産業界、学界、研究者のより多くの専門家が独自の AI 研究を推進するために Shengsi MindSpore と協力してくれることを願っています。 MindSpore AI サミット論文シリーズの 18 番目の記事では、武漢大学コンピューターサイエンス学部のYe Mang 教師のチームの論文を解釈することにしました。すべての専門家、教授、クラスメートに感謝します。彼らの貢献に対して。

MindSpore は、開発の容易さ、効率的な実行、シナリオの完全なカバーという 3 つの主要な目標を達成することを目指しています。使用経験を通じて、深層学習フレームワークである MindSpore は急速に発展しており、そのさまざまな API の設計は、より合理的で完全かつ強力な方向に常に最適化されています。さらに、Shengsi から常に登場しているさまざまな開発ツールも、モデル アーキテクチャを図の形式で表示し、さまざまな側面を動的に監視できる MindSpore Insight など、より便利で強力な開発手法を作成するためにこのエコシステムを支援しています。実行時のモデルの変更により、開発プロセスがより便利になります。

01

研究の背景

デジタルの世界では、データのプライバシーとセキュリティがますます懸念される中心的な問題となっています。このような背景から、フェデレーテッド ラーニングは、データ プライバシーを保護する分散型機械学習手法として登場しました。その中心的なアイデアは、元のデータを共有せずに、複数のデバイスまたはサーバーが共同でモデルをトレーニングできるようにすることです。このアプローチでは、特にデータ プライバシーとセキュリティの要件が高い場合に、複数のモバイル デバイスで機械学習タスクを処理できます。

フェデレーテッド ラーニングには、データの異質性という解決すべき重要な問題があります。これは通常、学習に関与する各ノード (デバイス、サーバー、組織など) が保持するデータが大きく異なる可能性があるという事実を指します。これらの違いには、データの特徴の分布、品質、量、タイプなどの側面が含まれる場合があります。データの異質性の問題は、モデルの学習効果と汎化能力に直接影響を与える可能性があるため、フェデレーテッド ラーニングでは特に重要です。

この論文では、データの異質性に関して、既存のソリューションは主に同じドメインのすべてのプライベート データに焦点を当てていることを指摘しています。分散データが異なるドメインから発信されている場合、プライベート モデルは他のドメインで (ドメイン オフセットがある) パフォーマンスの低下を示す傾向があり、グローバル信号は豊富で公正なドメイン情報をキャプチャできません。したがって、著者らは、最適化されたグローバル モデルがフェデレーテッド ラーニング プロセス中に複数のドメインで汎化パフォーマンスを安定して提供できると期待しています。

本稿では、著者らはドメインシフト下での連合学習のための「Federated Prototype Learning」(FPL)を提案する。中心となるアイデアは、豊富なドメイン知識と公平な収束ターゲットを提供する、クラスター化されたプロトタイプと偏りのないプロトタイプを構築することです。一方で、サンプルの埋め込みは、さまざまなカテゴリのクラスター プロトタイプから遠ざけられ、同じセマンティクスのクラスター プロトタイプに近づきます。一方、一貫性正則化は、ローカル インスタンスを対応する不偏プロトタイプと調整するために導入されます。

この論文では、MindSpore に基づいてフレームワークの開発と実験を実施し、Digits や Office Caltech タスクなどの実験結果により、提案されたソリューションの有効性と主要モジュールの効率性が証明されています。

02

チーム紹介

この論文の筆頭著者である黄文科氏は現在、武漢大学で修士号と博士号の取得を目指して勉強中(2021年~現在)、彼の指導者は杜博教授と葉望教授である。武漢大学を卒業し、学士号を取得しました。主な研究方向にはフェデレーテッド ラーニング、グラフ学習、金融テクノロジーなどが含まれます。現在、CVPR、IJCAI、ACM MM などの主要な国際会議で筆頭著者として 4 つの論文を発表しています。大学院在学中、国泰君安奨学金や優秀大学院生などの称号を獲得した。アリババグループ、マイクロソフトリサーチアジアなどで研究インターンを経験。

論文の責任著者であるYe Mang氏は、武漢大学コンピューターサイエンス学部の教授兼博士指導教員であり、国家レベルのハイレベルな若手人材であり、中国科学技術協会が推薦する若手候補者でもある。彼は、エミレーツ・オリジン人工知能研究所の研究員および米国のコロンビア大学の客員研究員を務めました。彼の主な研究方向には、コンピュータ ビジョン、マルチメディア検索、フェデレーテッド ラーニングなどが含まれます。国際ジャーナルや会議で 80 以上の論文を発表し、ESI で引用度の高い論文が 10 件あり、Google Scholar で 5,600 回以上引用されています。 CVPR24やACM MM23などの学会フィールドチェアを務める。湖北省重点研究開発計画や中国国家自然科学財団などの科学研究プロジェクトを主催。 Google Excellent Scholarship、国際コンピュータビジョン会議のトップである ICCV2021 のドローンターゲット再識別トラックのチャンピオン、2021-2022 年のスタンフォードランキングで「世界のトップ科学者の上位 2%」、および 2022 年の Baidu AI Chinese Young Scholar を受賞。 。

研究チーム MARS は Ye Mang 教授が指揮しており、監視ビデオの歩行者/行動分析、教師なし/半教師あり学習、クロスモーダル理解と推論、連合学習に重点を置いています。

03

論文の紹介

3.1 はじめに

前述の研究背景に基づいて、この論文では、フェデレーション マルチドメイン汎化の問題を解決するためのフェデレーテッド プロトタイプ学習を提案します。つまり、プライベート データはさまざまな分野から取得され、ローカル モデルはローカル分布を過学習することにより、大きく異なる特徴分布を持ちます。 、プライベート モデルは他のドメインではうまく機能しません。たとえば、グレースケール画像 MNIST でトレーニングされたローカル モデル A は、サーバーによって集約された後、カラー画像 SVHN データ セットなどの別のクライアントでは正常に実行できなくなります。これは、このローカル モデル A が SVHN ドメイン情報を学習できないため、パフォーマンスが低下するためです。劣化。

グローバル信号は複数の分野の知識情報を表すことができず、支配的な分野の情報に偏っている可能性があるため、汎化能力が低下します。モデルが豊富なマルチドメイン知識を学習し、共有信号を使用して複数ドメインの情報を提供して汎化機能を向上できるようにするために、この論文では、クラスター プロトタイプを使用してさまざまなドメインの情報を表現し、対照学習を使用して共通性を強化することを提案します。クラスター プロトタイプ比較学習と呼ばれる、異なるドメインの同じカテゴリを使用して、いくつかのドメインの能力を向上させるため、公平で安定したものを提供します。これは、不偏プロトタイプ一貫性正則化 (Unbiased Prototypes Consistent Regularization) と呼ばれます。

3.2 方法

3.2.1 準備

連合学習

写真典型的なフェデレーテッド ラーニング設定では、参加者とそれに対応するプライベート データがあり、次のように表現されます。

写真

このうち、 は写真ローカルデータ規模を表します。異種のフェデレーテッド ラーニング環境では、条件付き特徴量の分布は写真たとえ一貫していても参加者間で異なり写真、ドメイン シフトにつながります。ドメイン オフセットを次のように定義します。

写真

これは、プライベート データにドメイン オフセットがあることを意味します。具体的には、同じラベル空間の場合、異なる参加者間には固有の特徴分布が存在します。

写真図 1 ローカル クライアントのデータ ソース ドメインが異なり、その差は大きい。

さらに、すべての参加者が合意に達し、同じアーキテクチャのモデルを共有します。このモデルは、特徴抽出器と分類器という 2 つの主要な部分として見ることができます。で示される特徴抽出器は写真、サンプル x を写真特徴空間内の 1 次元特徴ベクトルにエンコードします。次のように表現されます。

写真

分類器は特徴をロジット出力にマップします写真。ロジット出力は後続の式で写真分類のカテゴリを表します。最適化の目標は、連合学習プロセスを通じて、複数のドメインで優れたパフォーマンスを発揮する一般化可能なグローバル モデルを学習することです。

機能プロトタイプ

後続のプロトタイプ関連のメソッドを実装するために、この記事ではまずプロトタイプの定義を構築します。

写真

クライアント番目のラベル写真を表すプロトタイプは、クライアント番目のラベルを持つすべてのサンプルの特徴ベクトルの平均を計算することで得られ、このクライアントのラベルが表すドメイン情報を直感的に表現します。写真写真写真写真写真

最初にこの記事の方法を無視する場合、最も一般的な方法は、すべてのクライアントのタグのドメイン情報を直接平均し写真、すべてのクライアントにこの情報を学習させ、ローカル クライアントの更新を制限することです。

写真

これは、連合システム全体としてラベル付けされたさまざまなフィールドからのすべてのサンプルの平均ドメイン情報を写真表します。写真ただし、このような全体的な見方には偏りがあり、さまざまな分野の情報を正確に表すことができず、図 2a に示すように、主要な分野に偏り、いくつかの分野が無視される可能性もあります。

写真図 2 さまざまなタイプのプロトタイプの表現

3.2.2 クラスタプロトタイプの比較学習

グローバルプロトタイプの問題を解決するために、この論文ではまず、教師なしクラスタリングにFINCH法を使用して、広範なドメイン知識(各サンプルの特徴ベクトル)を教師なしで分離します。特徴ベクトルを使用すると、異なるフィールドが異なるクラスターにクラスター化され、図 2b に示すように、このクラスターのプロトタイプが同じクラスター内で計算されます。これにより、複数のドメインが相互に平均した後にすべての有用なドメイン知識から遠く離れてしまうことを防ぎます。 。

写真

上の式では、クラスター化された写真ラベルのクラスター プロトタイプのセットを表します。写真写真

これに基づいて、本論文は、新しい損失項を追加することにより、クラスタプロトタイプ比較学習を実装する。写真特定のサンプルに属するサンプル写真の特徴ベクトルは です写真。この記事では、比較学習を使用して、サンプルと同じセマンティクスに属するすべてのプロトタイプ間の距離をできるだけ縮める写真か、同じ意味での類似性を向上させようとします。同時に、属さないすべてのプロトタイプ写真( としてマーク写真) との類似性が可能な限り削減され、ローカル更新中にさまざまな分野の豊富な知識が学習され、汎化能力が向上します。改善されました。著者は、サンプル特徴ベクトルとプロトタイプの類似性を次のように定義しています。

写真

次に、クラスター プロトタイプの比較学習を実装する損失項を構築します。

写真

なぜこのアプローチが機能するのでしょうか?著者は次のように分析しています。

写真

この損失関数を最小化することは、サンプルの特徴ベクトルを割り当てられた正のクラスター プロトタイプに近づけ写真、特徴ベクトルを他の負のプロトタイプから遠ざけることと同じです写真。これにより、さまざまなドメインの歪みに対する不変性が維持されるだけでなく、セマンティクスの拡散特性も強化され、特徴空間が一般化可能かつ識別可能であることが保証され、それによってフェデレーテッド ラーニングで満足のいく汎化パフォーマンスが実現されます。

3.2.3 偏りのないプロトタイプの一貫性正則化

クラスタプロトタイプは、ドメイン転送時の可塑性に多様なドメイン知識をもたらすが、教師なしクラスタリング手法のため、クラスタプロトタイプは通信のたびに動的に生成され、その規模が変化する。したがって、クラスター プロトタイプは、さまざまな通信時代において安定したコンバージェンス方向を提供できません。この論文では、公平で安定した不偏プロトタイプを構築し、複数のクラスター プロトタイプと不偏プロトタイプ間の距離を制約することにより、持続的なマルチドメインの公平性を確保する 2 番目の方法を提案します。

写真具体的には、図 2c に示すように、同じラベルの下にあるクラスター化された複数のクラスター プロトタイプが平均されて、ラベル の下の不偏収束ターゲットが表されます。

写真

この記事では、2 番目の損失項を導入し、一貫性正則化項を使用してサンプルの特徴ベクトルを対応する不偏プロトタイプに近づけ写真、収束不安定性の問題を解決するための比較的公平で安定した最適化ポイントを提供します。

写真

3.2.4 全体的なアルゴリズム

上記の 2 つの損失に加えて、従来のモデルのトレーニングで使用されるクロスエントロピー損失関数が、この記事で提案されているフェデレーテッド プロトタイプ学習の損失関数として使用されます。

写真

学習過程:

写真

アルゴリズム:

写真

04

実験結果

4.1 最先端技術の実験結果との比較

この記事は、Digits および Office Caltech データ セットでテストされました。前者は 4 つの同一のラベルと異なるデータ ソースを持つデジタル データ セットであり、後者は 4 つの同じラベルと異なるデータ ソースを持つ現実世界のデータ セットです。実験の結果、提案された FPL は、単一フィールドでのパフォーマンスと複数フィールドでの平均パフォーマンスの両方において、現在の SOTA よりも優れていることが示されています。

写真

 

4.2 アブレーション実験

写真

ほとんどの場合、CPCL と UPCR が連携してパフォーマンスが向上することがわかります。

写真

通常のグローバル プロトタイプと提案されたプロトタイプを使用した 2 つの方法によって実証された実験結果を比較すると、クラスター化プロトタイプと不偏プロトタイプの有効性が実証されています。

4.3 MindSpore コードの表示

このフレームワークは MindSpore に基づいて開発されています。

4.3.1 MindSpore はクラスター プロトタイプの比較学習を実装します

def calculate_infonce(self, f_now, label, all_f, all_global_protos_keys):
        pos_indices = 0
        neg_indices = []
        for i, k in enumerate(all_global_protos_keys):
            if k == label.item():
                pos_indices = i
            else:
                neg_indices.append(i)

        f_pos = Tensor(all_f[pos_indices][0]).reshape(1,512)
        f_neg = ops.cat([Tensor(all_f[i]).reshape(-1, 512) for i in neg_indices], axis=0)
        #aaa
        f_proto = ops.cat((f_pos, f_neg), axis=0)
        f_now = f_now.reshape(1,512)

        f_now_np = f_now.asnumpy()
        f_proto_np = f_proto.asnumpy()
        def cosine_similarity_numpy(vec_a, vec_b):
            dot_product = np.dot(vec_a, vec_b.T)
            norm_a = np.linalg.norm(vec_a, axis=1, keepdims=True)
            norm_b = np.linalg.norm(vec_b, axis=1)
            return dot_product / (norm_a * norm_b)
        l_np = cosine_similarity_numpy(f_now_np, f_proto_np)
        l = Tensor(l_np)

        #l = ops.cosine_similarity(f_now, f_proto, dim=1)
        l = ops.div(l, self.infoNCET)

        exp_l = ops.exp(l).reshape(1, -1)

        pos_num = f_pos.shape[0]
        neg_num = f_neg.shape[0]
        pos_mask = Tensor([1] * pos_num + [0] * neg_num).reshape(1, -1)

        pos_l = exp_l * pos_mask
        sum_pos_l = ops.sum(pos_l, dim=1)
        sum_exp_l = ops.sum(exp_l, dim=1)
        infonce_loss = -ops.log(sum_pos_l / sum_exp_l)
        return Tensor(infonce_loss)

4.3.2  MindSpore は偏りのないプロトタイプの一貫性正則化を実現します**

def hierarchical_info_loss(self, f_now, label, mean_f, all_global_protos_keys):


        pos_indices = 0
        for i, k in enumerate(all_global_protos_keys):
            if k == label.item():
                pos_indices = i



        mean_f_pos = Tensor(mean_f[pos_indices])
        f_now = Tensor(f_now)

        cu_info_loss = self.loss_mse(f_now, mean_f_pos)

        return cu_info_loss

4.3.3 クライアントのローカル モデルのトレーニング

 def _train_net(self, index, net, train_loader):

        if len(self.global_protos) != 0:
            all_global_protos_keys = np.array(list(self.global_protos.keys()))
            all_f = []
            mean_f = []
            for protos_key in all_global_protos_keys:
                temp_f = self.global_protos[protos_key]
                all_f.append(copy.deepcopy(temp_f))
                mean_f.append(copy.deepcopy(np.mean(temp_f, axis=0)))
            all_f = [item.copy() for item in all_f]
            mean_f = [item.copy() for item in mean_f]
        else:
            all_f = []
            mean_f = []
            all_global_protos_keys = []        

        optimizer = nn.SGD(net.trainable_params(), learning_rate=self.local_lr, momentum=0.9, weight_decay=1e-5)
        criterion1 = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')
        criterion = CustomLoss(criterion1, self.loss2)
        self.loss_mse = mindspore.nn.MSELoss()
        train_net= nn.TrainOneStepCell(nn.WithLossCell(net,criterion), optimizer=optimizer)
        train_net.set_train(True)

        iterator = tqdm(range(self.local_epoch))
        for iter in iterator:

            agg_protos_label = {}
            for di in train_loader.create_dict_iterator():
                images = di["image"]
                labels = di["label"]

                #   train_net.set_train(False)
                f = net.features(images)
                #train_net.set_train(True)

                if len(self.global_protos) == 0:
                    loss_InfoNCE = 0 
                else:
                    i = 0
                    loss_InfoNCE = None

                    for label in labels:
                        if label in all_global_protos_keys:

                            f_now = f[i]
                            cu_info_loss = self.hierarchical_info_loss(f_now, label, mean_f, all_global_protos_keys)
                            xi_info_loss = self.calculate_infonce(f

05

概要と展望

この論文では、異種フェデレーテッド ラーニングにおけるドメイン転送における一般化と安定性の問題を検討します。私たちの研究では、シンプルだが効果的なフェデレーテッド ラーニング アルゴリズム、つまりフェデレーテッド プロトタイプ ラーニング (FPL) を導入しました。私たちはこれら 2 つの問題を解決するためにプロトタイプ (クラスの正規表現) を利用し、クラスター化されたプロトタイプと偏りのないプロトタイプの相補的な利点、つまり多様なドメイン知識と安定した収束信号を享受します。私たちは、Sunthink MindSpore アーキテクチャを使用して FPL フレームワークを実装し、効率と精度におけるその利点を実証しました。

Shengsi MindSpore を使用して FPL フレームワークを開発したとき、Shengsi MindSpore コミュニティが非常に活発で、フレームワークの構築で遭遇した困難に対して多くの Huawei 開発者とユーザーが多大な支援を提供してくれたことに気づきました。それだけでなく、MindSpore が提供する豊富なドキュメントとチュートリアル、さらにコミュニティでの実際のケースとベスト プラクティスにより、多くの潜在的な落とし穴を回避し、研究目標をより早く達成することができました。

1990 年代生まれのプログラマーがビデオ移植ソフトウェアを開発し、1 年足らずで 700 万以上の利益を上げました。結末は非常に罰的でした。 Google は、Flutter、Dart、Python チームの中国人プログラマーの「35 歳の呪い」に関係する人員削減を認めた 。Microsoft 無力な中年者にとっては幸運なおもちゃでもある。強力で GPT-4.5 の疑いがある; Tongyi Qianwen オープンソース 8 モデルWindows 1.0 が 3 か月以内に正式に GA Windows 10 の市場シェアは 70% に達し、Windows 11 GitHub がAI ネイティブ開発ツール GitHub Copilot Workspace JAVAをリリースOLTP+OLAP を処理できる唯一の強力なクエリです。これが最高の ORM です。
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4736317/blog/11072527