Raven:全球首个真正分布式深度学习训练协议

对于深度学习研究者来说,计算能力非常关键,但 CPU 和 GPU 资源往往是有限的。Raven 协议正是解决这一问题的良方。Raven 协议可以利用空闲的计算资源来训练深度神经网络,而这些资源均来自个人用户设备的分享。分享空闲计算资源进行深度学习训练的概念可以为资源使用者节约大量的研究成本,而资源的贡献者则可以得到 Raven 币(RAV)作为补偿 / 回报。

在一个普通的、计算能力有限的计算机上训练一个 AI/ML 模型往往需要数周甚至数月的时间。对于更好的计算芯片(GPU)的需求是一个必须考虑的成本因素。密集和频繁地使用高速计算资源来操作计算数据、计算和更新深度神经网络中不同神经元的梯度,其需要的成本往往是小型到中型公司和开发者无法担负的。云计算在一定程度上对这一问题有所帮助,但获取云资源来支持 AI 研发仍是一笔难以负担的开支。目前,在绝大部分云计算平台上,每小时所需支付的金额都在 2.5~17 美元之间。

对于中小型企业来说,要解决算力资源问题最简单的方式是通过众包。众包这一概念从很早之前便开始挑战传统经营模式,使得计算资源服务更加便宜、更加容易获得。Uber 和 Airbnbs 就是通过众包存活下来的代表。AI 世界也注意到了这种优秀的模式。Kaggle 平台的开发就是通过众包,利用海洋协议(Ocean Protocol)来收集数据。AI 生态系统非常欢迎这种新方法。而 Raven 协议的目标就是将众包火炬传递下去,通过对空闲计算资源的充分利用,建立第一个真正去中心化、分布式的深度学习训练系统,使深度学习模型的训练更为经济。

希望进行技术革新的 AI 爱好者和企业家们现在可以从 AI 研究中有所收获了,因为众包资源可以解决计算资源短缺难题。AI 社区中的许多成员,如 Singularity.net、Ocean Protocol、OpenMind、Deep Brain Chain 等等,都建立起了资源共享平台,用于在安全的区块链内共享计算和数据资源,进而助力机器学习 / 深度学习算法向商业模型的转变。

Raven 协议成功建立起了去中心化、激励性和安全的机器学习 / 深度学习模型训练机制。

经过几十年的发展,传统的神经网络相关算法已进化为深度神经网络(DNN),并在各种应用领域取得了巨大成功,尤其是模式识别领域。

这种基于训练的方法的理论局限是,一个 DNN 架构怎样在一个节点上训练、在多个不同的服务器上应用,或分割成数个部分并分发到数个服务器上训练。显然,这种训练方式极其消耗算力,所以只能在强大的 GPU 和服务器上进行操作。Raven 解决这一问题的方式是装配动态节点分配机制,对网络中的设备进行分工。这样,Raven 就可以消除主节点的所有依赖,并显著地减少任务所需的计算能力。

Raven 协议相较于其他相似规则的突出之处在于它处理异步更新及数据碎片的并行所产生的延迟的方法。这种延迟问题用其他方案无法解决,而且延迟在模型训练过程中是一个主要耗时因素,可能会消耗数周甚至数月。即使是拥有大量计算资源,对这一问题也无能为力。另外,如果想要让数据实现并行化,用户必须拥有可处理庞大计算资源的平台。这一因素使得规模较小的用户群无法访问该平台。Raven 协议允许个人用户贡献、分享空闲设备的计算资源,使得研究者对性能强大的 CPU 或 GPU 硬件的需求降到最低。分享空闲计算资源来进行训练的概念,会大大降低成本。作为补偿 / 回报,计算资源的分享者们会得到 Raven 币(RAV)。只需要在以太坊区块链中通过智能合同进行两步简单的校验,这种激励机制便可实现。

Raven 可以成功地将模型训练过程中所需的数量庞大的小型异步运算,搭建为一个动态图。

教程:LSTM 模型预测电子货币价格

深度学习区块链结合在一起的实验案例,看起来是一个不错的主意。David Sheehan 使用一个长短时记忆(LSTM)模型 —— 深度学习中一个非常适合分析时间序列数据的特定模型(或者任何时间/空间/结构序列数据,例如电影、语句等);做了一个预测加密电子货币的价格趋势的实验案例。除了此前的比特币价格预测以外,该实验案例还包含了对以太坊协议货币的趋势预测。

