Logo Zephyrnet

Học liên kết: Học máy hợp tác với Hướng dẫn về cách bắt đầu

Ngày:

Liên kết-Học tập-Hợp tác-Máy-Học-blog.jpg

Học tập liên kết: Quyền riêng tư, bảo mật và chủ quyền dữ liệu trong phòng thí nghiệm và trong tự nhiên (có Hướng dẫn)

 
Học tập liên kết, còn được gọi là học tập hợp tác, cho phép mô hình đào tạo ở quy mô lớn trên dữ liệu vẫn được phân phối trên các thiết bị nơi chúng được tạo. Dữ liệu nhạy cảm vẫn thuộc về chủ sở hữu của dữ liệu nói trên, nơi đào tạo được tiến hành và người điều phối đào tạo tập trung của đào tạo chỉ nhìn thấy sự đóng góp của từng khách hàng thông qua các bản cập nhật mô hình.

Học tập liên kết không tự đảm bảo quyền riêng tư (chúng ta sẽ đề cập đến việc phá vỡ và sửa chữa quyền riêng tư trong các hệ thống học tập liên kết sau này), nhưng nó làm cho quyền riêng tư trở nên khả thi.

Các trường hợp sử dụng cho học tập liên kết:

Với việc công chúng và các nhà hoạch định chính sách nhận thức rõ hơn về nền kinh tế dữ liệu, nhu cầu về máy học bảo vệ quyền riêng tư đang gia tăng. Do đó, các hoạt động thực hành dữ liệu đang thu hút sự giám sát ngày càng nhiều và nghiên cứu về các công cụ tôn trọng quyền riêng tư như học tập liên kết đang ngày càng tích cực. Lý tưởng nhất, việc học tập liên kết nhằm mục đích bảo vệ quyền riêng tư của cá nhân và tổ chức trong khi có khả năng làm cho sự hợp tác giữa các bên liên quan đến dữ liệu trở nên khả thi ở những nơi mà thông thường họ không thể thực hiện được do bí mật thương mại, thông tin sức khỏe cá nhân hoặc nguy cơ vi phạm dữ liệu gia tăng.

Các quy định của chính phủ như Liên minh Châu Âu Quy định về bảo vệ dữ liệu chung hoặc là Đạo luật bảo mật người tiêu dùng California (trong số những người khác) làm cho các chiến lược bảo vệ quyền riêng tư như học tập liên kết trở thành một công cụ hữu ích cho các doanh nghiệp muốn duy trì hoạt động hợp pháp. Đồng thời, đạt được mức độ riêng tư và bảo mật mong muốn trong khi duy trì hiệu suất và hiệu quả của mô hình đặt ra nhiều thách thức kỹ thuật theo đúng nghĩa của chúng.

Cuối cùng, từ quan điểm hàng ngày của nhà sản xuất dữ liệu cá nhân (chẳng hạn như bạn, bạn đọc thân mến), thật vui khi biết rằng, ít nhất về lý thuyết, có một thứ gì đó có thể được đặt giữa dữ liệu sức khỏe cá nhân và dữ liệu tài chính của bạn và loại hệ sinh thái hodgepodge của các nhà môi giới dữ liệu theo dõi mọi thứ khác mà bạn làm trực tuyến, điển hình là sans cả xương sống đạo đức và năng lực bảo mật.

Nếu bất kỳ vấn đề nào trong số này gây ảnh hưởng đến bạn, thì hãy đọc để tìm hiểu thêm về sự phức tạp của học liên kết và những gì nó có thể làm đối với học máy trên dữ liệu nhạy cảm.

Học tập liên kết trong vỏ bọc

 
Học liên kết nhằm mục đích đào tạo một mô hình duy nhất từ ​​nhiều nguồn dữ liệu, với điều kiện ràng buộc là dữ liệu nằm ở nguồn và không được trao đổi bởi các nguồn dữ liệu (hay còn gọi là nút, máy khách hoặc công nhân) cũng như đào tạo điều phối máy chủ trung tâm, nếu có.

