精华内容
下载资源
问答
  • 2020-12-23 23:50:46

    最近和一个朋友聊天,她突然对我说:“小灿,你说人与人之间的差距为什么这么大?我觉得这是命,一开始就注定的。”

    我问她,为什么突然这么想?

    她说,最近她和一个同事要合作完成一个项目,结果中间出了纰漏。为此,她吓得不行,不知道如何向领导交代。

    可她的同事却毫不在意。这倒不是因为她同事没犯错,而是人家有个有钱的老爸,工作就是消遣时间,不在意犯错。

    听到这里,我才知道,她表面上在说人与人的差距在于命不同,实际上是指出了一个现实问题——我们大部分人的容错率都太低。

    因为她的容错率太低,导致她一直畏首畏尾,难以承担犯错的后果。所以也就止步不前,不去尝试也就不会犯错,可也无法成长。

    02.什么是容错率?

    容错率是指在某个体系中能减小一些因素、选择对某个系统产生不稳定的概率。容错率越高,对效果的影响越小;容错率越低,对效果的影响越大。

    通俗来说,容错率就是指允许错误出现的范围和概率。放到个人身上,可以视作一种包容度,一个人对“错误”、“不完美”、“未达成目标”、“缺点”等负面事物的包容度。

    容错率低的人,会对错误、缺点等非常在意。因为他们一旦犯了错误,就需要付出很大的代价。所以,也害怕犯错。当然,也进步有限。

    而且,因为自身对错误比较排斥,当看到别人犯错时,尤其是当这个错误还和自己有关系时,就会特别苛刻。

    而容错率高的人,则对错误、缺点等有很强的

    更多相关内容
  • 深度学习中的多任务学习介绍

    千次阅读 多人点赞 2021-03-27 15:11:22
    在2017年有一篇关于在深度神经网络中多任务学习概述的论文:《An Overview of Multi-Task Learning in Deep ...传统的机器学习方法主要是基于单任务的学习(Single-task Learning)模式进行学习,对于复杂的学习任务

    在2017年有一篇关于在深度神经网络中多任务学习概述的论文:《An Overview of Multi-Task Learning in Deep Neural Networks》,论文链接为:https://arxiv.org/pdf/1706.05098.pdf,它介绍了在深度学习中多任务学习(Multi-task Learning, MTL)的两种最常用的方法。以下截图均来自此论文。

    传统的机器学习方法主要是基于单任务的学习(Single-task Learning)模式进行学习,对于复杂的学习任务也可将其分解为多个独立的单任务进行学习,然后对学习得到的解决进行组合,得到最终的结果。

    多任务学习的关键就在于寻找任务之间的关系,如果任务之间的关系衡量恰当,那么不同任务之间就能相互提供额外的有用信息,利用这些额外信息,可以训练出表现更好、更鲁棒的模型。反之,如果关系衡量不恰当,不仅不会引入额外的信息,反而会给任务本身引来噪声,模型学习效果不升反降。当单个任务的训练数据集不充分的时候,此时多任务学习的效果能够有比较明显的提升,这主要是因为单个任务无法通过自身的训练数据集得到关于数据分布的足够信息。如果有多个任务联合学习,那么这些任务将能从相关联的任务中得到额外的信息,因此学习效果将有显著的提升。目前,多任务学习已经在多个领域得到广泛的应用,比如人脸属性的相关研究、人类疾病的研究、无人驾驶的研究等。

    多任务学习是机器学习的一个重要组成部分,是迁移学习的一种。多任务学习作为迁移学习的一个分支有着其自己独特的学习背景和应用。在给定几个相关联任务的输入数据和输出数据的情况下,多任务学习能够发挥任务之问的关系,同时学习多个模型。与单任务学习相比,主要有以下几个方面的优势:A.多任务学习通过挖掘任务之间的关系,能够得到额外的有用信息,大部分情况下都要比单任务学习的效果要好。在有标签样本比较少的情况下,单任务学习模型往往不能够学习得到足够的信息,表现较差,多任务学习能克服当前任务样本较少的缺点,从其他任务里获取有用信息,学习得到效果更好、更鲁棒的机器学习模型。B.多任务学习有更好的模型泛化能力,通过同时学习多个相关的任务,得到的共享模型能够直接应用到将来的某个相关联的任务上。相比于单任务学习,上面的优点使得多任务学习在很多情况下都是更好的选择。现实生活中有很多适合多任务学习的场景,以下举例说明(1).自然语言处理相关的研究,比如把词性标注、句子句法成分划分、命名实体识别、语义角色标注等任务放在一起研究。(2).人脸识别中,人脸的属性的研究、人脸识别、人脸年龄预测等任务也可以通过多任务学习进行解决。(3).图像分类,不同光照下、拍摄角度、拍摄背景下等分类任务的研究,也可以在多任务研究的框架下完成。除了上述举例的三种不同应用之外,现实生活中还有很多类似的多任务学习的例子。

    深度学习中的两种MTL方法:

    (1).基于硬约束的多任务学习方法,如下图所示:表示的是不同任务通过分享一些底部的层学习一些共有的低层次的特征,为了保证任务的独特性,每个任务在顶部拥有自己独特的层学习高层次的特征。这种方法底层共享的参数是完全相同的。

    多个任务之间共享网络的同几层隐藏层,只不过在网络的靠近输出层的网络开始分叉去做不同的任务。不同任务通过共享网络底部的几层隐藏层来学习一些共有的抽象层次低的特征,这种方法的底层共享的参数是完全相同的。同时针对各个任务的特点,各个任务都设计各自的任务特有层来学习抽象层次更高的特征。所有任务在保留任务特有的输出层的同时可以共享一些相关的隐藏层。这种多任务学习的方法通过平均噪声能有效地降低过拟合的风险。而且相关的任务越多,目标任务的过拟合风险越小。

    (2).基于软约束的多任务学习方法,如下图所示:该方法不要求底部的参数完全一样,而是对不同任务底部的参数进行正则化。相对于硬参数约束的多任务深度学习模型,软约束的多任务学习模型的约束更加宽松,当任务关系不是特别紧密的时候,有可能学习得到更好的结果。多任务深度学习模型需要同时学习一个适合多个任务的网络构架,一般来说模型具有更好的鲁棒性,不容易过拟合。

    软约束的多任务学习方法是隐藏层参数软共享,不同的任务使用不同的网络,但是不同任务的网络参数,采用正则化作为约束,与硬约束的多任务学习不同的是,底层的参数不一定完全一致,而是鼓励参数相似化。

    为什么多任务学习有效:假定有两个相关的任务A和B,它们依赖共享隐藏层。

    (1).隐式数据扩充(Implicit data augmentation):MTL有效地增加了我们用于训练模型的样本量。由于所有任务或多或少存在一些噪音,因此在针对某个任务A训练模型时,我们的目标是得到任务A的一个好的表示,忽略与数据相关的噪声。由于不同的任务具有不同的噪声模式,因此同时学习两个任务的模型可以得到一个更为泛化的表示。如果仅学习任务A要承担对任务A过拟合的风险,然而同时学习任务A和任务B则可以对噪声模式进行平均,可以使模型获得更好的表示。

    (2).注意力机制(Attention focusing):如果一个任务非常嘈杂或数据量有限且维数很高,则模型很难区分相关和不相关特征。MTL可以帮助模型将注意力集中在重要的特征上,因为其他任务将为这些特征的相关性或不相关性提供更多证据。

    (3).窃听(Eavesdropping):一些特征G很容易被任务B学习,但是对于其他任务A则很难学习。这可能是因为A以更复杂的方式与特征进行交互,或者是因为其他特征阻碍了模型学习G的能力。通过MTL,我们可以允许模型进行”窃听”,即通过任务B学习G。最简单的方法是通过”提示”,即直接训练模型来预测最重要的特征。

    (4).表征偏置(Representation bias):MTL biases the model to prefer representations that other tasks also prefer。这也将有助于该模型将来泛化到新任务,因为在足够多的训练任务上表现良好的假设空间,只要它们来自相同环境,对于学习新任务也将表现良好。

    (5).正则化(Regularization):MTL通过引入归纳偏置(inductive bias)作为正则化项。因此,它降低了过拟合的风险以及模型的Rademacher复杂度,即拟合随机噪声的能力。

    深度学习中的MTL

    (1). Deep Relation Networks:如下图所示:计算机视觉中,MTL通常共享卷积层,同时用全连接层学习特定的任务。通过对任务层设定先验,使模型学习任务间的关系。

    (2). Fully-Adaptive Feature Sharing:如下图所示:一种自下而上的方法,从瘦网络开始,贪心地动态加宽网络。贪心方法可能无法做到全局最优。

    (3). Cross-stitch Networks:如下图所示:用软约束的方式将两个独立的网络连接起来,然后使用”cross-stitch units”允许模型通过线性组合学习前一层的输出。

    (4). Low supervision:主要应用在自然语言处理(Natural Language Processing, NLP)中,如词性标注、命名体识别等。

    (5). A Joint Many-Task Model:如下图所示:由多个NLP任务组成分层结构,然后将其作为多任务学习的联合模型。

    (6). Weighting losses with uncertainty:如下图所示:不考虑学习共享结构,采用正交方法考虑每个任务的不确定性。通过基于具有任务相关不确定性的高斯似然性最大化得出多任务损失函数(loss function),来调整成本函数(cost function)中每个任务的相对权重。

    (7). Tensor factorisation for MTL:对模型中的每层参数使用张量分解分为共享参数和特定于任务的参数。

    (8). Sluice Networks:如下图所示:该模型概况了基于深度学习的MTL方法:hard parameter sharing + cross-stitch networks + block-sparse regularization + task hierarchy(NLP)

    在迁移学习中,你的步骤是串行的,你从任务A中学到的,然后迁移到任务B。在多任务学习中,你是开始学习试图让一个神经网络同时做几件事情,然后希望这里的每个任务都能帮到其它所有任务。例如,在研发无人驾驶车辆,如下图,那么你的无人驾驶车可能需要同时检测不同的物体,比如检测行人、车辆、停车标志、交通灯等其它物体,输入图像x,输出将不是一个标签,而是四个标签,因为四个物体可能同时出现在一张图里。那么你现在可以做的是训练一个神经网络来预测这些y值。另外你也可以训练四个不同的神经网络,而不是训练一个神经网络做四件事,但神经网络一些早期特征在识别不同物体时都会用到,你会发现,训练一个神经网络做四件事会比训练四个完全独立的神经网络分别做四件事性能会更好,这就是多任务学习的力量。

    多任务学习什么时候有意义:第一,如果你训练的一组任务,可以共用低层次特征;第二,每个任务的数据量很接近;第三,可以训练一个足够大的神经网络同时可以做好所有的工作。多任务学习的替代方法是为每个任务训练一个单独的神经网络。多任务学习会降低性能的唯一情况就是你的神经网络还不够大。

    注:以上所有的内容的整理均来自网络,主要参考:

    1. https://arxiv.org/pdf/1706.05098.pdf

    2. 《多任务学习的研究》,2018,博论,中国科学技术大学

    GitHubhttps://github.com/fengbingchun/NN_Test

    展开全文
  • 任务和微任务的详解

    千次阅读 2021-06-10 14:07:38
    任务可以在实时性和效率之间做一个有效的权衡。 从目前的情况来看,微任务已经被广泛地应用,基于微任务的技术有 MutationObserver、Promise 以及以 Promise 为基础开发出来的很多其他的技术。所以微任务的重要性...

    微任务可以在实时性和效率之间做一个有效的权衡。

    从目前的情况来看,微任务已经被广泛地应用,基于微任务的技术有 MutationObserver、Promise 以及以 Promise 为基础开发出来的很多其他的技术。所以微任务的重要性也与日俱增,了解其底层的工作原理对于你读懂别人的代码,以及写出更高效、更具现代的代码有着决定性的作用。

    有微任务,也就有宏任务,那这二者到底有什么区别?它们又是如何相互取长补短的?


    宏任务

    前面我们已经介绍过了,页面中的大部分任务都是在主线程上执行的,这些任务包括了:

    • 渲染事件(如解析 DOM、计算布局、绘制);
    • 用户交互事件(如鼠标点击、滚动页面、放大缩小等);
    • JavaScript 脚本执行事件;
    • 网络请求完成、文件读写完成事件。

    为了协调这些任务有条不紊地在主线程上执行,页面进程引入了消息队列和事件循环机制,渲染进程内部会维护多个消息队列,比如延迟执行队列和普通的消息队列。然后主线程采用一个 for 循环,不断地从这些任务队列中取出任务并执行任务。我们把这些消息队列中的任务称为宏任务

    消息队列中的任务是通过事件循环系统来执行的,这里我们可以看看在WHATWG 规范中是怎么定义事件循环机制的。

    由于规范需要支持语义上的完备性,所以通常写得都会比较啰嗦,这里我就大致总结了下 WHATWG 规范定义的大致流程:

    • 先从多个消息队列中选出一个最老的任务,这个任务称为 oldestTask;
    • 然后循环系统记录任务开始执行的时间,并把这个 oldestTask 设置为当前正在执行的任务;
    • 当任务执行完成之后,删除当前正在执行的任务,并从对应的消息队列中删除掉这个 oldestTask;
    • 最后统计执行完成的时长等信息。

    以上就是消息队列中宏任务的执行过程,通过前面的学习,相信你也很熟悉这套执行流程了。

    宏任务可以满足我们大部分的日常需求,不过如果有对时间精度要求较高的需求,宏任务就难以胜任了,下面我们就来分析下为什么宏任务难以满足对时间精度要求较高的任务。

    前面我们说过,页面的渲染事件、各种 IO 的完成事件、执行 JavaScript 脚本的事件、用户交互的事件等都随时有可能被添加到消息队列中,而且添加事件是由系统操作的,JavaScript 代码不能准确掌控任务要添加到队列中的位置,控制不了任务在消息队列中的位置,所以很难控制开始执行任务的时间。为了直观理解,你可以看下面这段代码:

    <!DOCTYPE html>
    <html>
        <body>
            <div id='demo'>
                <ol>
                    <li>test</li>
                </ol>
            </div>
        </body>
        <script type="text/javascript">
            function timerCallback2(){
              console.log(2)
            }
            function timerCallback(){
                console.log(1)
                setTimeout(timerCallback2,0)
            }
            setTimeout(timerCallback,0)
        </script>
    </html>
    

    在这段代码中,我的目的是想通过 setTimeout 来设置两个回调任务,并让它们按照前后顺序来执行,中间也不要再插入其他的任务,因为如果这两个任务的中间插入了其他的任务,就很有可能会影响到第二个定时器的执行时间了。

    但实际情况是我们不能控制的,比如在你调用 setTimeout 来设置回调任务的间隙,消息队列中就有可能被插入很多系统级的任务。你可以打开 Performance 工具,来记录下这段任务的执行过程,也可参考文中我记录的图片:
    在这里插入图片描述
    setTimeout 函数触发的回调函数都是宏任务,如图中,左右两个黄色块就是 setTimeout 触发的两个定时器任务。

    现在你可以重点观察上图中间浅红色区域,这里有很多一段一段的任务,这些是被渲染引擎插在两个定时器任务中间的任务。试想一下,如果中间被插入的任务执行时间过久的话,那么就会影响到后面任务的执行了。

    所以说宏任务的时间粒度比较大,执行的时间间隔是不能精确控制的,对一些高实时性的需求就不太符合了,比如后面要介绍的监听 DOM 变化的需求。


    微任务

    在理解了宏任务之后,下面我们就可以来看看什么是微任务了。我们介绍过异步回调的概念,其主要有两种方式。

    **第一种是把异步回调函数封装成一个宏任务,添加到消息队列尾部,当循环系统执行到该任务的时候执行回调函数。**这种比较好理解,我们前面介绍的 setTimeout 和 XMLHttpRequest 的回调函数都是通过这种方式来实现的。

    第二种方式的执行时机是在主函数执行结束之后、当前宏任务结束之前执行回调函数,这通常都是以微任务形式体现的。

    那这里说的微任务到底是什么呢?

    微任务就是一个需要异步执行的函数,执行时机是在主函数执行结束之后、当前宏任务结束之前。

    不过要搞清楚微任务系统是怎么运转起来的,就得站在 V8 引擎的层面来分析下。

    我们知道当 JavaScript 执行一段脚本的时候,V8 会为其创建一个全局执行上下文,在创建全局执行上下文的同时,V8 引擎也会在内部创建一个微任务队列。顾名思义,这个微任务队列就是用来存放微任务的,因为在当前宏任务执行的过程中,有时候会产生多个微任务,这时候就需要使用这个微任务队列来保存这些微任务了。不过这个微任务队列是给 V8 引擎内部使用的,所以你是无法通过 JavaScript 直接访问的。

    也就是说每个宏任务都关联了一个微任务队列。那么接下来,我们就需要分析两个重要的时间点——微任务产生的时机和执行微任务队列的时机。

    我们先来看看微任务是怎么产生的?在现代浏览器里面,产生微任务有两种方式。

    第一种方式是使用 MutationObserver 监控某个 DOM 节点,然后再通过 JavaScript 来修改这个节点,或者为这个节点添加、删除部分子节点,当 DOM 节点发生变化时,就会产生 DOM 变化记录的微任务。

    第二种方式是使用 Promise,当调用 Promise.resolve() 或者 Promise.reject() 的时候,也会产生微任务。

    通过 DOM 节点变化产生的微任务或者使用 Promise 产生的微任务都会被 JavaScript 引擎按照顺序保存到微任务队列中。

    好了,现在微任务队列中有了微任务了,那接下来就要看看微任务队列是何时被执行的。

    通常情况下,在当前宏任务中的 JavaScript 快执行完成时,也就在 JavaScript 引擎准备退出全局执行上下文并清空调用栈的时候,JavaScript 引擎会检查全局执行上下文中的微任务队列,然后按照顺序执行队列中的微任务。**WHATWG 把执行微任务的时间点称为检查点。**当然除了在退出全局执行上下文式这个检查点之外,还有其他的检查点,不过不是太重要,这里就不做介绍了。

    如果在执行微任务的过程中,产生了新的微任务,同样会将该微任务添加到微任务队列中,V8 引擎一直循环执行微任务队列中的任务,直到队列为空才算执行结束。也就是说在执行微任务过程中产生的新的微任务并不会推迟到下个宏任务中执行,而是在当前的宏任务中继续执行。

    为了直观地理解什么是微任务,你可以参考下面我画的示意图(由于内容比较多,我将其分为了两张):
    在这里插入图片描述
    在这里插入图片描述
    该示意图是在执行一个 ParseHTML 的宏任务,在执行过程中,遇到了 JavaScript 脚本,那么就暂停解析流程,进入到 JavaScript 的执行环境。从图中可以看到,全局上下文中包含了微任务列表。

    在 JavaScript 脚本的后续执行过程中,分别通过 Promise 和 removeChild 创建了两个微任务,并被添加到微任务列表中。接着 JavaScript 执行结束,准备退出全局执行上下文,这时候就到了检查点了,JavaScript 引擎会检查微任务列表,发现微任务列表中有微任务,那么接下来,依次执行这两个微任务。等微任务队列清空之后,就退出全局执行上下文。

    以上就是微任务的工作流程,从上面分析我们可以得出如下几个结论

    • 微任务和宏任务是绑定的,每个宏任务在执行时,会创建自己的微任务队列。
    • 微任务的执行时长会影响到当前宏任务的时长。比如一个宏任务在执行过程中,产生了 100 个微任务,执行每个微任务的时间是 10 毫秒,那么执行这 100 个微任务的时间就是 1000 毫秒,也可以说这 100 个微任务让宏任务的执行时间延长了 1000 毫秒。所以你在写代码的时候一定要注意控制微任务的执行时长。
    • 在一个宏任务中,分别创建一个用于回调的宏任务和微任务,无论什么情况下,微任务都早于宏任务执行。

    监听 DOM 变化方法演变

    现在知道了微任务是怎么工作的,那接下来我们再来看看微任务是如何应用在 MutationObserver 中的。MutationObserver 是用来监听 DOM 变化的一套方法,而监听 DOM 变化一直是前端工程师一项非常核心的需求。

    比如许多 Web 应用都利用 HTML 与 JavaScript 构建其自定义控件,与一些内置控件不同,这些控件不是固有的。为了与内置控件一起良好地工作,这些控件必须能够适应内容更改、响应事件和用户交互。因此,Web 应用需要监视 DOM 变化并及时地做出响应。

    虽然监听 DOM 的需求是如此重要,不过早期页面并没有提供对监听的支持,所以那时要观察 DOM 是否变化,唯一能做的就是轮询检测,比如使用 setTimeout 或者 setInterval 来定时检测 DOM 是否有改变。这种方式简单粗暴,但是会遇到两个问题:如果时间间隔设置过长,DOM 变化响应不够及时;反过来如果时间间隔设置过短,又会浪费很多无用的工作量去检查 DOM,会让页面变得低效。

    直到 2000 年的时候引入了 Mutation Event,Mutation Event 采用了观察者的设计模式,当 DOM 有变动时就会立刻触发相应的事件,这种方式属于同步回调。

    采用 Mutation Event 解决了实时性的问题,因为 DOM 一旦发生变化,就会立即调用 JavaScript 接口。但也正是这种实时性造成了严重的性能问题,因为每次 DOM 变动,渲染引擎都会去调用 JavaScript,这样会产生较大的性能开销。比如利用 JavaScript 动态创建或动态修改 50 个节点内容,就会触发 50 次回调,而且每个回调函数都需要一定的执行时间,这里我们假设每次回调的执行时间是 4 毫秒,那么 50 次回调的执行时间就是 200 毫秒,若此时浏览器正在执行一个动画效果,由于 Mutation Event 触发回调事件,就会导致动画的卡顿。

    也正是因为使用 Mutation Event 会导致页面性能问题,所以 Mutation Event 被反对使用,并逐步从 Web 标准事件中删除了。

    为了解决了 Mutation Event 由于同步调用 JavaScript 而造成的性能问题,从 DOM4 开始,推荐使用 MutationObserver 来代替 Mutation Event。MutationObserver API 可以用来监视 DOM 的变化,包括属性的变化、节点的增减、内容的变化等。

    那么相比较 Mutation Event,MutationObserver 到底做了哪些改进呢?

    首先,MutationObserver 将响应函数改成异步调用,可以不用在每次 DOM 变化都触发异步调用,而是等多次 DOM 变化后,一次触发异步调用,并且还会使用一个数据结构来记录这期间所有的 DOM 变化。这样即使频繁地操纵 DOM,也不会对性能造成太大的影响。

    我们通过异步调用和减少触发次数来缓解了性能问题,那么如何保持消息通知的及时性呢?如果采用 setTimeout 创建宏任务来触发回调的话,那么实时性就会大打折扣,因为上面我们分析过,在两个任务之间,可能会被渲染进程插入其他的事件,从而影响到响应的实时性。

    这时候,微任务就可以上场了,在每次 DOM 节点发生变化的时候,渲染引擎将变化记录封装成微任务,并将微任务添加进当前的微任务队列中。这样当执行到检查点的时候,V8 引擎就会按照顺序执行微任务了。

    综上所述, MutationObserver 采用了“异步 + 微任务”的策略。

    • 通过异步操作解决了同步操作的性能问题;
    • 通过微任务解决了实时性的问题。

    总结

    好了,今天就介绍到这里,下面我来总结下今天的内容。

    首先我们回顾了宏任务,然后在宏任务的基础之上,我们分析了异步回调函数的两种形式,其中最后一种回调的方式就是通过微任务来实现的。

    接下来我们详细分析了浏览器是如何实现微任务的,包括微任务队列、检查点等概念。

    最后我们介绍了监听 DOM 变化技术方案的演化史,从轮询到 Mutation Event 再到最新使用的 MutationObserver。MutationObserver 方案的核心就是采用了微任务机制,有效地权衡了实时性和执行效率的问题。

    注释:本文章借鉴于李兵老师的《浏览器工作原理和实践》课程,希望自己通过总结,更有助于理解,也方便日后再学习;

    展开全文
  • 工作结构分解(WBS)作为项目...项目任务单元是否能够有效汇总达成项目最后目标? 工作分解结构(简称WBS),跟因素分解是同一个原理的管理概念,即把一个项目,按一定原则分解,项目分解成任务任务再分解成一项...

    工作结构分解(WBS)作为项目管理的基础,是项目管理者需要充分掌握的管理技能。如何才能高效准确地细分项目目标,形成一个简明的工作结构呢?如何确保在细分过程中的,平衡项目目标过程和结果?项目任务单元是否能够有效汇总达成项目最后目标?

    工作分解结构(简称WBS),跟因素分解是同一个原理的管理概念,即把一个项目,按一定原则分解,项目分解成任务,任务再分解成一项项工作,再把一项项工作分配到每个人的日常活动中,直到分解不下去为止,即:项目→任务→工作→日常活动。

    开发WBS的丁斯莫尔曾指出:“需要一个整体观念描绘出一条成功实施企业项目管理的道路,所有这些都是从WBS开始的。”

    在项目分解的过程中,WBS处于计划的中心,是制定进度计划、资源需求、成本预算、风险管理计划和采购计划等的重要基础。把每一项项目内容分解至小任务,然后逐个完成,从而完成大项目的最终目标,从而推动整个项目的实施,这就是项目管理的基础工具。

    20181204104853_33642

    那么作为项目管理工作基础的WBS,在日常是如何运营的呢?目前来说, 8Manage 项目管理系统WBS的应用算是做得比较好的:

    1、项目计划与执行紧密相连,通过数字规则鼓励和实施最佳实践

    如果项目计划与项目执行不一致,就容易产生许多不必要的复杂问题。有别于传统的进度计划,8Manage计划和执行是密不可分,动态实时同步更新。每一个项目有且只有一个当前计划,所有的责任划分与执行状况一目了然,团队成员可实时共享最新项目进展情况。

    此外,8Manage的项目技术团队根据多年管理实践经验,设置企业管理数字规则——项目模板和规则控制,帮助项目团队把最佳实践定义为标准流程,并允许项目团队在实际执行过程中以鼓励或强制的方式来规范执行。在项目管理过程中,动态角度和静态角度观察是完全不同的。

    因此,在项目执行过程中,某些必要监控过程却没有监控,而某些次要过程却在严格地监控并放大,有些流程设置冗赘,有些流程又缺乏。这就需要根据现实情况进行项目管理系统的规则调整,否则华而不实的功能,会导致文档在阅读和执行困难。

    8Manage 提供灵活且严谨的机制,帮助企业管理者快速调整规则,确保项目有效执行。以上图为例:一方面静态展示每个项目的完整细节,如:合同和执行部分;一方面通过项目动态推动,进行页面内容展示,如:进度图、交付物验收、评审和报告情况。这让人们可同时从静态与动态角度观察事物,把握项目的全面信息,合理调整计划,出色完成项目。

    20181204104919_55947

    2、责任明晰,结果明确,与实际业务交互实时互连

    在项目管理中,管理者和团队成员非常重视项目的责任及业务绩效。8Manage WBS不仅分配工作任务,还清晰地标的每个任务时间、负责人、执行内容、风险等情况,并联动实际业务情况进行考核和绩效评价。

    8Manage 帮助企业将项目工作进行自然分解,并强化执行适当责任与承诺。当某团队成员更改其承诺时,8Manage 会自动通知其他相关人员。对于可能无法完成的承诺,会在项目概览页面发出预警提示,清晰地识别这些不利事件的风险,快速做出有效的决策。

    同时,设置可交付成果的评审与验收规则、实时提醒负责人参与评审与验收、提供实时概览与定期的电子邮件报告等功能支持,让企业在系统操作中明了项目责任和结果,达成有效的项目管理。

    此外,8Manage 还支持设置数字规则,规定如何审查和验收可交付成果,如何支付资源费用,帮助企业提高访问和管理外部资源的能力,从而高效地管理项目。

    20181204105012_33285

    3、资源需求和依赖清晰明确

    现代的项目管理强调每个任务独立性同时,也注重共享性。我们知道资源共享与依赖会在很大程度上增加项目的复杂性。那么,如何才能兼具独立性分解和良好的资源联动呢?

    基于成本及资源匮乏的考虑,在现实执行中,同一资源有时会被多个项目共享。在依赖方面,由于项目工作分解,让几乎每个项目都无法避免活动或可交付成果间存在依赖关系。

    对此,8Manage通过以下功能设置:使资源与可交付成果的依赖尽可能明确、自动跟踪间接依赖、自动监测不恰当的依赖并及时警告相关人员(如:一个逾期完成的可交付成果会导致其他可交付成果也逾期),让所有资源需求与依赖关系一目了然。

    8Manage WBS是建立在务实技术基础上,结合多年项目管理实践经验,形成一个综合完善专业的管理解决方案。这让企业在项目管理中,向每个项目成员显示唯一的、一致的、实时精准的项目计划与执行合二为一的信息视图,实现在项目细节执行内容的全面静态呈现;并通过项目计划和执行的动态记录和操作,展现项目在推进过程中的实际情况,形成良好的项目管理互动,让企业管理者掌握全面的管理信息。而且,8Manage 系统可实时审计追踪每个项目活动或可交付成果,实现项目的整体规范化管理。

    8Manage 深耕企业管理系统多年,作为一家拥有客户关系管理、项目管理、采购管理、一体化管理等丰富企业产品和深厚一线实践经验的科技企业,在追求技术和功能服务的完善与升级同时,也进行业务与技术的良好互动设计,让更多的企业在项目管理中,理清千丝万缕的项目信息,掌握重点管理部分,全面关注业务管理细节,推动企业绩效的整体提升!

    展开全文
  • 分布式任务调度相关介绍

    千次阅读 2019-02-21 16:04:36
    分布式任务调度先介绍下:Spring&amp;amp;amp;SpringBoot任务调度工具传统定时任务存在的问题分布式环境里, 任务调度的困难及解决思想高可用任务调度原理 先介绍下:Spring&amp;amp;amp;SpringBoot任务调度...
  • WIN10任务栏卡死,鼠标一直转圈(亲测有效

    万次阅读 多人点赞 2021-12-19 15:49:26
    WIN10任务栏卡死不动无响应,一直转圈
  • 也没运行什么程序,这是因为WindowsDefender在进行扫描时,会进行其他的工作,这时候磁盘占用率就会达到了100%,有什么办法解决?下面看看具体操作方法。任务管理器磁盘100%分析及解决方法原因及解决方法如下:一、...
  • 时候电脑运行某个程序会特别卡,所以一般会在任务管理器中手动结束某个任务,打开快捷键(ctrl+alt+delete) 结束任务后电脑黑屏,只有鼠标可以移动,此时不必着急进行电脑重启,几个步骤,即可恢复桌面状态 2、...
  • 如果某些事情,甚至可以说是任何事情,哪怕只需要花费他超过 90 秒的时间,那他会写脚本来自动处理那些事情。 前同事把他写的脚本发到一个俄语聊天信息网站 bash.im 上。Alex 把俄文翻成英文了,这里把它翻成中文咯...
  • TensorFlow 多任务学习

    千次阅读 2018-09-13 12:12:22
    顾名思义,就是多个任务模型同时执行,进行模型的训练,利用模型的共性部分来简化多任务的模型,实现模型之间的融合与参数共享,可以在一定程度上优化模型的运算,提高计算机的效率,但模型本身并没有什么改变。...
  • 挖矿节点计算机在挖矿时要做两个任务: 第一个任务是把比特币网络中未确认的交易按梅克尔树组装成候选区块,未被纳入的交易则往下顺延。 在创建候选区块时,除了普通的交易之外,矿工在其中增加一个特殊的交易:币基...
  • WIN10笔记本任务栏无反应(卡住)有效解决方法

    万次阅读 热门讨论 2020-07-13 08:53:56
    点击如下图所示详细信息若2处不是正在运行(我截图的时候我的任务栏是正常的),而是无响应,就继续用此方法,否则。。。我还没遇到 按如下操作此时如果电脑黑屏了,请不要紧张!如果因为点错了,结束了别的任务,请...
  • 2、鼠标选到, 入校时间, 然后在有效性规则中输入, month([入校时间])=9 。3、具体解释:[入校时间]表示的是入校时间这一列所有时间,month()表示取某日期月份。4、小提示:输入英文和各种符号的时候最好是输入法...
  • Project中三种任务类型解释

    千次阅读 2020-03-14 22:19:49
    概述 Project--文件---选项---日程里,...资源单位定义:单位表示将工时资源的时间分配给任务的百分比。详细阅读 即资源单位固定不变,不会随着工期的改变而改变。修改资源单位时,任务工期则反比例变化。 举例:...
  • 是否觉得日常工作很无序,经常工作杂乱无章,丢三落四,不能很好地控制每样工作的进度? (点击放大下图) 我一直在关注 ToDoList这个开源项目,它是一个简单有效的个人任务管理器,一树状结
  • 一、要有一个能胜任的人二、要有明确的完成时间三、要有明确的完成标准四、 布置完任务,让员工复述一遍五、做好汇报要求,检查进展 一、要有一个能胜任的人 分配任务一定要落实到具体的人。同时,这个人要能胜任这...
  • ETL任务调度

    千次阅读 2020-06-16 15:25:45
    ETL任务用于定义数据的抽取,转换及装载规则。...定时调度难以处理多个相关ETL任务间的依赖关系,也无法有效处理ETL异常。对于某些不具备定时调度功能的ETL软件可以采用操作系统提供的定时功能,如Li
  • 复制下方代码,在业务需要处调用(定时任务状态和执行周期被修改后),一定要在项目启动时后立刻执行一次库中全数据调用此方法,List<Cron> crons Cron中一定要有业务类的包加类名...
  • 导语:在前面我们讲过了阿里云分布式任务调度平台,今天我们从架构和技术实现上来为大家讲解腾讯云分布式任务调度系统TCT(Tencent CloudTask)如何实现任务调度的精准实时、稳定高效,以及任务的切分和编排。...
  • 设置project甘特图任务间的前置重叠时间(任务相关性:两个链接任务之间的关系;通过完成日期和开始日期之间的相关性进行链接。有四种任务相关性类型:“完成-开始”(FS)、“开始-开始”(SS)、“完成-完成”(FF) 和...
  • FreeRTOS任务控制API函数主要实现任务延时、任务挂起、解除任务挂起、任务优先级获取和设置等功能。... 调用vTaskDelay()函数后,任务会进入阻塞状态,持续时间由vTaskDelay()函数的参数xTicksToDelay
  • 什么电脑连不上wifi显示没有有效的ip配置卡饭网本站整理2018-10-18网络连接错误估计是我们在平时使用电脑连接网络的时候最经常会遇到的故障了,想必有很多用户就有遇到网络连接的时候显示本地连接没有有效的ip配置...
  • 常用分布式计算任务调度算法

    万次阅读 多人点赞 2019-05-10 10:12:38
    如何采取有效的调度策略来平衡各节点的负载,从而提高整个系统资源的利用率,已成为人们的研究热点。 集群具有可扩展性、 高可用性、高性能、高性价比等优点,作为存储区域网的存储设备具有天生的优势。随着PC机的...
  • FreeRTOS 是一个可裁剪、可剥夺型的多任务内核,而且没有任务数限制。FreeRTOS 提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。 FreeRTOS 是用 C 和汇编来写的,其中绝大部分都是用 C 语言编写...
  • 在Windows10里面,触发器持续时间不能设置成无限期。 一个可以定时执行的有效设置如下(如果选择为无限期则无法运行): 然而在WindowsServer 2012R2 里面设置成无限期就可以运行,不知道为什么。 ...
  • 一招彻底解决win10开机桌面及任务栏卡死问题

    万次阅读 多人点赞 2021-10-03 09:33:28
    把鼠标移动到桌面底部任务栏显示鼠标的小圆圈一直在加载,若此时多次点击任务栏则会导致资源管理器崩溃并重新启动,重启服务后资源管理器再次陷入卡死。。。如此循环往复,老折磨人了qwq… 尝试过的几种解决方案: ...
  • 一、job 定时任务的创建方式 1、使用线程创建 job 定时任务 /** * TODO 使用线程创建 job 定时任务 * @author 王松 * @date 2019/9/14 0014 22:12 */ public class JobThread { public static class Demo01 { ...
  • FreeRTOS任务管理

    千次阅读 2022-01-02 17:22:46
    一、任务函数 务是由 C 语言函数实现的。唯一特别的只是任务的函数原型,其必须返回 void,而且带有一个 void 指针参数。 每个任务都是在自己权限范围内的一个小程序。其具有程序入口,通常会运行在一个死循环中,也...
  • 简明扼要的理解: Scheduler 调度程序-任务执行计划表,只有安排进执行计划的任务Job(通过scheduler.scheduleJob方法安排进执行计划),当它预先定义的执行时间到了的时候任务触发trigger),该任务才会执行。...
  • 神经网络的多任务学习概览

    千次阅读 2019-05-24 15:39:45
    1. 前言   在机器学习中,我们通常关心优化某一特定指标,不管这个指标是一个标准值,还是...为了达到这个目标,我们训练单一模型或多个模型集合来完成指定得任务。然后,我们通过精细调参,来改进模型直至性能不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 682,618
精华内容 273,047
关键字:

任务有效时间是什么意思