雲計算

雲計算

带你读《计算机网络原理》之三:数据通信技术

点击查看第一章点击查看第二章 第3章 数据通信技术 3.1 概述 通信是为了交换信息(information),而数据(data)是信息的载体。信息涉及数据所表达的内涵,而数据涉及信息的表现形式,它可以是话音、数值、文本、图形和图像等,数据是通信双方交换的具体内容。一个数据通信系统包括信源、发送设备、传输系统、接收设备和信宿5个部分,简单情况下传输系统可以只有一条信道。数据通信系统的基本目标就是将信源的数据可靠地传输到信宿。数据可以有模拟数据(analog data)和数字数据(digital data)之分。模拟数据是随时间连续变化的函数,在一定范围内有连续的无数个值。模拟数据在现实世界中大量存在,比如我们说话的声音就是一个典型的例子。数字数据是离散的,只有有限个值。如数字计算机的电路只有高、低两种电平状态,分别表示二进制数字“1“和“0“,它们采用某种编码方式,编写为计算机系统所使用的二进制代码,用这些代码表示的数据就是数字数据。数据是通过信号(signal)进行传输的,信号是数据传输的载体。数据在发送前要把它转换成某种物理信号,基于信号的某些特征参数可以表示所传输的数据,比如电信号的电平,正弦电信号的幅值、频率和相位,电脉冲的幅值、上升沿和下降沿,光脉冲信号的有和无,等等。实质上,这些信号在媒体中都是通过电磁波(electro-magnetic wave)进行传输的,因此也可以说,信号是数据在媒体中传输的电磁波表现形式。与数据一样,信号也有模拟信号和数字信号之分。模拟信号是表示数据的特征参数连续变化的信号,而数字信号则是离散的信号。例如,把模拟的话音转换为电信号进行传输,使电信号的幅值与声音大小成正比,它是幅值连续变化的模拟信号。如果把二进制代码的“l“和“0“直接用高、低两种电平信号表示,并直接进行传输,那么这种信号的幅值只有离散的两种电平,是一种数字信号。信号是在信道(channel)上传输,信道是信号传输的通道。信道一般指连接信号发送方和接收方的传输线路,包括铜缆、光纤等有线传输媒体和微波、红外等无线传输媒体。“信道“这个词应用得较为广泛,在不同的背景下可能表示不同的、更为广义的内涵。比如一条由4个粗缆网段组成的以太网信道,除了传输媒体外,它还包含3个中继器,这些中继器可以在物理层对信号进行放大、整形和转发,此时的以太网信道就超越了普通传输媒体的概念,包含了物理层的一些协议功能。使用模拟信号传输数据的信道称为模拟信道,使用数字信号传输数据的信道称为数字信道。数字信道具有更优的传输质量,它传输的是由二进制“l“和“0“对应的数字信号,一般编码为高/低电平、脉冲上升/下降沿、有/无光脉冲等两种状态,因而有相当大的容差范围,即使传输过程中出现轻微的信号变形,也不会影响到接收端的判断,正确还原的概率非常高。一般来讲,模拟数据用模拟信号表示,在模拟信道传输;数字数据用数字信号表示,在数字信道传输。传输模拟信号的通信系统称为模拟传输系统(analog transmission system),传输数字信号的通信系统则称为数字传输系统(digtal transmission system)。历史上,电话系统一直在通信领域占据统治地位,它是一个经典的模拟传输系统。早先,模拟的话音转换成模拟电信号后直接在模拟信道上传输。后来,随着数字技术的发展,很多国家把电话主干线改造为数字干线,先将模拟话音转换为数字数据,然后在数字干线上传输,这就是模拟话音的数字传输方式。在计算机网络中,信源和信宿都是计算机设备,它们之间交换的是数字数据。一般而言,计算机网络使用数字信号在数字信道上进行传输,称为基带传输。基带传输不是简单地把数字数据的二进制位直接对应为高低电平加到通信线路上传输,而是先按一定方式编码(coding)后再变成对应的物理信号在线路上传输,到了接收端再进行解码(decoding)。这种编解码不同于文字、语音和图像等应用数据的编解码,被称为线路编解码或信道编解码。计算机网络的数字数据有时也借助于模拟信道传输,称为频带传输。因为这样可以利用已有的非常普遍的模拟电话网,通过它来传输计算机的数字数据,可以节省大量的线路投资。为了在模拟信道上传输数字数据,要先将数字数据调制(modulation)为模拟信号再发送,到了接收端再进行解调(demodulation)。为了提高传输线路的利用率,数据通信中广泛使用多路复用(multiplexing)技术。在模拟信道上使用频分多路复用(Frequency Division Multiplexing,FDM),它将信道划分为多个频段以传输多路信号。在数字信道上使用时分多路复用(Time Division Multiplexing,TDM),即将单位传输时间分割为多个时隙以传输多路信号,它是数据通信的主流技术。对于光信号的传输,还有波分多路复用(Wavelength Division Multiplexing,WDM),该技术能够充分挖掘光纤的巨大带宽潜力。上述的概念和技术属于数据通信(data communication)领域。“数据通信“一词是计算机参与到通信系统之后出现的,它提供了有别于原电话和电报的数据传输业务。数据通信进行的是编码后的数字数据的传输和处理,与“计算机网络通信“是同义语,如美国著名的期刊《Data Communications》,现在其所刊登的文章很大一部分都是计算机网络领域的论文。 3.2 数据通信理论基础 […]