Hình
Trong một sơ đồ học tập liên hợp điển hình, một máy chủ trung tâm gửi các tham số mô hình đến một tập hợp các nút (còn được gọi là khách hàng hoặc công nhân). Các nút đào tạo mô hình ban đầu cho một số cập nhật trên dữ liệu cục bộ và gửi các trọng số mới được đào tạo trở lại máy chủ trung tâm, tính trung bình của các tham số mô hình mới (thường liên quan đến số lượng đào tạo được thực hiện trên mỗi nút). Trong trường hợp này, dữ liệu tại bất kỳ nút nào không bao giờ được máy chủ trung tâm hoặc các nút khác nhìn thấy trực tiếp và các kỹ thuật bổ sung, chẳng hạn như tổng hợp an toàn, có thể nâng cao hơn nữa quyền riêng tư.

 

Có nhiều biến thể trong khuôn khổ này. Ví dụ: chúng tôi chủ yếu quan tâm trong bài viết này với các sơ đồ học tập liên kết được quản lý bởi một máy chủ trung tâm điều phối đào tạo trên nhiều thiết bị cùng loại, mỗi đào tạo trên dữ liệu cục bộ của riêng chúng và tải kết quả lên máy chủ trung tâm. Đây là sơ đồ cơ bản được mô tả bởi McMahan và cộng sự. vào năm 2017. Tuy nhiên, có thể loại bỏ việc kiểm soát tập trung đào tạo và trong một số trường hợp, bạn có thể mong muốn làm như vậy. Khi các nút riêng lẻ phân phối vai trò của người quản lý trung tâm, nó sẽ trở thành việc học tập liên kết phi tập trung, một cách tiếp cận hấp dẫn cho đào tạo các mô hình hợp tác trên dữ liệu y tế đặc quyền.

Trong khi một kịch bản học tập liên kết điển hình có thể liên quan đến một số lượng điện thoại di động, chẳng hạn, tất cả đều có khả năng tính toán gần như tương tự và đào tạo cùng một kiến ​​trúc mô hình, một số sơ đồ, chẳng hạn như HeteroFL bởi Diao et al. 2021cho phép đào tạo một mô hình suy luận duy nhất trên nhiều thiết bị có khả năng giao tiếp và tính toán rất khác nhau, thậm chí có thể đào tạo các mô hình cục bộ với các kiến ​​trúc và số lượng tham số khác nhau, trước khi tổng hợp các tham số được đào tạo thành một mô hình suy luận toàn cục.

Những lợi thế chính của việc học liên kết xuất phát từ thực tế là dữ liệu vẫn ở trên thiết bị nơi nó được tạo và bao gồm, ví dụ: thực tế là tập dữ liệu đào tạo thường lớn hơn đáng kể so với mô hình đang được đào tạo và gửi tệp sau thay vì trước đó có thể tiết kiệm băng thông. Điều tối quan trọng trong số những ưu điểm này là khả năng bảo mật, tuy nhiên vẫn có thể suy ra điều gì đó về nội dung của tập dữ liệu riêng tư chỉ từ một bản cập nhật tham số mô hình.

Ví dụ đơn giản được sử dụng trong McMahan et al. 2017 để giải thích lỗ hổng bảo mật là một mô hình ngôn ngữ được đào tạo với vectơ đầu vào “bag-of-words”, trong đó mỗi vectơ đầu vào tương ứng cụ thể với một từ duy nhất trong một kho từ vựng lớn. Mỗi bản cập nhật gradient khác XNUMX cho một từ tương ứng sẽ cung cấp cho những kẻ nghe trộm một manh mối về sự hiện diện (và ngược lại là sự vắng mặt) của từ đó trong tập dữ liệu riêng tư. Hơn các cuộc tấn công tinh vi cũng đã được chứng minh. Do đó, có một loạt các kỹ thuật nâng cao quyền riêng tư có thể được kết hợp vào việc học tập liên kết, từ tổng hợp an toàn cập nhật về đào tạo với mã hóa đồng hình hoàn toàn. Chúng tôi sẽ đề cập ngắn gọn đến các mối đe dọa nổi bật nhất đối với quyền riêng tư trong học tập liên kết và việc giảm thiểu chúng trong phần tiếp theo.

