\def\thelstlisting{}

%不需要区分奇偶页的请使用下面一行
\documentclass[a4paper,AutoFakeBold,oneside,12pt]{book}
%需要区分奇偶页的（即每一章第一页一定在奇数页上）请使用下面一行
%\documentclass[a4paper,AutoFakeBold,openright,12pt]{book}
\usepackage{BUPTthesisbachelor}
\usepackage{setspace}
\usepackage{listings}
\usepackage{xcolor} % 导入xcolor宏包以允许使用自定义颜色

\lstset{
    language=Python, % 设置编程语言。本例为Python
    basicstyle=\small\ttfamily, % 设置代码字体和字号
    numbers=left, % 行号的位置
    numberstyle=\tiny\color{gray}, % 行号的样式（颜色,字号等）
    stepnumber=1, % 行号的步进
    numbersep=20pt, % 行号与代码之间的距离
    backgroundcolor=\color{white}, % 代码框背景色
    showspaces=false, % 是否显示空格
    showstringspaces=false, % 是否显示字符串中的空格
    showtabs=false, % 是否显示制表符
    tabsize=2, %制表符占用的字符数
    captionpos=b, % 标题位置
    breaklines=true, % 如果一行代码过长,是否自动换行
    breakatwhitespace=false, % 换行时是否仅在空白字符处进行
    escapeinside={\%*}{*)}, % 如果您需要在代码中加入LaTeX命令,可以使用此选项指定转义字符
}

%\lstdefinestyle{sharpc}{language=[Sharp]C, frame=lrtb, rulecolor=\color{blue!80!black}}


%%%%%%%%%%%%%%%%%%%%%%%%% Begin Documents %%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

% 封面
\blankmatter
\includepdf[pages=-]{docs/cover.pdf}

% 诚信声明
\blankmatter
\includepdf[pages=-]{docs/statement.pdf}

% 任务书
\blankmatter
\includepdf[pages=-]{docs/task.pdf}

% 成绩评定表
\blankmatter
\includepdf[pages=-]{docs/scoreTable.pdf}



\input{main.cfg}    % Main items 
\include{abstract}  % Abstract
\fancypagestyle{plain}{\pagestyle{frontmatter}}
\frontmatter\tableofcontents % Content


% 正文
\newpage\mainmatter
\fancypagestyle{plain}{\pagestyle{mainmatter}}
%\let\cleardoublepagebak=\cleardoublepage
%\let\cleardoublepage\relax % Make new chapter stay on old page

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Main Area %%%%%%%%%%%%%%%%%%%%%%%%%%%%

\chapter{引言}

\section{联邦学习背景和重要性}
% 如果你的项目来源于科研项目，可以使用以下指令插入无编号脚注于正文第一页
\blfootnote{本项目来源于科研项目“基于\LaTeX{}的本科毕业设计”，项目编号1124}
从1955年达特茅斯会议开始，人工智能经过两起两落的发展，迎来了第三个高峰期。越来越多的工程与科研实践展示了人工智能迸发出的巨大潜力，也更加憧憬人工智能技术可以在自动驾驶、医疗、金融等更多、更复杂、更前沿的领域施展拳脚。但是，真实的情况却让人失望：除了有限的几个行业，更多领域存在着数据有限且质量较差的问题，不足以支撑人工智能技术的实现；并且，在某些领域，即使动用很多人力来进行数据标注，数据量也依然不够，例如商家拥有商品的质量数据、客户购买行为产生的销售数据，但是缺少客户经济水平和支付方式的数据。再例如，一家医院想要建立 AI 系统帮助医生诊断，但自己的数据远远不够。这是我们面临的现实。

与此同时，数据源之间存在着难以打破的壁垒，在大多数行业中，数据是以孤岛的形式存在的，由于行业竞争、隐私安全、行政手续复杂等问题，即使是在同一个公司的不同部门之间实现数据整合也面临着重重阻力；另一方面，随着大数据的进一步发展，重视数据隐私和安全已经成为了世界性的趋势，Facebook 的泄密事件引发了大面积抵制和思考\cite{Facebook2020Federated}；国内包括手机号码、身份证信息等个人隐私泄露情况十分严重；欧盟于 2018 年推行《通用数据保护条例》（GDPR），严格限制隐私数据的交易；2017 年 6 月 1 日我国跟进制定的《中华人民共和国网络安全法》规定，不得使用、篡改个人隐私数据。我国 2020 年 12 月 1 日制定的《常见类型移动互联网应用程序（APP）必要个人信息范围》中，对数据安全的重视程度达到空前的水平。新的隐私保护法规的建立在不同程度上对人工智能传统的数据处理模式提出了新的挑战，将会进一步加剧数据孤岛的问题。因此，当前想要将分散在各地、各个机构的数据进行整合是十分困难且成本巨大的\cite{联邦学习白皮书}。

联邦学习作为一种切实可行的隐私保护手段，为多方机器学习建模提供了有效解决方案。这一隐私机器学习系统允许各方在确保本地数据隐私安全且符合法律法规的前提下，进行数据处理和模型构建。联邦学习可以看作是一种特别针对数据孤岛问题的机器学习方法，实现了在数据不流通的基础上进行协同建模和改善数据孤岛现象。这一技术具有五大关键特性：

\begin{enumerate}
	\item 数据保留在本地，不参与流通，降低隐私泄露和违规风险
	\item 各方依据投入数据，开展合作建模，实现资源共享和共赢，投入越多收益越大
	\item 各方地位平等，不存在数据优势问题
	\item 联邦学习训练结果的损失较小，与传统集中式机器学习相差无几
	\item 通过迁移学习，在传统无法实现联邦的应用场景中，使用加密参数互换来实现知识跨领域迁移
\end{enumerate}

联邦学习相比于单方传统机器学习的优势是：大大扩展了数据来源，增强模型准确率; 各方可以享受到其他数据方对模型精度提升的同时，避免数据交易带来的纠纷\cite{zhao2018federated}。联邦学习相比于分布式机器学习的优势有：参与节点是协作关系而非从属关系; 数据不出本地，满足安全合规; 模型准确率与聚合训练相当。联邦学习为多方安全协同建模提供了理论和实践基础，打破了数据孤岛和用户隐私的两难困境，把散落在各领域、各机构的小数据合并成大数据，在数据之间建立广泛的安全连接，满足隐私保护下的数据协作要求，是实现跨个体间协同合作的有效方式，能够帮助人们掘出数据中“1+1>2”的潜在价值。

\section{国内外研究现状}

联邦学习作为隐私保护特性的大数据分布式解决方案由 Google 在 2016 年首先投入使用\cite{yang2018applied}，目的是解决安卓设备的分布式建模问题，主要是针对输入法自动联想，提升用户体验的建模。自动联想需要大量的用户数据学习，但获取这些用户数据存在门槛，主要是隐私方面的门槛。比较直接的做法是将用户的输入习惯全部上传至云端，在云端进行统一计算，这种做法无疑是对用户隐私的破坏。对此，谷歌提出横向的联邦学习，用户在本地完成一部分训练，然后把训练的中间梯度上传到云端。这样谷歌没有获取到用户的聊天内容。例如云服务器 Parameter Server 初始化一个全局模型，把模型推送到个人设备上，然后各个设备基于本地的数据来优化模型得到更新梯度传回服务器，接着服务器利用接收到的梯度更新全局模型发回到设备上完成迭代，直至模型在某种标准上收敛。这是联邦学习工业应用最开始的雏形\cite{kim2019blockchained}。

国内于2018年左右经香港科技大学杨强教授引入联邦学习，作为具有经济和学习潜力的新兴技术，国内外众多高校和公司都参与了研究开发。包括为微众银行的 FATE，腾讯云的Angel PowerFL，蚂蚁金服的 Morse，阿里云的 DataTrust 等等。其中开源项目有FATE，谷歌的 TensorFlow 等。微众银行技术团队将联邦学习技术在银行金融行业实验性使用，实现不同组织机构、金融实体间的隐私合作。香港大学的杨强教授于 2019 年率先研究出迁移学习的解决方案，能够解决联邦学习必须在样本或特征重合度高才能适用的限制，使其更加通用化，大大增加联邦学习的泛用性。

包括 FATE 在内的大部分联邦学习平台使用参数服务器来提供聚合梯度、统筹节点工作流的功能。中心化的参数服务器在联邦学习中承担重要功能。但实际应用中，中央服务器和节点存在大量的通信，服务器被攻击可能导致参数的泄露，甚至被篡改。为了解决这样的问题，有学者和机构尝试使用去中心化的联邦学习。如腾讯自研的 PowerFL，通过秘密共享（SS）机制实现节点之间的全局模型统一，一定程度上避免中心化联邦学习的隐私风险。然而，现阶段的解决方案仍然存在以下显著问题\cite{zhang2021survey}：

\begin{enumerate}
	\item 联邦学习从结构上避免了原始数据的聚合，但仍存在中间参数泄露风险，尤其是梯度信息。现有的机器学习攻击中，模型攻击、数据攻击、推理攻击、后门攻击、投毒攻击等方式都可以通过中间参数对原始数据进行一定的推断
	\item 以 FATE 为例，主要采用多方安全计算（MPC）和可信执行环境（TEE）保证节点通信的安全。但在大数据情况下，这种方式的运算成本可能会很高
	\item 节点互信问题。在节点间传输的梯度不加干扰的情况下，节点可能出于自利等因素窃取、篡改梯度信息
\end{enumerate}

为了解决这样的问题，部分研究从密码学的角度入手，改进联邦学习通信协议、求交，算法，评估时的安全计算协作方式等。这样做的好处在于保证了模型的无损，对训练精度友好，但通信成本非常大。在实际应用场景硬件需求水平很高。目前如何平衡通信、计算的负担与模型安全之间的关系仍是研究的重点与挑战。

目前，联邦学习在诸多热点领域已得到广泛使用
\subsection{联邦学习在移动设备领域的应用}
联邦学习最初由谷歌提出并主要用于训练其输入法。由此延伸，学术界和业界对联邦学习应用于键盘输入预测、表情预测\cite{leroy2019federated}\cite{chen2019federated}\cite{hard2018federated}\cite{yang2018applied}以及利用智能装备数据预测人类轨迹和人类行为习惯等\cite{feng2020pmf}\cite{sozinov2018human}展开研究。此外，由于联邦学习无需直接收集设备相关数据，能够有效保护用户的数据隐私不被侵犯，还可以利用智能家居等物联网（IoT）设备，通过构建安全的联合模型进行用户的行为模式学习和喜好分析，等等\cite{yu2020learning}\cite{aivodji2019lotfla}。
\subsection{联邦学习在医药健康领域的应用}
随着医院的信息化发展，病历资料、生化检测、基因检测、计算机断层扫描、磁共振成像等相关健康数据均已实现电子化。尽管部分医院拥有充足的数据对自有模型进行训练，但联邦学习在疾病预测、生物医药等方面可以打破医院间由于隐私保护政策所导致的壁垒。目前，联邦学习已被应用于生物医学的图像分析中，例如，磁共振成像特征提取和脑电图分类，等等\cite{silva2019federated}\cite{gao2019hhhfl}。许多学者对联邦学习在电子健康档案方面的应用进行研究\cite{kim2007federated}\cite{pfohl2019federated}，例如，预测心脏病患者的死亡率、评估心脏病患者是否需入院治疗、基于药物用量预测患者死亡率和同类型患者分类，等等\cite{brisimi2018federated}\cite{huang2019patient}\cite{huang2020loadaboost}。研究证明联邦学习可以通过自然语言处理分析电子健康档案中的有效信息，并利用其对各种疾病进行学习\cite{gao2019hhhfl}。

\subsection{联邦学习在金融领域的应用}
近年来，国内外部分金融机构已开展联邦学习应用，但多数仍为研究试点。在我国，主要应用于银行业与保险业，如百度金融安全计算平台中的车险和健康交叉险业务、腾讯安全的保险广告投放 RTA 、微众银行的联邦信贷风控等，但在银行业中开展的工作更多\cite{chen2021lianhe}，主要针对风控、营销、反洗钱等方面。联邦学习目前在我国银行业中的应用仍处于初步发展阶段，在计算成本、技术的成熟性、相关法律法规的监管等多个方面还存在一定缺陷，联邦学习在金融行业中的应用还需不断进行探索。

在这方面，本文围绕金融风险预测展开，探讨如何利用联邦学习技术克服跨机构间的数据共享障碍，同时提高风险控制效果。具体而言，本文基于FATE（Federated AI Technology Enabler）这一开源联邦学习框架，设计并实现了一个金融风险预测模型。本文希望验证联邦学习在金融风险预测场景下的性能和适用性，并为后续在更广泛的场景下引入联邦学习技术提供实践经验。在模型设计和实现的基础上，本文对其性能进行了测试，包括模型准确性、数据安全性等方面的评估。这一实证研究期望揭示联邦学习技术在金融风险预测场景中的价值和潜力，从而促进金融行业对联邦学习的更广泛应用。

\section{本文结构}
本文第二章主要讲述联邦学习及其相关技术原理与FATE框架技术架构，分节对联邦学习的概念与理论、算法原理、分类与当前使用的隐私保护技术原理、FATE架构进行了介绍。

本文第三章主要讲述了针对金融风险预测模型的联邦学习系统设计原理与流程，并介绍了实验的主要步骤、实验的环境等。

本文第四章主要讲述了实验过程，包括数据预处理、SMOTE算法过采样、分别在集中式与联邦环境下训练模型等。