雲計算

带你读《计算机时代的统计推断:算法、演化和数据科学》之一:算法与推断

数据科学与工程技术丛书点击查看第二章点击查看第三章计算机时代的统计推断:算法、演化和数据科学Computer Age Statistical Inference: Algorithms, Evidence, and Data Science [美]布拉德利·埃夫隆(Bradley Efron)特雷福·黑斯蒂(Trevor Hastie) 著杭汉源 译机械工业出版社China Machine Press 第1章 算法与推断统计学是一门从经验中学习的科学,特别是随着时间逐渐积累的经验,例如一种新型实验药物的成功与失败,对一颗小行星通往地球路径的不确定性的度量。令人惊讶的是,任何一种理论都涵盖“从经验中学习”这样一个不确定的目标。事实上,存在两个主要的统计理论,分别是贝叶斯理论和频率学理论,对于它们之间的联系和区别的讨论,使得后面的许多章节变得更加有趣。首先我们要讨论一个适用于这两种理论的不那么哲学性的、操作性更强的划分,也就是统计分析的算法和推断。这一差别起源于最基本且最流行的统计方法,即平均。假设我们已经观察到数字x1,x2,…,xn适用于某些我们感兴趣的现象,比如n=50个州的车祸率。均值为: 这一数值就给出了这个结果。这个数值有多精确呢?教科书式的答案是由标准误差给出的, 这里求平均值(1.1)就是一个算法,而标准误差则提供了对此算法精度的推断。在统计理论中,令人惊讶和至关重要的一点是,提供估计的同一数据还可以用于评估其准确性。当然,se(1.2)本身就是一种算法,能够(并且确实可以)对其准确性进行更进一步的推断分析。重点在于,算法是第一位的,推断是在统计考虑中的第二级。在实践中,这意味着算法发明是一个更自由和冒险的事业,同时,推断通过努力评估一些热门的新算法的准确性,对算法进行着改进。如果推断和算法的竞赛是龟兔赛跑,那么现代计算已经孕育出了仿生兔。这里有两个现象:基于计算机的技术使得科学家能够收集大量的数据集,其数量级比传统统计理论能进行处理的数据的量级大得多;庞大的数据需要新的方法论,该需求正通过大量基于计算机的新的统计算法得到满足。人们在新闻中读到的“大数据”,往往是这些算法扮演着主角。本书强调了统计推断在故事中作为乌龟的一方。过去的几十年一直是统计学方法论的黄金时代,但它还不是统计推断的一个黄金时代,也不是一个黑暗的时代。蓬勃发展的新算法推动了统计推断的进化(尽管这不是革命),统计学家从各种涌现出来的新算法之中做出相应理论的进化。这本书追溯了自20世纪50年代以来,方法论和推断之间的相互作用,这是统计学科计算机时代的开始。在结束本章之前,我们将通过两个简单的例子来描述从传统统计时代到计算机时代的过渡。 1.1 一个回归的例子 图1.1涉及肾功能的研究。数据点(xi,yi)观测自n=157名健康的志愿者,其中xi是第i个志愿者的年龄,单位是年,yi是对整体功能的综合测量“tot”。肾功能通常随着年龄的增长而下降,这从样本点的向下散布趋势中可以明显看出。肾功能下降的速度是肾移植的一个重要问题,在过去,60岁以上的潜在捐助者被禁止捐献,但由于捐赠者人数不足,这一规定已不再执行。