Câu chuyện về nguồn gốc đang diễn ra của học liên kết

 
Quy định của nhà nước về quyền riêng tư dữ liệu là một lĩnh vực chính sách mới nổi, đạt được đà phát triển trong khoảng 10 đến 20 năm sau khi nó phù hợp với sự phát triển của các phân khúc lớn của nền kinh tế toàn cầu dựa trên việc thu thập và phân tích dữ liệu cá nhân. Quy định nổi bật nhất về dữ liệu cá nhân của các thành viên của công chúng là Châu Âu Quy định về bảo vệ dữ liệu chung được ban hành vào năm 2016, thường được gọi là GDPR.

Có thể sẽ khiến bạn ngạc nhiên, vì các biện pháp bảo vệ tương tự hạn chế giám sát doanh nghiệp và thu thập dữ liệu ở Hoa Kỳ còn non trẻ hoặc thiếu, nhưng Nhà Trắng Hoa Kỳ đã công bố một báo cáo mở rộng nêu rõ các nguyên tắc tương tự vào năm 2012 (pdf), bao gồm thu thập tập trung, bảo mật và minh bạch dữ liệu, kiểm soát dữ liệu nào được thu thập và kỳ vọng rằng dữ liệu được thu thập cho một mục đích sẽ không được sử dụng cho các mục đích cực kỳ không liên quan.

Sản phẩm Đạo luật bảo mật người tiêu dùng California đã đưa GDPR của EU thành luật vào hai năm sau đó vào năm 2018. Là luật của bang, CCPA bị giới hạn đáng kể về phạm vi địa lý so với GDPR, trong khi bản thân đạo luật này cũng có mục đích tương tự nhưng định nghĩa thông tin cá nhân hơi hẹp hơn. Học liên kết là một công cụ học máy có thể được sử dụng để tạo cơ hội cho quyền riêng tư.

Thuật ngữ học tập liên kết đã được giới thiệu trong một giấy 2017 bởi McMahan et al. để mô tả việc đào tạo một mô hình trên dữ liệu phi tập trung. Các tác giả đã định hình chiến lược thiết kế cho hệ thống của họ theo báo cáo của Nhà Trắng năm 2012 về quyền riêng tư dữ liệu người tiêu dùng được mô tả ở trên. Họ đề xuất hai trường hợp sử dụng chính cho việc học liên kết: phân loại hình ảnh và mô hình ngôn ngữ để nhận dạng giọng nói hoặc dự đoán từ / cụm từ tiếp theo.

Không lâu trước khi các bề mặt tấn công tiềm năng liên quan đến đào tạo phân tán được chứng minh. Công việc của Phong et al. 2017 và Bhowmick và cộng sự. 2018 trong số những người khác đã chứng minh rằng ngay cả khi chỉ có quyền truy cập vào các bản cập nhật gradient hoặc các mô hình được đào tạo một phần được trả về từ máy khách học tập được liên kết đến máy chủ, một số chi tiết mô tả dữ liệu riêng tư có thể được suy ra. Có thể có một bản tóm tắt về các mối quan tâm về quyền riêng tư và việc giảm thiểu chúng trong bài viết trên blog này tại inpher.io.

Sự cân bằng giữa quyền riêng tư, hiệu lực và hiệu quả trong học tập liên kết trải dài trên một phạm vi rộng. Giao tiếp giữa máy chủ và máy khách (hoặc chỉ giữa các máy khách phi tập trung) có thể được mã hóa trong quá trình truyền tải và khi nghỉ ngơi, nhưng có một tùy chọn mạnh mẽ hơn nữa, nơi dữ liệu và mô hình cũng được mã hóa trong quá trình đào tạo. Mã hóa đồng hình có thể được sử dụng để thực hiện tính toán trên dữ liệu được mã hóa, do đó (lý tưởng là) các kết quả đầu ra chỉ có thể được giải mã bởi bên liên quan bằng khóa. Các thư viện như OpenMined's Bình yên, Microsoft DẤU, hoặc là TensorFlow được mã hóa cung cấp các công cụ để học sâu được mã hóa có thể được áp dụng cho các hệ thống học tập liên kết.

Vậy là đủ thảo luận về học liên kết, tiếp theo chúng ta sẽ thiết lập một trình diễn học liên kết đơn giản trong phần hướng dẫn.