本文第五章主要展示了实验结果，并基于实验结果对比了联邦模型与各单机模型的效果、联邦模型在不同数据分布下的模型效果，并对联邦学习过程的安全性进行了分析，最终总结实验结论，证明了借助联邦学习，金融机构之间的合作将能得到极大的推动力。
\chapter{联邦学习架构与隐私保护技术介绍}

\section{联邦学习概念与理论}
\subsection{联邦学习概念}
传统的机器学习算法需要用户将源数据上传到高算力的云服务器上集中训练，这种方式导致了数据流向的不可控和敏感数据泄露问题。联邦学习技术允许用户在机器学习过程中既可以保护用户隐私，又能够无须源数据聚合形成训练数据共享。

联邦学习本质上是一种分布式的机器学习技术，其流程如图\ref{联邦学习流程}所示。
\buptfigure[width=1\textwidth]{pictures/联邦学习流程}{联邦学习流程}{联邦学习流程}

客户端（如平板电脑、手机、物联网设备）在中心服务器（如服务提供商）的协调下共同训练模型，其中客户端负责训练本地数据得到本地模型。中心服务器负责加权聚合本地模型，得到全局模型，经过多轮迭代后最终得到一个趋近于集中式机器学习结果的模型w，有效地降低了传统机器学习源数据聚合带来的许多隐私风险。

联邦学习的一次迭代过程如下：
\begin{enumerate}
	\item 客户端从服务器下载全局模型 $w_{t−1}$
	\item 客户端 k 训练本地数据得到本地模型$w_{t，k}$，（第 k 个客户端第 t 轮通信的本地模型更新）
	\item 各方客户端上传本地模型更新到中心服务器
	\item 中心服务器接收各方数据后进行加权聚合操作，得到全局模型$w_{t}$（第 t 轮通信的全局模型更新）
\end{enumerate}
综上，联邦学习技术具有以下几个特点：
\begin{enumerate}
	\item 参与联邦学习的原始数据都保留在本地客户端，与中心服务器交互的只是模型更新信息
	\item 联邦学习的参与方联合训练出的模型 w 将被各方共享
	\item 联邦学习最终的模型精度与集中式机器学习相似
	\item 联邦学习参与方的训练数据质量越高，全局模型精度越高
\end{enumerate}

\subsection{联邦学习算法原理}
典型的联邦学习场景是在本地客户端设备负责存储和处理数据的约束下，只上传模型更新的梯度信息，在数千万到数百万个客户端设备上训练单个全局模型w。中心服务器的目标函数F(w)通常表现为
\begin{equation}
\begin{aligned}
{ }_w^{\min } F(w), F(w)=\sum_{k=1}^m \frac{n_k}{n} F_k(w)
\end{aligned}
\end{equation}
其中，m是参与训练的客户端设备总数，n是所有客户端数据量总和，${n_k}$是第k个客户端的数据量，${F_k(w)}$是第k个设备的本地目标函数。
\begin{equation}
\begin{aligned}
F_k(w)=\frac{1}{n_k} \sum_{i \in d_k} f_i(w)
\end{aligned}
\end{equation}
其中， $d_k$是第$k$个客户端的本地数据集，$f_i(w)=\alpha\left(x_i, y_i, w\right)$是具有参数$w$的模型对数据集$d_k$中的实例$\left(x_i, y_i\right)$产生的损失函数。$d_k$中所有实例产生的损失函数之和除以客户端$k$的总数据量就是本地客户端的平均损失函数，损失函数与模型精度成反比，因此，机器学习的目标函数优化通常是让损失函数达到最小值\cite{pan2019research}。

联邦学习的目标函数优化算法中，通常采用大批量随机梯度下降(SGD)算法，即通过本地客户端模型训练的损失函数，乘以固定的学习率$\eta$，计算出新一轮的权重更新。因此，本地客户端的模型权重更新如下:
\begin{equation}
\begin{aligned}
w_{t, k}=w_{t-1, k}-\eta \nabla F_k(w)
\end{aligned}
\end{equation}
第$t$轮通信中心服务器的模型聚合更新如下:
\begin{equation}
\begin{aligned}
w_t=\sum_{k=1}^K \frac{n_k}{n} w_{t, k}
\end{aligned}
\end{equation}

\subsection{联邦学习分类}

\begin{bupttable}{横向联邦学习}{complexcrowdwisdom_TMP}
	\begin{tabular}{l|l|l|l|l|l|l|l|l|l|l|l}
		\hline
		\textbf{数据集} & \textbf{user} & \textbf{$x_1$} & \textbf{$x_2$} & \textbf{$x_3$} & \textbf{$x_4$} & \textbf{$x_5$} & \textbf{$x_6$} & \textbf{$x_7$} & \textbf{$x_8$} & \textbf{$x_9$} & \textbf{...} \\
		\hline
		\multirow{3}{*}{\textbf{数据集A}} & $user_1$ & & & & & & & & & & \\
        \cline{2-12}
        & $user_2$ & & & & & & & & & & \\
        \cline{2-12}
        & $user_3$ & & & & & & & & & & \\
        \cline{2-12}
		\hline
		\multirow{3}{*}{\textbf{数据集B}} & $user_4$ & & & & & & & & & & \\
        \cline{2-12}
        & $user_5$ & & & & & & & & & & \\
        \cline{2-12}
        & $user_6$ & & & & & & & & & & \\
        \cline{2-12}
		\hline
	\end{tabular}
	\label{tab:横向联邦学习}
\end{bupttable}

\begin{bupttable}{纵向联邦学习}{complexcrowdwisdom_TMP}
	\begin{tabular}{l|l|l|l|l|l|l|l|l|l|l|l}
		\hline
		\textbf{user} & \textbf{$x_1$} & \textbf{$x_2$} & \textbf{$x_3$} & \textbf{$x_4$} & \textbf{$x_5$} & \textbf{$x_6$} & \textbf{$x_7$} & \textbf{$x_8$} & \textbf{$x_9$} & \textbf{$x_{10}$} & \textbf{...} \\
		\hline
		$user_1$ & & & & & & & & & & & \\
        \hline
        $user_2$ & & & & & & & & & & & \\
        \hline
        $user_3$ & & & & & & & & & & & \\
		\hline
		$user_4$ & & & & & & & & & & & \\
        \hline
        $user_5$ & & & & & & & & & & & \\
        \hline
        $user_6$ & & & & & & & & & & & \\
        \hline
		\multicolumn{6}{c|}{\textbf{数据集A}} & \multicolumn{6}{c}{\textbf{数据集B}} \\
		\hline
	\end{tabular}
	\label{tab:纵向联邦学习}
\end{bupttable}

\begin{bupttable}{迁移联邦学习}{complexcrowdwisdom_TMP}
	\begin{tabular}{l l l l l l l l l l l l}
		\cline{1-6}
		\multicolumn{1}{|c|}{\textbf{user}} & \multicolumn{1}{c|}{\textbf{$x_1$}} & \multicolumn{1}{c|}{\textbf{$x_2$}} & \multicolumn{1}{c|}{\textbf{$x_3$}} & \multicolumn{1}{c|}{\textbf{$x_4$}} & \multicolumn{1}{c|}{\textbf{...}} & & & & & & \\
		\cline{1-6}
		\multicolumn{1}{|c|}{$user_1$} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & & & & & & \\
        \cline{1-6}
        \multicolumn{1}{|c|}{$user_2$} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & & & & & & \\
        \cline{1-6}
        \multicolumn{1}{|c|}{$user_3$} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & &\multicolumn{6}{|c}{\textbf{数据集B}}\\
		\hline
		\multicolumn{6}{c|}{\textbf{数据集A}} & \multicolumn{1}{c|}{\textbf{user}} & \multicolumn{1}{c|}{\textbf{$y_1$}} & \multicolumn{1}{c|}{\textbf{$y_2$}} & \multicolumn{1}{c|}{\textbf{$y_3$}} & \multicolumn{1}{c|}{\textbf{$y_4$}} & \multicolumn{1}{c|}{\textbf{...}} \\
		\cline{7-12}
		& & & & & & \multicolumn{1}{|c|}{$user_4$} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} \\
        \cline{7-12}
        & & & & & & \multicolumn{1}{|c|}{$user_5$} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} \\
        \cline{7-12}
        & & & & & & \multicolumn{1}{|c|}{$user_6$} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} & \multicolumn{1}{c|}{} \\
        \cline{7-12}
	\end{tabular}
	\label{tab:迁移联邦学习}
\end{bupttable}

在联邦学习系统中，各参与方的数据又具有不同的分布特征.若根据参与方之间数据重叠程度的不同，联邦学习可以分为横向联邦学习\cite{yang2019federated}、纵向联邦学习\cite{vaidya2002privacy}以及迁移联邦学习\cite{pan2010survey}。如表\ref{tab:横向联邦学习}所示，横向联邦学习也称特征对齐的联邦学习，适用于各参与方之间数据特征空间重叠较多而用户空间重叠较少的情况。目前横向联邦学习经典框架是FedAvg\cite{mcmahan2016federated}，唤醒单词识别和输入法下一词预测是横向联邦的典型应用。纵向联邦学习（如表\ref{tab:纵向联邦学习}所示），即样本对齐的联邦学习，适用于各参与方之间用户空间重叠较多，而特征空间重叠较少或没有重叠的场景。目前支持纵向联邦学习的经典框架包括FATE，PaddleFL，FedML。联邦迁移学习（如表\ref{tab:迁移联邦学习}所示）是对横向联邦学习和纵向联邦学习的补充。它用于克服数据或标签不足的情况，以解决单边数据规模小和标签样本少的问题，适用于各参与方用户空间和特征空间都重叠较少的场景。目前支持联邦迁移学习的框架主要为FATE。

\section{隐私保护技术原理}
现有的方案主要通过结合典型隐私保护技术来提供进一步的隐私增强, 如差分隐私、安全多方计算、同态加密等技术，这些技术在之前的研究中已经被广泛应用于传统机器学习的隐私保护\cite{liu2020survey}。

\subsection{差分隐私}
设随机化算法$\mathrm{A}$，对于两个至多有一条数据不同的数据集$D$和$D^{\prime}$以及任意可能的输出$S$，若算法$\mathrm{A}$满足
\begin{equation}
\begin{aligned}
\operatorname{pr}[\mathrm{A}(D) \in S] \leqslant e^{\varepsilon} \operatorname{pr}\left[\mathrm{A}\left(D^{\prime}\right) \in S\right]+\delta
\end{aligned}
\end{equation}
则称随机化算法$\mathrm{A}$满足$(\varepsilon, \delta)$差分隐私保护。其中，$\varepsilon$代表隐私保护预算，$\delta$是算法允许的误差，通常为较小的常数。

Dwork等\cite{dwork2006calibrating}于2006年提出差分隐私概念，并使用严格的数学推导给出了安全性证明。通常差分隐私算法的噪声机制分为指数噪声、Laplace噪声和高斯噪声，其中，指数噪声主要用于处理离散数据集，Laplace噪声和高斯噪声主要用于处理连续数据集。

\subsection{安全多方计算}
安全多方计算\cite{su2019survey}。假设有$n$个参与方$P_1, P_2, \cdots, P_n$分别拥有自己的敏感数据$m_1$,$m_2$,$\cdots$,$m_n$，这$n$个参与者在不泄露各自输入数据的前提下共同执行一个协议函数f($m_1$,$m_2$,$\cdots$,$m_n$)。

安全多方计算的研究焦点是在没有可信第三方的条件下, 参与训练各方安全计算的一个共同的约束函数。姚期智\cite{dolev1983security}于1983年提出安全多方计算的概念, 通过混淆电路、不经意传输、秘密分享等技术实现多方共同运算，并确保各方数据的安全性。

\subsection{同态加密}
设有明文数据$d_1, d_2, \cdots$，$d_n$，这$n$个数据对应的加密数据为$m_1, m_2, \cdots, m_n$，若加密算法满足
\begin{equation}
\begin{aligned}
& \operatorname{Enc}\left(f\left(m_1, m_2, \cdots, m_n\right)\right)= \\
& f\left(\operatorname{Enc}\left(m_1\right), \operatorname{Enc}\left(m_2\right), \cdots, \operatorname{Enc}\left(m_n\right)\right)
\end{aligned}
\end{equation}
则称该加密算法满足同态加密。同态加密能够直接对密文数据进行密码学运算，最终运算结果经解密后与在明文上直接运算结果一致。Rivest等\cite{leroy2019federated}于1978年提出同态加密概念。同态加密分为全同态加密和部分同态加密，其中部分同态加密分为乘法同态和加法同态，若一个算法既满足乘法同态又满足加法同态，则称为全同态加密算法。

\section{FATE技术框架}
联邦学习框架FATE（Federated AI Technology Enabler）是一个开源的联邦学习框架，面向产业界提供了一个可扩展的联邦学习框架，支持横向联邦和纵向联邦等多种联邦学习场景。FATE的核心设计理念是提供一种可靠的安全计算框架，使得数据拥有方可以在不共享数据的情况下完成模型训练。FATE的安全计算框架基于联邦学习算法，通过安全多方计算（Secure Multi-Party Computation，SMPC）协议，保证了数据在联合建模过程中的安全性。