如果你真的想了解其中的基础理论,那么我推荐你阅读这三篇文章:《理解 LSTM 网络》、《探究 LSTM》、原始白皮书。为了尽量吸引更多的非专业机器学习爱好者,实验中大幅度减少代码的篇幅。如果你想自己使用这些数据或者建立自己的模型,本篇文章同样提供了Jupyter (Python) 笔记供参考。

本实验数据集基于 Kaggle 上过去几年比特币详细到每分钟的价格数据,与 coinmarketcap.com 上的数据作为基础。这里有详尽的中文文档翻译。

区块链技术入门

有人称:区块链(Blockchain)技术也许是继蒸汽机、电力、信息和互联网技术之后,能与大数据、移动互联网、云计算等新技术共同推动经济金融转型升级、最有潜力触发第五轮颠覆式产业革命浪潮的核心技术。

什么是区块链?

区块链有两个主要部分:区块和链。它的本质就是一串链子把区块串起来,然后数据被划分成连续的多个区块的形式,在电脑里储存。举个例子你就明白了,下图中方框代表国家,每个方框里每个国家的一些城市名字。

getting start with blockchain
Getting Start with BlockChain 1

除此之外,每个方框里面还有一个称作哈希值(hash)的部分,哈希值是由一系列字符组成(比如“1hi515AHA5H”),它的值由每个方框的里面信息决定。

Getting Start with BlockChain
Getting Start with BlockChain 2

由于技术上哈希值的产生比较复杂,简便起见我们用城市名首字母来代替正轨的哈希值比如 USA 的那个方块里面有 New York,LosAngeles 和 Chicago 三个城市,那么哈希值就是“NYLAC”,每个连续的区块链都包含上一个区块的哈希值,暂把它们称作“前哈希值”(Prev Hash)。

这就有点像 C 语言的指针,把区块连接起来。如果有人想篡改 USA 这个区块,比如加入一个城市 Boston,那么这个区块的新哈希值就会变成“NYLACB”,但是下一个区块 India 中存储的“前哈希值”仍然是“NYLAC”,这样就没法匹配,这个链就此断了。

所以你知道了吧,哈希值的引入就是为了防止有人篡改任何一个区块。

区块链的数据并不是只存在于一台电脑上的,他的数据是在存在于所有接入区块链网络的电脑上的,每个电脑上的数据都是一样的,因为每当你加入区块链网络,你的电脑就会下载所有区块,如果某人篡改了他的版本,网络就会判断是否可信,它的策略是相信大多数人的版本。

还有一点需要说明,在区块链网络里面,除了数据,所有电脑上运行的程序都是一样的,所有电脑一起执行这套程序。这一点和我们日常生活中所见的大多数应用的机制不同,比如微博,所有的数据和处理程序都是集中在微博的服务器上,而手机 APP、PC 应用、网页等终端的主要功能仅仅是用于与处理服务器进行交互。

但在区块链网络里面,是去中心化的,它依靠所有接入区块链网络的用户的计算机共同执行它的程序。这意味着只有区块链网络中的每台电脑都关机了,它才会停止运行。

公共区块链

那这些能防范篡改的区块有什么用?比如大名鼎鼎的比特币。

比特币是一种电子货币,它具有一套自己的支付系统,它的防篡改区块功能就是人们能放心进行所有交易的核心。就像前面说的,需要大家贡献出自己的电脑去执行比特币的程序,作为回报,他们会得到比特币,这些人的电脑被戏称为“矿工(Miner)”。

以太坊(Ethereum,一个开源的有智能合约功能的公共区块链平台)负责处理繁重的工作,被广泛应用于电子货币系统的搭建,比如我们之前提到的委内瑞拉石油币(Petro),毕竟从零开始开发一个区块链并建立自己的社区将是非常困难的,尤其是人们必须贡献他们的电脑。

区块链的应用场景不仅仅是支付系统或加密货币,它可以是任何东西,比如社交网络等。

私有区块链

比特币、以太坊等都是公共区块链的例子,任何人都可以参与其中。如果我们想要创建一个私有的区块链网络呢?它能解决一些生活中更具体的问题。例如:房东和房客之间的关系是通过合同来联结的,既然纸质合同不保险,那不妨试试一份电子智能合同。

那问题来了,代码部署在哪里呢?它应该部署在有关各方的电脑上。房东和房客的银行成为私有区块链网络的一部分,双方将签署一份电子智能合同,然后它被部署在网络上,而且双方的银行都有副本。每个月 1 号 0 点将商定的金额从房客的账户转到房东的账户。