雲計算

带你读《计算机时代的统计推断:算法、演化和数据科学》之二:频率学派推断

点击查看第一章点击查看第三章 第2章 频率学派推断计算机时代之前是计算器时代,而在“大数据”时代之前,还有一些数据量通常为数百个或更少的小数据集,这些小数据集由科学家们在充满限制的实验约束下辛苦收集而来。珍贵的数据需要最高效的统计分析。一个可以在机械式桌面计算器上运行的非常有效的理论,由Pearson、Fisher、Neyman、Hotelling等人于1900年开始发展,并逐渐主导了20世纪的统计实践。这个现在被称为经典的理论几乎完全依赖于频率学派推断思想。本章简要介绍了频率学派推断,特别介绍如何将其运用在经典应用统计中。我们从Myers博士的肾病实验室的另一个例子开始:实验室对211名肾脏患者测定了肾小球滤过率,结果见图2.1;gfr是肾功能的重要指标,低值意味着肾出了问题。(这是图1.1中tot的关键组件。)均值(见公式1.1)和标准误差(见公式1.2)分别为和,通常表示成 54.25±0.95(2.1) 其中±0.95表示对估计的准确性的频率学派推断,并且表明我们不应该太看重“0.25”,即使“4”这个数字也是值得怀疑的。推断来自哪里,究竟意味着什么,还有待说明。统计推断通常始于一种假设,即概率模型已经生成观测数据x,而在我们的情况下,x是数据量为n=211的gfr测量向量x=(x1,x2,…,xn)。令X=(X1,X2,…,Xn)表示从概率分布F中抽取的相互独立的随机向量,记作 F→X(2.2) F在这里为可能的gfr分数的潜在分布。一个(2.2)的X=x的实现值被观测到,而统计学家希望推断未知分布F的特征。假设我们想得到的分布特征是从分布F中抽取一个随机变量X的期望,记作 (也等于关于随机向量(2.2)的平均值的期望)。对θ明显的估计是样本平均值。如果n很大,例如10^10,那么我们期待和θ几乎相等,但除此之外,还存在一定误差。误差为多大是推断统计所研究的问题。估计是根据某种已知的算法从x计算而得,例如 在我们的例子中t(x)是求平均函数;是 的实现值,t(·)的输出应用于来自F(2.2)的理论样本X。我们选择了t(X),希望让成为θ(想要的分布F的特征)的一个好的估计量。我们现在可以给出频率学派推断的第一个定义:一个观测的估计的准确性是作为θ的一个估计量的的概率准确性。这可能只是定义的同义复述,但它包含了一个强大的思想:只是一个单一的数字,但是包括一系列的取值,能够刻画估计的准确性。偏差和方差都是频率学派推断中熟悉的例子。定义μ为在模型(2.2)下的期望, 那么参数θ的估计的偏差和方差分别为 再者,模型(2.2)中的概率性质对单个数字的影响导致上式中的偏差、方差与之前重申的不同。如果有关这方面的担忧都是杞人忧天的话,那么在第3章中贝叶斯学派对此的批评将会让你感到惊讶。频率学派通常与“无限的未来试验序列”有关。我们设想假想的数据集X(1),X(2),X(3),…是在给定(2.5)中相应的值…下运用与x一样的机制生成的。频率学派准则解释了对于值的集合的精确性质。如果各个有经验方差,例如,0.04,那么我们可以说的标准误差是0.2=0.04。这相当于对以前的定义给出一个更生动的重述。 2.1 实践中的频率学派 我们对于频率学派的实践定义是,导出一个感兴趣的过程的概率性质,然后逐一地应用于观测数据的过程输出。这个定义有一个明显的缺陷:它需要计算从真实分布F中获得的估计量的概率性质,即使F未知。实用的频率学派使用一些或多或少的巧妙手法来规避这个缺陷。1.插入原则。一个有关的标准误差和varF(X),即来自真实分布F的随机变量X的方差的简单关系式如下:   但是观测到x=(x1,x2,…,xn)后,我们能够用下式给出varF(X)的无偏估计。 把式(2.9)代入式(2.8)中,得到平均值x的标准误差的常用估计。换句话说,频率学派对x的准确性估计是来自于观测数据的估计。2.泰勒级数近似。统计量如果比更复杂的话,通常可以与通过局部线性近似(有时被称作“Delta方法”)得到的插入公式建立联系。例如,。考虑到是一个常量,得到 其中的定义见(1.2)。大样本的计算,正如样本量n趋于无穷时,验证了Delta方法的有效性。幸运的是,Delta方法在小样本计算中通常表现得很好。3.参数族和最大似然理论。最大似然估计(MLE)标准误差的理论表达式将在第4章和第5章分布的参数族相关内容中讨论。该理论将Fisher理论、泰勒级数近似和插入原则结合在一个易于应用的软件包中。4.模拟和自助法。现代计算开辟了数值实现“无限的未来试验序列”定义的可能性,除了无限的部分。我们找到F的估计,有可能是MLE,然后值是从中模拟得到的,其中k=1,2,…,B,不妨令B=1000。的经验标准差是的标准误差的频率学派估计,其他准确性的度量也类似。以上是对第10章自助法的一个很好的描述。(注意到在这里关于真实分布F的插入统计量F是在全过程的开始而不是在全过程的结束。)上面的经典方法1~3仅限于估计各种样本均值的平滑函数。模拟计算消除了这个限制。表2.1展示了gfr数据的三个“位置”估计值,均值、25%的缩尾均值、中位数,以及它们的标准误差,后两项是由自助法计算得出的。计算机时代统计推断的一个令人满意的特征是统计学家的工作工具箱中有用和可用的统计量t(x)的巨大扩展,图1.2和图1.3中的lowess算法对此提供了一个很好的例子。 5.枢轴统计量。枢轴统计量是一个其分布不取决于潜在概率分布F的统计量。在这里,理论分布就可以直接运用在上,上述第一种到第四种方法就不需要了。有关枢轴统计量的经典例子有学生两样本t-检验。在两样本问题中,统计学家观测到两组数据: 而我们想检验一下“这两组数据来自同一个分布”的原假设(与原假设相反的是,第二组数据更倾向于来自均值比第一组数据的分布更大的分布)。假设x1的分布F1是正态分布,或者高斯分布, 上述标记表明n1个点来自同一个期望为μ1、方差为σ2的正态分布且相互独立。同样,