FATE由多个互相解耦的组件组成，FATE框架架构图如图\ref{FATE架构图}所示。
\buptfigure[width=1\textwidth]{pictures/fate\_architecture\_overview}{FATE架构图\cite{fate}}{FATE架构图}
\subsection{FATE架构设计}
\subsubsection{FederateML}
FederateML 是 FATE 的算法功能组件，其实现了大部分常见的机器学习算法的联邦化学习。为了增强可扩展性，所有模块均采用解耦模块化方法开发，例如：联邦统计、联邦信息检索、联邦特征工程、联邦机器学习算法、模型评估等。以下是 FederateML 中一些常用的算法组件。
\begin{itemize}
	\item \textbf{DataIO}：DataIO 是 FATE 算法模块中最基本的组成部分，其作用是转换数据类型，用户所上传的数据值转换为 FATE 定义的 Instance 对象的 Table，而且转换后的 Table 提供的数据类型是所有其他算法模块需要的输入数据格式，例如：intersect、homo LR、SecureBoost 等。另外，DataIO 还具备估算缺失值和离群值替换的特性，提供缺失值插补的方法：“mean”、“designated”、“min”、“max”
	\item \textbf{Federated Logistic Regression}：逻辑回归（LR）是解决分类问题中广泛使用的统计模型。FATE为联邦逻辑回归提供了两种模式：横向联邦逻辑回归（HomoLR）和纵向联邦逻辑回归（HeteroLR）
	\item \textbf{Federated Neural Networks}：神经网络是一种模拟人脑神经元网络的机器学习算法，具有强大的表达能力。FATE为联邦神经网络提供了实现：横向联邦神经网络（Homogeneous Neural Networks）和纵向联邦神经网络（Heterogeneous Neural Networks）。将联邦过程简化为三个参与方。A方代表Guest，作为任务触发器。B方代表Host，与Guest几乎相同，但Host不启动任务。C方充当协调员，汇总来自guest/hosts的模型，并广播汇总后的模型
	\item \textbf{Evaluation}：Evaluation 模块提供了回归、聚类和分类等一些机器学习中的评估方法，常用的指标包括计算机二进制的 AUC、用于评估模型风险区分能力的KS（Kolmogorov-Smirnov）、计算二分类和多分类的准确率的ACCURACY等
\end{itemize}
\subsubsection{FATE-Flow}
FATE-Flow 是 FATE 框架的作业调度系统，在联邦学习的过程中，实现作业生命周期的完整管理，其中包括输入数据、训练模型、追踪指标、模型中心化等功能。在 FATE 的任务中，需要提交 dsl 和 conf 两个配置文件到 FATE-Flow 来执行，主要是将各类服务启动并在后台运行，另外，FATE使用flask 框架作为 HTTP 服务框架提供 Web 服务。

\subsubsection{FATE-Board}
FATE-Board 是联邦学习建模的可视化工具，为终端用户可视化和度量模型训练的全过程。其主要的功能是将 FATE的 Evaluation 模块对数据进行模型评估后，各个评估指标以评估曲线的形式可视化展示出来。并且 FATE-Board 还可以在可视化界面手动调参，支持对模型训练过程全流程的跟踪、统计和监控等，并为模型运行状态、模型输出、日志追踪等提供了丰富的可视化呈现，帮助用户简单而高效地深入探索模型与理解模型。

\subsubsection{FATE-Serving}
FATE-Serving 是 FATE 平台提供的高性能可扩展的联邦学习在线模型服务，其性能特性是 FATE 实现线上推理的核心。



\chapter{基于FATE的联邦学习信贷风险预测模型}

\section{整体方案概要设计}

本实验的主要目标是探讨集中式机器学习和联邦学习在金融风险预测任务中的应用，通过对比二者在准确度和模型性能方面的表现，从而得出有关这两种方法在实际信贷风险预测场景中的适用性和优劣的结论。为达到这一目标，实验设计为以下几个关键步骤：

\begin{enumerate}
	\item 数据预处理：在进行实验之前，首先需要对 Lending Club 数据集进行预处理，以确保数据质量。预处理步骤包括处理缺失值、剔除异常值、进行特征选择和特征工程等。预处理后的数据将在后续步骤中用于训练和评估模型。
	\item 集中式机器学习模型：搭建一个适用于信贷风险预测的集中式机器学习模型，选用逻辑回归算法进行模型训练、和评估。在这个阶段，关注模型在准确率、召回率、精确率等性能指标上的表现
	\item 联邦学习模型：与集中式机器学习模型类似，搭建一个针对信贷风险预测的联邦学习模型。区别在于，联邦学习模型将分布式地在各数据拥有者处进行训练和更新，从而保护数据隐私。这会涉及实现与联邦学习框架（如 FATE）的对接、模型的加密策略等。在完成模型搭建后，利用 Lending Club 数据模拟分布式联邦学习过程，并对模型的性能进行测试
	\item 实验结果对比：在两种模型搭建完成并进行训练测试后，进一步对比集中式机器学习模型与联邦学习模型在准确率、模型性能等方面的表现。通过对比，分析两种方法在信贷风险预测任务中的优劣以及其各自适用的场景
	\item 结论与分析：在实验结果对比的基础上，进行深入的分析，挖掘在信贷风险预测场景下，集中式机器学习和联邦学习的优缺点、局限性及适用范围。为金融行业在实际应用中选择合适的风险预测方法提供指导
\end{enumerate}

其中联邦学习系统的流程示意图如图所示:
\buptfigure[width=1\textwidth]{pictures/联邦学习实验流程}{联邦学习实验流程}{联邦学习实验流程}
本次实验希望深入了解集中式机器学习和联邦学习在金融风险预测任务中的可行性和效果，从而得出有关这两种方法在实际场景中的适用性和优劣的见解。在实验中遇到的挑战和实现细节将展示目前技术的局限性，为未来研究和优化提供借鉴。此外，本实验的结果将为金融机构提供有价值的参考，以便在实践中更好地应用集中式机器学习或联邦学习技术，从而更有效地进行信贷风险预测和控制。
\subsection{实验基础与环境搭建}
在数据集选择方面，本文关注借贷业务中的风险预测和控制。为此，本文选择了具有高度分析价值的 Lending Club 公开数据集（2007-2015）\cite{lendingclubdata}，以便深入挖掘金融风险与各类因素之间的关系，并基于此建立性能优越的风险预测模型。Lending Club 是一家颇具影响力的美国网络借贷平台，其数据集涵盖了大量实际借贷交易，为研究者们提供了丰富的、真实的研究素材。

选用这一数据集的主要原因有以下几点。首先，Lending Club 数据集包含了大量的样本数据，Lending Club 数据集（2007-2015）总计包含了约88万条借贷记录，这些记录反映了多年来无数信贷用户的金融行为和信用状况，可以提高分析和训练模型的可靠性，降低过拟合风险，从而确保预测结果的准确性。其次，该数据集涉及的特征非常多样，在该数据集中，共有 74 个特征涉及了贷款申请人的各类信息，例如年收入、信用评分、负债比例、就业年限、贷款目的以及逾期还款情况等。这些特征涵盖了几乎所有与借款人信用风险相关的维度，有助于挖掘各类影响因子与信贷风险之间的潜在联系，能够为深入了解信贷风险预测的关键驱动因素提供有力支持。

\buptfigure[width=1\textwidth]{pictures/拓扑图}{集群环境拓扑图}{拓扑图}

在本实验中，使用了三台CentOS7进行了联邦学习环境的搭建，其网络信息与在FATE框架中的节点配置如表\ref{联邦学习环境信息}所示，拓扑如图\ref{拓扑图}所示
\begin{table}[ht]
    \centering
    \caption{联邦学习环境信息}
    \label{联邦学习环境信息}
    \begin{tabular}{|l|c|c|}
    \hline
    CentOS7-1   & 192.168.52.131      & 10000 	\\ \hline
    CentOS7-2   & 192.168.52.132      & 9999 	\\ \hline
    CentOS7-3 	& 192.168.52.133      & 9998 	\\ \hline
    \end{tabular}
\end{table}



\section{数据预处理}
在获取得到Lending Club 公开数据集（2007-2015）后，本文首先对数据集进行了预处理，以便为后续的模型训练和评估做好准备。具体而言，本文对数据集进行了缺失值处理、异常值处理、特征选择、特征编码等操作，以便为后续的模型训练和评估做好准备。

Lending Club 公开数据集（2007-2015）基础信息如表\ref{tab:dataset_info}所示：

\begin{table}[ht]
	\centering
	\caption{初始数据集详细信息}
	\label{tab:dataset_info}
	\begin{tabular}{|c|c|c|}
	\hline
	\textbf{Column} & \textbf{Non-Null Count} & \textbf{Dtype} \\
	\hline
	id & 887379 non-null & int64 \\
	\hline
	member\_id & 887379 non-null & int64 \\
	\hline
	loan\_amnt & 887379 non-null & float64 \\
	\hline
	funded\_amnt & 887379 non-null & float64 \\
	\hline
	funded\_amnt\_inv & 887379 non-null & float64 \\
	\hline
	term & 887379 non-null & object \\
	\hline
	int\_rate & 887379 non-null & float64 \\
	\hline
	installment & 887379 non-null & float64 \\
	\hline
	... & ... & ... \\
	\hline
	... & ... & ... \\
	\hline
	open\_il\_24m & 21372 non-null & float64 \\
	\hline
	mths\_since\_rcnt\_il & 20810 non-null & float64 \\
	\hline
	total\_bal\_il & 21372 non-null & float64 \\
	\hline
	il\_util & 18617 non-null & float64 \\
	\hline
	open\_rv\_12m & 21372 non-null & float64 \\
	\hline
	open\_rv\_24m & 21372 non-null & float64 \\
	\hline
	max\_bal\_bc & 21372 non-null & float64 \\
	\hline
	all\_util & 21372 non-null & float64 \\
	\hline
	total\_rev\_hi\_lim & 817103 non-null & float64 \\
	\hline
	inq\_fi & 21372 non-null & float64 \\
	\hline
	total\_cu\_tl & 21372 non-null & float64 \\
	\hline
	inq\_last\_12m & 21372 non-null & float64 \\
	\hline
	\end{tabular}
\end{table}

\subsection{缺失值处理}
在进行数据分析和模型构建时，数据缺失情况是一个需要特别关注的问题。特征中存在大量缺失值的情况可能会降低模型的预测准确性并导致过拟合。因此，在预处理阶段处理缺失数据至关重要，这有助于提高模型的性能和准确性。

在本文的实验中，Lending Club 数据集存在缺失值较多且混乱的问题，某些特征的缺失值超过了 2/3 总数据量，从宏观上看，可参考图\ref{缺失展示}。这种高度缺失的特征通常对模型的预测效果贡献甚微，甚至可能对模型产生负面影响。为了解决这个问题，需要对缺失值超过 2/3 的特征进行删除。这样做的目的是筛选掉对建模意义不大的特征，专注于那些对模型性能有重要贡献的特征。
\buptfigure[width=1\textwidth]{pictures/缺失展示}{缺失值可视化}{缺失展示}
\begin{lstlisting}[caption=删除高度缺失的特征值， label=删除高度缺失的特征值]
	thresh_count = len(data) * 2 / 3  # 设定阀值
	data = data.dropna(thresh=thresh_count， axis=1)  #若某一列数据缺失的数量超过阀值就会被删除
\end{lstlisting}
在删除高度缺失的特征值之后，还需要对剩余特征中存在的缺失值进行处理，以便确保分析和建模过程的有效性和准确性。针对剩余特征中的缺失值问题，缺失值主要集中在少数样本中，这部分样本的数量约为一万条。相较于整个数据集，这部分缺失值样本占整体数据的比例较小，因此处理起来相对简单。

在处理这些含有缺失值的样本时，本文采取了删除这些数据的策略。这样的处理方式具有一定的可行性和合理性，原因如下：

\begin{enumerate}
	\item 首先，由于包含缺失值的样本数量相对较少，删除这些样本对整个数据集的规模和数据分布影响有限。因此，这种方法不太可能引入显著的偏差，从而影响后续分析和建模的结果。
	\item 其次，删除缺失值样本相较于填充缺失值具有更低的计算复杂度。填充缺失值的方法可能包括基于统计特性的填充（如平均值、中位数填充）或建立更复杂的缺失数据处理模型（如基于相似样本的插值、基于回归分析的填充等），这些方法在处理大量缺失值时可能带来较高的计算成本并可能引入误差。相反，删除缺失值样本则能避免这些问题，使处理过程更加高效和简洁。
	\item 最后，有鉴于这些含有缺失值的样本占整个数据集的比例较低，直接删除这部分数据可能对模型的预测效果影响不大。而且，在一定程度上，删除这些缺失值样本也可以降低模型的噪声，从而提高模型的准确性。
\end{enumerate}
通过对高度缺失的特征进行删除，以及清理含有缺失值的样本，目前得到了一个质量较高、干净的数据集。在此基础上，可以进一步进行数据分析、特征工程和模型构建等步骤

\subsection{异常值处理}
在处理完数据集的缺失值问题之后，数据集中仍然存在一些异常特征值
\subsubsection{单一唯一值特征}
部分特征只包含单一唯一值，这样的特征实际上对最终的预测结果没有任何贡献。原因在于，这些仅具有单一值的特征在所有样本中都保持恒定，不具备区分能力，对模型性能的提升没有帮助。因此，为了提高模型的预测有效性和计算效率，应当将这些无关紧要的特征从数据集中删除，如代码\ref{删除单一特征值}所示。
\begin{lstlisting}[caption=删除单一特征值, label=删除单一特征值]
	# 删除属性值只有一项的属性，因为其对预测没有任何意义
	orig_columns = data.columns
	drop_columns = []
	for col in orig_columns:
		# 判断删除空值后是否是单一值
		col_series = data[col].dropna().unique()
		if len(col_series) == 1:
			drop_columns.append(col)
	# 删除属性值单一的特征
	data = data.drop(drop_columns， axis=1)