由于私有区块链网络仅限于参与交易的各方,所以上面提到的房东与房客的关系,便是私有区块链的网络,相互是看不到对方的交易的。所以私有区块链能既保障了各自的隐私,又保障了资金的安全。

区块链研究报告汇总

今天,区块链已超越 —— 比特币背后的技术这一狭隘的概念,其去中心化的核心理念正逐步渗透至各个行业,包括:旅游、能源、房地产、金融,乃至医疗行业。区块链在不断破坏旧的利润与经济秩序同时,又不断的创造着新的利润与经济秩序。每个人都应该了解区块链概念,这一未来的新经济蓝图。跨象乘云™ 汇总了多家咨询机构的原生版(无水印)区块链报告,让你能全方位的认识这全新的领域。

同时,全球多个 IT 巨头,都已经加入超级账本(Hyperledger)—— 一个为了提高跨行业的区块链技术的开源合作项目。由Linux基金会主导的全球合作项目,包括了金融、银行、物联网、供应链、制造和科技产业的领导者。假如你对区块链开发感兴趣,可以通过下载 Docker 镜像在本地体验区块链项目开发

概率编程预测虚拟货币价格

Alex Honchar 在 Medium 上曾发布了一些列使用神经网络进行交易算法的金融预测教程,包括:

  1. 简单时间序列预测
  2. 正确一维时间序列预测+回测
  3. 多元时间序列预测
  4. 波动预测和自定义损失
  5. 多任务和多模式学习
  6. 超参数优化
  7. 用神经网络进行经典策略强化

有一部分结果十分值得在实际交易中加以应用。同时,随着人工智能技术的普及,用机器学习预测市场价格波动的方法最近层出不穷。然而,当你试图将一些机器学习模型应用于「随机」数据并希望从中找到隐藏规律的时候,训练过程往往会产生严重的过拟合。这次,Alex Honchar 介绍了利用概率编程和 Pyro 进行价格预测的方法,相较于常规神经网络,新方法对于数据的依赖程度更小,结果更准确。使用概率的观点看待这个问题能够让我们从数据本身学习正则化、估计预测结果的确定性、使用更少的数据进行训练,还能在模型中引入额外的概率依赖关系。在实验中,Alex Honchar 选择了最近流行的虚拟货币「以太币」作为实例进行价格预测,并且需要一下的 Python 库支持:

最后,全部的深度交易代码,可以在下面的链接中找到:

GitHub地址项目GitHub地址

Python金融工程领域应用项目

跨象乘云汇总了 2017 年 Python 在金融工程领域应用中的各个最佳实践项目案例:

首先,你需要了解如何使用 Python 与常见的数据表打交道。DataCamp 上的教程:Python Excel Tutorial: The Definitive Guide,让你了解如何使用 Python 读取和导入 Excel 文件,如何将数据写入这些电子表格;或者与 Google Sheets 协同工作。

同时,如何通过 NumpyPandasMatplotlibQuantopianFinance 等,学习 Python 在金融交易领域的算法应用? DataCamp 的教程:Python For Finance: Algorithmic Trading,是一份很理想的将 Python 应用于财务分析与金融交易算法的入门指引。当然,你需要先了解基础的股票价格及相关金融数据

最近极其火爆的数字货币市场,究竟是如何表现?加密货币价值突然出现高峰和低谷的原因是什么?不同电子代币市场是不可分割的或基本独立的? 我们如何预测接下来会发生什么?Analyzing Cryptocurrency Markets Using Python,将简单地介绍如何使用 Python 来分析加密货币。通过一个简单的 Python 脚本来检索,分析和可视化不同加密货币上的数据。在这个过程中,文章还将揭示这些波动剧烈的市场行为以及一个有趣的演变趋势。

毫无疑问,区块链这项新颖的技术是计算的奇迹。区块链技术的出现引发了新的全数字货币,如比特币和莱特币,而这些货币并非由中央当局发行或管理。区块链也以 Ethereum 这样的技术形式革命化了分布式计算,并引入了智能合约等有趣的概念。要学习区块链技术,最好的方法,无疑是自己亲手建立一个区块链:Learn Blockchains by Building One,将会帮助你学习并理解区块链的工作原理。通过这篇教程,你将学习到一个功能强大的区块链,并掌握它们的工作流程。如果你觉得太复杂,你可以试试用少于 50 行的代码(Python2)来创建一个最简单、最小的区块链