雲計算

带你读《计算机时代的统计推断:算法、演化和数据科学》之三:贝叶斯推断

点击查看第一章点击查看第二章 第3章 贝叶斯推断人的思想是一个推断机器:“风大,天色渐暗,我最好带上雨伞。”遗憾的是,这不是一个非常可靠的机器,特别是在对以往经验进行复杂的选择时。贝叶斯定理是一个非常简单的精确推断的数学指南。这个已经被提出了250年的定理(或“规则”)标志着统计推断作为一个严谨的科学命题的开始。它已历经兴衰数百年,现在正因计算机应用时代的到来而再次兴起。贝叶斯推断即使不是直接与频率论对立,至少也是与其无关的。它揭示了频率主义观点中的一些令人担忧的缺陷,同时也将自身暴露于危险的过度使用的批评之下。在大数据时代,如何努力结合两种思想的优点已经变得更加急迫。在接下来的章节中,大部分内容都将涉及这个问题。在这里,我们将回顾一些基本的贝叶斯思想及其对频率学派的影响。频率学派和贝叶斯学派的统计推断的基本单位是一个概率密度族 x作为观测数据,是样本空间X的一个点,而未被观测到的参数μ是在参数空间Ω的一个点。统计学家从fμ(x)中观测到x,然后推断μ的值。也许最熟悉的例子是正态族 (更准确地说是方差为1的一维正态平移族),其中X和Ω都是R′,整条实轴(-∞,∞)。另外一个重要例子是泊松族 其中X是非负整数{0,1,2,…},Ω是非负实轴(0,∞)。(在这里“密度”(3.3)具体指的是X的离散点的概率)。除了对概率族F的假定之外,贝叶斯推断还有一个重要假定,那就是具备先验密度 的知识,其中g(μ)代表有关参数μ的先验信息,也就是在得到观测x之前统计学家已经获得的信息。例如,当我们把贝叶斯推断运用在正态模型(3.2)时,我们可以知道μ是正数,而过去的经验告诉我们μ不会超过10,此时我们可以令先验密度g(μ)为区间[0,10]上的均匀密度g(μ)=1/10。更准确地说,什么构成“先验知识”是我们在正在进行的贝叶斯定理讨论中要考虑的关键问题。贝叶斯定理是将有关先验知识g(μ)和目前的数据x结合起来的定理。假定g(μ|x)为μ的后验密度,即我们在考虑观测数据x后对先验密度g(μ)进行的更新。贝叶斯准则提供了一个利用g(μ)和F表达g(μ|x)的简单表达式。贝叶斯准则: 其中f(x)是x的边缘密度, (如果Ω是离散的,那么式(3.6)中的积分符号表示的是求和。)这个准则是条件概率的一个直接例子,但却有着深远而有时令人惊讶的结果。在贝叶斯公式(3.5)中,观测值x是固定的,而μ却在Ω上变动,这正好与频率学派的计算相反。我们可以通过改写(3.5)为 来强调这一点,其中Lx(μ)是似然函数,即x固定而μ变动的函数fμ(x)。计算完Lx(μ)g(μ)之后,常数cx可以通过g(μx)的积分为1的要求计算而得,从而避免计算(3.6)中的f(x)。注意:将似然函数乘以任意一个固定常数c0对(3.7)没有任何影响,因为c0将会归入cx这一项中。因此对于泊松族(3.3)我们可以令似然函数Lx(μ)=e-μμx,而忽略x!这个在贝叶斯准则中视为常数的项。忽略这些仅依赖于x的项往往能够简化贝叶斯计算。对于在Ω中的任意两点μ1,μ2,后验密度之比为(3.5)式的商 (和边缘密度f(x)不再相关),即“后验比值比等于先验比值比乘以似然比”,这是对贝叶斯准则的一个令人难忘的复述。 3.1 两个例子 物理学家双胞胎的故事提供了一个简单而真实的贝叶斯准则实践的例子:一位物理学家通过超声波发现她怀有双胞胎男孩。她问:“我的双胞胎会有多少概率是同卵双胞胎,而不是异卵双胞胎?”医生回答说,三分之一的双胞胎分娩是同卵双胞胎,还有三分之二的分娩是异卵双胞胎。在这个情境下,未知参数(或者“自然状态”)μ要么是先验概率为1/3的同卵双胞胎,要么是先验概率为2/3的异卵双胞胎;而双胞胎的可能的超声波结果X要么是相同性别,要么是不同性别,而x=相同性别被观测到了。(我们在此忽略性别,因为性别并不影响计算。)一个关键事实是,同卵双胞胎经常是相同性别的,而异卵双胞胎有0.5的概率是相同性别的,有0.5的概率是不同性别的,因此如果双胞胎是同卵双胞胎,那么超声波中发现相同性别的可能性是发现不同性别的2倍。运用(3.8)式中比值形式的贝叶斯准则能够回答物理学家的问题: 也就是说,后验比值比是1,物理学家的双胞胎有相同的0.5的概率是同卵双胞胎或者是异卵双胞胎。在这里医生2:1这个更倾向于异卵双胞胎的先验比值比被超声波2∶1这个更倾向于同卵双胞胎的似然比平衡了。在双胞胎问题中,参数μ和结果x的组合只有四种可能,在图3.1中分别被标记为a,b,c和d。因为同卵双胞胎不可能出现不同性别,所以单元格b出现的概率为0。由于异卵双胞胎的性别具有随机性,故单元格c和d发生的概率相等。最后,根据医生的先验分布,a+b必须等于1/3,c+d必须等于2/3。把所有信息放在一起,我们将得到图中四个单元格的概率。物理学家知道她处在表格的第一列的情形,因而根据(3.9)的贝叶斯准则,同卵和异卵的条件概率相等。 也许医生的先验分布来源于一些大州的或者国家级的数据库,例如300万对之前出生的双胞胎中,有100万对同卵双胞胎和200万对异卵双胞胎。我们推断单元格a,c和d必须在数据库中有100万个条目,而单元格b是空的。贝叶斯准则可以被认为是一本大书,每一个可能的结果x都有一页。(这本书在图3.1中只有两页。)物理学家翻到了“双胞胎性别相同”这一页,并且看到200万个先前出生的双胞胎中,有一半的同卵双胞胎和一半的异卵双胞胎,正确地得到了针对其自身情况,双胞胎是同卵或者是异卵的概率是相等的结论。给定任意先验分布g(μ)和密度族fμ(x),贝叶斯准则将始终提供一本大书。这并不意味着这本书的内容总是具有同样的说服力。之前的双胞胎问题的先验是基于大量相关的先前经验。这种经验往往得不到。现代贝叶斯实践在没有先验的情况下使用各种策略来构造适当的“先验”g(μ),使得许多统计学家对贝叶斯推断的结果提出质疑。我们的第二个例子正好说明了这个问题。表3.1给出了22名学生在力学和向量两门课程测验中的得分。两组得分的样本相关系数是=0.498, 其中m和v分别是力学和向量的简称,m和v分别是力学和向量分数的平均值。我们希望对后验精度给出一个贝叶斯测度用以得到真实的相关系数θ,“真实”指的是假设的所有学生总体的相关系数,而在此我们观测到的只是其中22个样本的相关系数。 如果我们假设(m,v)的联合分布是二元正态分布(会在第5章中讨论),那么关于θ的密度函数有一个确定形式, 就我们的贝叶斯一般表示法而言,参数μ是θ,观测x是,分布族F由公式(3.11)确定,Ω和X都等于区间[-1,1]。计算公式(3.11)对于人来说很难,但是对于计算机来说却很容易,这使得快速求解成为可能。在这种情况下,我们并不具有能够提供一个先验g(θ)的相关经验。Laplace提出的一个权宜之计就是“不充分理由原则”,即令θ均匀分布在Ω上, 称作“平坦先验”。图3.2中的实曲线表示相应的后验密度(3.5),也就是在图中所示的关于θ的似然函数fθ(0.498)(并且已经被标准化处理,使得积分为1)。 Jeffreys先验