\end{lstlisting}
\subsubsection{特殊数据格式}
数据集中的某些特征值呈现为 object 类型。这主要是由于这些特征值中包含百分号（\%）或附带有 "years" 这样的后缀。然而，这些非数值格式的特征值在机器学习模型的训练过程中是不兼容的。因此，需要将这些 object 类型的特征值转换为适当的数值数据类型，以便顺利进行后续的数据分析和建模过程。

对于"int\_rate"与"revol\_util"特征，需要删除其后缀百分号（\%），如代码\ref{删除百分号}所示

\begin{lstlisting}[caption=删除百分号, label=删除百分号]
	loans["int_rate"] = loans["int_rate"].str.rstrip("%").astype("float")
	loans["revol_util"] = loans["revol_util"].str.rstrip("%").astype("float")
\end{lstlisting}

对于"emp\_length"特征，需要删除其后缀"years"，如代码\ref{删除years}所示

\begin{lstlisting}[caption=删除years, label=删除years]
	loans["int_rate"] = loans["int_rate"].str.rstrip("%").astype("float")
	loans["revol_util"] = loans["revol_util"].str.rstrip("%").astype("float")
\end{lstlisting}

对于"term"特征，需要删除其后缀"month"，如代码\ref{删除month}所示

\begin{lstlisting}[caption=删除month, label=删除month]
	loans['term'] = loans['term'].apply(lambda x: int(x[:-7]))
\end{lstlisting}

通过对异常值进行处理，目前得到了较为可读的数据集。在此基础上，可以进一步进行特征选择、特征编码等步骤。

\subsection{特征选择}
经过前面多个阶段的数据预处理，需要对数据集进行特征选择。特征选择的目的是从原始特征中挑选出那些对预测模型有实际帮助的特征，同时剔除那些与预测目标关系不大或冗余的特征。这一步骤至关重要，因为选择合适的特征可以降低模型的复杂度，提高计算效率，避免过拟合现象，从而提高预测性能。

本实验根据特征的实际含义和数据分布情况进行筛选。针对数据集中的某些特征，如 id、member\_id、zip\_code、out\_prncp、out\_prncp\_inv、total\_pymnt\_inv 等，与预测目标之间的关联性较弱，或者在预测过程中可能引入额外的噪声，因此选择将这些特征从数据集中删除。

具体操作步骤如下：

\begin{enumerate}
	\item 识别待删除特征：建立一个待删除特征的列表，按照实际意义，将 id、member\_id、zip\_code、out\_prncp、out\_prncp\_inv、total\_pymnt\_inv 等特征加入列表中。
	\item 删除特征：从数据集中逐一移除这些待删除特征，确保数据保持一致性和完整性
\end{enumerate}

经过上述处理步骤，得到了一个精简且只包含相关特征的数据集，如表\ref{特征选择表信息}所示。在这个新数据集的基础上，模型将能以较高的计算效率进行训练。同时，避免冗余特征导致的过拟合问题，并有望提升预测结果的准确性。

\begin{table}[ht]
	\centering
	\caption{特征选择后数据集详细信息}
	\label{特征选择表信息}
	\begin{tabular}{|c|c|c|}
	\hline
	\textbf{Column} & \textbf{Non-Null Count} & \textbf{Dtype} \\
	\hline
	loan\_amnt & 242851 non-null & float64 \\
	\hline
	term & 242851 non-null & int64 \\
	\hline
	int\_rate & 242851 non-null & float64 \\
	\hline
	installment & 242851 non-null & float64 \\
	\hline
	emp\_length & 242851 non-null & int64 \\
	\hline
	home\_ownership & 242851 non-null & object \\
	\hline
	annual\_inc & 242851 non-null & float64 \\
	\hline
	verification\_status & 242851 non-null & object \\
	\hline
	loan\_status & 242851 non-null & int64 \\
	\hline
	purpose & 242851 non-null & object \\
	\hline
	dti & 242851 non-null & float64 \\
	\hline
	delinq\_2yrs & 242851 non-null & float64 \\
	\hline
	inq\_last\_6mths & 242851 non-null & float64 \\
	\hline
	open\_acc & 242851 non-null & float64 \\
	\hline
	pub\_rec & 242851 non-null & float64 \\
	\hline
	revol\_bal & 242851 non-null & float64 \\
	\hline
	revol\_util & 242851 non-null & float64 \\
	\hline
	total\_acc & 242851 non-null & float64 \\
	\hline
	\end{tabular}
\end{table}	

\subsection{特征编码}
在完成特征选择后，数据集中的 verification\_status、home\_ownership、purpose、loan\_status 这四个特征仍是 object 类型。然而，这些特征实际上都是分类特征，因此不能直接将它们纳入数值型机器学习模型中进行训练。为处理这些分类特征，需要对它们进行独热编码（One-Hot Encoding）操作，从而将这些离散的分类特征转换为一种机器学习模型可以接受的数值型输入形式，如代码\ref{独热编码}所示。
\begin{lstlisting}[caption=one hot编码, label=独热编码]
	cat_columns = ["home_ownership"， "verification_status"， "purpose"]
	dummy_df = pd.get_dummies(data[cat_columns])
	data = pd.concat([data， dummy_df]， axis=1)
	data = data.drop(cat_columns， axis=1)
\end{lstlisting}
最后，需要对loan\_status特征进行特殊处理，本实验只需要最终发放和不发放贷款的情况，其他的情况删除不考虑。因此需要只保留贷款成功和而不成功的情况，删除需要等待的情况，并将成功申请的情况用1代替，将申请失败的情况使用0代替，如代码\ref{loanStatus}所示。

\begin{lstlisting}[caption=loanStatus特征处理, label=loanStatus]
	data = data[(data['loan_status'] == "Fully Paid") |
            (data['loan_status'] == "Charged Off")]
	status_replace = {
		"loan_status": {
			"Fully Paid": 1,
			"Charged Off": 0,
		}
	}
	# 将成功申请的情况用1代替，将申请失败的情况使用0代替
	data = data.replace(status_replace)
	print(data.shape)
\end{lstlisting}

至此完成了对数据集的预处理，数据集具体信息如表\ref{预处理后数据集信息}所示。


\section{处理样本不平衡}
在 Lending Club 信贷数据集中，正负样本集数量差别较大，如图\ref{loanStatusPng}所示。样本的不平衡会对模型学习造成困扰。举例来说，假如有100个样本，其中只有1个是贷款违约样本，其余99个全为贷款正常样本，那么学习器只要制定一个简单的方法：所有样本均判别为正常样本，就能轻松达到99\%的准确率。而这个分类器的决策对本实验的风险控制毫无意义。因此，在将数据代入模型训练之前，必须先解决样本不平衡的问题。
\buptfigure[width=1\textwidth]{pictures/loan\_status}{正负样本比例图}{loanStatusPng}
非平衡样本常用的解决方式有2种：
\begin{enumerate}
	\item 过采样（oversampling），增加正样本使得正、负样本数目接近，然后再进行学习。
	\item 欠采样（undersampling），去除一些负样本使得正、负样本数目接近，然后再进行学习。
\end{enumerate}

本实验采用的方法是过采样，具体操作使用SMOTE（Synthetic Minority Oversampling Technique），SMOTE的基本原理是：采样最邻近算法，计算出每个少数类样本的K个近邻，从K个近邻中随机挑选N个样本进行随机线性插值，构造新的少数样本，同时将新样本与原数据合成，产生新的训练集。

经过过采样后的数据集比例如图\ref{afterSmote}所示。
\buptfigure[width=1\textwidth]{pictures/after smote}{SMOTE过采样前后对比}{afterSmote}

\section{在集中式环境下训练风险预测模型}
在集中式机器学习的信贷风险预测中，为了对机器学习模型的性能进行评估，首先需要将整个数据集划分为训练集和测试集。本实验采用了常用的数据划分策略，将30\%的数据作为测试集用于评估模型的泛化能力，而剩余的70\%的数据被划分为训练集，用于训练逻辑回归模型。

loan\_status仅有两种状态，本实验是一个二分类问题，因此本实验选择了逻辑回归作为训练模型的算法，逻辑回归是一种广泛应用于二分类问题的线性模型，具有易于理解、训练速度快等优点。其原理如下：

首先，给出逻辑回归模型的一般形式，设输入特征向量为 $x=\left(x_1, x_2, \cdots, x_n\right)^T$，逻辑回归模型的输出为：
\begin{equation}
\begin{aligned}
	P(y=1 \mid x)=\frac{1}{1+\exp \left(-w^T x\right)}
\end{aligned}
\end{equation}
其中，$w=\left(w_1, w_2, \cdots, w_n\right)^T$ 为模型参数。


模型将线性回归的输出通过sigmoid函数进行转换，使其值在0到1之间，表示为正类的概率。
对于损失函数，此处采用对数损失 (Logistic Loss) ：
$L(y, \hat{y})=-y \log (\hat{y})-(1-y) \log (1-\hat{y})$。


在求解模型参数$w$时，通常通过最大似然估计(MLE)的方式优化损失函数，其中$\arg \max _w L(w)=\arg \min _w-\log L(w)$，可以通过梯度下降(Gradient Descent)等方法进行求解。
在训练完成后，逻辑回归模型可以直接通过输入特征计算得到预测值，并设定一个阈值（0.5），大于阈值的样本预测为正类，否则为负类。


评估模型性能的过程中，本实验选定了真负率（Specificity）和召回率（Recall）作为主要的评估指标。真负率衡量了模型在识别负样本（即无风险贷款）方面的表现，而召回率评估了模型在检测正样本（即存在风险的贷款）方面的能力。这两项指标对于金融风险预测任务至关重要，因为它们可以帮助了解模型在不同方面的性能表现。通过对比这两个指标的数值，可以更准确地评估模型的整体性能，并据此对模型进行调整和优化。


结果如表\ref{集中式机器学习评估结果}所示
\begin{table}[ht]
    \centering
    \caption{集中式机器学习评估结果}
    \label{集中式机器学习评估结果}
    \begin{tabular}{|l|c|c|c|}
    \hline
              & precision & recall & f1-score \\ \hline
	Charged Off   & 0.28      & 0.66   & 0.40     \\ \hline
    Fully Paid   & 0.90      & 0.65   & 0.75     \\ \hline
    \end{tabular}
\end{table}

\section{在联邦学习环境下训练风险预测模型}
\subsection{基于FATE设计并实现联邦学习风险预测算法}
在联邦学习环境下训练风险预测模型过程中，涉及以下几个关键步骤：
\begin{enumerate}
	\item 首先，需要搭建一个稳定的联邦学习环境。这包括了配置硬件设备、配置必要的运行环境以及建立适当的数据传输通道。确保参与方可以顺畅并安全地进行联邦学习
	\item 其次，在建立联邦学习环境之后，要将数据上传至相应的主机并进行预处理
	\item 然后，为模型训练和评估过程进行详细定义。这包括选择合适的算法、设置超参数以及确保所选用的评估标准能够客观地反映模型的性能
	\item 最后，在模型训练和评估完成后，需要对结果进行分析对比
\end{enumerate}

\subsection{联邦学习数据的分割上传}
\subsubsection{数据集的分割}
在联邦学习的应用场景中，用户数据通常分布式地存储在不同公司或组织的数据库中，而非集中在一个单一的数据库。这样的分布式数据存储方式可以保护用户隐私，同时增加了数据处理的复杂性。为了模拟这种真实的场景，本实验将原本集中式环境下的训练数据分为了三个独立的数据子集。

这种划分数据集的方法旨在模拟现实世界中类似的情况，即各公司和组织仅访问和处理其拥有的用户数据。通过对这三份独立的数据子集进行分别处理和分析，实验旨在评估联邦学习框架在处理分布式数据时的性能和效果。与此同时，将训练数据分为三份的另一个优势在于，可以更好地理解不同数据分布对模型训练结果的影响。

因此，本实验将数据集按表\ref{数据集分割信息}所示分割为了三部分，分别对应三台CentOS7主机。
\begin{table}[ht]
    \centering
    \caption{数据集分割信息}
    \label{数据集分割信息}
    \begin{tabular}{|l|c|c|}
    \hline
    CentOS7-1   & 25\%      & 10000 	\\ \hline
    CentOS7-2   & 25\%      & 9999 	\\ \hline
    CentOS7-3 	& 50\%      & 9998 	\\ \hline
    \end{tabular}
\end{table}
\subsubsection{数据集的上传}
为了提升联邦建模的易用性，FATE-v1.5 开始引入Pipeline模块， 该模块提供了一套可视化的数据处理流程，用户可以通过配置文件定义数据处理流程，然后通过命令行工具提交任务，FATE会自动执行数据处理流程，最终生成可用于建模的数据集。在本实验中，使用了Pipeline模块对数据集进行了上传，操作流程如下所示：
\begin{enumerate}
	\item 对pipeline进行初始化，配置接下来将要连接的IP与端口
	\item 创建python脚本并引入pipeline模块，定义各主机职责，这里定义guest为9999，host为9998、10000
	\item 定义数据存储分区、表名和命名空间，这将在FATE模型配置中使用
	\item 使用pipeline\_upload.add\_upload\_data定义上传数据表操作，如代码\ref{上传数据表}所示
	\item 使用pipeline\_upload.upload(drop=1)完成上传
