精华内容
下载资源
问答
  • 下一步工作应该怎样开展

    千次阅读 2005-10-19 18:04:00
    现在人员状况,结构不合理。我意识到了这种不平衡,可督促并没有起到多大的作用。我不知道他们想干什么,告诉他们方法有执行不了。这是一个企业致命的硬伤,要做好软件的销售推广,要对行业和软件技术有一定的... 

              现在人员状况,结构不合理。我意识到了这种不平衡,可督促并没有起到多大的作用。我不知道他们想干什么,告诉他们方法有执行不了。这是一个企业致命的硬伤,要做好软件的销售推广,要对行业和软件技术有一定的了解,他们以前都没有接触过。不知道从那里下手,我感觉有很多东西要告诉他们的。可又不知道从那里说起。这些都缺乏监督和自我监督造成的后果,没有明确划分各自的权利和义务。

              下一步的工作,明确工作的重点和目标。责任,权利细化到个人身上。每个人都通过学习实践,尽快的适应业务的需求。

              重点放在医药管理软件,会员管理软件,桑拿洗浴管理系统的推广上来。目标:在半年内基本工资要涨到800,月工资收入要不低于1500。理念:一切从客户需求角度出发,提供完善的售前咨询,项目实施,售后服务。战略目标:做管理咨询式的软件公司

    展开全文
  • 四年测试工程师经历,下一步转开发还是继续测试? 测试四年,没有积累编程脚本能力和自动化经验,找工作时都要求语言能力,自动化框架。 感觉开发同事积累的经历容易找工作下一步,想办法转开发岗还是继续测试...

    四年测试工程师经历,下一步转开发还是继续测试?

    测试四年,没有积累编程脚本能力和自动化经验,找工作时都要求语言能力,自动化框架。

    感觉开发同事积累的经历容易找工作。

    下一步,想办法转开发岗还是继续测试???

     

     

    [我的回答]2018年8月18日


    题主的问题,总共有3句话组成,我的回答基本上按照你的描述开展,只是顺序换一下。假如是面对面的方式,那么通过不断的问答模式,可以更快地找到根本原因,并提供更合理的分析与建议。本文只能根据我的一些经验和猜测而展开。

     

    描述3:“下一步,想办法转开发岗位还是继续测试?”

    针对这个问题,想问题主一个问题:你为什么想要转到开发岗位?粗略地想,题主应该主要有两个原因:真心喜欢开发而不喜欢测试工作、因为开发工作收入更高。

     

    1)原因1:题主真心喜欢开发而不喜欢测试工作

    这里的喜欢指的是来自于动机培养中的一流动机:因为自己喜欢并且开发工作能够带来内心的乐趣和成就感。假如是因为感觉开发工作收入更高,那是伪喜欢,把它放在原因2中。因此本小节后续的内容围绕题主的一流动机 - 喜欢开发工作。

     

    假如是这个原因,回答题主的问题就明确了:必须是想办法转到开发岗位。接下来要考虑的更重要问题是:如何提升你的能力满足开发岗位的要求,才是题主需要考虑的,即纠结应该转到开发岗位还是测试工作没有意义,关注点在于题主的能力提升以满足开发岗位的要求!

     

    以前在我的博客中写过一篇文章“规划测试人员的测试职业发展路径”,其中的实施步骤同样适用于开发岗位,简单讲可以通过O2EP步骤达到目标(详细内容可以参考博客中对应的文章):

    1. 明确目标O:例如2年内题主计划转到开发岗位;

    2. 理清障碍O:当前存在的主要障碍是什么?例如:开发语言不懂、数据库不懂等;

    3. 选择榜样E:开发团队中,有谁做得很好?你与他之间的差距主要表现在哪里?这些差距就是你在2年时间内需要弥补的;

    4. 行动计划P:针对障碍和差距,制订计划进行弥补和完善;

     

    O2EP步骤中第四步“行动计划P”对于每个人而言都是最难的:难的不在于三分钟热度的开始,而在于长时间的坚持!

     

    2)原因2:感觉开发工作收入更高

    这就有点类似于目前行业内争议很大的“软件测试没有前途”、“软件测试没有技术含量”的议题。我们需要问的一个问题是“为什么开发工作收入会更高?”,通过连续问几个“为什么”(5WHY法找到根本原因),你会发现开发工作收入更高的背后原因,很多时候不在开发工作本身,而更多的在于人与人之间的能力差距上。至少,相比于20年的开发和测试工作的收入差距,当前在同一个级别职位的开发和测试岗位,收入待遇差距并没有这么大。

     

    所以,对于测试工作经验4年的你,假如你的工资收入相比类似级别的开发人员,甚至优秀测试人员相差不少,就要从自身能力上面找原因了。在我的文章“规划测试人员的测试职业发展路径”中与提到了一个观点:开出租车同样可以有前途。尽管每个行业、每个岗位理论上都有个天花板(包括收入和职位),但对于个人而言,要问自己的是自己是否属于当前级别中前20%的位置,即金字塔的顶端位置。假如还不是,那么考虑转开发就意义不大,因为您还有空间继续增加你的收入,关键又在于你的能力是否能够不断提升!

     

    描述2:“感觉开发同事积累的经历容易找工作”

    根据问题中的描述,这句话的重点不是“开发的同事”,而是他“积累的经历或经验”,让他更容易找到工作。问题又回到了前面提到的,找工作的难以程度,开发还是测试角色不是决定性的因素,而是你在这4年的工作中经验积累,包括:

    1. 领域知识:做好测试工作的基础是你需要深入了解软件产品的行业背景知识,即领域知识。例如我以前是做通讯产品的,那么了解TCP/IP等知识是必须的。而你的测试对象又不是孤立的一个产品,它一定需要和周围很多不同软件产品共同集成为一个更大的系统,因此外围产品的知识你是否也需要去了解?

    2. 测试过程:测试不再仅仅关注在测试执行上,我们将测试贯穿于整个软件开发生命周期。因此,你需要知道在整个生命周期内需要做哪些事情,和开发团队等的关系是什么?举个例子:与定义需求的团队的关系是什么?输入输出之间的依赖关系?与项目管理团队的关系?输入输出之间的依赖关系等;就算是测试执行工作,它也不是孤立的,它是整个软件开发生命周期内的组成部分,它必定和周围的所有相关开发活动相关;

    3. 测试技术:测试过程中的每个活动,都需要有适合的测试技术支持,从而可以更好的提高测试效率和测试有效性。例如:测试分析与设计,你就需要选择合适的测试分析技术和测试设计技术;制订测试计划,你必定需要测试估算技术和测试风险技术等的支持;

    4. 测试管理:测试过程中的每个测试活动都是相互依赖和反馈的,因此对整个测试过程的管理和监控就是必须的,包括收集和分析每个活动的测试数据,并基于分析结果与计划目标进行比较,假如出现大的偏差,必须要采取合适的应对措施活动,以保证测试过程符合计划中的目标要求。

    5. 人:前面提到的4个维度,最终一定要落实到人身上,即所有的事情都需要测试人员去完成。此时,每个测试人员除了要具备前面的能力之外,还需要具备其他能力,例如:学习能力、思维能力、沟通能力、解决问题能力、时间管理、动机、性格和价值观等,都会影响你的测试工作。

     

    仅仅强调测试工作经验4年用处不大,而是要呈现你积累的经验、能力的不断成长,例如:你测试工作4年,实际的经验和能力说不定超越了一些工作8年的测试人员。最怕的是测试工作4年,只是把同样的测试工作重复做了4年。

     

    描述1:“没有积累编程脚本能力和自动化经验”

    既然知道找工作时要求编程语言能力和自动化能力,而工作了4年没有任何经验。同样的,这和你是开发角色还是测试角色没有关系。还是需要问自己为什么?找到该问题的根本原因,并静下心来逐步弥补这些方面的不足,比纠结转开发还是继续测试更重要。

     

    针对题主提的问题,归纳一下:你是否发自内心喜欢开发工作?还是因为感觉开发工作可以钱更多?做测试工作4年,收入是否已经是同类测试经历中属于前20%的范围?找工作难是因为测试这个角色导致的,还是因为个人能力不足引起的?

     

    最后,不管是什么工作或职位,决定因素在于你的技能和能力。当你的技能和能力在同类人群中已经属于上乘时,你会发现很多时候已经不需要你去选择什么样的工作或职位,而是人家开始追着你!

     

     

    希望,我这个回答能给大家一点思考的思路和方向!

    展开全文
  • 如何从RNN起步,一步一步通俗理解LSTM

    万次阅读 多人点赞 2019-05-06 23:47:54
    如何从RNN起步,一步一步通俗理解LSTM 前言 提到LSTM,之前学过的同学可能最先想到的是ChristopherOlah的博文《理解LSTM网络》,这篇文章确实厉害,网上流传也相当之广,而且当你看过了网上很多关于LSTM的文章...

                                 如何从RNN起步,一步一步通俗理解LSTM

     

     

    前言

    提到LSTM,之前学过的同学可能最先想到的是ChristopherOlah的博文《理解LSTM网络》,这篇文章确实厉害,网上流传也相当之广,而且当你看过了网上很多关于LSTM的文章之后,你会发现这篇文章确实经典。不过呢,如果你是第一次看LSTM,则原文可能会给你带来不少障碍:

    一者,一上来就干LSTM,不少读者可能还没理解好RNN。基于此,我们可以从最简单的单层网络开始学起;
    二者,原文没有对LSTM的三个门解释的足够细致,包括三个不同的sigmoid函数用的同一个符号σ(有错么?没错,看多了就会明白这是习惯用法);
    三者,不同的权值也用的同一个符号w,而当把图、公式、关系一一对应清楚后,初学就不会一脸懵逼了。甚至我们把各个式子的计算过程用有方向的水流表示出来,则会好懂不少,这个时候就可以上动图。

    而我自己就是这么经历过来的,虽然学过了不少模型/算法,但此前对LSTM依然很多不懂,包括一开始反复看ChristopherOlah博文《理解LSTM网络》,好在和我司AI Lab陈博士反复讨论之后,终于通了!

    侧面说明,当一个人冥思苦想想不通时,十之八九是因为看的资料不够通俗,如果还是不行,则问人,结果可能瞬间领悟,这便是教育的意义,也是我们做七月在线的巨大价值。

    众所周知,我们已经把SVM、CNN、xgboost、LSTM等很多技术,写的/讲的国内最通俗易懂了,接下来,我们要把BERT等技术也写的/讲的国内最通俗易懂,成为入门标准,而且不单单是从NNLM \rightarrow Word2Vec \rightarrow Seq2Seq \rightarrow Seq2Seq with Attention \rightarrow Transformer \rightarrow Elmo \rightarrow GPT \rightarrow BERT,我们希望给所有AI初学者铺路:一步一个台阶,而不是出现理解断层。

    本文在ChristopherOlah的博文及@Not_GOD 翻译的译文等文末参考文献的基础上做了大量便于理解的说明/注解(这些说明/注解是在其他文章里不轻易看到的),一切为更好懂。

     

    一、RNN

    1.1 从单层网络到经典的RNN结构
    在学习LSTM之前,得先学习RNN,而在学习RNN之前,首先要了解一下最基本的单层网络,它的结构如下图所示:

    输入是x,经过变换Wx+b和激活函数f,得到输出y。相信大家对这个已经非常熟悉了。

    在实际应用中,我们还会遇到很多序列形的数据:


    如:

    1. 自然语言处理问题。x1可以看做是第一个单词,x2可以看做是第二个单词,依次类推。
    2. 语音处理。此时,x1、x2、x3……是每帧的声音信号。
    3. 时间序列问题。例如每天的股票价格等等。

    而其中,序列形的数据就不太好用原始的神经网络处理了。

    为了建模序列问题,RNN引入了隐状态h(hidden state)的概念,h可以对序列形的数据提取特征,接着再转换为输出。

    先从h_{1}的计算开始看:


    图示中记号的含义是:
    a)圆圈或方块表示的是向量。
    b)一个箭头就表示对该向量做一次变换。如上图中h_{0}x_{1}分别有一个箭头连接,就表示对h_{0}x_{1}各做了一次变换。
    在很多论文中也会出现类似的记号,初学的时候很容易搞乱,但只要把握住以上两点,就可以比较轻松地理解图示背后的含义。

    h_{2}的计算和h_{1}类似。但有两点需要注意下:

    1. 在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点,一定要牢记;
    2. 而下文马上要看到的LSTM中的权值则不共享,因为它是在两个不同的向量中。而RNN的权值为何共享呢?很简单,因为RNN的权值是在同一个向量中,只是不同时刻而已。


    依次计算剩下来的(使用相同的参数U、W、b):


    我们这里为了方便起见,只画出序列长度为4的情况,实际上,这个计算过程可以无限地持续下去。

    我们目前的RNN还没有输出,得到输出值的方法就是直接通过h进行计算:


    正如之前所说,一个箭头就表示对对应的向量做一次类似于f(Wx+b)的变换,这里的这个箭头就表示对h1进行一次变换,得到输出y1。

    剩下的输出类似进行(使用和y1同样的参数V和c):

    OK!大功告成!这就是最经典的RNN结构,是x1, x2, .....xn,输出为y1, y2, ...yn,也就是说,输入和输出序列必须要是等长的。

    1.2 RNN的应用
    人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。

    传统的神经网络并不能做到这点,看起来也像是一种巨大的弊端。例如,假设你希望对电影中的每个时间点的时间类型进行分类。传统的神经网络应该很难来处理这个问题:使用电影中先前的事件推断后续的事件。循环神经网络RNN解决了这个问题。

    通过上文第一节我们已经知道,RNN是包含循环的网络,在这个循环的结构中,每个神经网络的模块,读取某个输入,并输出一个值(注:输出之前由y表示,从此处起,改为隐层输出h表示),然后不断循环。循环可以使得信息可以从当前步传递到下一步。

    这些循环使得RNN看起来非常神秘。然而,如果你仔细想想,这样也不比一个正常的神经网络难于理解。RNN可以被看做是同一神经网络的多次复制,每个神经网络模块会把消息传递给下一个。所以,如果我们将这个循环展开:

    链式的特征揭示了RNN本质上是与序列和列表相关的。他们是对于这类数据的最自然的神经网络架构。

    1.3 RNN的局限:长期依赖(Long-TermDependencies)问题

    RNN的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如使用过去的视频段来推测对当前段的理解。如果RNN可以做到这个,他们就变得非常有用。但是真的可以么?答案是,还有很多依赖因素。

    有时候,我们仅仅需要知道先前的信息来执行当前的任务。例如,我们有一个语言模型用来基于先前的词来预测下一个词。如果我们试着预测“the clouds are in the sky”最后的词,我们并不再需要其他的信息,因为很显然下一个词应该是sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN可以学会使用先前的信息。


    但是同样会有一些更加复杂的场景。假设我们试着去预测“I grew up in France...I speak fluent French”最后的词。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的France的上下文的。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。

    不幸的是,在这个间隔不断增大时,RNN会丧失学习到连接如此远的信息的能力。


    在理论上,RNN绝对可以处理这样的长期依赖问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN肯定不能够成功学习到这些知识。Bengio,etal.(1994)等人对该问题进行了深入的研究,他们发现一些使训练RNN变得非常困难的相当根本的原因。

    换句话说, RNN 会受到短时记忆的影响。如果一条序列足够长,那它们将很难将信息从较早的时间步传送到后面的时间步。

    因此,如果你正在尝试处理一段文本进行预测,RNN 可能从一开始就会遗漏重要信息。在反向传播期间(反向传播是一个很重要的核心议题,本质是通过不断缩小误差去更新权值,从而不断去修正拟合的函数),RNN 会面临梯度消失的问题。

    因为梯度是用于更新神经网络的权重值(新的权值 = 旧权值 - 学习率*梯度),梯度会随着时间的推移不断下降减少,而当梯度值变得非常小时,就不会继续学习。​

    换言之,在递归神经网络中,获得小梯度更新的层会停止学习—— 那些通常是较早的层。 由于这些层不学习,RNN 可以忘记它在较长序列中看到的内容,因此具有短时记忆。

    而梯度爆炸则是因为计算的难度越来越复杂导致。

    然而,幸运的是,有个RNN的变体——LSTM,可以在一定程度上解决梯度消失和梯度爆炸这两个问题!

     

     

    二、LSTM网络
    Long ShortTerm 网络——一般就叫做LSTM——是一种RNN特殊的类型,可以学习长期依赖信息。当然,LSTM和基线RNN并没有特别大的结构不同,但是它们用了不同的函数来计算隐状态。LSTM的“记忆”我们叫做细胞/cells,你可以直接把它们想做黑盒,这个黑盒的输入为前状态和当前输入。这些“细胞”会决定哪些之前的信息和状态需要保留/记住,而哪些要被抹去。实际的应用中发现,这种方式可以有效地保存很长时间之前的关联信息。

    2.1 什么是LSTM网络

    举个例子,当你想在网上购买生活用品时,一般都会查看一下此前已购买该商品用户的评价。


    当你浏览评论时,你的大脑下意识地只会记住重要的关键词,比如“amazing”和“awsome”这样的词汇,而不太会关心“this”、“give”、“all”、“should”等字样。如果朋友第二天问你用户评价都说了什么,那你可能不会一字不漏地记住它,而是会说出但大脑里记得的主要观点,比如“下次肯定还会来买”,那其他一些无关紧要的内容自然会从记忆中逐渐消失。

    而这基本上就像是 LSTM 或 GRU 所做的那样,它们可以学习只保留相关信息来进行预测,并忘记不相关的数据。简单说,因记忆能力有限,记住重要的,忘记无关紧要的。


    LSTM由Hochreiter&Schmidhuber(1997)提出,并在近期被AlexGraves进行了改良和推广。在很多问题,LSTM都取得相当巨大的成功,并得到了广泛的使用。
    LSTM通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是LSTM的默认行为,而非需要付出很大代价才能获得的能力!

    所有RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个tanh层。

    激活函数 Tanh 作用在于帮助调节流经网络的值,使得数值始终限制在 -1 和 1 之间。


    LSTM同样是这样的结构,但是重复的模块拥有一个不同的结构。具体来说,RNN是重复单一的神经网络层,LSTM中的重复模块则包含四个交互的层,三个Sigmoid 和一个tanh层,并以一种非常特殊的方式进行交互。

    上图中,σ表示的Sigmoid 激活函数与 tanh 函数类似,不同之处在于 sigmoid 是把值压缩到0~1 之间而不是 -1~1 之间。这样的设置有助于更新或忘记信息:

    • 因为任何数乘以 0 都得 0,这部分信息就会剔除掉;
    • 同样的,任何数乘以 1 都得到它本身,这部分信息就会完美地保存下来。

    相当于要么是1则记住,要么是0则忘掉,所以还是这个原则:因记忆能力有限,记住重要的,忘记无关紧要的

    此外,对于图中使用的各种元素的图标中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表pointwise的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。


    2.2 LSTM的核心思想
    LSTM的关键就是细胞状态,水平线在图上方贯穿运行。
    细胞状态类似于传送带。直接在整个链上运行,只有一些少量的线性交互。信息在上面流传保持不变会很容易。

    LSTM有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个sigmoid神经网络层和一个pointwise乘法的非线性操作。

    如此,0代表“不许任何量通过”,1就指“允许任意量通过”!从而使得网络就能了解哪些数据是需要遗忘,哪些数据是需要保存。

    LSTM拥有三种类型的门结构:遗忘门/忘记门、输入门和输出门,来保护和控制细胞状态。下面,我们来介绍这三个门。

     


    三、逐步理解LSTM
    3.1 忘记门
    在我们LSTM中的第一步是决定我们会从细胞状态中丢弃什么信息。这个决定通过一个称为“忘记门”的结构完成。该忘记门会读取上一个输出和当前输入,做一个Sigmoid 的非线性映射,然后输出一个向量f_{t}(该向量每一个维度的值都在0到1之间,1表示完全保留,0表示完全舍弃,相当于记住了重要的,忘记了无关紧要的),最后与细胞状态相乘。

    类比到语言模型的例子中,则是基于已经看到的预测下一个词。在这个问题中,细胞状态可能包含当前主语的性别,因此正确的代词可以被选择出来。当我们看到新的主语,我们希望忘记旧的主语,进而决定丢弃信息。

    大部分初学的读者看到这,可能会有所懵逼,没关系,我们分以下两个步骤理解:

    1. 对于上图右侧公式中的权值W_{f},准确的说其实是不共享,即是不一样的。有的同学可能第一反应是what?别急,我展开下你可能就瞬间清晰了,即:f_{t} = \sigma (W_{fh}h_{t-1} + W_{fx} x_{t} + b_{f})
    2. 至于右侧公式和左侧的图是怎样的一个一一对应关系呢?如果是用有方向的水流表示计算过程则将一目了然,上动图!红圈表示Sigmoid 激活函数,篮圈表示tanh 函数:


    3.2 输入门
    下一步是确定什么样的新信息被存放在细胞状态中。这里包含两个部分:
    第一,sigmoid层称“输入门层”决定什么值我们将要更新;
    第二,一个tanh层创建一个新的候选值向量,会被加入到状态中。
    下一步,我们会讲这两个信息来产生对状态的更新。

    在我们语言模型的例子中,我们希望增加新的主语的性别到细胞状态中,来替代旧的需要忘记的主语,进而确定更新的信息。

    继续分两个步骤来理解:

    1. 首先,为便于理解图中右侧的两个公式,我们展开下计算过程,即i_{t} = \sigma (W_{ih}h_{t-1} + W_{ix}x_{t} + b_{i})\tilde{C_{t}} = tanh(W_{Ch}h_{t-1} + W_{Cx}x_{t} + b_{C})
    2. 其次,上动图!


    3.3 细胞状态
    现在是更新旧细胞状态的时间了,更新为。前面的步骤已经决定了将会做什么,我们现在就是实际去完成。
    我们把旧状态与相乘,丢弃掉我们确定需要丢弃的信息。接着加上。这就是新的候选值,根据我们决定更新每个状态的程度进行变化。
    在语言模型的例子中,这就是我们实际根据前面确定的目标,丢弃旧代词的性别信息并添加新的信息的地方,类似更新细胞状态。

    再次动图!


    3.4 输出门
    最终,我们需要确定输出什么值。这个输出将会基于我们的细胞状态,但是也是一个过滤后的版本。

    首先,我们运行一个sigmoid层来确定细胞状态的哪个部分将输出出去。
    接着,我们把细胞状态通过tanh进行处理(得到一个在-1到1之间的值)并将它和sigmoid门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。

    在语言模型的例子中,因为他就看到了一个代词,可能需要输出与一个动词相关的信息。例如,可能输出是否代词是单数还是负数,这样如果是动词的话,我们也知道动词需要进行的词形变化,进而输出信息。

    依然分两个步骤来理解:

    1. 展开图中右侧第一个公式,o_{t} = \sigma (W_{oh}h_{t-1} + W_{ox}x_{t} + b_{o})
    2. 最后一个动图:

     


    四、LSTM的变体
    我们到目前为止都还在介绍正常的LSTM。但是不是所有的LSTM都长成一个样子的。实际上,几乎所有包含LSTM的论文都采用了微小的变体。差异非常小,但是也值得拿出来讲一下。
    4.1 peephole连接与coupled
    其中一个流形的LSTM变体,就是由Gers&Schmidhuber(2000)提出的,增加了“peepholeconnection”。是说,我们让门层也会接受细胞状态的输入。

    peephole连接

    上面的图例中,我们增加了peephole到每个门上,但是许多论文会加入部分的peephole而非所有都加。

    另一个变体是通过使用coupled忘记和输入门。不同于之前是分开确定什么忘记和需要添加什么新的信息,这里是一同做出决定。我们仅仅会当我们将要输入在当前位置时忘记。我们仅仅输入新的值到那些我们已经忘记旧的信息的那些状态。

     

    4.2 GRU
    另一个改动较大的变体是GatedRecurrentUnit(GRU),这是由Cho,etal.(2014)提出。它将忘记门和输入门合成了一个单一的更新门。同样还混合了细胞状态和隐藏状态,和其他一些改动。最终的模型比标准的LSTM模型要简单,也是非常流行的变体。

    为了便于理解,我把上图右侧中的前三个公式展开一下

    1. z_{t} = \sigma (W_{zh}h_{t-1} + W_{zx}x_{t})
    2. r_{t} = \sigma (W_{rh}h_{t-1} + W_{rx}x_{t})
    3. \tilde{h} = tanh(W_{rh}(r_{t}h_{t-1}) + W_{x}x_{t})

    这里面有个小问题,眼尖的同学可能看到了,z_{t}r_{t}都是对h_{t-1}x_{t}做的Sigmoid非线性映射,那区别在哪呢?原因在于GRU把忘记门和输入门合二为一了,而z_{t}是属于要记住的,反过来1- z_{t}则是属于忘记的,相当于对输入h_{t-1}x_{t}做了一些更改/变化,而r_{t}则相当于先见之明的把输入h_{t-1}x_{t}z_{t}/1- z_{t}对其做更改/变化之前,先事先存一份原始的,最终在\tilde{h}那做一个tanh变化。

    这里只是部分流行的LSTM变体。当然还有很多其他的,如Yao,etal.(2015)提出的DepthGatedRNN。还有用一些完全不同的观点来解决长期依赖的问题,如Koutnik,etal.(2014)提出的ClockworkRNN。

    要问哪个变体是最好的?其中的差异性真的重要吗?Greff,etal.(2015)给出了流行变体的比较,结论是他们基本上是一样的。Jozefowicz,etal.(2015)则在超过1万种RNN架构上进行了测试,发现一些架构在某些任务上也取得了比LSTM更好的结果。

     

     

    五、LSTM相关面试题

    为帮助大家巩固以上的所学,且助力找AI工作的朋友,特从七月在线AI题库里抽取以下关于LSTM的典型面试题,更具体的答案参见:https://www.julyedu.com/search?words=LSTM(打开链接后,勾选“面试题”的tab)。

    1. LSTM结构推导,为什么比RNN好?
    2. GRU是什么?GRU对LSTM做了哪些改动?
    3. LSTM神经网络输入输出究竟是怎样的?
    4. 为什么LSTM模型中既存在sigmoid又存在tanh两种激活函数,而不是选择统一一种sigmoid或者tanh?这样做的目的是什么?
    5. 如何修复梯度爆炸问题?
    6. 如何解决RNN梯度爆炸和弥散的问题?

     

     

    六、参考文献

    1. ChristopherOlah的博文《理解LSTM网络
    2. @Not_GOD 翻译ChristopherOlah的博文《理解LSTM网络
    3. RNN是怎么从单层网络一步一步构造的?
    4. 通过一张张动图形象的理解LSTM
    5. 如何理解LSTM网络(超经典的Christopher Olah的博文之July注解版)
    6. LSTM相关的典型面试题:https://www.julyedu.com/search?words=LSTM(打开链接后,勾选“面试题”的tab)
    7. 如何理解反向传播算法BackPropagation
    展开全文
  • 企业信息化的下一步将走向何方

    千次阅读 2016-03-31 12:25:37
    企业信息化的下一步将走向何方——“智能化”是企业信息化的必由之路 企业信息化在国内企业中的普遍应用大概已有二十多年的历史,本文根据本人的经历和对信息化的认识,提出一些个人看法,并通过分析预测今后企业...

    企业信息化的下一步将走向何方

    ——“智能化”是企业信息化的必由之路

    这里写图片描述
    企业信息化在国内企业中的普遍应用大概已有二十多年的历史,实际上伴随着改革开放,软件的应用,特别是企业信息化软件的应用,从一开始就基本上走开放的、 自由的市场经济方式,从业者可以跟上世界软件的发展,结合国内实际,充分发挥聪明才智,在这一领域做出各种尝试和努力,本人自92年在一家纺织企业工作近 15年,做过除财务外的各个部门,从设备、技术、生产到国际贸易、企业管理等,由于对计算机有浓厚兴趣,93年自费购买一套PC机学习软件的应用和开发, 并尽量在工作中使用。所以,近二十年来伴随在企业工作,同时一直摸索、探讨计算机技术在企业的应用,这一过程也就基本亲身经历了计算机在企业管理应用的发 展历程,为此谈一下对这方面的看法。特别声明,由于本人经历和学识的局限性,本看法局限于中小企业。

    第一阶段 存储阶段

    在最初计算机应用的时候,计算机的价格比较昂贵,在企业数量少,我在的企业当时有一台PC机,购买这台计算机配套购买一台三菱空调和装修一个微机 房,DOS系统,运行WPS、DBase,Basic,存储用512k的5英寸的磁盘,这就是最初计算机在企业的应用,虽然是这样,那时候计算机给我们的印象就是存储 能力强,查询快,虽然是在DOS环境下,人们来描述计算机的能力的时候往往说计算机可以保存多少内容,相当于多少本书,相当于几个图书馆等等,大家所关注 的都是数据的存储和查询,所以当时计算机的应用就是存储了大量的企业报表,管理数据,磁盘的标签上逐月、逐年的标识“xx月生产报表”等,所以数据的存储 是这个阶段的主要用途。当然,配上打印机后,计算机更频繁的工作就是一台“打字机”。

    第二阶段 计算阶段

    随着计算机硬件和软件的飞速发展,计算机性能提高到486、586时期,操作系统也升级为微软的win32、win95,微软的视窗系统,大大提高了计算 机操作的简便性、直观性,不用太费劲就可以学会基本使用,管理软件的工具也发展为FoxBase,PB等数据库工具,可以开发数据操作窗口进行数据的增删 改查,并且对于数据的简单存储和查询打印已经不能满足企业管理的需求,这个时期出现MRP、MRP2,不仅存储数据,还根据生产企业的特点和技术要求,帮 助用户进行数据的计算、统计、核对。在这个阶段,企业应用侧重于对数据进行技术上的计算,控制、指导生产,查看经营管理中的物料、资金的理论数据和实际数据, 统计分析企业运营效果,发现不合理的环节,降低成本,提高效率。基本上是在“数据”级别的应用,增删改查,统计报表等,在企业数据的管理上发挥了一定作用。
    这里写图片描述
    第三阶段 逻辑阶段

    随着 计算机性能日益提高,价格却越来越便宜,应用也越来越普及,在企业已经不再是个娇贵的宝贝,各部门都普遍配备,日常办公和管理应用微软的Office系统占主要地位,平时的简单的数据处理大多用Excel来做,数据库反而被冷落了。数据的存储和计算能力不再受大家关注,更关心的是根据管理的逻辑要求配置各方面数据之间的合理逻辑关系,相互之间的制约和影响,并以此来帮助指导具体工作和工作效果的考核。所以这个时期管理系统越来越复杂,涉及的数据也更加广泛,例如:ERP的出现。但正是由于这个特点,带来软件投入和实施应用投入的巨大增加,对于大型企业几百万都是小case,动辄上千万,实施时间甚至以年计,效果却体现缓慢和不尽人意,最后纠结到“上ERP找死,不上ERP等死”的份上。这些对于中小企业来说是难以承受的,并且中小企业的灵活多变也不能适应僵化的固定模式,作用难以发挥,ERP在中小企业鲜有成功案例。这个时期逐渐形成了管理软件的市场,也成就了一些管理软件公司,单由于仅仅解决的是“数据逻辑“,而并没有解决“管理逻辑”,软件中的管理模型是僵硬的,缺乏弹性,不能适应企业千变万化的管理实践,企业对ERP逐渐失去兴趣和信息,虽然软件行业不断炒出各种管理概念给用户,但从内心讲也感到“好尴尬啊”。
    这里写图片描述
    第四阶段 共享、分化阶段

    随着网络的飞速发展,特别是移动互联网的兴起,带来两个方面的变化,一方面是加强数据共享,另一方面软件功能的分化,信息化应用的范围更加广,突破了许多时空的限制,整个社会进入全面信息化社会。数据的共享和大数据的汇集、挖掘等技术应用于企业管理。同时,软件功能也不再追求“大而全”,而是在不同的领域深耕细作,在局部的点上充分发挥计算机技术的优势。例如:结合RFID的物联网应用,软件系统也进一步细化为OA、BPM、CRM、MES等等,寄希望于能够切中企业需求的痛点,解决迫切需要解决的问题来满足企业管理信息化的需要。最近又提出的“工业4.0”,实际我的理解就是将生产制造业过程、设备的信息纳入到信息化系统,进行共享,加强管理协作,甚至可以进行跨企业、跨行业的整合,进行分工、重组,制造的专注于制造,设计的专注于设计,并且通过互联网高效地结合,可以进一步调动创新能力和发挥制造业的生产潜力。这些都符合国家提出的制造业转型、供给侧转变和“中国制造2025”的规划。
    这里写图片描述
    下个阶段展望 智能化阶段

    前一段时间,大家饶有兴趣的看到谷歌公司 AlphaGo 的人机围棋大战,计算机取得了胜利,这是个里程碑,从一个角度说明硬件的发展已经有了巨大的进步,应用软件相比较是落后的了。因此,对于管理软件行业来说,停留在简单的存储、统计和共享,已经不能满足应用的需求了,面向智能化管理,实现人机交互,更多的管理理念和管理元素由机器帮助处理、判断和提出建议,建立创新的管理模型和计算、思维方法是今后发展的方向。可以展望在不久,企业管理,甚至跨企业、国家的企业沟通、协作,在智能化系统的指导帮助下高效运行,整个社会的设计能力、创新能力和制造能力充分有机结合起来,这也就是我们面临的新的一次革命和挑战,整个社会也将由“信息化”向智能化转变。
    这里写图片描述
    作者:黄泽
    如果您对中小企业信息化有兴趣,请关注我的微信公众号
    “黄泽观点”这里写图片描述
    或者Email:workoa@126.com

    展开全文
  • 一步一步教你实现CTreeCtrl 自绘

    万次阅读 多人点赞 2012-04-15 22:31:10
    一步一步教你实现CTreeCtrl 自绘  -------BY wojiushi3344  QQ:513670524 转载请说明出处    源代码下载  最近因工作需求,需要自绘CTreeCtrl。由于原来从来没有自绘过,开始在网上搜索资料,查询(因此本文...
  • PADS layout 布局前期工作展开

    千次阅读 2017-08-02 11:11:21
    在布局之前我们需要进行网络表和封装库的导入,还有板框reuse文件的导入。关于.reu文件的导入有两种调入方式(其一是在...接下来就是网络表封装和网络检查是否有问题,若没有问题就进行下一步工作展开--布局工作
  • 一步一步带您体验Windows Vista安装图解全过程Windows Vista系统安装完全图解 ◆ 前言 Windows Vista (Codename Longhorn),怕是盖子大叔怕“longhorn”这个名称让微软一代的作系统继续难产,于是给他换了好养...
  • 【Linux】一步一步学Linux——Linux发展史(01)

    千次阅读 多人点赞 2019-07-04 22:39:46
    并非是什么自由哲学,而是市场竞争的驱动,创办了"Open Source Intiative"(开放源代码促进会)"复兴"的大旗,在互联网世界里展开了一场历史性的Linux产业化运动。 2001年1月,Linux 2.4发布,它进一步地提升了SMP...
  • 一步一步CocosBuilder(2)

    千次阅读 2013-02-15 21:25:05
    上一篇我们建立了基本的工作环境, 这一次我们将基本实现例子中的HelloCocosBuilder. 注意 这两天纠结了一个问题. 我发现按照上次的配置来实现例子, 图片的大小怎么都和例子中的搭配不上. 后来动用CCB的源代码...
  • 继续往看)的一种特殊形式。业务工作流程说明了业务为向所服务的业务主角提供其所需的价值而必须完成的工作。业务用例由一系列活动组成,它们共同为业务主角生成某些工件。工作流程通常包括一个基本工作流程和一个...
  • 一步一步了解CRM:功能篇

    千次阅读 2002-07-09 09:38:00
    一步一步了解CRM:功能篇 2001-12-01 13:17 CRM研究小组/(资源管理研究中心(AMT)) -------------------------------------------------------------------------------- 前言: 上期专题《一步一步了解CRM:概念...
  •  作者:清林,博客名:飞空静渡 这是一篇自己很早写的文章了,当时根据网上的一些教程一步一步制作,本来想把自己做的过程放到网上,可以西一值忙于公司项目,没有时间,去年想放上来的时候发现csdn上传不了图片,...
  • 一步一步了解CRM(概念篇)

    千次阅读 2002-07-09 09:38:00
     其实很多客户提出的电脑故障都是自己的误操作引起的,很多情况都可以自己解决,但回答这种类型的客户电话占去了工程师的很多时间,工作枯燥而无聊;怎么其它部门的同事都认为我们的售后服务部门只是花钱而挣不来...
  • 面试是公司挑选职工的一种重要方法。面试给公司和应招者提供了进行双向交流... 东软实训推荐面试问题:如果我录用你,你将怎样开展工作?  回答提示:①如果应聘者对于应聘的职位缺乏足够的了解,最好不要直接说出自
  • 一步一步的使用C++和OPENGL实现COLLADA骨骼动画 第一部分   英文原作者:waZim 原文标题:Step by Step Skeletal Animation in C++ and OpenGL, Using COLLADA 原文地址:...
  • 下边看看estpos中是怎么解算这个方程组的 2.2.1 模型线性化和观测值补偿 函数rescode几乎是位置估算中最重要的一个函数,完成了解算模型的线性化,以及伪距补偿,加权参数估计等工作,是最小二乘计算的基础。...
  • 一步一步教你网站数据库同步镜像

    千次阅读 2005-12-06 20:00:00
    (3)按照单击[下一步]操作直到系统会提示检查SQL SERVER代理服务的运行状态,执行复制操作的前提条件是SQL SERVER代理服务必须已经启动。 (4)单击[完成]。完成订阅操作。 完成上面的步骤其实复制也就是成功了。但是...
  • 只要保证单片机能在额定电压下工作,整个系统就不会有问题。 10. 所有芯片电源的入口都要使用一个 100nF 的电容滤波,这个电容尽量靠近芯片的那个管脚,以免走线引入的阻抗,降低 104 电容对杂波信号的滤除效果。...
  • 一步一步教你网站同步镜像1.介绍现在的网站随着访问量的增加,单一服务器无法承担巨大的访问量,有没有什么方便快捷的方式解决这个问题呢,答案是”有”!比如建立服务器群,进行均衡负载.但是如果要解决像电信网通这样的...
  • 高三班主任工作总结 当工作进行到一定阶段或告一段落时,需要我们来对前段时期所做的工作认真地分析研究一下,肯定成绩,找出问题,归纳出经验教训,以便于更好的做好下一步工作。下面就是小编精心收集整理的20xx...
  • 创建完顶点着色器和输入格式后,下一步我们创建像素着色器。下面这段代码实现了LoadContent方法的一半的功能:     代码段四 LoadContent函数着色器载入代码   bool TriangleDemo::LoadContent( ) { ID3...
  • 通过对关键问题定义,回答清晰后就可以进入下一步,对业务流程进行完整的梳理了。 梳理业务流程 梳理业务流程需要基于对产品战略的清晰定义。业务流程围绕产品战略目标而设计,需要明确业务目标,流程...
  • 一步一步教你实现CTreeCtrl 自绘 [url=http://download.csdn.net/detail/wojiushi3344/4228677] 源代码下载[/url] blog:[url=http://blog.csdn.net/wojiushi3344/article/details/7463942]...
  • 一个测试人员的工作该怎么开展

    千次阅读 2018-05-23 22:54:34
    但是问题流程繁杂,要一步一步都走清楚。成本大。   三、xxx小团队测试该如何进行  1、测试流程的建立  目前的流程为:  1) 参与需求讨论;  2) 有一个简单的时间计划;  3) 测试用例无只会列出...
  • 在区委、区政府的正确领导,在上级业务部门的具体指导,在局领导班子成员的同力配合,紧紧围绕区委、区政府下达的目标任务和各项中心工作,充分发挥畜牧局职能部门自身优势,与时俱进,开创性地开展工作,为全...
  • 中国移动云计算整体工作汇报;中国移动云计算总体策略;技术引入1X86架构/云存储;技术引入2资源池化;CMNET/IP专网;建设实施原则;标准研发策略;...下一步工作建议1;下一步工作建议2;基于云计算的搜索引擎
  • 话务员工作总结范文做好工作总结有利于下一步工作开展且有条不紊的进行,是非常有必要的,以下是由小编为您整理的20xx年话务员工作总结范文,仅供参考,希望能够给您的工作生活带来帮助!20xx年话务员工作总结范文...
  • 中国移动云计算整体工作汇报;中国移动云计算总体策略;技术引入1X86架构/云存储;技术引入2资源池化;CMNET/IP专网;建设实施原则;标准研发策略;...下一步工作建议1;下一步工作建议2;基于云计算的搜索引擎
  • 一、工作总结 自第一学期开学以来,围绕着协会的安排,开展部门的工作,从学期初的新生接待,再到招干,一系列的培训,助跑职场,招聘会,一步一步地走来,一步一步地见证着我们的成长。作为协会活动策划的企拓部,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 96,459
精华内容 38,583
关键字:

下一步如何开展工作