Hướng dẫn Liên kết ML: Học liên kết trên Tập dữ liệu Iris với Thư viện Hoa

  
Nếu bạn gặp bất kỳ sự cố nào khi lấy mã để chạy cho hướng dẫn này và muốn xem một ví dụ hoạt động, hãy thử chạy mã đó từ trình duyệt của bạn tại liên kết mybinder này và làm theo hướng dẫn trong readme để khởi chạy bản demo học tập liên kết.

Bây giờ chúng ta đã có ý tưởng về địa điểm và lý do tại sao chúng ta có thể muốn sử dụng phương pháp học liên kết, hãy cùng xem xét cách chúng ta có thể làm như vậy.

Có một số thư viện học tập liên hợp để lựa chọn, từ các thư viện chính thống hơn Tensorflow liên kết với hơn 1700 sao trên GitHub cho đến các Bình yên nghiên cứu theo định hướng FedJAX. Bảng 1 chứa danh sách tham khảo về các kho học liên kết phổ biến.

 

Bảng 1: Các thư viện dành cho học tập liên kết.

Đối với hướng dẫn của chúng tôi, chúng tôi sẽ sử dụng Thư viện hoa. Chúng tôi chọn thư viện này một phần vì nó minh họa cho các khái niệm học liên kết cơ bản theo cách dễ tiếp cận và nó là bất khả tri của khuôn khổ, và một phần vì chúng tôi sẽ sử dụng tập dữ liệu “iris” có trong SciKit-Learn (và tên trùng khớp).

Vì Flower không biết về bộ công cụ học sâu được sử dụng để xây dựng mô hình (họ có các ví dụ cho TensorFlow, Kim tự tháp, MX Net SciKit-Tìm hiểu trong tài liệu), chúng tôi sẽ sử dụng PyTorch. Từ quan điểm cấp cao, chúng ta cần thiết lập một máy chủ và một máy khách, cái sau chúng ta sẽ gọi hai lần với các bộ dữ liệu đào tạo khác nhau. Việc thiết lập máy chủ cho đến nay càng đơn giản hơn trong các nhiệm vụ hiện tại, vì vậy chúng ta sẽ bắt đầu ở đó.

Để thiết lập máy chủ của mình, tất cả những gì chúng ta cần làm là xác định chiến lược đánh giá và chuyển nó đến máy chủ cấu hình mặc định trong Flower. Nhưng trước tiên, hãy đảm bảo rằng chúng ta đã thiết lập một môi trường ảo có tất cả các phụ thuộc mà chúng ta cần. Trên dòng lệnh Unix:

virtualenv flower_env python==python3
source flower_env/bin/activate
pip install flwr==0.17.0 # I'm running this example on a laptop (no gpu)
# so I am installing the cpu only version of PyTorch
# follow the instructions at https://pytorch.org/get-started/locally/
# if you want the gpu option pip install torch==1.9.1+cpu torchvision==0.10.1+cpu -f https://download.pytorch.org/whl/torch_stable.html pip install scikit-learn==0.24.0

Với môi trường ảo của chúng tôi được thiết lập và chạy, chúng tôi có thể viết một mô-đun để quay một máy chủ Hoa để xử lý việc học liên kết. Trong đoạn mã bên dưới, chúng tôi đã bao gồm argparse để giúp dễ dàng thử nghiệm với số lượng vòng huấn luyện khác nhau khi gọi mô-đun máy chủ từ dòng lệnh. Chúng tôi cũng xác định một chức năng tạo ra một chức năng đánh giá, đây là thứ duy nhất khác mà chúng tôi thêm vào chiến lược được sử dụng bởi cấu hình mặc định của máy chủ Hoa.

Nội dung của tệp mô-đun máy chủ của chúng tôi:

import argparse import flwr as fl
import torch from pt_client import get_data, PTMLPClient def get_eval_fn(model): # This `evaluate` function will be called after every round
def evaluate(parameters: fl.common.Weights): loss, _, accuracy_dict = model.evaluate(parameters) return loss, accuracy_dict return evaluate
if __name__ == "__main__": parser = argparse.ArgumentParser()
parser.add_argument("-r", "--rounds", type=int, default=3, help="number of rounds to train") args = parser.parse_args() torch.random.manual_seed(42) model = PTMLPClient(split="val") strategy = fl.server.strategy.FedAvg( eval_fn=get_eval_fn(model), ) fl.server.start_server("[::]:8080", strategy=strategy, config={"num_rounds": args.rounds})