\end{enumerate}
\begin{lstlisting}[caption=定义上传数据表操作, label=上传数据表]
	pipeline_upload.add_upload_data(file=os.path.join(data_base, "train.csv"),
                                table_name=dense_data_guest["name"],
                                namespace=dense_data_guest["namespace"],        
                                head=1, partition=partition)

	pipeline_upload.add_upload_data(file=os.path.join(data_base, "test.csv"),
									table_name=test_data_guest["name"],
									namespace=test_data_guest["namespace"],         
									head=1, partition=partition)
\end{lstlisting}

\subsection{联邦学习风险预测模型训练}

\subsubsection{pipeline初始化}
在进行模型训练流程定义之前，需要先对pipeline进行初始化来配置提交各主机在联邦任务中各自的角色，如代码\ref{pipeline初始化}所示。
\begin{lstlisting}[caption=pipeline初始化, label=pipeline初始化]
	pipeline = PipeLine() \
        .set_initiator(role='guest'， party_id=9999) \
        .set_roles(guest=[9999]， host=[9998，10000]， arbiter=10000)
\end{lstlisting}

\subsubsection{定义数据读取（Reader）模块}
在配置好各主机在联邦任务中各自的角色之后，需要定义联邦学习风险预测模型训练的流程；首先需要定义的就是数据读取模块，数据读取模块负责从指定的数据分区中根据命名空间与表名读取数据到工作流中，如代码所示。
\begin{lstlisting}[caption=reader定义， label=reader定义]
	reader_0 = Reader(name="reader_0")
	reader_0.get_party_instance(role='guest'， party_id=9999).component_param(
		table={"name": "9999_data"， "namespace": "experiment"})
	reader_0.get_party_instance(role='host'， party_id=10000).component_param(
		table={"name": "10000_data"， "namespace": "experiment"})
	reader_0.get_party_instance(role='host'， party_id=9998).component_param(
		table={"name": "9998_data"， "namespace": "experiment"})
\end{lstlisting}

\subsubsection{定义数据处理（DataTransform）模块}
DataTransform模块主要负责数据预处理和特征工程的任务。这个模块提供了一系列实用的数据处理方法和工具，以便在进行联邦学习建模之前清洗、转换和优化数据，由于之前本实验已经对数据进行过预处理，因此这里本实验仅使用DataTransform模块来进行训练数据与标签的区分，如代码\ref{DataTransform定义}所示。
\begin{lstlisting}[caption=DataTransform定义, label=DataTransform定义]
	data_transform_0 = DataTransform(name="data_transform_0"， with_label=True)
	data_transform_0.get_party_instance(role='guest'， party_id=[9999]).component_param(
		with_label=True，label_name="loan_status"， label_type="int"， output_format="dense")
	data_transform_0.get_party_instance(role='host'， party_id=[10000]).component_param(
		with_label=True，label_name="loan_status"， label_type="int"， output_format="dense")
	data_transform_0.get_party_instance(role='host'， party_id=[9998]).component_param(
		with_label=True，label_name="loan_status"， label_type="int"， output_format="dense")
\end{lstlisting}

\subsubsection{定义横向逻辑回归（HomoLR）模块}
横向逻辑回归（HomoLR）是联邦学习中一种重要的分类算法。在这个模型中，参与计算的各方（例如客户端和主机）拥有相同的特征空间，但数据样本可能不同。HomoLR利用加密方式在各方之间进行安全地梯度交换和聚合，从而保护各方的数据隐私，并实现在分布式数据上训练一个全局性的逻辑回归模型。
与传统的逻辑回归（LR）相似，HomoLR的训练过程主要包括以下步骤：
\begin{enumerate}
	\item 初始化HomoLR模型。各参与方的模型具有相同的结构。在每次迭代中，每个参与方在自己的数据上训练局部模型。
	\item 加密梯度计算：使用可选的加密模式（目前FATE仅支持Paillier算法）计算主机方的梯度。这样一来，该主机不再可获得明文模型。这有助于保护各方之间的数据隐私。
	\item 梯度交换与聚合：各参与方将加密（或明文，取决于设置）梯度上报给arbiter。arbiter聚合这些梯度以形成联邦梯度，然后将其分发给所有参与方以更新它们的局部模型。
	\item 收敛判断与停止条件：与传统的LR类似，当联邦模型收敛或整个训练过程达到预定的最大迭代次数之后，训练过程将停止。
\end{enumerate}
在FATE中使用HomoLR如代码\ref{HomoLR定义}所示，对参数进行了部分定义，在保证较大规模分布式数据训练效果的同时，降低计算资源开销。以下是对这些参数的详细说明及其作用：
\begin{lstlisting}[caption=HomoLR定义, label=HomoLR定义]
	homo_lr_0 = HomoLR(name="homo_lr_0"， tol=0.0001， alpha=1.0， optimizer='rmsprop'， batch_size=-1， early_stop='diff')
\end{lstlisting}
\begin{enumerate}
	\item name="homo\_lr\_0"：为HomoLR模型实例命名，便于后续训练和评估
	\item tol=0.0001：容差（tolerance）参数用于设置模型收敛的阈值。当模型的优化程度达到该阈值时，训练过程将提前终止
	\item alpha=1.0：设置正则化系数，用于控制模型的正则化强度以防止过拟合
	\item optimizer='rmsprop'：设置优化器为RMSProp。优化器用于更新模型权重以最小化损失函数。RMSProp是一种自适应学习率方法，适用于非凸优化问题，可以加速模型收敛过程
	\item batch\_size=-1：batch大小用于确定每次参数更新前要处理的数据样本数。当batch\_size=-1时，表示使用所有数据样本作为一个batch。这意味着模型将在每个完整的数据集上执行一次参数更新
	\item early\_stop='diff'：提前停止策略，当模型收敛到一定程度时（基于定义的容差值）提前终止训练，有助于节省计算资源并防止过拟合
\end{enumerate}

\subsubsection{定义评估（Evaluation）模块}
Evaluation模块在FATE中负责提供各种评估指标和方法，用以衡量模型训练效果和性能。本实验利用这一模块来评估通过联邦学习训练得到的模型的效果和性能，如代码\ref{Evaluation定义}所示
\begin{lstlisting}[caption=Evaluation定义, label=Evaluation定义]
	evaluation_0 = Evaluation(name="evaluation_0"， eval_type="binary")
\end{lstlisting}
此处为Evaluation模块实例定义了名称 "evaluation\_0"，并将其评估类型设置为"binary"，表明对一个二分类问题的模型性能进行评估。Evaluation模块提供了多种评估指标，例如准确率（Accuracy）、精确度（Precision）、召回率（Recall）、F1值（F1-score）、AUC、ROC曲线等。这些评估指标可以帮助实验更全面地衡量模型在训练集和测试集上的表现，从而判断模型是否足够泛化以处理新的数据，并发现潜在的过拟合或欠拟合问题。

\subsubsection{配置pipeline工作流结构}
在完成单个模块的定义后，需要将这些独立的模块组合成一个完整的Pipeline工作流。为了实现这一目标，需要按照执行顺序和数据处理逻辑将各个模块添加到Pipeline中，并定义它们之间的数据依赖关系，如代码\ref{pipeline工作流定义}所示
\begin{lstlisting}[caption=pipeline工作流定义, label=pipeline工作流定义]
	pipeline.add_component(reader_0)
	pipeline.add_component(data_transform_0， data=Data(data=reader_0.output.data))
	pipeline.add_component(homo_lr_0， data=Data(data=data_transform_0.output.data))
	pipeline.add_component(evaluation_0，data=Data(homo_lr_0.output.data))
	pipeline.compile()
\end{lstlisting}
上述代码描述了Pipeline工作流的结构和数据流向：
\begin{enumerate}
	\item 首先，将Reader组件添加到工作流中，读取和加载数据集
	\item 接着，将DataTransform组件添加到工作流中，依赖于Reader组件的输出数据。在这个组件中完成训练数据与标签的划分
	\item 接着，将HomoLR组件加入工作流，该组件依赖于DataTransform组件的输出数据。此时，HomoLR模型开始在训练数据上进行训练
	\item 最后，在工作流中添加Evaluation组件，依赖于HomoLR组件的输出数据。此时，Evaluation模块会计算并输出模型在不同评估指标方面的表现
\end{enumerate}
完成工作流结构和依赖关系的定义后，最后使用pipeline.compile()完成Pipeline的编译。

通过以上步骤，本实验成功地将各个解耦的模块组建成一个完整的Pipeline工作流。接下来，可以开始训练模型，并利用Evaluation模块评估模型在训练集和测试集上的性能。训练过程如图\ref{训练过程loss变化}所示

\chapter{风险预估模型实验结果与分析}
在现实金融场景中，各金融机构都拥有一部分信贷风险控制数据，但由于法律法规对客户隐私保护的要求，这些数据无法在金融机构之间共享以提高风险预测模型的准确性。然而，联邦学习（FL）技术正好可以解决这个问题。

联邦学习允许不同金融机构在不彼此共享原始数据的情况下，共同训练一个模型。这样可以避免隐私泄露风险，同时充分利用各方的数据资源，提升模型的性能。

为了验证联邦学习技术在金融信贷领域的优势和实际应用效果，实验将一个涉及三家金融机构数据的联邦学习模型与各公司各自独立训练的模型进行比较，对一份独立于训练集之外的测试集进行预测。

由于测试集中正负样本的不平衡，如图\ref{test数据集分布}所示，使用准确率作为评价指标可能不是最佳选择。正负样本不平衡意味着模型在训练过程中可能会偏向正面样本较多的类别，从而在预测高风险投资时表现不佳。因此，关注真负率有助于更精确地评估模型在区分高风险投资方面的表现。它允许投资者在预警高风险投资方面更有信心，进而优化投资决策。
\buptfigure[width=1\textwidth]{pictures/testBingTu}{test数据集分布}{test数据集分布}

在金融风险预警模型中，模型的主要目标是识别那些具有高风险的投资，因此在风险预估模型的实际应用中，强调真负率作为主要评价标准有助于降低误判率和减少金融损失，所以，真负率（特异性，判别负样本的准确度）作为一种更合适的评价标准可能会更为有效。

\section{FATE联邦模型与各方本地模型对比结果}
经过模型预测与指标计算，联邦模型与各方机构本地模型真负率对比图如图\ref{联邦模型与各方本地模型对比结果}所示。从图中可以明显观察到，在三家金融机构进行联邦学习训练后，模型的风险预警能力得到了显著提升。

这个结果证明了联邦学习对于金融行业等涉及数据隐私和安全的领域，具有重要的实际价值。通过应用联邦学习技术，各金融机构可以在保障数据安全、遵守相关法规的基础上，充分利用合作方的数据资源来共同优化他们的风险控制策略。这不仅有助于提高风险识别准确度，还可更有效地为客户提供定制化服务。

除了金融场景之外，联邦学习也适用于其他需要进行跨机构数据联合训练的领域，例如医疗、教育和零售等。通过联邦学习技术，各个机构可以在保护用户隐私和数据安全的前提下，充分发挥数据的价值，实现业务优势的共享和提升。总体来看，联邦学习无疑将在多个行业发挥巨大的推动作用。
\buptfigure[width=1\textwidth]{pictures/zhenfulv}{联邦模型与各方本地模型对比结果}{联邦模型与各方本地模型对比结果}

\section{FATE联邦模型在不同联邦数据分布下的性能对比分析}
在联邦学习场景中，各参与方的数据集分布通常是不均匀的，这可能是由于各方面的业务差异、客户特征以及其他不同因素的影响。因此，在实际应用中需要考虑这些不同场景以确保联邦学习具有更好的泛用性与健壮性。

本实验旨在通过测试不同数据分布下的模型表现，来评估联邦学习在不同数据分布条件下的效果。通过这种方式，可以探讨在不同业务场景下联邦学习技术能够带来的商业价值和性能改进。

为了实现这个目标，本实验测试了在两家机构的条件下进行联邦，数据分布从不均匀到均匀的情况下模型的预测效果变化，如图\ref{数据分布模型效果对比}所示。可以看到，在总数据量不变而数据分布更加均匀的情况下，模型的效果会更加准确。这个结论对现实商业活动中使用联邦学习具有很大的指导意义，说明了不同机构在合作过程中需要对各方数据集的大小与分布进行一定的评估，以此来决定是否合作以及预估合作背后的商业价值。
\buptfigure[width=1\textwidth]{pictures/数据分布模型效果对比}{数据分布模型效果对比}{数据分布模型效果对比}

\section{FATE联邦模型的安全性分析}
FATE框架的安全性主要来源于使用了多方安全计算 (MPC) 以及同态加密 (HE) 技术构建底层安全计算协议。通过源数据不出本地而仅交互模型更新（如梯度信息）的方式来保护用户的敏感数据。联邦学习中客户端通过训练源数据上传本地模型，服务器仅负责聚合和分发每轮迭代形成的全局模型，从而避免源数据的泄露。然而，在真实的网络环境中，模型反演攻击、成员推理攻击、模型推理攻击层出不穷，参与训练的客户端动机难以判断，中心服务器的可信程度难以保证，仅通过模型更新来保护用户隐私的方式显然是不够的。