雲計算

基于阿里云产品的服务器演进-单机

一、云上搭建网站(应用)步骤概览 注册域名 买服务器(本文介绍) 域名备案 搭建应用(略) 添加解析 验证测试(略) 二、网站类服务器横评 产品 访问量 配置 扩展性 价格(每年) 弹性web托管 uv:1k pv:3k 内存:128 空间:2G 流量:20G(超量免费-临时) 数据库:1G

雲計算

基于阿里云产品的服务器演进-集群

一、前端压力大 述求:用户访问量的增加导致服务器的连接数不足,CPU、内存经常飙升,网页响应慢推荐: 应用和数据库分离:将数据库由原来的在同一个服务器上,分离到独立的数据库服务器,减轻应用服务器的压力 应用扩展:通过增加前端服务器的数量,结合负载均衡的分发能力,将前端的服务能力进一步提升。后续可通过增加服务器的数量提升服务能力。 冗余:前端的服务器的跨可用区部署,可以有效的避免服务器的单点故障,当A可用区的服务器发生故障时,可自动将流量转移到可用区B的服务器上,零人工干预。 二、数据库压力增大 述求:查询请求增加,数据库响应速度慢,数据库整体访问压力大。推荐: 热点缓存:热点数据缓存在Redis,提升响应速度,降低数据库压力 增加只读:通过增加数据库的只读实例,实现读写分离,使数据读取的速度进一步提升,进一步降低数据库压力 三、视频图片加载慢 述求:网站访问高峰期,图片视频等媒体文件加载速度慢,用户体验下降推荐: 存储分离:将图片视频等媒体文件存放到OSS,降低服务器访问的带宽压力,OSS可以满足海量高并发的访问请求。 CDN加速:存放在OSS的媒体文件,接入CDN后,可实现文件的缓存到CDN的二级节点,通过遍布全球的CDN节点的缓存,实现资源的就近访问,大大提升了响应速度