Hãy để ý đến PTMLPClient được gọi trong đoạn mã trên. Điều này được sử dụng bởi mô-đun máy chủ để xác định chức năng đánh giá và lớp này cũng là lớp mô hình được sử dụng để đào tạo và nhân đôi như một ứng dụng khách học tập liên kết. Chúng tôi sẽ xác định PTMLPClient tiếp theo, phân loại phụ từ cả Hoa NumPyClient lớp học và torch.nn.Module lớp mà bạn sẽ quen thuộc nếu làm việc với PyTorch.

Sản phẩm NumPyClient lớp xử lý giao tiếp với máy chủ và yêu cầu sử dụng để triển khai các hàm trừu tượng set_parametersget_parametersfitvà evaluate. Các torch.nn.Module lớp cung cấp cho chúng tôi tất cả các chức năng tiện lợi của mô hình PyTorch, chủ yếu là khả năng đào tạo với trình tối ưu hóa PyTorch Adam. Của chúng ta PTMLPClient lớp sẽ chỉ có hơn 100 dòng mã, vì vậy chúng ta sẽ lần lượt đi qua từng hàm của lớp, bắt đầu bằng __init__.

Lưu ý rằng chúng ta đang kế thừa từ hai lớp tổ tiên. Kế thừa từ nn.Module có nghĩa là chúng ta phải đảm bảo gọi __init__ từ nn.Module bằng cách sử dụng lệnh super, nhưng Python sẽ cho bạn biết ngay lập tức nếu bạn quên làm như vậy. Ngoài ra, chúng tôi khởi tạo ba lớp dày đặc dưới dạng ma trận (torch.tensor kiểu dữ liệu) và lưu trữ một số thông tin về phân chia đào tạo và kích thước mô hình dưới dạng các biến lớp.

class PTMLPClient(fl.client.NumPyClient, nn.Module): def __init__(self, dim_in=4, dim_h=32, num_classes=3, lr=3e-4, split="alice"): super(PTMLPClient, self).__init__() self.dim_in = dim_in self.dim_h = dim_h self.num_classes = num_classes self.split = split self.w_xh = nn.Parameter(torch.tensor( torch.randn(self.dim_in, self.dim_h) / np.sqrt(self.dim_in * self.dim_h)) ) self.w_hh = nn.Parameter(torch.tensor( torch.randn(self.dim_h, self.dim_h) / np.sqrt(self.dim_h * self.dim_h)) ) self.w_hy = nn.Parameter(torch.tensor( torch.randn(self.dim_h, self.num_classes) / np.sqrt(self.dim_h * self.num_classes)) ) self.lr = lr

Tiếp theo, chúng tôi sẽ xác định get_parameters và set_parameters chức năng của PTMLPClient lớp. Các hàm này nối tất cả các tham số mô hình dưới dạng một mảng numpy phẳng, là kiểu dữ liệu mà lớp NumPyClient của Flower dự kiến ​​sẽ trả về và nhận. Điều này phù hợp với sơ đồ học tập liên kết vì máy chủ sẽ gửi các tham số ban đầu đến từng máy khách (sử dụng set_parameters) và mong đợi một bộ tạ đã tập luyện một phần sẽ được trả lại (từ get_parameters). Mô hình này xảy ra một lần mỗi vòng. Chúng tôi cũng khởi tạo trình tối ưu hóa và chức năng mất mát trong set_parameters.

 def get_parameters(self): my_parameters = np.append( self.w_xh.reshape(-1).detach().numpy(), self.w_hh.reshape(-1).detach().numpy() ) my_parameters = np.append( my_parameters, self.w_hy.reshape(-1).detach().numpy() ) return my_parameters def set_parameters(self, parameters): parameters = np.array(parameters) total_params = reduce(lambda a,b: a*b, np.array(parameters).shape) expected_params = self.dim_in * self.dim_h + self.dim_h**2 + self.dim_h * self.num_classes assert total_params == expected_params, f"expected {expected_params} params," f" got {total_params} params" start = 0 stop = self.dim_in * self.dim_h self.w_xh = nn.Parameter(torch.tensor( parameters[start:stop]) .reshape(self.dim_in, self.dim_h).float() ) start = stop stop += self.dim_h**2 self.w_hh = nn.Parameter(torch.tensor( parameters[start:stop]) .reshape(self.dim_h, self.dim_h).float() ) start = stop stop += self.dim_h * self.num_classes self.w_hy = nn.Parameter(torch.tensor( parameters[start:stop]) .reshape(self.dim_h, self.num_classes).float() ) self.act = torch.relu self.optimizer = torch.optim.Adam(self.parameters()) self.loss_fn = nn.CrossEntropyLoss()