因此，FATE使用了多方安全计算 (MPC) 以及同态加密 (HE) 技术来保证联邦学习过程中的安全性。
\begin{enumerate}
	\item 安全多方计算 (Multi-Party Computation， MPC)：安全多方计算 (MPC) 是一种允许多方在不泄露数据本身的情况下，共同计算某个函数的方法。在 FATE 联邦学习框架中，MPC 保证了数据局部性和保密性，使得机构能够在不暴露自己数据的情况下进行合作。FATE 的 MPC 基于密码学原理，包括安全加密和解密、脱敏数据传输和处理等，以确保联邦学习过程中每个参与方的信息安全
	\item 同态加密 (Homomorphic Encryption)：同态加密是一种加密方法，它允许对密文数据执行计算操作，并在不解密的情况下生成最终结果。在 FATE 联邦学习框架中，同态加密用于数据的安全计算和聚合。Paillier 同态加密是 FATE 常用的同态加密模型，它使得各参与方能够在保护数据隐私的同时，实现合作计算和模型训练
\end{enumerate}

本实验中，主要使用的Federated Logistic Regression组件使用了Paillier 同态加密算法进行梯度更新，保证了梯度数据传输与计算的安全性。但是同时造成了较大的通信开销和计算开销\cite{geyer2017differentially}，如何平衡通信负担和模型安全仍是一个问题与挑战。

\chapter{总结与展望}
本文通过实验证明了联邦学习在实际应用中的有效性和优越性。具体而言，联邦学习不仅在传统机器学习技术的基础上提供了隐私计算，为用户带来强大的隐私保护机制，而且在保证模型精度的同时实现了更优的性能。本研究成功地运用金融信贷场景的数据，完成了联邦学习风险预测模型的设计、训练与实现，并将其与单机构数据训练的模型进行了对比。分析结果表明，借助联邦学习，金融机构之间的合作将能得到极大的推动力。

同时，本文通过对不同数据分布下联邦学习训练结果的对比分析，成功测试了数据分布对联邦训练效果的影响。研究结论显示，在总数据量不变的情况下，数据分布越均匀，联邦学习模型训练效果越佳。在现实商业活动中，各合作方应当充分参考各自数据集的分布特点，以便更深刻地评估联邦学习背后的商业价值。

在大数据安全的背景下，联邦学习为解决数据安全、数据泄露、用户隐私等问题提供了一种高效的解决方案。尽管联邦学习采取了原始数据不离开本地的方式来保护用户隐私，但这种方式在某些方面仍存在提升空间，如计算成本较高等。因此，在未来的研究中，可以进一步探索更加安全且高效的隐私计算技术，将其融入联邦学习框架中，为解决现实应用中的问题提供更为强大的支持。

%%%%%%%%%%%%%%%%%%%%%%% Main Area ENDs Here %%%%%%%%%%%%%%%%%%%%%%%%
%\let\cleardoublepage=\cleardoublepagebak

