当前位置:首页 > 天道酬勤 > 正文内容

比特币现金和以太坊谁潜力大(lstm与什么结合)

张世龙2021年12月21日 04:42天道酬勤830

2017年对人工智能和密码货币(Cryptocurrency )来说是伟大的一年。 目前,人工智能行业正在进行许多研究和突破,人工智能是目前最普及的技术之一,将来会更多。 这一年,各种加密比、比特币、莱特币、瑞波币等的投资可以说是获得了某种收益的大牛市。

许多ML专家、爱好者将这些技术应用于加密货币市场。 因为机器学习和深度学习的模式被以各种各样的方法用于股市。

建立单点预测模型可能是探索价格数据等时间序列深度学习的良好起点。 当然,这不是结束。 总是有改进的余地,会增加更多的输入数据。 使用深度学习作为自动交易代理是个好方法。 但万丈高楼从平地开始,第一步是关键,本文首先讨论了学习使用LSTM网络,建立良好的预测模型。

前提条件和开发环境

是古老的规则。 这里,我们假设您在Python上具有编程技能,并具备机器学习的基本知识,特别是深度学习领域的知识。 如果你还是小白的话,可以多关注AI中国,不定期发表干货知识。

这里选择的开发环境是谷歌的Colab。 选择Colab是因为环境设定简单,可以使用免费的GPU。 这对训练时间产生了巨大的影响。 以下是如何在谷歌云驱动器上配置和使用colab的教程。 在GitHub上可以找到完整的colab笔记本。 (https://github.com/ssdggx/lstm-crypto-predictor/blob/master/lstm _ crypto _ price _ prediction.ipynb )

如果您想要设置AWS环境,请参阅本教程653https://towardsdatascience.com/how-to-set-up-deep-learning-machine-on-AWS-gppps

回到正题上来。 本文使用具有TensorFlow后端的Keras库构建模型并训练历史数据。

什么是循环神经网络?

为了解释循环神经网络,首先返回到具有隐藏层的简单感知网络。 这样的网络对简单的分类问题很好。 通过添加更多的隐藏层,网络可以估计输入数据中更复杂的模式,提高预测的准确性。 但是,这些类型的网络适用于与时间无关的与历史无关的任务。 例如,训练集中以前的样本不影响以下样本的图像分类: 也就是说,蛋白胨没有过去的记忆。 对于卷积神经网络来说,这是一种更复杂的图像识别传感器体系结构。

具有一个隐层和两个输出的简单传感器神经网络

循环型神经网络(RNN )是一种神经网络,通过在前一时间步的隐藏状态下循环,与当前的输入样本结合来解决探测器过去记忆的问题。

让我更详细地说明这个。 在新样本进入的每个时间步骤,网络都会忘记前一步骤的样本。 解决时间序列问题的一个方法是引入上一个输入对当前样本进行采样,以便了解网络以前发生过的事情。 但是,这样一来,在上一步之前就无法捕获时间序列的完整历史记录。 一个更好的方法是从以前的输入样本中获取隐藏层(隐藏层的权重矩阵),然后与当前的输入样本一起输入到我们的网络中。

如果将隐层权重矩阵看作网络的状态,这样看来,隐层已经以所有神经元权重分布的形式被捕获,这是一个表现更丰富的网络。 下面的照片把RNN中发生的事情可视化了。

进入Xt后,来自Xt-1的隐藏状态与Xt连接,在时刻t输入网络。 这个过程沿着时间序列对每个样本重复。

这里请尽量简单。 如果您想更详细地了解RNN,这里有一个关于RNN的好资源:

RNN简介65http://www.wild ml.com/2015/09/recurrent-neural -网络教程-部件1 -教程-到中心

适用于初学者的递归神经网络(https://medium.com/@ camrongodbout/recurrent-neural-networks-for-beginners-7 AC a4e 933 b 82 )

递归神经网络的不合理有效性(http://kar pathy.github.io/2015/05/21/rnn-effectiveness/)

什么是长期记忆网络(LSTM )?

在告诉你什么是LSTM之前,让我们先来谈谈循环神经网络最大的问题。 在我们逆向传播训练之前,一切看起来都很好。 当我们训练样本的坡度通过我们的网络向后传播时,它越来越大了

弱,当它到达代表我们时间序列中较旧数据点的那些神经元时,它没有任何能量来适当地调整它们。这个问题被称为梯度消失。 LSTM单元是一种循环神经网络,它存储关于过去的重要信息并忘记非重要的部分。这样,当渐变向后传播时,它不会被不必要的信息所消耗。

mmdzh阅读一本书时,经常在完成一章之后想想自己,虽然你可以记住前一章的内容,但是你可能无法记住所有关于它的重要观点。解决这个问题的一种方法是,我们强调并记录那些重要的要点,以记住和忽略对主题不重要的解释和填充。

让我们一起看看代码

首先,我们导入项目所需的库。

历史数据

这里使用了www.coinmarketcap.com的历史数据,你也可以使用其他来源,使用它的原因是这篇文章比较直接简单。我们将获得比特币的每日价格数据。但是,在colab笔记本中,你也会看到以太坊的代码。这里是以某种方式编写的代码,以便可以重用其他加密货币。

现在让我们编写一个获取市场数据的函数。

现在让我们获取比特币的数据并将其加载到变量'''btc_data'''并显示我们数据的前五行。

BTC的市场数据

让我们来看看比特币的收盘价格以及它的日常交易量。

数据准备

构建任何深度学习模型的很大一部分是,准备我们的数据供神经网络用于训练或预测。根据我们正在使用的数据类型,此步骤称为预处理,其中可能包含多个步骤。在我们的案例中,我们将在下面的任务中作为我们预处理的一部分:

·数据清理,填补缺失的数据点

·合并多个数据通道。比特币和以太坊在一个数据框中。

·计算价格波动并将其添加为新列

·删除不必要的列

·根据日期对数据进行排序

·拆分训练和测试的数据

·创建输入样本并在0和1之间进行归一化

·创建训练和测试集的目标输出

·将我们的数据转换为numpy数组以供我们的模型使用

数据清理部分已经在我们加载数据的第一个函数中完成了。你可以在下面找到执行上述任务的必要功能:

在这里我们将调用上面的函数来创建我们模型的最终数据集。

现在我们来构建我们的LSTM-RNN模型。在这个模型中,使用了3层LSTM,每层512个神经元,在每个LSTM层之后0.25个Dropout,以防止过度拟合,最后形成一个密集层产生我们的输出。

这里使用了'tanh'作为激活函数,绝对平均误差作为损失,'adam'作为优化器。可以尝试这些功能的不同选择,看看它们如何影响模型的性能。

以下是我们的模型总结:

在代码开始时,就已经将超参数解码为完整的代码,以便从一个地方更容易地更改不同的变体。这里是超参数:

现在是对我们收集的数据进行模型训练的时候了

上述代码可能需要一段时间才能完成,具体取决于计算能力,完成后,你的训练模型也就完成了。

我们来看看BTC和ETH的结果(BTC:市值第一大的虚拟货币;ETH:市值第二大的虚拟货币,同时也是以太坊平台运行时所需的代币)

对起跑者来说还是不错的!

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26092.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。