secretflow / spu

SPU (Secure Processing Unit) aims to be a provable, measurable secure computation device, which provides computation ability while keeping your private data protected.
https://www.secretflow.org.cn/docs/spu/en/
Apache License 2.0
242 stars 104 forks source link

[Perceptron-sgd]使用 SPU 实现感知机(perceptron)算法 #285

Closed Candicepan closed 1 year ago

Candicepan commented 1 year ago

此 ISSUE 为 隐语开源共建计划(SecretFlow Open Source Contribution Plan,简称 SF OSCP)第二期 使用 SPU 实现感知机(perceptron)算法 子任务,若对该任务感兴趣,欢迎在 https://github.com/secretflow/spu/issues/250 提交你的不同设计思路。 也欢迎其他开发者点击这里,选择其他你感兴趣的任务,热烈欢迎社区开发者参与共建~

设计思路

by:zoeStartover

  1. 初始化感知机模型,确定是否需要正则(L1,L2,ElasticNet,None),是否需要拟合bias项等基本参数(参照sklearn);输入训练集X,Y = (x_i,y_i),优化目的是最小化-sum(y_i(wx_i+b)),每一圈使用随机梯度下降法(SGD)更新参数w,b,w=w+η y_i x_i,b=b+ η y_i,其中可选择的正则化方法包括L1,L2,ElasticNet(L1+L2)。
  2. fit方法:训练感知机模型,输入训练集对X,Y = (x_i,y_i),若某点计算为误分类点,更新参数w和b,迭代上述过程至max_iter;
  3. predict方法:输入待预测样本x,输出预测结果y=sign(w*x+b)。

任务介绍

详细要求

能力要求

操作说明

认领说明

本任务可有多种实现方式,故支持一个任务有多位开发者进行认领,请在认领任务后,在该 issue 下 comment 你的具体设计思路。

开发须知

以下部分代码请必须增加代码注释,对对应代码模块进行说明,包括:

zoeStartover commented 1 year ago

zoeStartover Give it to me

zoeStartover commented 1 year ago
  1. 已使用jax实现perceptron的fit,predict(包含正则、是否需要拟合bias等多个参数,SGD优化);
  2. 使用鸢尾花数据集(100 samples)与sklearn对比准确率差1%;
  3. 已使用 black+isort 进行格式化。