1. 一文读懂深度学习时序分析
作者 | Prakhar Ganesh
编译 | 安然
近日,发表在《DataScience》上的一篇文章,使用深度学习方法,从数据处理、循环网络、RNN上的LSTM、CNN-LSTMs等方面介绍了时间序列分析,同时解释了时间序列的概念以及为什么选择深度学习的方法等问题。
什么是时间序列分析?
时间序列是一系列数据点,使用时间戳进行排序,是对时间序列数据的分析。
从水果的每日价格到电路提供的电压输出的读数,时间序列的范围非常大,时间序列分析的领域也是如此。分析时间序列数据通常侧重于预测,但也可以包括分类,聚类,异常检测等。
例如,通过研究过去的价格变化模式,可以尝试预测曾经想要购买的一款手表的价格,判断它的最佳购买时间!
为什么选择深度学习?
时间序列数据可能非常不稳定且复杂。深度学习方法不假设数据的基本模式,而且对噪声(在时间序列数据中很常见)的鲁棒性更强,是时间序列分析的首选方法。
数据处理
在继续进行预测之前,重要的是首先以数学模型可以理解的形式处理数据。通过使用滑动窗口切出数据点,可以将时间序列数据转换为监督学习问题。然后,每个滑动窗口的预期输出是窗口结束后的时间步长。
循环网络
循环网络一种复杂的深度学习网络。它们可以记住过去,因此是序列处理的首选。RNN单元是循环网络的骨干。
RNN单元具有2个传入连接,即输入和先前状态。同样,它们还具有2个传出连接,即输出和当前状态。这种状态有助于他们结合过去和当前输入的信息。
一个简单的RNN单元太简单了,无法统一用于跨多个域的时间序列分析。因此,多年来提出了各种各样的变体,以使循环网络适应各个领域,但核心思想保持不变!、
RNN上的LSTM
LSTM单元格是特殊的RNN单元格,其中带有“门”,其本质上是介于0到1之间的值,对应于状态输入。这些门背后的直觉是忘记或保留过去的信息,这使他们不仅可以记住过去,还可以记住更多。
CNN-LSTMs
由于状态信息要经过每一个步长,所以RNNs只能记住最近的过去。
另一方面,像LSTM和GRU这样的门控网络可以处理相对较长的序列,但是即使这些网络也有其局限性!!为了更好地理解这一问题,还可以研究消失和爆炸的梯度。
那么如何处理很长的序列呢?最明显的解决办法就是缩短它们!!但如何?一种方法是丢弃信号中呈现的细粒度时间信息。
这可以通过将一小组数据点累积在一起并从中创建特征来完成,然后将这些特征像单个数据点一样传递给LSTM。
多尺度分层LSTMs
看看CNN-LSTM架构,有一件事浮现在我的脑海中……为什么要使用CNNs来合并那些组?为什么不使用不同的LSTM呢!多尺度分层LSTMs是基于相同的思想构建的。
输入是在多个尺度上处理的,每个尺度都致力于做一些独特的事情。适用于更细粒度输入的较低标度专注于提供细粒度(但仅是最近的)时间信息。
另一方面,较高的比例集中在提供完整的图片(但没有细粒度的细节)上。多个刻度可以一起更好地理解时间序列。
下一步是什么?
时间序列分析是一个非常古老的领域,包含各种跨学科的问题,每种陈述问题都有其自身的挑战。
然而,尽管每个领域都根据自己的要求调整了模型,但是时间序列分析中仍然有一些一般性的研究方向需要加以改进。
例如,从最基本的RNN单元到多尺度分层LSTM的每项开发都以某种方式专注于处理更长的序列,但是即使最新的LSTM修改也有其自身的序列长度限制,并且目前仍然没有一种架构可以真正处理极长的序列。
2. 时序逻辑电路的分析有几个步骤
四个步骤:
1、观察电路结构:同步或异步,穆尔或米利⋯
2、列写逻辑方程组:输出方程、激励方程、状态方程、时钟方程
3、列状态麦、画状态图或时序图
4、说明功能。
3. 静态时序分析和动态时序仿真各有什么特点
动态时序分析
动态时序分析就是通常我们所说的仿真,该仿真可以验证功能,也可以验证时序,首先确定测试向量,输入硬件模型,进行仿真。由于为了完整地测试每条路径的功能或者时序是否都满足,测试向量需要很大,也不能保证100%的覆盖率。如果到了门级的仿真将非常消耗时间。
静态时序分析
静态时序分析只能分析时序要求而不能进行功能验证。不需要测试向量,能比动态时序分析快地多的完成分析。静态时序分析只能对同步电路进行分析,而不能对异步电路进行时序分析。但是它却可以验证每一条路径,发现时序的重大问题,比如建立时间和保持时间冲突,slow path以及过大的时钟偏移。
静态时序分析的优缺点
静态时序分析可以大大提高仿真时间,并能100%覆盖所有的路径。它通过预先计算所有的延时来提高速度。包括内部门延时以及外部的线延时。静态时序分析并不是简单的把各个延时相加,而是引入真值表,分析各种输入情况下所有可能经过的路径,而且能识别flase path。但是由于在深亚微米的工艺条件下,静态时序分析不能完整的把所有影响延时的因素给包含进去,因此在关键路径方面,便可以用STA工具导出关键路径的spice网表,用门级或者管级仿真工具进行电路仿真,以确定时序的正确性。
4. 时序电路的分析
时序电路的行为是由输入、输出和电路当前状态决定的。输出和下一状态是输入和当前状态的函数。通过对时序电路进行分析,可以得到关于输入、输出和状态三者的时序的一个合理描述。
如果一个电路包含这样的触发器,该触发器的时钟输入是直接驱动或者有一个时钟信号间接驱动的,同时这个电路在正常执行时不需加载直接置位和间接置位,那么我们就称这个电路为同步时序电路。触发器可以是任何类型的,逻辑图可以包括也可以不包括组合逻辑。 时序电路的逻辑图通常包括触发器和组合门。我们所使用地触发器类型和组合电路的一系列布尔函数为我们提供了绘制时序电路逻辑图所需要的全部信息。在组合逻辑电路中,触发器输入信号的产生,可以用一系列的布尔函数描述,我们称这些布尔函数为触发器的输入方程(flip-flop input equation)。在这里,我们同样将采用传统的表示方法,使用触发器的输入符号作为触发器输入方程中的变量,使用触发器的输出符号作为变量下标。在组合电路中,触发器的输入方程是一系列布尔表达式,下表变量是组合电路的输出符号。因为在电路中触发器的输出端始终与输入端相连,所以命名为“触发器的输入方程”。
触发器输入方程为指定时序电路的逻辑图提供了一种间接的代数表达方法。这些方程的字母符号隐含了所用的触发器的类型,同时完全确定了驱动触发器的组合逻辑电路。时间变量在触发器输入方程中没有指明,但是已经暗含在触发器C输入端的时钟之中。 时序电路的输入、输出和触发器的状态之间的函数关系可以用状态表(state table)列举出来。状态表包括四个部分,分别标记为当前状态(present state)、输入(input)、下一状态(next state)和输出(output)。当前状态表示触发器A和B在任意给定时刻t的状态。输入部分表示在每个可能的当前状态下的输入X值。注意,对于每种可能的输入组合,每个当前状态都不断重复出现。下一状态表示触发器在一个时钟周期后的状态,即t+1时刻的状态。输出部分表示t时刻在给定的当前状态和输入组合下输出Y值。
由此推导出的状态表包括了所有可能的当前状态和输入信号的二进制组合。 状态表中的有用信息可以通过状态图以图形化的方式表现出来。在状态图中,状态用圆圈表示,状态之间的转换用连接这些圆圈的有向线段表示。状态图是通过状态表直接得到的,与状态表提供了相同的信息。每个圆圈内的二进制数值定义了触发器的一个状态。在米粒型电路中,状态转换的有向线段上都标记了两个二进制数值,它们之间用斜线隔开,斜线前面的数值表示当前状态的输入,斜线后面的数值表示当前状态和给定述如下的输出。一个连接到自身圆圈的有向线段意味着没有发生状态转换。穆尔型电路在状态转换的有向线段上没有斜线,取而代之的是,输出是在圆圈中状态值下的斜线下表示出来的。在状态图中,每个状态的转换有两个输入条件,用都点分开。当有两个输入变量时,每个状态可能要有四个有向线段从响应的状态图中发出,这要依赖于状态的数量和每个输入组合的下一个状态。
除了表示方式不同,状态表和状态图是没有区别的。状态表易于从给定的逻辑图和输入方程中得出,而状态图可以直接从状态表中得出。状态图给出了状态的图形化表示,更便于我们理解电路的操作过程。
5. 分析同步时序电路的3个步骤。
1、从给定的逻辑图中写出每个触发器的驱动方程。
2、将得到的这些驱动方程代入相应的触发器的特性方程,得出每个触发器的状态方程,从而得到由这些状态方程组成的整个时序电路的状态方程组。
3、根据逻辑图写出电路的输出方程。
6. 了解异步时序逻辑电路的分析方法
1.同步时序电路:同步时序电路是指各触发器的时钟端全部连接在一起,并接系统时钟端;只有当时钟脉冲到来时,电路的状态才能改变;改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x有无变化;状态表中的每个状态都是稳定的.
2.异步时序电路:异步时序电路是指电路中除以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件;电路中没有统一的时钟;电路状态的改变由外部输入的变化直接引起.可将异步时序逻辑电路分为脉冲异步时序电路和电平异步时序电路.
7. 数学建模范文
数学建模
内容摘要:
数学作为现代科学的一种工具和手段,要了解什么是数学模型和数学建模,了解数学建模一般方法及步骤。
关键词:
数学模型、数学建模、实际问题
伴随着当今社会的科学技术的飞速发展,数学已经渗透到各个领域,数学建模也显得尤为重要。数学建模在人们生活中扮演着重要的角色,而且随着计算机技术的发展,数学建模更是在人类的活动中起着重要作用,数学建模也更好的为人类服务。
一、数学模型
数学模型是对于现实世界的一个特定对象,一个特定目的,根据特有的内在规律,做出一些必要的假设,运用适当的数学工具,得到一个数学结构.
简单地说:就是系统的某种特征的本质的数学表达式(或是用数学术语对部分现实世界的描述),即用数学式子(如函数,图形,代数方程,微分方程,积分方程,差分方程等)来描述(表述,模拟)所研究的客观对象或系统在某一方面的存在规律.
随着社会的发展,生物,医学,社会,经济……,各学科,各行业都涌现现出大量的实际课题,急待人们去研究,去解决.但是,社会对数学的需求并不只是需要数学家和专门从事数学研究的人才,而更大量的是需要在各部门中从事实际工作的人善于运用数学知识及数学的思维方法来解决他们每天面临的大量的实际问题,取得经济效益和社会效益.他们不是为了应用数学知识而寻找实际问题(就像在学校里做数学应用题),而是为了解决实际问题而需要用到数学.而且不止是要用到数学,很可能还要用到别的学科,领域的知识,要用到工作经验和常识.特别是在现代社会,要真正解决一个实际问题几乎都离不开计算机.可以这样说,在实际工作中遇到的问题,完全纯粹的只用现成的数学知识就能解决的问题几乎是没有的.你所能遇到的都是数学和其他东西混杂在一起的问题,不是"干净的"数学,而是"脏"的数学.其中的数学奥妙不是明摆在那里等着你去解决,而是暗藏在深处等着你去发现.也就是说,你要对复杂的实际问题进行分析,发现其中的可以用数学语言来描述的关系或规律,把这个实际问题化成一个数学问题,这就称为数学模型.
数学模型具有下列特征:数学模型的一个重要特征是高度的抽象性.通过数学模型能够将形象思维转化为抽象思维,从而可以突破实际系统的约束,运用已有的数学研究成果对研究对象进行深入的研究.数学模型的另一个特征是经济性.用数学模型研究不需要过多的专用设备和工具,可以节省大量的设备运行和维护费用,用数学模型可以大大加快研究工作的进度,缩短研究周期,特别是在电子计算机得到广泛应用的今天,这个优越性就更为突出.但是,数学模型具有局限性,在简化和抽象过程中必然造成某些失真.所谓"模型就是模型"(而不是原型),即是指该性质.
二、数学建模
数学建模是利用数学方法解决实际问题的一种实践.即通过抽象,简化,假设,引进变量等处理过程后,将实际问题用数学方式表达,建立起数学模型,然后运用先进的数学方法及计算机技术进行求解.简而言之,建立数学模型的这个过程就称为数学建模.
模型是客观实体有关属性的模拟.陈列在橱窗中的飞机模型外形应当象真正的飞机,至于它是否真的能飞则无关紧要;然而参加航模比赛的飞机模型则全然不同,如果飞行性能不佳,外形再象飞机,也不能算是一个好的模型.模型不一定是对实体的一种仿照,也可以是对实体的某些基本属性的抽象,例如,一张地质图并不需要用实物来模拟,它可以用抽象的符号,文字和数字来反映出该地区的地质结构.数学模型也是一种模拟,是用数学符号,数学式子,程序,图形等对实际课题本质属性的抽象而又简洁的刻划,它或能解释某些客观现象,或能预测未来的发展规律,或能为控制某一现象的发展提供某种意义下的最优策略或较好策略.数学模型一般并非现实问题的直接翻版,它的建立常常既需要人们对现实问题深入细微的观察和分析,又需要人们灵活巧妙地利用各种数学知识.这种应用知识从实际课题中抽象,提炼出数学模型的过程就称为数学建模.实际问题中有许多因素,在建立数学模型时你不可能,也没有必要把它们毫无遗漏地全部加以考虑,只能考虑其中的最主要的因素,舍弃其中的次要因素.数学模型建立起来了,实际问题化成了数学问题,就可以用数学工具,数学方法去解答这个实际问题.如果有现成的数学工具当然好.如果没有现成的数学工具,就促使数学家们寻找和发展出新的数学工具去解决它,这又推动了数学本身的发展.例如,开普勒由行星运行的观测数据总结出开普勒三定律,牛顿试图用自己发现的力学定律去解释它,但当时已有的数学工具是不够用的,这促使了微积分的发明.求解数学模型,除了用到数学推理以外,通常还要处理大量数据,进行大量计算,这在电子计算机发明之前是很难实现的.因此,很多数学模型,尽管从数学理论上解决了,但由于计算量太大而没法得到有用的结果,还是只有束之高阁.而电子计算机的出现和迅速发展,给用数学模型解决实际问题打开了广阔的道路.而在现在,要真正解决一个实际问题,离了计算机几乎是不行的.数学模型建立起来了,也用数学方法或数值方法求出了解答,是不是就万事大吉了呢 不是.既然数学模型只能近似地反映实际问题中的关系和规律,到底反映得好不好,还需要接受检验,如果数学模型建立得不好,没有正确地描述所给的实际问题,数学解答再正确也是没有用的.因此,在得出数学解答之后还要让所得的结论接受实际的检验,看它是否合理,是否可行,等等.如果不符合实际,还应设法找出原因,修改原来的模型,重新求解和检验,直到比较合理可行,才能算是得到了一个解答,可以先付诸实施.但是,十全十美的答案是没有的,已得到的解答仍有改进的余地,可以根据实际情况,或者继续研究和改进;或者暂时告一段落,待将来有新的情况和要求后再作改进.
应用数学知识去研究和和解决实际问题,遇到的第一项工作就是建立恰当的数学模型.从这一意义上讲,可以说数学建模是一切科学研究的基础.没有一个较好的数学模型就不可能得到较好的研究结果,所以,建立一个较好的数学模型乃是解决实际问题的关键之一.数学建模将各种知识综合应用于解决实际问题中,是培养和提高同学们应用所学知识分析问题,解决问题的能力的必备手段之一.
三、数学建模的一般方法
建立数学模型的方法并没有一定的模式,但一个理想的模型应能反映系统的全部重要特征:模型的可靠性和模型的使用性
建模的一般方法:
1.机理分析
机理分析就是根据对现实对象特性的认识,分析其因果关系,找出反映内部机理的规律,所建立的模型常有明确的物理或现实意义.
(1) 比例分析法--建立变量之间函数关系的最基本最常用的方法.
(2) 代数方法--求解离散问题(离散的数据,符号,图形)的主要方法.
(3) 逻辑方法--是数学理论研究的重要方法,对社会学和经济学等领域的实际
问题,在决策,对策等学科中得到广泛应用.
(4) 常微分方程--解决两个变量之间的变化规律,关键是建立"瞬时变化率"
的表达式.
(5) 偏微分方程--解决因变量与两个以上自变量之间的变化规律.
2.测试分析方法
测试分析方法就是将研究对象视为一个"黑箱"系统,内部机理无法直接寻求,通过测量系统的输入输出数据,并以此为基础运用统计分析方法,按照事先确定的准则在某一类模型中选出一个数据拟合得最好的模型.
(1) 回归分析法--用于对函数f(x)的一组观测值(xi,fi)i=1,2,…,n,确定函数的表达式,由于处理的是静态的独立数据,故称为数理统计方法.
(2) 时序分析法--处理的是动态的相关数据,又称为过程统计方法.
(3) 回归分析法--用于对函数f(x)的一组观测值(xi,fi)i=1,2,…,n,确定函数的表达式,由于处理的是静态的独立数据,故称为数理统计方法.
(4) 时序分析法--处理的是动态的相关数据,又称为过程统计方法.
将这两种方法结合起来使用,即用机理分析方法建立模型的结构,用系统测试方法来确定模型的参数,也是常用的建模方法, 在实际过程中用那一种方法建模主要是根据我们对研究对象的了解程度和建模目的来决定.机理分析法建模的具体步骤大致可见左图.
3.仿真和其他方法
(1) 计算机仿真(模拟)--实质上是统计估计方法,等效于抽样试验.
① 离散系统仿真--有一组状态变量.
② 连续系统仿真--有解析表达式或系统结构图.
(2) 因子试验法--在系统上作局部试验,再根据试验结果进行不断分析修改,求得所需的模型结构.
(3) 人工现实法--基于对系统过去行为的了解和对未来希望达到的目标,并考虑到系统有关因素的可能变化,人为地组成一个系统.(参见:齐欢《数学模型方法》,华中理工大学出版社,1996)
四、数学模型的分类
数学模型可以按照不同的方式分类,下面介绍常用的几种.
1.按照模型的应用领域(或所属学科)分:如人口模型,交通模型,环境模型,生态模型,城镇规划模型,水资源模型,再生资源利用模型,污染模型等.范畴更大一些则形成许多边缘学科如生物数学,医学数学,地质数学,数量经济学,数学社会学等.
2.按照建立模型的数学方法(或所属数学分支)分:如初等数学模型,几何模型,微分方程模型,图论模型,马氏链模型,规划论模型等.
按第一种方法分类的数学模型教科书中,着重于某一专门领域中用不同方法建立模型,而按第二种方法分类的书里,是用属于不同领域的现成的数学模型来解释某种数学技巧的应用.在本书中我们重点放在如何应用读者已具备的基本数学知识在各个不同领域中建模.
3.按照模型的表现特性又有几种分法:
确定性模型和随机性模型 取决于是否考虑随机因素的影响.近年来随着数学的发展,又有所谓突变性模型和模糊性模型.
静态模型和动态模型 取决于是否考虑时间因素引起的变化.
线性模型和非线性模型 取决于模型的基本关系,如微分方程是否是线性的.
离散模型和连续模型 指模型中的变量(主要是时间变量)取为离散还是连续的.
虽然从本质上讲大多数实际问题是随机性的,动态的,非线性的,但是由于确定性,静态,线性模型容易处理,并且往往可以作为初步的近似来解决问题,所以建模时常先考虑确定性,静态,线性模型.连续模型便于利用微积分方法求解,作理论分析,而离散模型便于在计算机上作数值计算,所以用哪种模型要看具体问题而定.在具体的建模过程中将连续模型离散化,或将离散变量视作连续,也是常采用的方法.
4.按照建模目的分:有描述模型,分析模型,预报模型,优化模型,决策模型,控制模型等.
5.按照对模型结构的了解程度分:有所谓白箱模型,灰箱模型,黑箱模型.这是把研究对象比喻成一只箱子里的机关,要通过建模来揭示它的奥妙.白箱主要包括用力学,热学,电学等一些机理相当清楚的学科描述的现象以及相应的工程技术问题,这方面的模型大多已经基本确定,还需深入研究的主要是优化设计和控制等问题了.灰箱主要指生态,气象,经济,交通等领域中机理尚不十分清楚的现象,在建立和改善模型方面都还不同程度地有许多工作要做.至于黑箱则主要指生命科学和社会科学等领域中一些机理(数量关系方面)很不清楚的现象.有些工程技术问题虽然主要基于物理,化学原理,但由于因素众多,关系复杂和观测困难等原因也常作为灰箱或黑箱模型处理.当然,白,灰,黑之间并没有明显的界限,而且随着科学技术的发展,箱子的"颜色"必然是逐渐由暗变亮的.
五、数学建模的一般步骤
建模的步骤一般分为下列几步:
1.模型准备.首先要了解问题的实际背景,明确题目的要求,搜集各种必要的信息.
2.模型假设.在明确建模目的,掌握必要资料的基础上,通过对资料的分析计算,找出起主要作用的因素,经必要的精炼,简化,提出若干符合客观实际的假设,使问题的主要特征凸现出来,忽略问题的次要方面.一般地说,一个实际问题不经过简化假设就很难翻译成数学问题,即使可能,也很难求解.不同的简化假设会得到不同的模型.假设作得不合理或过份简单,会导致模型失败或部分失败,于是应该修改和补充假设;假设作得过分详细,试图把复杂对象的各方面因素都考虑进去,可能使你很难甚至无法继续下一步的工作.通常,作假设的依据,一是出于对问题内在规律的认识,二是来自对数据或现象的分析,也可以是二者的综合.作假设时既要运用与问题相关的物理,化学,生物,经济等方面的知识,又要充分发挥想象力,洞察力和判断力,善于辨别问题的主次,果断地抓住主要因素,舍弃次要因素,尽量将问题线性化,均匀化.经验在这里也常起重要作用.写出假设时,语言要精确,就象做习题时写出已知条件那样.
3.模型构成.根据所作的假设以及事物之间的联系, 利用适当的数学工具去刻划各变量之间的关系,建立相应的数学结构――即建立数学模型.把问题化为数学问题.要注意尽量采取简单的数学工具,因为简单的数学模型往往更能反映事物的本质,而且也容易使更多的人掌握和使用.
4.模型求解.利用已知的数学方法来求解上一步所得到的数学问题,这时往往还要作出进一步的简化或假设.在难以得出解析解时,也应当借助计算机求出数值解.
5.模型分析.对模型解答进行数学上的分析,有时要根据问题的性质分析变量间的依赖关系或稳定状况,有时是根据所得结果给出数学上的预报,有时则可能要给出数学上的最优决策或控制,不论哪种情况还常常需要进行误差分析,模型对数据的稳定性或灵敏性分析等.
6.模型检验.分析所得结果的实际意义,与实际情况进行比较,看是否符合实际,如果结果不够理想,应该修改,补充假设或重新建模,有些模型需要经过几次反复,不断完善.
7.模型应用.所建立的模型必须在实际中应用才能产生效益,在应用中不断改进和完善.应用的方式自然取决于问题的性质和建模的目的.
参考文献:
(1)齐欢《数学模型方法》,华中理工大学出版社,1996。
(2)《数学的实践与认识》,(季刊),中国数学会编辑出版。