在 BSV 上构建机器学习竞赛市场

我们提出了一种在 BSV 上实现去中心化机器学习 (ML) 市场的新方法。任何人都可以通过发布附带奖励的智能合约来外包机器学习任务。任何提交表现最佳模型的人都将通过区块链交易获得奖励,而无需通过中心化机构。

在这里插入图片描述

如何在 BSV 上进行机器学习竞赛

Kaggle 是一个流行的数据建模和数据分析分析竞赛平台,之前已被 Google 收购。Kaggle 竞赛中包括了很多由 Kaggle 、Facebook 、微软等其他公司制作的机器学习任务。如果竞争成功,参赛者可以获得金钱奖励,有时超过一百万美元。

与 Kaggle 比赛类似,在 BSV 上实现机器学习建模比赛包括以下步骤:

  1. 比赛主办方通过部署智能合约准备数据和问题描述。为避免对训练数据集过度拟合,所有提交的模型都将在一个独立的测试数据集上进行评估,这个测试数据集的比特承诺也会事先提交;
  2. 参赛者从合约下载训练数据并在链下训练他们的模型;
  3. 参赛者将他们的模型提交给合约;
  4. 主办方公开测试数据集支付给创建最优模型的参与者,通常是当他找到一个令人满意的模型,或者到了截止日期,或者收到了最大数量的提交时,就会触发这个事件。

整个 ML 竞赛都编码在智能合约中并受其监管。与传统的 ML 竞赛相比,在 BSV 上运行它们具有显着优势:

  • 去信任/透明: BSV 区块链中的一切都是公开和公开的,没有交易对手风险,也没有作弊;
  • 支持小额比赛:得益于 BSV 对小额支付的支持,甚至可以举办奖励低于1美分的比赛,这在以前是不可能的;
  • 没有中间人:任何人都可以在未经 Kaggle 等任何中心化机构许可的情况下举办比赛或提交机器学习模型;

以性别分类感知器为例

为了演示这个想法在实践中是如何工作的,我们使用感知器来解决一个简单的分类问题,类似我们之前所做的例子。用测试数据集评估时,错误率最低的模型获胜并赢得奖品,所有这些都在链上执行。示例合约如下:

// submit a solution
    public function submit(SigHashPreimage txPreimage, Submission subm) {
        require(Tx.checkPreimage(txPreimage));
        bytes scriptCode = Util.scriptCode(txPreimage);

        // read/deserialize state
        int stateStart = Reader.getStateStart(scriptCode);
        State state = this.deserialize(scriptCode[stateStart :]);

        // append the submission to the candidates
        if (++state.count < S) {
            loop (S) : i {
                if (i == state.count)
                    state.submissions[i] = subm;
            }
        }

        // write/serialize state
        bytes stateBuf = serialize(state);

        bytes scriptCode_ = scriptCode[: stateStart] + stateBuf;
        bytes output = Util.buildOutput(scriptCode_, Util.value(txPreimage));
        require(hash256(output) == Util.hashOutputs(txPreimage));
    }

    // reveal the testing dataset and pay the winner with smallest error
    public function evaluate(SigHashPreimage txPreimage, DataPoint[T] testingDataset) {
        require(Tx.checkPreimage(txPreimage));
        bytes scriptCode = Util.scriptCode(txPreimage);

        // read/deserialize state
        int stateStart = Reader.getStateStart(scriptCode);
        State state = this.deserialize(scriptCode[stateStart :]);

        // validate testing dataset is what was committed
        require(this.validateTestData(testingDataset));

        // find the winner with the miminal predicted error
        Ripemd160 winner = Ripemd160(b'');
        int minError = 0xFFFFFFFFFFF;
        loop (S) : i {
            if (i < state.count) {
                auto subm = state.submissions[i];
                auto error = calcError(subm, testingDataset);
                if (error < minError) {
                    minError = error;
                    winner = subm.addr;
                }
            }
        }
        
        bytes output = Util.buildOutput(Util.buildPublicKeyHashScript(winner), Util.value(txPreimage));
        require(hash256(output) == Util.hashOutputs(txPreimage));
    }

实际考虑

如果主办方决定不公开测试数据集,则建模者无法获得报酬。解决此问题的一种方法是添加另一个支付条件(例如,sCrypt 中的另一个公共函数)以便在特定时间后领取赏金,其中所有建模者都可以根据其在训练数据集上的准确性来分配赏金。

总结

一个开放透明的机器学习模型市场将使 ML 模型的交易和使用成本变得更低,也更有助于产业繁荣。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sCrypt Web3应用开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值