2022.10.9 第二十五次周报

目录

前言

文献阅读-《使用深度学习方法进行河水温度预测》

题目

作者

核心内容

主要技术

测试模型

气流模型

随机森林

反向传播神经网络

区块链:BTC协议

double spending attack

Merkel Tree

比特币中的共识协议(consensus in BitCoin):

代码——用梯度下降解决线性回归方程

代码——构建基本神经网络(NN)

总结


前言

本周主要方向还是继续学习区块链的相关知识,在代码部分有一些小小的了解。本周主要涉及基础神经网络和BTC-协议两个大的方面,除此之外阅读了一些文献来锻炼自己的能力。

文献阅读-《使用深度学习方法进行河水温度预测》

题目

River water temperature forecasting using a deep learning method

作者

Qiu Rujian;Wang Yuankun;Rhoads Bruce;Wang Dong;Qiu Wenjie;Tao Yuwei;Wu Jichun

核心内容

由于水温强烈影响河流中的许多物理,化学和生物过程,因此它在决定水生生态系统的质量方面起着至关重要的作用。WT的变化影响溶解氧的量,鱼类物种的分布和代谢率和其他水生生物,水面的蒸发速率
和冰的形成河流温度变化主要取决于水面空气和水之间的热通量以及为河流提供水的不同径流成分的温度(例如地表径流,地下水输入和融雪输入)。先前的研究表明,WT河与气候变化密切相关(和人为扰动,如水坝。鉴于温度作为影响河流环境质量的因素的重要性以及与人类影响相关的热状态变化的可能性,在人类影响日益增加的时代,迫切需要准确预测河流温度,现在被称为人类世

在过去的几十年中,已经开发了两类水温模型,基于物理的模型和数据驱动的模型。最近,深度学习方法(例如,长短期记忆神经网络,LSTM)应用于其他时间序列预测任务,已经证明了与传统数据驱动模型相比这些方法的优势。深度学习模型是否能够应对在人为扰动影响下准确预测热状态变化的每日变化的挑战,需要进一步研究。

本文的目标有两个方面:

1.评估LSTM模型的预测性能,以预测平均日河流温度,与其他几种河流温度预测模型相比

2.使用LSTM重建在没有大坝的情况下将发生的受管制河流的预期每日自然热状态,并确定影响该河流热状态每日变化的因素。研究结果提高了预测与河流系统环境质量相关的重要因素(平均日风湿率)的熟练程度,也为评估受水坝调节的河流热力状态变化提供了新工具。

主要技术

长短期记忆神经网络 (LSTM)
LSTM是一种特殊的递归神经网络(RNN)(霍赫雷特和施米德胡伯,1997)。RNN有一个循环隐藏单元来处理顺序数据,每个时间步的输出作为下一个时间步的输入。单个RNN模型仅更新单个过去状态,并且它由反向传播时间算法(Mozer,1989,Werbos,1990)进行训练,通过该算法,损失函数向后传播以确定权重的更新。对于简单的循环网络,反向传播会遇到梯度消失的问题,其中训练信号在传播到网络时呈指数级变小,使得反向传播对深度网络无效(Shen,2018)。LSTM是RNN的一种特殊变体,可以有效避免RNN的梯度消失问题。

LSTM的工作机制和数据流、涉及几个步骤。首先,输入数据在时间步长t和隐藏状态的瞬间流向遗忘门,以确定应该从小区状态中去除多少先前的信息。通过 sigmoid 激活函数 将数据转换为 0 到 1 的范围,值为 1 表示“完全保留它”,值为零,信令表示“完全删除它”。隐藏状态中保留的信息流向输入门,在那里它作为存储单元的新输入信息,用于更新单元状态。然后生成新的候选值 ,该候选值存储在单元格状态 中。最后,更新的单元状态()流向输出门,输出门控制单元状态内的信息,该信息在下一个时间步长中传播到隐藏变量状态。

基于LSTM,构建了一个用于WT预测的4层深度神经网络模型。该模型由输入层、LSTM 层、全连接层和输出层组成。通过试错法将LSTM细胞的数量设置为30至50的范围,并且根据经验应用0.5的压差值以帮助防止过度拟合。

测试模型

气流模型

随机森林

反向传播神经网络

区块链:BTC协议

double spending attack

双花攻击,这是数字货币相对于纸质货币的区别-可以复制。

去中心化货币要解决两个问题:

1.数字货币的发行?

(比特币的发行是由挖矿决定的)

2.怎么验证交易的有效性,防止double spending attack?

(依靠区块链的数据结构)

比特币的发行者A拥有铸币权(createcoin) 假如发行10个比特币,A(10)分别给B和C各五个,该交易需要有A的签名,证明经A同意。(designed by A)同时还要说明花掉的10个比特币从哪来的。如上图所示,第二个方框中的钱是从第一个框内铸币交易中来的。比特币系统中每个交易都包含输入和输出两部分。输入部分要说明币的来源,输出部分要给出收款人公钥的哈希。有的交易部分比较复杂,如C的货币来源是第二第三个方框,要标识清楚。

上图构成了一个小型的区块链,这里有两种哈希指针,一种哈希指针是连接在各个区块之间的,把它们串起来构成一个链表,前面学的就是这种哈希指针。而在该图中还有第二种哈希指针,是指向前面某个交易的指针,用来指明币的来源。为什么要说明币的来源:证明币不是凭空捏造的是有记录的,同时也是防范double spending。

Merkel Tree

该图对交易系统进行了简化,实际上每个区块(对应图中的每个方框)可以有很多交易,这些交易就组成merkle tree。每个区块分为块头和块身。块头包含的是区块的宏观信息,比如:用的是比特币哪个版本(version)的协议,区块链当中指向前一个区块的指针(hash of previous block header),整颗merkle tree 的根哈希值(merkle root hash),还有两个域是跟挖矿相关的,一个是挖矿的难度目标预值(target),另一个是随机数nonce。这里的target,就是前面讲到的,整个块头的哈希要小于这个预值,即H(block header)≤target。block header里存的就是这个目标预值的编码(nBits)。

这里需要注意,前一个区块的哈希只算的是前一个区块的块头,所以前面画的,一个区块引出一个剪头指向另一个区块中间,是不正确的,所以有的书箭头是指向一个区块的上面。取哈希时是把块头的所有部分都取哈希。块身里面有交易列表(transaction list)。

通常说每个节点都需要验证所有的交易,实际上系统中的节点分全节点(full node)和轻节点(light node),全节点是保存区块链所有的信息的,验证每一个交易,所以全节点又叫fully validating node。轻节点只保存block header的信息,一般来说轻节点没法独立验证交易的合法性。比如一个交易是不是double spending,轻节点没有存以前的交易信息所以它没法验证。系统中大多数节点是轻节点,上述内容主要针对全节点,因为轻节点没有参与区块链的构造和维护,只是利用了区块链的一些信息做一些查询。

比特币中的共识协议(consensus in BitCoin):

比特币中共识要解决的一个问题是,有些节点可能是有恶意的。我们假设系统中大多数节点是好的,那么该如何取得共识协议?

最先想到的方案是投票,首先应该确定哪些区块有投票权,有些membership是有严格要求的,这种情况下基于投票的方案是可行的。但比特币系统创建账户是很容易的,甚至一个人产生了公私钥对别人都无法得知,只有转账时别人才知道。所以有些人可以不停的创建账户,当超过账户总数的一半时就有了控制权,这种称为女巫攻击(sybil attack)。因此投票方法不可取。

比特币账户巧妙的解决了这个问题,不是按照账户数目投票,而是按照计算力来投票。每个节点都可以在本地组装出一个候选区块,把它认为合法的交易放在里面,然后开始尝试各种nonce值(占4 byte),看哪一个能满足不等式H(block header)≤target的要求。如果某个节点找到了符合要求的nonce,它就获得了记账权。所谓的记账权,就是往比特币账本里写入下一个区块的权利。只有找到这个nonce,获得记账权的节点才有权利发布下一个区块。其他节点收到这个区块之后,要验证这个区块的合法性。

代码——用梯度下降解决线性回归方程

代码——构建基本神经网络(NN)

 

 

总结

下周继续学习区块链的知识,代码方面下周主要是CNN手写数字识别。

猜你喜欢

转载自blog.csdn.net/weixin_43971717/article/details/127230481