雲計算

带你读《Python 程序设计与问题求解(原书第2版)》之一:引言

计算机科学丛书点击查看第二章点击查看第三章Python 程序设计与问题求解(原书第2版)Fundamentals of Python:First Programs,Second Edition [美] 肯尼斯· A. 兰伯特(Kenneth A. Lambert ) 著刘鸣涛 孙 黎 甘 靖 译 第1章 引言完成本章的学习之后,你将能够做到以下几点:● 描述算法的基本特征。● 解释在计算机体系结构中硬件和软件是如何协作的。● 总结计算机的发展简史。●编写并运行一个简单的Python 程序。 作为本书的读者,你一定至少玩过一款电子游戏,并且听过数字音乐。很有可能的是,用微波炉里准备了零食后,你已经看完一部数字电影了。一天之中,你会拨打电话、发送或接收短信、拍照或在手机上浏览并查询你最喜爱的社交网络。你和你的朋友会使用台式电脑或笔记本电脑完成一些高中或大学里比较重要的课程。以上提及的这些活动都依赖于一个共同点:计算机技术。计算机技术几乎无处不在,不仅在家中,在学校和我们工作、休闲的地方也存在。计算机技术在娱乐、教育、医疗、制造、通信、政府和商业等诸多领域中均扮演着重要的角色。有人说,我们拥有数字生活方式,我们生活在一个以信息为基础的经济信息时代。而有的人甚至声称,自然本身就是对DNA 中存在的信息结构和亚原子粒子之间的关系进行计算的。尽管我们没有具体设想实际的计算机是什么样子,但不难想象如果世界没有了计算机将是什么样子。同样不可思议的是,人类几千年来都没有使用计算机技术,而仅仅在最近的三十几年,计算机技术已经遍及我们所了解的整个世界。在下面的章节中,你将学习计算机科学,这是对令这项新技术和这个新世界成为可能的计算方法的研究。你还将学习如何有效和适当地利用计算机来改善自己和他人的生活。