Tiếp theo, chúng ta sẽ xác định đường chuyền chuyển tiếp của chúng ta và một hàm thuận tiện để nhận được một vô hướng tổn thất.

 def forward(self, x): x = self.act(torch.matmul(x, self.w_xh)) x = self.act(torch.matmul(x, self.w_hh)) x = torch.matmul(x, self.w_hy) return x def get_loss(self, x, y): prediction = self.forward(x) loss = self.loss_fn(prediction, y) return loss

Một số chức năng cuối cùng mà khách hàng của chúng tôi cần là fit và evaluate. Đối với mỗi vòng, mỗi khách hàng khởi tạo các tham số của mình với các tham số được cung cấp cho phương thức phù hợp trước khi huấn luyện trong một vài kỷ nguyên (mặc định là 10 trong trường hợp này). Các evaluate hàm cũng thiết lập các tham số của nó trước khi tính toán tổn thất và độ chính xác trên phần tách xác thực của dữ liệu huấn luyện.

 def fit(self, parameters, config=None, epochs=10): self.set_parameters(parameters) x, y = get_data(split=self.split) x, y = torch.tensor(x).float(), torch.tensor(y).long() self.train() for ii in range(epochs): self.optimizer.zero_grad() loss = self.get_loss(x, y) loss.backward() self.optimizer.step() loss, _, accuracy_dict = self.evaluate(self.get_parameters()) return self.get_parameters(), len(y), {"loss": loss, "accuracy": accuracy_dict["accuracy"]} def evaluate(self, parameters, config=None): self.set_parameters(parameters) val_x, val_y = get_data(split="val") val_x = torch.tensor(val_x).float() val_y = torch.tensor(val_y).long() self.eval() prediction = self.forward(val_x) loss = self.loss_fn(prediction, val_y).detach().numpy() prediction_class = np.argmax( prediction.detach().numpy(), axis=-1) accuracy = sklearn.metrics.accuracy_score( val_y.numpy(), prediction_class) return float(loss), len(val_y), {"accuracy":float(accuracy)}

Cả hai fit và evaluate trong lớp khách hàng của chúng tôi, hãy gọi một hàm get_data chỉ là một trình bao bọc cho tập dữ liệu mống mắt của SciKit-Learn. Nó cũng chia dữ liệu thành các tập hợp lệ và đào tạo, đồng thời chia nhỏ hơn nữa tập dữ liệu đào tạo thành hai bộ (mà chúng tôi gọi là 'alice' và 'bob') để mô phỏng việc học liên kết với các máy khách mà mỗi máy có dữ liệu riêng.

def get_data(split="all"): x, y = sklearn.datasets.load_iris(return_X_y=True) np.random.seed(42); np.random.shuffle(x) np.random.seed(42); np.random.shuffle(y) val_split = int(0.2 * x.shape[0]) train_split = (x.shape[0] - val_split) // 2 eval_x, eval_y = x[:val_split], y[:val_split] alice_x, alice_y = x[val_split:val_split + train_split], y[val_split:val_split + train_split] bob_x, bob_y = x[val_split + train_split:], y[val_split + train_split:] train_x, train_y = x[val_split:], y[val_split:] if split == "all": return train_x, train_y elif split == "alice": return alice_x, alice_y elif split == "bob": return bob_x, bob_y elif split == "val": return eval_x, eval_y else: print("error: split not recognized.") return None