\begin{nopagenumber}
	% Reference
	\clearpage\phantomsection\addcontentsline{toc}{chapter}{参考文献}
	\bibliographystyle{buptbachelor}
	\refbodyfont{\bibliography{ref}}

	% Thanks to page
	\clearpage
	\chapter{致\qquad{}谢}
	\normalsize\thankwords

	% Appendix
	\setcounter{figure}{0}
	\renewcommand{\thefigure}{~附-\arabic{figure}~}
	\setcounter{equation}{0}
	\renewcommand{\theequation}{~附-\arabic{equation}~}
	\setcounter{table}{0}
	\renewcommand{\thetable}{~附-\arabic{table}~}
	\setcounter{lstlisting}{0}
	\makeatletter
	\renewcommand \thelstlisting
	{附-\@arabic\c@lstlisting}
	\makeatother


	\chapter*{附\qquad{}录}
	\phantomsection\addcontentsline{toc}{chapter}{附\qquad{}录}

	\begin{table}[ht]
		\centering
		\caption{预处理后数据集信息}
		\label{预处理后数据集信息}
		\begin{tabular}{|l|c|l|}
		\hline
		列名                               & 非空计数 & 数据类型   \\ \hline
		loan\_amnt                           & 242851         & float64 \\ \hline
		term                                 & 242851         & float64 \\ \hline
		int\_rate                            & 242851         & float64 \\ \hline
		installment                          & 242851         & float64 \\ \hline
		emp\_length                          & 242851         & float64 \\ \hline
		annual\_inc                          & 242851         & float64 \\ \hline
		dti                                  & 242851         & float64 \\ \hline
		delinq\_2yrs                         & 242851         & float64 \\ \hline
		inq\_last\_6mths                     & 242851         & float64 \\ \hline
		open\_acc                            & 242851         & float64 \\ \hline
		pub\_rec                             & 242851         & float64 \\ \hline
		revol\_bal                           & 242851         & float64 \\ \hline
		revol\_util                          & 242851         & float64 \\ \hline
		total\_acc                           & 242851         & float64 \\ \hline
		home\_ownership\_ANY                & 242851         & float64 \\ \hline
		home\_ownership\_MORTGAGE           & 242851         & float64 \\ \hline
		home\_ownership\_NONE               & 242851         & float64 \\ \hline
		home\_ownership\_OTHER              & 242851         & float64 \\ \hline
		home\_ownership\_OWN                & 242851         & float64 \\ \hline
		home\_ownership\_RENT               & 242851         & float64 \\ \hline
		verification\_status\_Not Verified  & 242851         & float64 \\ \hline
		verification\_status\_Source Verified & 242851      & float64 \\ \hline
		verification\_status\_Verified      & 242851         & float64 \\ \hline
		purpose\_car                         & 242851         & float64 \\ \hline
		purpose\_credit\_card               & 242851         & float64 \\ \hline
		purpose\_debt\_consolidation        & 242851         & float64 \\ \hline
		purpose\_educational                & 242851         & float64 \\ \hline
		purpose\_home\_improvement          & 242851         & float64 \\ \hline
		purpose\_house                      & 242851         & float64 \\ \hline
		purpose\_major\_purchase            & 242851         & float64 \\ \hline
		purpose\_medical                     & 242851         & float64 \\ \hline
		purpose\_moving                      & 242851         & float64 \\ \hline
		purpose\_other                       & 242851         & float64 \\ \hline
		purpose\_renewable\_energy          & 242851         & float64 \\ \hline
		purpose\_small\_business            & 242851         & float64 \\ \hline
		purpose\_vacation                   & 242851         & float64 \\ \hline
		purpose\_wedding                     & 242851         & float64 \\ \hline
		loan\_status                         & 242851         & int64   \\ \hline
		\end{tabular}
	\end{table}

	\buptfigure[width=1\textwidth]{pictures/loss}{训练过程loss变化}{训练过程loss变化}

	% Translated Article
	\newpage\backmatter
	\thispagestyle{empty}
	\phantomsection\addcontentsline{toc}{chapter}{外\quad{}文\quad{}资\quad{}料}
	% 原文第一页，PDF缩放比例为0.95，可以自行调整
	\includepdf[pages=1, scale=0.95, pagecommand=\begin{center}\translationtitlefont{外\quad{}文\quad{}资\quad{}料}\end{center}]{docs/translation.pdf}
	% 原文剩余部分
	\includepdf[pages=2-, scale=0.95]{docs/translation.pdf}
	
	% Translation
	\setcounter{chapter}{0}
	\renewcommand{\thefigure}{~外\arabic{chapter}-\arabic{figure}~}
	\renewcommand{\theequation}{~外\arabic{chapter}-\arabic{equation}~}
	\renewcommand{\thetable}{~外\arabic{chapter}-\arabic{table}~}
	\renewcommand{\thelstlisting}{~外\arabic{chapter}-\arabic{lstlisting}~}

	\begin{center}
	\phantomsection\addcontentsline{toc}{chapter}{外\quad{}文\quad{}译\quad{}文}
	\translationtitlefont{外\quad{}文\quad{}译\quad{}文}
	\end{center}
	\vspace{8mm}
	\thispagestyle{empty}


	\begin{center}
	\sanhao\heiti\textbf{梯度反转 - 分布式学习中隐私泄露有多容易？}

	\xiaosihao\songti{Jonas Geiping, Hartmut Bauermeister, Hannah Dröge, Michael Moeller}

	\xiaosihao\songti{西根大学}
	\end{center}

	\songti{}
	\begingroup % 限制两个let语句的作用范围在外文译文部分
	\let\clearpage\relax
	\let\cleardoublepage\relax

	%以下是排版示例，在这里为了使章节编号不出现在目录中，使用了无编号的样式，代价是这些数字都要自己书写。

	\chapter*{第一章\quad{}引言}
	%每一个chapter后记得以下两行
	\newtranschapter

	联合学习或协作学习[6,28]是一种分布式学习范式，最近由于机器学习中的数据需求和隐私问题持续增加而获得了极大的关注[21,14,32]。其基本思想是训练一个机器学习模型，例如神经网络，通过使用损失函数L和由输入图像xi和相应标签yi组成的示例训练数据来优化网络的参数θ，以便求解

	\begin{equation}
	\begin{aligned}
		\min _{\theta} \sum_{i=1}^{N} \mathcal{L}_{\theta}\left(x_{i}, y_{i}\right)
	\end{aligned}
	\end{equation}

	我们考虑一个分布式设置，其中服务器希望在拥有训练数据$\left(x_{i}, y_{i}\right)$的多个用户的帮助下解决(1)。联合学习的思想是只共享梯度$\nabla_{\theta} \mathcal{L}_{\theta}\left(x_{i}, y_{i}\right)$用服务器代替原来的数据$\left(x_{i}, y_{i}\right)$，它随后积累来更新总体权值。例如，使用梯度下降，服务器的更新可能构成

	\begin{equation}
	\begin{aligned}
		\theta^{k+1}=\underbrace{\theta^{k}-\tau \sum_{i=1}^{N}}_{\text {server }} \underbrace{\nabla_{\theta} \mathcal{L}_{\theta^{k}}\left(x_{i}, y_{i}\right)}_{\text {users }} .
	\end{aligned}
	\end{equation}

	\buptfigure[width=1\textwidth]{translate_pictures/1}{从梯度$\nabla_{\theta} \mathcal{L}_{\theta}(x, y)$中重构输入图像$x$}{重构输入图像}
	左图：验证数据集中的图像。中间图：从经过ImageNet训练的ResNet-18进行重构。右图：从经过ImageNet训练的ResNet-152进行重构。在两种情况下，图像的隐私都被破坏了。请注意，以前的攻击无法恢复任何ImageNet大小的数据[35]或攻击训练过的模型。

	更新的参数$\theta^{k+1}$被发送回各个用户。方程(2)中的过程称为联邦SGD。相比之下，在联邦平均[17, 21]中，每个用户在本地计算多个梯度下降步骤，并将更新后的参数发送回服务器。最后，可以通过仅分享多个本地示例的梯度的均值$\frac{1}{t} \sum_{i=1}^{t} \nabla_{\theta} \mathcal{L}_{\theta^{k}}\left(x_{i}, y_{i}\right)$来进一步混淆有关$\left(x_{i}, y_{i}\right)$的信息，我们将其称为多图像设置。

	在需要保护用户隐私的实际应用中，如医院数据[13]或移动设备上的文本预测[3]中已经使用了这种类型的分布式学习，并且已经声明“随机学习更新的短暂和集中的性质增强了隐私”[3]：认为模型更新包含的信息比原始数据少，并且通过聚合来自多个数据点的更新，认为原始数据不可能恢复。在本研究中，我们在分析和经验上表明，参数梯度仍然携带关于所认为的私有输入数据的显着信息，如图1所示。我们最终得出的结论是，即使在现实的架构上进行多图像联邦平均，也不能保证所有用户数据的隐私性，这表明在100个图像批处理中，仍有几个是可以恢复的。

	\textbf{威胁模型}：我们调查一个想要发现用户数据的诚实但好奇的服务器：攻击者被允许分别存储和处理由各个用户传输的更新，但不得干扰协作式学习算法。攻击者不得修改模型体系结构以更好地适应其攻击，也不得发送不代表实际学习的全局参数。用户在第6节中被允许在本地积累数据。我们提供了进一步的评论，请参阅补充材料，并提到在攻击者的弱约束条件下，攻击几乎是微不足道的。

	在本文中，我们首先在学术环境中讨论联邦学习的隐私限制，重点研究来自一幅图像的梯度反转的情况，并展示以下内容：

	\begin{itemize} 
		\item 可以从梯度信息中重建输入数据，对于具有现实深度和非平滑架构的模型，无论模型参数是否训练过。
		\item 使用正确的攻击方法，深度网络与浅层网络一样脆弱，存在较少的“深度防御”。
		\item 我们证明，任何全连接层的输入都可以在不考虑其余网络架构的情况下进行解析重构。
	\end{itemize}

	然后，我们考虑这些发现对实际情境的影响，发现以下情况：
	\begin{itemize} 
		\item 在实践中，可以从它们的平均梯度中重建多个单独的输入图像，经过多个时期，使用本地小批量甚至进行最多100个图像的平均梯度。
	\end{itemize}
	
	\newpage %每一章需要另起一页，为了灵活，我没有把它固定在样式中，你可以根据需求添加分页符
	\chapter*{第二章\quad{}相关工作}
	\newtranschapter
	以前与本文相似的研究主要局限于浅层网络，而不是实际相关性更强的深层网络。神经网络中从梯度信息中恢复图像数据的可能性最早在参考文献[25,24]中被讨论，他们证明了单个神经元或线性层的恢复是可能的。对于卷积架构，参考文献[31]展示了4层CNN中单个图像的恢复是可能的，尽管需要一个相当大的全连接(FC)层。他们的工作首先构建了输入图像的“表示”，然后使用GAN进行改进。参考文献[35]扩展了这一点，展示了对于一个4层CNN（具有大型FC层，平滑的Sigmoid激活，没有步幅，统一随机权重），缺失的标签信息也可以一起重建。他们进一步展示，从平均梯度中重建多个图像确实是可能的（对于最大批处理大小为8）。参考文献[35]还讨论了更深的架构，但没有提供具体的结果。后续的参考文献[34]指出，可以从最后一层的梯度中解析计算标签信息。这些工作对模型体系结构和模型参数做出了强烈的假设，使得重建变得更容易，但违反了我们在本工作中考虑的威胁模型，并导致较不现实的情况。
	
	[31,35,34]中讨论的中心恢复机制是欧几里得匹配项的优化。成本函数
	\begin{equation}
	\begin{aligned}
		\arg \min _{x}\left\|\nabla_{\theta} \mathcal{L}_{\theta}(x, y)-\nabla_{\theta} \mathcal{L}_{\theta}\left(x^{*}, y\right)\right\|^{2}
	\end{aligned}
	\end{equation}
	被最小化以从传输的梯度$\nabla_{\theta} \mathcal{L}_{\theta}\left(x^{*}, y\right)$中恢复原始输入图像$x^{*}$。这个优化问题是通过L-BFGS求解器[18]来解决的。请注意，对$\mathcal{L}$的梯度关于$x$的微分需要考虑参数化函数的二阶导数，而L-BFGS需要构建一个三阶导数的近似值，这对于具有ReLU单元的神经网络来说是具有挑战性的，因为更高阶导数是不连续的。

	与完全重建输入图像相比，相关但更容易的问题是从局部更新中检索输入属性[23,10]，例如，在人脸识别系统中识别的人戴帽子吗？甚至可以从神经网络的深层中恢复与任务无关的属性信息，这些信息可以从局部更新中恢复出来。

	此外，我们的问题陈述还与模型反演[9]密切相关，在训练后从网络参数中恢复训练图像。如果没有其他信息的情况下，对于更深的神经网络架构，模型反演通常是具有挑战性的[33,9]。另一个密切相关的任务是从视觉表示中进行反演[8,7,20]，其中，在给定神经网络的某个中间层的输出的情况下，可以重建出合理的输入图像。这个过程可能会泄露一些信息，例如一般图像构成、主导颜色等，但是根据给定的层，它只会重建出相似的图像，如果神经网络没有被明确选择为（基本上）可逆的，那么这个过程只会重建出相似的图像。正如我们后来证明的那样，从视觉表示中进行反演比从梯度信息中恢复要更困难。

	\newpage
	\chapter*{第三章\quad{}理论分析：从梯度中恢复图像}
	\newtranschapter
	为了从理论角度理解破坏联邦学习隐私的整体问题，让我们首先分析一个问题：是否可以从其梯度$\nabla_{\theta} \mathcal{L}_{\theta}(x, y) \in \mathbb{R}^{p}$分析地恢复数据$x \in \mathbb{R}^{n}$。


	由于$x$和$\nabla_{\theta} \mathcal{L}_{\theta}(x, y)$维度不同，重建的质量肯定是一个关于参数$p$与输入像素$n$之间的问题。如果$p<n$，那么重建至少和从不完整数据中恢复图像一样困难[4,2]。然而，即使当$p>n$的时候，我们在大多数计算机视觉应用中也会遇到这种情况，正则化的$\nabla_{\theta} \mathcal{L}_{\theta}$ “反演”的难度也与梯度算子的非线性和其条件有关。


	有趣的是，全连接层在我们的问题中起着特殊的作用：如下文所证明的，无论全连接层在神经网络中的位置如何（前面或后面），全连接层的输入都可以从参数梯度中独立地进行分析计算（假设满足一个防止梯度为零的技术条件）。特别地，分析重建不依赖于先前或之后的特定类型的层，单个全连接网络的输入总是可以被分析地重建，而不需要解决一个优化问题。以下陈述是[24]中例3的泛化，适用于任意神经网络和任意损失函数的设置：

	\begin{proposition}
		考虑一个包含有偏置全连接层的神经网络，该全连接层之前仅由（可能是无偏置的）全连接层组成。此外，假设对于任何这些全连接层，损失函数$\mathcal{L}$对于该层的输出的导数至少包含一个非零项。那么可以唯一地从网络的梯度重构出输入。
	\end{proposition}

	证明：下面我们对证明进行概述，并参考附加材料中的详细推导。考虑一个无偏置全连接层，将输入$x_{l}$映射到输出，例如在ReLU非线性函数之后：$x_{l+1}=\max \left(A_{l} x_{l}, 0\right)$，其中$A_{l}$是一个维度兼容的矩阵。根据假设，对于某个索引$i$，有$\frac{\mathrm{dL}}{\mathrm{d}\left(x_{l+1}\right){i}} \neq 0$。然后根据链式法则，可以计算$x_{l}$为$\left(\frac{\mathrm{d} \mathcal{L}}{\mathrm{d}\left(x_{l+1}\right){i}}\right)^{-1} \cdot\left(\frac{\mathrm{d} \mathcal{L}}{\mathrm{d}\left(A_{l}\right){i, i}}\right)^{T}$。这允许在已知$\mathcal{L}$对于某个特定层的输出的导数时，逐步计算出层的输入。我们注意到，添加偏置可以被解释为一个层将$x_{k}$映射到$x_{k+1}=x_{k}+b_{k}$，且$\frac{\mathrm{d} \mathcal{L}}{\mathrm{d} x_{k}}=\frac{\mathrm{d} \mathcal{L}}{\mathrm{d} b_{k}}$。

	根据上述考虑，另一个有趣的方面是许多流行的网络架构使用全连接层（或其级联层）作为它们最后的预测层。因此，作为预测模块输入的上一层的输出可以被重构出来。这些激活通常已经包含了关于输入图像的一些信息，因此使它们容易受到攻击者的攻击。例如，[23]展示了这些特征表示可以通过训练一个辅助的恶意分类器来挖掘图像属性，该分类器可以识别主任务中不包含的属性。在这方面进一步有趣的是，根据[34]的讨论，可以从最后一个全连接层的梯度中重构出地面实况标签信息。最后，命题3.1允许得出结论：对于任何以全连接层结束的分类网络，从参数梯度中重构输入比从它们最后的卷积层中反演视觉表示（如$[8,7,20]$所讨论的）要容易得多。

	\newpage
	\chapter*{第四章\quad{}一个数值重构方法}
	\newtranschapter
	由于图像分类网络很少以全连接层开始，让我们转向输入的数值重构：先前的重构算法依赖于两个组成部分：方程（3）的欧几里得成本函数和通过L-BFGS进行的优化。我们认为这些选择对于更现实的架构，特别是任意的参数向量来说并不是最优的。如果我们将参数梯度分解为其范数大小和方向两部分，我们发现范数大小只能捕捉关于训练状态的信息，衡量数据点相对于当前模型的局部最优性（对于强凸函数，梯度大小甚至是到最优解的距离的上界）。相反，梯度的高维方向可以携带重要的信息，因为两个数据点之间的角度量化了在一个数据点上采取梯度步进朝向另一个数据点时的预测变化$[5,16]$。因此，我们建议使用基于角度的成本函数，即余弦相似度，$l(x, y)=\langle x, y\rangle /(|| x|| | y|| \mid)$。与方程（3）相比，目标不是找到具有最适应观察到的梯度的图像，而是找到导致模型预测变化与（未观察到的！）真实值相似的图像。如果额外限制两个梯度向量的范数为1，则这相当于最小化欧几里得成本函数。

	我们进一步将我们的搜索空间限制在$[0,1]$之内，并且只添加总变差[27]作为整个问题的简单图像先验，参见[31]：
	\begin{equation}
	\begin{aligned}
		\arg \min _{x \in[0,1]^{n}} 1-\frac{\left\langle\nabla_{\theta} \mathcal{L}_{\theta}(x, y), \nabla_{\theta} \mathcal{L}_{\theta}\left(x^{*}, y\right)\right\rangle}{\left\|\nabla_{\theta} \mathcal{L}_{\theta}(x, y)\right\|\left\|\nabla_{\theta} \mathcal{L}_{\theta}\left(x^{*}, y\right)\right\|}+\alpha \operatorname{TV}(x)
	\end{aligned}
	\end{equation}
	其次，我们注意到，通过最小化依赖于中间层输出（通过它们的梯度间接影响）的某个量，来寻找给定区间内的一些输入$x$，与为神经网络寻找对抗扰动的任务相关$[29,19,1]$。因此，我们最小化等式：
	\buptfigure[width=1\textwidth]{translate_pictures/2}{基准比较是针对$[31,35]$中展示的网络架构}{基准比较}
	展示了来自CIFAR-10验证集的前6个图像。

	（4）仅基于其梯度的符号进行优化，我们使用Adam [15]算法进行优化，并使用步长衰减。然而需要注意的是，有符号梯度仅影响Adam算法的一阶和二阶动量，实际的更新步骤仍然是无符号的，基于累积的动量进行计算，因此可以准确地恢复图像。

	应用这些技术会导致图1中所观察到的重构结果。关于所提出机制的进一步消融实验可以在附录中找到。我们在\href{https://github}{https://github}. com/JonasGeiping/invertinggradients上提供了PyTorch的实现。

	由于双重反向传播，这种攻击的计算成本大约是在目标方程（4）上每个梯度步骤的单个小批量步骤的两倍。在这项工作中，我们保守地运行攻击，最多进行24000次迭代，使用相对较小的步长，因为计算成本不是我们目前的主要关注点（我们假设潜在的攻击者在计算能力方面可能比用户具有数量级更高的能力），但我们注意到，更智能的步长规则和更大的步长可以在几百次迭代的预算下成功攻击。

	\textbf{备注（优化标签信息）}。虽然我们也可以将标签y视为方程（4）中的未知项，并像[35]中那样联合优化$(x, y)$，但我们遵循[34]的做法，发现标签信息可以在分类任务中进行解析重构。因此，我们认为标签信息是已知的。

	\newpage
	\chapter*{第五章\quad{}从单个梯度重构单个图像}
	\newtranschapter
	类似于先前在联邦学习环境中破坏隐私的工作，我们首先关注从梯度$\nabla_{\theta} \mathcal{L}_{\theta}(x, y) \in \mathbb{R}^{p}$中重构单个输入图像$x \in \mathbb{R}^{n}$。这种设置既是概念验证，也是我们在第6节中考虑的多图像分布式学习设置的重构质量上限。虽然先前的工作已经显示单个图像的隐私破坏是可能的，但它们的实验仅限于相对较浅、光滑和未经训练的网络。接下来，我们将我们提出的方法与先前的工作进行比较，并进行了关于架构和训练相关选择对重构的影响的详细实验。每个实验的超参数设置和更多的视觉结果都在补充材料中提供。

	与先前方法的比较。我们首先将我们的方法与使用L-BFGS优化的欧几里得损失（3）进行比较，这是在[31, 35, 34]中考虑的方法。由于该方法往往由于糟糕的初始化而失败，所以我们允许L-BFGS求解器进行16次重启。为了进行定量比较，我们使用与[35]中相同的浅层光滑CNN（称为"LeNet (Zhu)"）以及一个ResNet架构，分别使用训练和未经训练的参数，测量了CIFAR-10验证集的前100个图像的$32 \times 32$重构图像的平均峰值信噪比（PSNR）。
	表格1比较了欧几里得损失（3）通过L-BFGS优化（与$[31,35,34]$中的方法相同）和我们提出的方法的重构质量。前者在未经训练、平滑且浅层的架构上表现非常好，但在经过训练的ResNet上完全失败。我们注意到[31]使用GAN增强了通过LBFGS重建的图像质量，但当图像扭曲得无法增强时，该方法失败了。我们的方法提供了可识别的图像，并且在经过训练的ResNet上表现特别出色，如图2所示。有趣的是，与表1中的信噪比较低的未经训练的ResNet相比，经过训练的ResNet上的重建图像具有更好的视觉质量。让我们在更加现实的情境下研究训练网络参数的效果，即从ResNet-152重建ImageNet图像。

	\textbf{经过训练与未经训练的网络。}如果一个网络经过训练并具有足够的容量，使得损失函数$\mathcal{L}_{\theta}$的梯度在不同输入下为零，那么很明显它们无法与它们的梯度区分开。然而，在实际情况中，由于随机梯度下降、数据增强和有限的训练轮数，图像的梯度很少完全为零。尽管我们观察到经过训练的网络中图像梯度的幅值要比未经训练的网络小得多，但我们的幅值无关方法（式（4））仍然仅基于经过训练的梯度的方向恢复重要的视觉信息。

	\begin{table}
		\caption{在CIFAR-10验证数据集的前100个图像上进行的100次实验的PSNR均值和标准差}
		\label{在CIFAR-10验证数据集的前100个图像上进行的100次实验的PSNR均值和标准差}
		\centering
		\begin{tabular}{lcccc}
		\hline
		Architecture & \multicolumn{2}{c}{LeNet (Zhu)} & \multicolumn{2}{c}{ResNet20-4} \\
		Trained & False & True & False & True \\
		\hline
		Eucl. Loss + L-BFGS & $\mathbf{4 6 . 2 5} \pm \mathbf{1 2 . 6 6}$ & $13.24 \pm 5.44$ & $10.29 \pm 5.38$ & $6.90 \pm 2.80$ \\
		Proposed & $18.00 \pm 3.33$ & $\mathbf{1 8 . 0 8} \pm \mathbf{4 . 2 7}$ & $\mathbf{1 9 . 8 3} \pm \mathbf{2 . 9 6}$ & $\mathbf{1 3 . 9 5} \pm \mathbf{3 . 3 8}$ \\
		\hline
		\end{tabular}
	\end{table}
	


	\buptfigure[width=1\textwidth]{translate_pictures/3}{使用经过训练的ResNet-152的参数梯度进行单个图像重构}{使用经过训练的ResNet-152的参数梯度进行单个图像重构}
	顶行：真实图像。底行：重构图像。我们检查了ILSVRC2012验证集中每1000个图像。每个图像泄露的信息量在很大程度上取决于图像内容，尽管像两只鱼类这样的例子受到了很大的破坏，但黑天鹅（具有讽刺意味的是）几乎没有泄露可用的信息。还可以注意到一些图像中位置信息的丢失。


	我们在图3中的ImageNet重建图像中观察到了两个对经过训练的网络的一般性影响：首先，重建似乎在隐含地偏向于训练数据中同一类别的典型特征，例如第5张图中黑琵鸟更蓝色的羽毛，或者插图中猫头鹰的大眼睛。因此，尽管大多数图像的整体隐私性显然受到侵犯，但这种效应至少阻碍了细节或图像背景的恢复。其次，我们发现在神经网络训练过程中使用的数据增强导致经过训练的网络使对象的定位更加困难：请注意图3中有多少对象保留了其原始位置，以及蛇和壁虎的重复。因此，尽管使用数据增强训练的图像重建仍然成功，但某些位置信息会丢失。

	\buptfigure[width=1\textwidth]{translate_pictures/4}{}{}

	\textbf{平移不变卷积。}让我们通过测试传统的使用零填充卷积的卷积神经网络与使用循环填充卷积的可证明平移不变CNN之间的能力，来更详细地研究模糊物体位置的能力。如插图所示，尽管传统CNN能够恢复出质量相当高的图像（左侧），但平移不变网络使得物体的定位变得不可能（右侧），因为原始物体被分离开来。因此，我们确定了常见的零填充是隐私风险的一个来源。

	\buptfigure[width=1\textwidth]{translate_pictures/5}{}{}
	\buptfigure[width=1\textwidth]{translate_pictures/6}{多个ResNet架构的原始图像重建（左侧）}{多个ResNet架构的原始图像重建（左侧）}
	PSNR值是指显示的图像，而平均PSNR是在前10个CIFAR-10图像上计算的。标准差是给定架构下一个实验的平均标准差。ResNet-18架构显示了三个不同宽度的情况。

	\textbf{网络深度和宽度。}对于分类准确性来说，CNN的每一层的深度和通道数都是非常重要的参数，这就是为什么我们研究它们对我们的重建结果的影响。图4显示，随着通道数的增加，重建质量显著提高。然而，更大的网络宽度也伴随着实验成功的方差增加。然而，通过多次重启实验，可以为更宽的网络产生更好的重建结果，使得PSNR值从16个通道增加到128个通道时从19增加到接近23。因此，更大的网络宽度增加了攻击者的计算工作量，但并不提供更高的安全性。
	
	观察我们从具有不同深度的ResNet获得的重建结果，可以看出随着网络深度的增加，所提出的攻击几乎没有受到影响。特别是-如图3所示，即使通过ResNet-152，我们也能够实现对ImageNet的忠实重建。

	
	\newpage
	\chapter*{第六章\quad{}使用联邦平均和多个图像的分布式学习}
	\newtranschapter
	到目前为止，我们只考虑了从梯度中恢复单个图像的情况，并讨论了这种情境下的限制和可能性。现在，我们将转向更困难的泛化情景，即联邦平均[21,22,26]和多图像重建，以展示所提出的改进在这种更实际的情况下同样有效，并讨论该应用中的可能性和限制。

	联邦平均不仅仅基于本地数据计算网络参数的梯度，而是在将更新后的参数发送回服务器之前，在本地数据上执行多个更新步骤。按照[21]的符号表示，我们假设用户端的本地数据包含$n$个图像。在每个本地时期中，用户执行$\frac{n}{B}$个随机梯度更新步骤，其中$B$表示本地小批量大小，结果是总共进行了$E \frac{n}{B}$个本地更新步骤。然后，每个用户$i$将本地更新的参数$\tilde{\theta}_{i}^{k+1}$发送回服务器，服务器通过对所有用户进行平均来更新全局参数$\theta^{k+1}$。

	我们通过实验证明，即使在联邦平均的情况下，$n \geq 1$个图像的设置也可能受到攻击。为此，我们尝试通过本地更新$\tilde{\theta}_{i}^{k+1}-\theta^{k}$的知识来重建$n$个图像的本地批处理。接下来，我们将评估不同选择的$n, E$和$B$的重建图像质量。我们注意到，之前章节中研究的情况对应于$n=1, E=1, B=1$。在所有实验中，我们使用了一个未经训练的ConvNet。

	\textbf{多个梯度下降步骤，}$B=n=1, E>1$：

	图5显示了在不同的本地时期$E$和不同的学习率$\tau$选择下，对$n=1$个图像的重建情况。即使在100个本地梯度下降步骤的情况下，重建质量也没有受到影响。我们唯一能够举例说明的失败案例是选择了较高的学习率1e-1。然而，这种设置对应于一个会导致发散训练更新的步长，因此不能提供有用的模型更新。

	\buptfigure[width=1\textwidth]{translate_pictures/7}{本地更新步数和学习率对重建结果的影响}{本地更新步数和学习率对重建结果的影响}
	左侧两幅图像比较了在固定学习率τ = 1e-4的情况下梯度下降步数的影响。右侧两幅图像则是在固定的5个梯度下降步数下变化学习率的结果。图像下方显示了PSNR值。

	\buptfigure[width=1\textwidth]{translate_pictures/8}{在CIFAR-100上使用一个包含100个图像的批次的聚合梯度中的信息泄漏}{在CIFAR-100上使用一个包含100个图像的批次的聚合梯度中的信息泄漏}
	对于ResNet32-10。显示了整个批次中最具识别性的5个图像。尽管大多数图像无法识别，但在大批次设置中仍然破坏了隐私。有关所有图像，请参阅补充材料。

	\textbf{多图像恢复，}$B=n>1, E=1$：

	到目前为止，我们只考虑了单个图像的恢复，并且有理由相信在将更新发送到服务器之前，对多个（本地）图像的梯度进行平均可以恢复联邦学习的隐私性。虽然在[35]中已经考虑了多图像恢复的情况，但我们证明了所提出的方法能够从100个平均梯度的批次中恢复一些信息：尽管大多数恢复的图像无法识别（如补充材料所示），图6显示了最具识别性的5个图像，并说明即使对100个图像的梯度进行平均，也无法完全保护隐私数据。最令人惊讶的是，批处理产生的失真是非均匀的。人们可能会期望所有图像都受到相等的失真，几乎无法恢复，然而一些图像被严重扭曲，而其他图像仅在可以轻松识别图中对象的程度上扭曲，这表明即使对于大批量的图像数据，隐私泄漏也是可以想象的。

	请注意，在这种情况下，攻击者只知道梯度的平均值，但我们假设服务器知道参与的图像数量。服务器可能无论如何都会请求这些信息（例如为了平衡异构数据），但即使不知道图像的确切数量，服务器（我们假设服务器具有比用户更多的计算能力）也可以在一系列候选图像数量上运行重建算法，因为图像数量只是一个小整数值，然后选择重建损失最小的解决方案。

	\textbf{一般情况}

	\begin{table}
		\caption{在CIFAR-10验证数据集的前100张图像上进行的实验中，对于不同的联邦平均设置，计算了PSNR（峰值信噪比）统计数据}
		\label{在CIFAR-10验证数据集的前100张图像上进行的实验中，对于不同的联邦平均设置，计算了PSNR（峰值信噪比）统计数据}
		\centering
		\begin{tabular}{ccccc}
			\hline
			& \multicolumn{2}{c}{1 epoch} & \multicolumn{2}{c}{5 epochs} \\
			\hline
			4 images & \multicolumn{2}{c}{8 images} & 1 image & 8 images \\
			\hline
			batchsize 2 & batchsize 2 & batchsize 8 & batchsize 1 & batchsize 8 \\
			\hline\hline
			$\mathbf{16.92} \pm \mathbf{2.10}$ & $\mathbf{14.66} \pm \mathbf{1.12}$ & $\mathbf{16.49} \pm \mathbf{1.02}$ & $\mathbf{25.05} \pm \mathbf{3.28}$ & $\mathbf{16.58} \pm \mathbf{0.96}$ \\
			\hline\hline
		\end{tabular}
	\end{table}

	我们还考虑了每个小批量梯度步骤中使用整个本地数据子集进行多个本地更新步骤的一般情况。表2提供了所有进行的实验的概述。对于每个设置，我们在CIFAR-10验证集上进行了100次实验。对于小批量中的多个图像，我们只使用不同标签的图像，以避免对相同标签的重建图像进行置换模糊。正如预期的那样，单个图像的重建在PSNR值方面最容易受到攻击。尽管在PSNR方面性能较低，但我们仍然观察到所有多图像重建任务的隐私泄漏，包括在随机小批量中采用的梯度。比较表2中1个和5个时期的完整批处理中的8个图像示例，我们发现我们之前观察到的多个时期不会使重建问题更加困难的观察结果也适用于多图像。关于表2中所有实验设置的重建图像的定性评估，请参阅补充材料。

	

	\newpage
	\chapter*{第七章\quad{}结论}
	\newtranschapter
	联邦学习是分布式计算中的一种现代范式转变，然而其对隐私的好处尚未被充分理解。我们揭示了可能的攻击途径，通过分析能够对任何全连接层进行输入重构的能力，提出了一种基于梯度余弦相似度的通用优化攻击，并讨论了其在不同类型的架构和场景中的有效性。与先前的工作相比，我们展示了即使是使用ImageNet规模的数据进行训练的深层非平滑网络（如ResNet-152）在攻击下也是脆弱的，即使考虑到训练后的参数向量。我们的实验结果明确表明，隐私并不是联邦学习等协作学习算法的固有属性，而安全应用需要针对各种情况进行深入研究，以了解其泄露私人信息的潜力。可证明的差分隐私可能仍然是唯一能够保证安全性的方法，即使对于更大批次的数据点的聚合梯度也是如此。

	\section*{7.1\quad{}更广泛的影响-联邦学习无法保证隐私}
	关于联邦学习设置中的隐私攻击的最近研究（[25, 24, 31, 35, 34]）暗示了先前的希望“通过瞬时和集中的[Federated Learning]更新提高隐私性”的观点并不总是成立的。在这项工作中，我们证明了在工业实际情况下的计算机视觉中，改进的优化策略（如余弦相似度损失和带符号的Adam优化器）可以实现联邦学习设置下的图像恢复：与先前工作的理想化架构相反，我们证明了在深层非平滑和经过训练的架构中，在优化器的多次联邦平均步骤和甚至100张图像的批次中，图像恢复是可能的。

	我们注意到，图像分类可能特别容易受到此类攻击的影响，这是由于图像数据的固有结构、图像分类网络的规模以及单个用户可能拥有的图像数量相对于其他个人信息来说相对较小。另一方面，这种攻击可能只是对更强攻击的第一步。因此，这项工作指出，在协作训练高度准确的机器学习方法的过程中，如何在保护数据隐私方面仍然存在着广泛的问题：虽然差分隐私提供了可证明的保证，但它也显著降低了最终模型的准确性[12]。因此，实施差分隐私和安全聚合可能是昂贵的，这使得数据公司有一定的经济激励只使用基本的联邦学习方法。关于这个更一般的讨论，请参阅[30]。目前对于保护隐私的学习技术的研究兴趣浓厚，旨在使本文提出的攻击失效。这可能通过防御机制或计算可验证性的保证来实现，让从业者能够验证其特定应用程序是否容易受到此类攻击，并了解攻击范围。

	这项研究的广泛影响是，它提醒我们在协作训练精确的机器学习模型的过程中如何保护数据隐私仍然面临着重要的挑战。随着联邦学习的广泛应用，我们必须深入研究和开发隐私保护技术，以确保用户数据在联邦学习过程中得到充分的保护。这将涉及到制定更强大的防御机制、改进差分隐私技术以提供更好的平衡点，以及建立适用于各种应用场景的可验证性保证。同时，政策制定者和相关利益相关者也应意识到隐私保护在联邦学习中的重要性，并制定相应的规范和法律框架来确保用户数据的安全和隐私。

	\section*{7.2\quad{}致谢与资金披露}
	这项研究直接得到了Siegen大学的支持。HB和MM还受到德国研究基金会（DFG）MO 2962/2-1号资助。



	\endgroup

	% 开题报告
	\blankmatter
	\phantomsection\addcontentsline{toc}{chapter}{开\quad{}题\quad{}报\quad{}告}
	\includepdf[pages=-]{docs/openingReport.pdf}

	% 中期检查表
	\blankmatter
	\phantomsection\addcontentsline{toc}{chapter}{中\quad{}期\quad{}检\quad{}查\quad{}表}
	\includepdf[pages=-]{docs/interimReport.pdf}

	% 教师指导毕业设计（论文）记录表
	\blankmatter
	\phantomsection\addcontentsline{toc}{chapter}{教师指导毕业设计（论文）记录表}
	\includepdf[pages=-]{docs/guidance.pdf}

\end{nopagenumber}

\end{document}