雲計算

带你读《Python 程序设计与问题求解(原书第2版)》之二:软件开发、数据类型和表达式

点击查看第一章点击查看第三章 第2章 软件开发、数据类型和表达式完成本章的学习之后,你将能够做到以下几点:● 描述软件开发的基本阶段:分析、设计、编码和测试。● 使用字符串作为终端输入和输出文本。● 在算术运算中使用整数和浮点数。● 构造算术表达式。● 初始化并使用具有适当名称的变量。● 从库模块导入函数。● 使用参数调用函数并适当地使用返回值。●构造一个执行输入、计算和输出的简单Python 程序。●使用文档字符串记录Python 程序。本章首先讨论软件开发过程,然后是一个案例研究,通过这个案例我们将介绍程序的分析、设计、编码和测试等步骤。还将研究构成程序的基本元素,主要包括文本和数字的数据类型以及操纵它们的表达式。本章最后介绍简单程序中函数和模块的使用。 2.1 软件开发过程 编程比编写代码行要复杂得多,就像建造房屋比敲钉子要复杂得多一样。“复杂得多”包括组织和规划,以及编制这些计划的各种惯例。计算机科学家将计划和组织程序的过程称为软件开发。软件开发有几种方法,其中之一被称为瀑布模型。瀑布模型由几个阶段组成:1. 客户请求:在这一阶段,程序员会收到一份关于问题的广泛陈述,该问题有可能适用于计算机化的解决方案。这个步骤也称为用户需求阶段。2. 分析:程序员决定程序将做什么。这有时被视为澄清问题规格的过程。3. 设计:程序员决定程序如何完成任务。4. 实现:程序员编写程序。这个步骤也称为编码阶段。5. 集成:大型程序有许多部分。在集成阶段,这些部分被整合成一个平稳运行的整体,这通常不是一件容易的事情。6. 维护:程序通常具有较长的寿命,软件的寿命约为5至15年。在此期间,需求会发生变化,会检测到错误,并会进行或小或大的修改。瀑布模型的各个阶段如图2-1

雲計算

带你读《Python 程序设计与问题求解(原书第2版)》之三:循环和选择语句

