赞
踩
我们提出了一种在 BSV 上实现去中心化机器学习 (ML) 市场的新方法。任何人都可以通过发布附带奖励的智能合约来外包机器学习任务。任何提交表现最佳模型的人都将通过区块链交易获得奖励,而无需通过中心化机构。
Kaggle 是一个流行的数据建模和数据分析分析竞赛平台,之前已被 Google 收购。Kaggle 竞赛中包括了很多由 Kaggle 、Facebook 、微软等其他公司制作的机器学习任务。如果竞争成功,参赛者可以获得金钱奖励,有时超过一百万美元。
与 Kaggle 比赛类似,在 BSV 上实现机器学习建模比赛包括以下步骤:
整个 ML 竞赛都编码在智能合约中并受其监管。与传统的 ML 竞赛相比,在 BSV 上运行它们具有显着优势:
为了演示这个想法在实践中是如何工作的,我们使用感知器来解决一个简单的分类问题,类似我们之前所做的例子。用测试数据集评估时,错误率最低的模型获胜并赢得奖品,所有这些都在链上执行。示例合约如下:
// 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 模型的交易和使用成本变得更低,也更有助于产业繁荣。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。