Bây giờ chúng ta chỉ cần điền một if __name__ == "__main__“: Phương thức ở cuối tệp của chúng tôi để chúng tôi có thể chạy mã khách hàng của mình dưới dạng mô-đun từ dòng lệnh.

if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("-s", "--split", type=str, default="alice", help="The training split to use, options are 'alice', 'bob', or 'all'") args = parser.parse_args() torch.random.manual_seed(42) fl.client.start_numpy_client("localhost:8080", client=PTMLPClient(split=args.split))

Cuối cùng, hãy đảm bảo nhập mọi thứ cần thiết ở đầu mô-đun máy khách.

import argparse
import numpy as np
import sklearn
import sklearn.datasets
import sklearn.metrics
import torch
import torch.nn as nn
from functools import reduce
import flwr as fl

Đó thực sự là tất cả những gì chúng tôi phải triển khai để chạy bản demo đào tạo liên hợp với Flower!

Để bắt đầu chạy huấn luyện liên hợp, trước tiên hãy khởi chạy máy chủ trong thiết bị đầu cuối dòng lệnh của chính nó. Chúng tôi đã lưu máy chủ của mình dưới dạng pt_server.py và mô-đun ứng dụng khách của chúng tôi dưới dạng pt_client.py, cả hai đều nằm trong thư mục gốc mà chúng tôi đang làm việc, vì vậy, để khởi chạy một máy chủ và yêu cầu nó đào tạo trong 40 vòng học tập liên kết, chúng tôi đã sử dụng cách sau yêu cầu.

python -m pt_server -r 40

Tiếp theo, hãy mở một thiết bị đầu cuối mới để ra mắt khách hàng đầu tiên của bạn với phần đào tạo “alice”:

python -m pt_client -s alice

… Và thiết bị đầu cuối thứ hai cho khách hàng tiếp theo của bạn với phần đào tạo “bob”.

python -m pt_client -s bob

Nếu mọi thứ hoạt động, bạn sẽ thấy phần khởi động đào tạo và cuộn thông tin trong thiết bị đầu cuối đang chạy quy trình máy chủ.

fed-learning.jpg

Trong tay chúng tôi, bản demo này chỉ đạt được độ chính xác hơn 96% trong 20 vòng huấn luyện. Các đường cong tổn thất và độ chính xác cho quá trình chạy huấn luyện trông như sau:

fed-learning-Loss-of-precision.png

Đó là nó! Giờ đây, bạn có thể đặt “Thư viện hoa” vào sơ yếu lý lịch học tập được liên kết của mình.

Hướng tới tương lai của học liên kết

 
Một người quan sát bình thường về thế giới hiện đại có thể bị thuyết phục để tin rằng ở đó “không phải là điều đó as riêng tư" nữa không. Những tuyên bố này chủ yếu được hướng tới trên internet (và những tuyên bố như vậy đã được thực hiện kể từ đó ít nhất là 1999) nhưng với sự chấp nhận nhanh chóng của các thiết bị nhà thông minh và robot gia đình tọc mạch, kỳ vọng hợp lý về sự riêng tư, thậm chí trong nhà riêng của bạn, có thể gặp nguy cơ xói mòn thảm khốc.

Hãy chú ý đến những người đang đưa ra những tuyên bố này và bạn sẽ thấy rằng nhiều người trong số họ có lợi ích tài chính được trao cho việc dễ dàng ăn cắp dữ liệu của bạn hoặc có thể để mắt đến những người làm như vậy. Thái độ bênh vực “không có quyền riêng tư” này không chỉ sai mà còn có thể nguy hiểm: việc mất quyền riêng tư cho phép các cá nhân và nhóm bị thao túng một cách tinh vi theo những cách mà họ có thể không nhận thấy hoặc không thừa nhận và những người biết họ đang bị theo dõi cư xử khác.

 
Tiểu sử: Kevin Vũ quản lý blog Exxact Corp và làm việc với nhiều tác giả tài năng của nó, những người viết về các khía cạnh khác nhau của Học sâu.

Nguyên. Đăng lại với sự cho phép.

Nguồn: https://www.kdnuggets.com/2021/12/federated-learning-collaborative-machine-learning-tutorial-get-started.html

tại chỗ_img

Tin tức mới nhất

tại chỗ_img