点击查看第一章点击查看第二章 第3章 循环和选择语句完成本章的学习之后,你将能够做到以下几点:● 写一个循环来重复一系列固定的动作。● 写一个循环遍历字符串中的字符序列。● 写一个向下计数的循环和一个向上计数的循环。● 写一个入口控制的循环,当一个条件为假时,该循环停止。● 使用选择语句在程序中进行选择。● 构造适当的条件,为条件控制的循环选择语句。● 使用逻辑运算符构造复合布尔表达式。● 使用选择语句和break语句退出不受入口控制的循环。 到目前为止,本书中研究的所有程序都是由一条接一条执行的指令短序列组成的。即使我们允许指令序列相当长,这种程序也不会很有用。像人类一样,计算机必须能够重复执行一系列动作,并且必须能够选择在特定情况下要执行的操作。本章集中讨论控制语句——允许计算机选择或重复一个动作的语句。 3.1 确定迭代:for循环 我们从重复语句开始研究控制语句,重复语句也称为循环,它可以重复一个动作。动作的每一次重复都被称为传递或迭代。有两种类型的循环:重复一个动作预定次数的循环(确定迭代);执行该动作直到程序确定它需要停止的循环(不定迭代)。在本节中,我们将研究Python的for循环,这是最容易实现确定迭代的控制语句。 3.1.1 执行语句给定次数 在《科学怪人》中,当弗兰肯斯坦博士的怪物苏醒过来时,他不停地喊道:“它还活着!它还活着!”一台计算机可以轻松地打印这些感叹词,不仅仅是两次,而是十几次或一百次,你不需要写两次、十几次或一百次输出语句就可以做到这一点。下面是一个for循环,它运行相同的输出语句四次: 这个循环反复调用一个函数——print函数。第一行的常数4告诉循环调用这个函数的次数。如果我们想打印10或100个感叹句,只需将4改为10或100。这种for循环的语法格式是 循环中的第一行代码有时称为循环头。目前,循环头中唯一相关的信息是整数表达式,它表示循环执行的迭代次数。冒号(:)结束循环头。循环体包括循环头下面剩余代码行中的语句。这些语句在循环的每一遍中按顺序执行。注意,循环体中的语句必须缩进并对齐在同一列中。IDLE的shell或script窗口将自动缩进循环头下的行,但是如果缩进中出现了一个空格,你可能会看到语法错误。如果移动到下一行代码时没有自动缩进,最好缩进四个空格。现在让我们探索Python的幂运算符如何在循环中实现。回想一下,这个运算符计算一个数字的给定的幂。例如,表达式2**3计算值,或2*2*2。下面的代码使用循环来计算非负指数的幂运算。我们使用三个变量来指定数字、指数和乘积。乘积最初是1。每次通过循环时,乘积乘以该数,并重置为结果。为了追踪这个过程,乘积的值在每一次循环中都输出一次。 正如你所看到的,如果指数为0,循环体将不会执行,并且product的值将保持为1,这是任何数字的零次幂的值。例子中变量的使用证明了我们的指数循环是一种解决一般问题的算法。这个特定循环的用户不仅可以将2次幂提升到3次幂,还可以计算任何数字的任何非负幂,只需用不同的值替换变量number和exponent。

雲計算

面向任务型对话的异构记忆网络 | EMNLP 2019 论文解读

摘要:人类通过语言将大脑里的知识表达出来,通过对话相互传递知识。机器通过学习大量的语料可以一定程度学会流畅的语句表达,但如果没有知识,则生成的只会是漂亮而无内涵的回复。传统的模块化的对话模型可以通过数据库查询等方式将关键信息填入回答的模版中,但是端到端的对话生成模型则要更复杂一些。为了解决这个问题,记忆网络(Memory Networks)通常是一个不错的技术方法。但是现有的记忆网络结合对话系统只是提供了如何引入知识的一个方法,并不能很好的处理多种来源和结构的知识。因此在这篇文章中,我们提出了一个异构记忆网络(Heterogeneous Memory Networks, HMNs)来同步处理用户语句,对话历史以及背景知识库。HMNs由上下文无关(context-free memory)记忆网络和我们提出的上下文敏感(context-aware memory)记忆网络组成,分别用于编码、储存结构化的知识元组(knolwdge tuples)和序列化的用户语句、历史对话,并生成两个小词表分布(知识词表和历史对话词表)以及一个大词表(所有训练的词汇分布)供回复语句生成的选词。在三个数据集上的实验结果表明,HMNs超过了现有的SOTA模型,能够较显著的提高端到端任务型对话模型的表现。 问题背景 人类客服在回答客户问题时首先理解用户的语言,然后到相关数据库、知识库中查询所需要的知识,最终整理并回答问题。在这个过程中如果缺乏相对应的知识数据,即使是人类也几乎不可能准确回答用户所需要的问题,因为客户可能需要的关键点就是那条数据库中的知识,而再漂亮的回复偏离了重点也是不合格的。机器也是如此。生成模型如果仅通过历史对话语料学习,最终学习到的可能只是最安全、最通用的回复,但在实际对话中缺乏关键知识,也将导致无法解决具体事务。因此在对话模型中恰当的引入知识显得至关重要。 如图所示一个典型的任务型对话,用户问题What is the address for keen需要根据上文的hotel_keen以及Knowledge Base中检索到的2_miles、578_arbol_dr等作为关键信息来生成系统回复的语句。在这种情况下,传统的pipeline类型的对话系统通常采用填槽(slot filling)以及检索的方式来查找所需的关键信息,这种方式需要大量的人工标注。深度学习的发展促使我们更进一步探索:许多[7, 8]工作证明了完全数据驱动的任务型对话也是可行具有一定前景的。现有的完全数据驱动(fully data-driven)的任务型对话模型通常基于Sequence

Scroll to Top