精华内容
下载资源
问答
  • 对象模型架构
    千次阅读
    2019-05-23 09:49:34

           我们可以将软件架构归纳成 5 种模型:结构模型、框架模型、动态模型、过程模型和功能模型。最常用的是结构模型和动态模型

    (1)结构模型。这是一个最直观、最普遍的建模方法。这种方法以架构的构件、连接件和其他概念来刻画结构,并力图通过结构来反映系统的重要语义内容,包括系统的配置、约束、隐含的假设条件、风格、性质。研究结构模型的核心是架构描述语言

    (2)框架模型。框架模型与结构模型类似,但它不太侧重描述结构的细节而更侧重于整体的结构。框架模型主要以一些特殊的问题为目标建立只针对和适应该问题的结构。

    (3)动态模型。动态模型是对结构或框架模型的补充,研究系统“大颗粒”的行为性质。例如,描述系统的重新配置或演化。动态可能指系统总体结构的配置、建立或拆除通信通道或计算的过程。

    (4)过程模型。过程模型研究构造系统的步骤和过程。因而结构是遵循某些过程脚本的结果。

    (5)功能模型。该模型认为架构由一组功能构件按层次组成,且下层向上层提供服务。它可以看作是一种特殊的框架模型。

    4+1” 视图模型从 5 个不同的视角包括逻辑视图、进程视图、物理视图、开发视图和场景视图来描述软件架构。每一个视图只关心系统的一个侧面,5 个视图结合在一起才能反映系统的软件架构的全部内。

    (1)逻辑视图:主要支持系统的功能需求,即系统提供给最终用户的服务。在逻辑视图中,系统分解成一系列的功能抽象,这些抽象主要来自问题领域。这种分解不但可以用来进行功能分析,而且可用作标识在整个系统的各个不同部分的通用机制和设计元素。在面向对象技术中,通过抽象、封装和继承,可以用对象模型来代表逻辑视图,用类图来描述逻辑视图。逻辑视图中使用的风格为面向对象的风格,逻辑视图设计中要注意的主要问题是要保持一个单一的、内聚的对象模型贯穿整个系统。

    (3)进程视图:侧重于系统的运行特性,主要关注一些非功能性的需求,例如系统的性能和可用性。进程视图强调并发性、分布性、系统集成性和容错能力,以及逻辑视图中的主要抽象的进程结构。它也定义逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。进程视图可以描述成多层抽象,每个级别分别关注不同的方面。

    (4)物理视图:主要考虑如何把软件映射到硬件上,它通常要考虑到解决系统拓扑结构、系统安装、通信等问题。当软件运行于不同的节点上时,各视图中的构件都直接或间接地对应于系统的不同节点上。因此,从软件到节点的映射要有较高的灵活性,当环境改变时,对系统其他视图的影响最小。

    (5)场景:可以看作是那些重要系统活动的抽象,它使四个视图有机地联系起来,从某种意义上说,场景是最重要的需求抽象。在开发架构时,它可以帮助设计者找到架构的构件和它们之间的作用关系。同时,也可以用场景来分析一个特定的视图,或描述不同视图构件间是如何相互作用的。场景可以用文本表示,也可以用图形表示。

    逻辑视图和开发视图描述系统的静态结构,而进程视图和物理视图描述系统的动态结构。对于不同的软件系统来说,侧重的角度也有所不同。例如,对于管理信息系统来说,比较侧重于从逻辑视图和开发视图来描述系统,而对于实时控制系统来说,则比较注重于从进程视图和物理视图来描述系统。

    更多相关内容
  • 如果说事务脚本是面向过程的,那么领域模型就是面向对象的。面向对象的一个很重要的点就是:“把事情交给最适合的类去做”,即:“你得在一个个领域类之间跳转,才能找出他们如何交互”,Martin Flower说这是面向...
  • 第二单元:技术架构视图─面向对象程序设计原则与模式 59 用GRASP模式指导设计 62 领域模型 96 面向对象设计的基本原则 132 第三单元:用UML辅助系统分析与设计 177 UML简介及常见疑难问题辨析 ...
  • ArcGIS 对象模型,二次开发必备,了解结构设计,架构学习,GIS新手。
  • 面向对象架构设计 面向对象设计的活动 系统架 构设计 用户界 用例设 面设计 计 面向对 象设计 活动 数据库 类设计 设计 面向对象设计活动之一 架构设计 架构设计的目的是要勾画出系统的总体结构 这项工作由经验...
  • 通过数据对象预分类模型将数据对象按照读写倾向性分配到内存器 件中,构建二室模型对数据对象的迁移和备份速率进行计算,确保系统的稳定性和可靠性。模拟算例结果表明,与相同能耗的内存云架构相比,该混合内存云...
  • 数据架构与数据模型

    千次阅读 2020-06-26 21:12:57
    数据架构与数据模型 数据架构与数据模型两者关系经常是讨论的热点。 因为数据架构里面主要工作和产物就是数据建模和数据模型,那为什么要将两者作为独立的两个过程域。 本文将对此问题进行探讨。 在《数据管理...

    数据架构与数据模型

    数据架构与数据模型两者关系经常是讨论的热点。 因为数据架构里面主要工作和产物就是数据建模和数据模型,那为什么要将两者作为独立的两个过程域。 本文将对此问题进行探讨。

     

    在《数据管理知识手册》(DMBOK 2)的第二版中,数据架构定义为管理数据资产的蓝图

    从广义上讲,数据架构会定义,'我们作为一家企业要做什么数字化业务?最适合该目的的技术是什么,以及它们如何协同工作?”

     

     

    另一方面,数据架构是企业架构(Enterprise Architecture)的一部分。 企业架构从更宏观的视角看待业务和IT,包括业务流程,业务组织架构和业务目标。这对数据架构以及安全性和合规性都很重要。

    数据架构还需要决策哪个最佳平台是适合当前业务目标的,是否迁移到基于云的解决方案,产品业务相关的安全风险,以及数据库的选择。

    在许多公司数据化转型中,要做的第一件事就是绘制其现有架构图。

    数据的独特之处在于它既是业务角色,又是技术角色。有的数据架构师只专注于平台和IT角色,他们的权限仅限于技术层面的决策,例如要使用哪种服务器或备份和恢复选项。但真正的架构师必须对业务也熟悉,像首席数据官一样。”

    当企业的数据需求超过IT部门满足这些需求的能力时,IT部门可能会感到压力巨大。

    企业实际情况是业务人员缺乏IT信息无法构建解决方案,而IT人员专注于技术忽略了业务需求。许多公司正在通过创建一个新的数据部门来解决这种情况,该部门业务和IT紧密配合,因为两者缺一个都不行,需要这两个技能的综合体。

     

    数据模型的定义

    DMBOK 2将数据建模和设计定义为“数据模型是形式化的表达和沟通数据需求的过程和产物”。数据模型通过对实体、关系和属性等描述,使组织能够理解其数据资产。如业务的核心概念,客户、产品、员工等。

    数据建模从业务和技术角度设计。“数据建模师可能擅长对特定系统或特定业务案例进行建模。但数据架构师必须看得更广泛,“数据建模通常对物理层上特定数据库的设计,或逻辑、概念层上特定业务领域的设计。

     

    需要将数据架构和数据建模,与组织过程结合起来。

    数据架构和数据建模应该与组织的核心业务流程和活动保持一致。

    • 例如,当销售部门想要购买一个新的电子商务平台时,它需要集成到整个体系结构中。如果不知道现有的数据输入和输出流程是什么,就很难知道新平台如何集成。“数据模型通常就是在这里出现的。试着比较两个系统的数据,我们如何整合?找出系统间的关联关系”

    在较高的层次上,数据模型记录了企业核心的业务对象和业务规则:客户、产品、部件等。不需要花几个月的时间去创建一个完美的数据模型,不断迭代和沉淀,即使只是问一些简单的描述,对数据资产的理解也能起到很大的作用。

    • 一位即将实施一个新系统的客户,他们召集所有人一起进行两小时的实施前数据模型的评审会议。在这个过程中,他们发现了一些重大的错误。结果他们很高兴把一些问题扼杀在萌芽状态,否则这将是未来的噩梦。
    • 另一个客户购买了多个系统,但他们的数仓遗漏一个设计来支持一个客户可以有多个电子邮件地址。他们花了数周重构数仓才解决。如果更早关注数据模型设计,他们就会知道设计与他们的业务规则不匹配。
    • 另一家公司正在建设一个人力资源系统,员工可以担任多个工作角色,在数据模型设计中表明“员工可能有多个角色。这是数据建模的基本常识,但他们没有关注数据模型的设计。现在公司检查每一个业务系统,并将其与他们的企业级数据模型进行比较,因为“他们的企业级数据模型就是他们的业务运营模式
    • 另一个更大的客户现在要求供应商在交付软件之前遵守特定的数据标准。因为他们是一家大公司,基于他们的购买力,供应商必须遵守相关规则。公司对其系统的数据模型进行管控,后面数据资产的集成和服务就越能顺利进行。

     

    随着数据中台的负面声音越来越多。 企业将回归基础,数据治理和企业架构曾经被认为是“老派”(Old school)。当一切尘埃落定,喧嚣归于平静,数据基础建设将更加脚踏实地,因为它是行之有效的唯一途径。

     

    这个行业经历了一个“青少年阶段”,一些人说“我们将打破所有的规则,我们不再需要那些愚蠢的数据模型了”。 但我认为我们现在已经走上了更成熟的阶段,深谋远虑的设计,对未来长期发展会有很大的帮助

     

    业务人员越来越意识到数据资产的重要性并参与其中,业务和IT的融合。这些融合最终都体现在数据模型上。数据管理、数据体系结构和数据建模等基础知识的需求正在增加,人们希望探索创新,他们意识到,如果不先建立基础,就是不断的原地踏步。 

     

    Datablau Data Modeler简介

    DDM(Datablau Data Modeler)是国内首创的专业建模工具,是数据治理体系的重要组成部分。数据模型是“所有系统、文档和流程中包含的所有数据的语境。是生数据的知识。”换句话说,如果没有数据模型,组织IT系统中收集和存储的所有数据都会失去意义,也就没有业务价值。


    Datablau简介

    北京数语科技有限公司(以下简称“数语科技”)成立于2016年,是专注于数据治理领域的国内自主知识产权的专业软件产品提供商,主要业务是数据治理软件产品的研发与销售。数语科技的创始团队全部来自CA erwin,天然具有世界级水准的软件产品开发能力。

    创始人兼CEO王琤:曾任职erwin全球研发总监,拥有超过十年以上数据建模和数据管理的从业经验。

    CTO朱金宝:曾任职erwin首席架构师,先后服务多家全球知名企业,并曾全程参与中国建设银行数据治理项目,目前全面负责Datablau软件平台的研发工作和关键项目的实施工作。

    数语科技根据DAMA理论和中国国情独立研发Datablau新一代数据治理平台,平台由Datablau DDM数据建模产品和Datablau DAM数据资产管理平台两大部分组成,全部拥有软件著作权和知识产权,一站式全面满足中国企业的数据治理需求。其中数据建模产品DDM是Datablau填补国内空白的重量级产品,帮助中国客户摆脱国外产品的垄断现状。2018年,Datablau数据治理平台通过了中国信息通信研究院严格苛刻的产品评测并获得的“最佳大数据产品”奖。

    更多渠道了解我们
    官网:www.datablau.cn
    关注我们,及时了解数据治理干货

     

    展开全文
  • 传统三层架构是一种软件架构,是一种典型的、基于贫血模型的、面向过程的JavaWeb分层方式。该架构分为以下三个层次: 数据访问层(DAL - Data Access Layer)即对包括数据库在内的数据源进行操作的部分。 业务...

    一、架构之传统三层架构

    传统三层架构是一种软件架构,是一种典型的、基于贫血模型的、面向过程的JavaWeb分层方式。该架构分为以下三个层次:

    1. 数据访问层(DAL - Data Access Layer)即对包括数据库在内的数据源进行操作的部分。
    2. 业务逻辑层(BLL - Business Logic Layer)即对业务数据进行逻辑处理的部分。
    3. 表现层(UI - User Interface)即与用户交互的部分。

    分层的目的是为了解耦和明确责任。开发人员可以只关心自己所负责的那一层,因为他只需要知道上一层提供了哪些接口,从而利用这些接口进行编程。而上一层的开发人员在不改变接口的情况下,可以任意地替换具体的实现,从而实现松耦合

    相比更传统的架构,三层架构有着明显的优势,但也有不可忽视的缺点。初期的JavaWeb在JSP内同时进行数据库读写、业务逻辑处理和页面渲染,简单而暴力。而今的架构,在JSP之上增加了一个处理业务逻辑的中间层和一个封装了数据库操作的数据访问层,毫无疑问造成了代码量的大幅度上升和效率的下降。

    本项目中,Mybatis承担数据访问的责任;SpringMVC包揽了页面渲染和请求调度;Spring的IoC和AOP组成了整个项目的支架;Spring的事务控制为业务逻辑层的一致性提供了强有力的保障。

    不同的语言、不同的框架对三层架构有不同的演绎,但殊途同归,业务数据的流向是一致的。下面以一个点菜的例子来示范这一点:

    二、架构之领域模型架构

    领域模型的概念源于2004年出版的经典著作《Domain-Driven Design –Tackling Complexity in the Heart of Software》(《领域驱动设计:软件核心复杂性应对之道》,简称DDD)。所谓领域,即软件所关注的主题区域:

    每个软件程序的目的都是为了执行某项活动,或是满足用户的某种需求。用户会把软件程序应用于某个主题区域,这个区域就是软件的领域。一些领域涉及物质世界,例如机票预订程序的领域中包括飞机乘客在内。有些领域则是无形的,例如会计程序的金融领域。——摘自《领域驱动设计》第一章

    该著作提出,设计软件分为两个步骤:

    1. 由领域专家、开发人员、设计人员就某一领域进行交流,从中发现领域概念,并根据需要,划定边界,将边界内的概念抽象为领域模型。
    2. 由领域模型驱动软件设计,用代码来实现该模型。

    基于此,DDDSample官网提出了另一种三层架构:

    如图,该架构分为界面(Interfaces)、应用(Application)和领域(Domain)三层,以及一个基础设施(Infrastructure),是一种基于充血模型的、面向对象的分层方式。其各层职责如下:

    2.1、界面层(Interface)

    负责所有与外部系统的交互,包括WebService、RMI或REST等。包括外观(Facade)、装配(Assembler)和数据传输对象(DTO)三类组件:

    1. DTO组件:因为领域对象不适合暴露给用户,因此需要在返回给用户之前,重新封装为DTO,只暴露我们希望暴露的内容。同时,DTO还有减少请求的次数、简化传输对象、避免代码重复等作用。
    2.  Assembler组件:正如其字面上的含义,Assembler是一个装配工人,负责DTO与领域对象的转换。
    3. Facade组件:Facade是外观模式的践行者,作用与传统三层架构的Controller类似,负责将一个或多个service方法组合起来,然后封装为一个接口提供为外部系统。换句话说,他负责将外部请求委派给一个或多个service进行处理。他本身不处理任何业务逻辑。

    2.2、应用层(Application)

    应用层的主要组件就是Service,其粒度与传统三层架构的service一致。差别在于,传统三层架构的service层负责业务逻辑的处理,而领域模式三层架构的service只负责将业务委派给领域对象进行处理。

    2.3、领域层(Domain)

    这一层是整个软件的核心,几乎包括了所有的业务逻辑。他包括了Entity(实体)、Value Object(值对象)、Domain Event(领域事件)和Repository(仓储)等领域组件。下面以时下很火的共享自行车为例来简单解释这几个组件:

    1. Entity/Value Object:实体是一个在业务领域有着唯一标识的对象。实体有属性和状态,有业务行为,其业务行为会影响他的属性和状态。而值对象呢,用于描述没有唯一标识的对象。
    2. Domain Event:简单的说,实体触发事件,实体绑定事件。用户的租赁行为会触发租赁事件;而自行车绑定了租赁事件,当事件发生时,自行车的使用状态发生改变。
    3. Repository:仓储类似于传统三层架构的DAO接口,但只是接口,不包括实现。

    举个栗子,当我们希望对每一辆共享自行车进行管理时,他应该被设计为实体,有唯一编号作为标识,有颜色、重量、价格、品牌等属性,有位置状态、使用状态,有租赁行为。当其被租赁时,其位置状态和使用状态可能发生改变。

    同样是共享自行车,如果我们的系统只为了统计各地区各品牌自行车的使用情况,即我们只关心他是什么,而不关心他是谁,那么他应该被设计为值对象。

    2.4、基础设施(Infrastructure)

    作为基础设施,Infrastructure负责给三层架构提供支持。所有与具体平台、框架相关的实现都会在这一层实现,以免影响三层架构职责的纯粹性、以及污染领域模型。对象持久化的具体实现也放在基础设施里。

    三、传统三层架构 VS 领域模型架构

    从领域模型架构各层的职责可以看出,他和传统三层架构最大的差别在于,领域模型架构的业务逻辑包含在领域模型里,而传统三层架构的业务逻辑在Service层。为了实现这一点,领域模型还引入了在Javascript和ActionScript中常见的事件机制;而传统三层架构中,领域模型的属性和行为严格分离,变成了POJO和Service

    个人认为,两种架构的出发点是相同的,一样是先挖掘领域概念,然后建模,再根据模型进行设计。差别在于,当业务逻辑的复杂程度在单个开发人员或单个团队的把控能力范围之内时,采用面向过程的传统三层架构可以很快地完成建模工作,并开始业务逻辑的设计;而当业务逻辑复杂到一定程度时,则有必要花更多的时间用在建模上,去抽取模型的行为,去设计和关联模型事件,以期在后续迭代中,开发人员只需面对一个个可以清晰地理解的领域对象,而不是一坨动辄上千行的某业务行为的逻辑代码。

    综上考虑,大部分web系统可以采用传统三层架构。

    四、模型的形态

    不同的架构、不同的层、不同的应用场景中有着不一样的建模需求,因此表述相同概念的模型可能会有不同的“形态”,例如:

    1. 充血模型 - 领域模型架构中包含了领域逻辑和领域属性的领域模型。
    2. 失血模型 - 传统三层架构中只有get/set方法,没有业务逻辑的POJO对象。
    3. 贫血模型 - 类似充血模型,但是不包括持久化相关逻辑。
    4. PO - Persistant Object,持久化对象,即DAO从JDBC取出来的对象。传统三层架构中,PO即POJO组件中的对象,存在于DAO和Service之间。
    5. DO - Domain Object,领域对象。领域模型架构中,PO从数据库取出来后,有一个“重建”的概念,即根据数据还原实体,这个被还原的实体就是DO,存在于DAO和Service之间。
    6. DTO - Data Transfer Object,数据传输对象。上面在领域模型架构的界面层提过。对传统三层架构来说,该对象存在于Service和Controller之间。PO到DTO的转换可以在service实现,也可以在controller实现。本教程在Service进行转换。
    7. VO - View Object,视图对象。Controller在返回DTO给视图时,可能还需要包括状态信息—例如操作成功/失败的状态吗、提示文本等—这时就需要在DTO外面再包一层,即View Object。该对象存在于Controller和Web之间,由Controller进行装配。

    四、MVC模式

    跟架构密切相关的另一个词汇是MVC模型,即Model-View-Controller模式。MVC模式是一种设计软件的模式,不是一种架构。在传统三层架构中,MVC的理念被应用在表现层:View提交请求数据给Controller,Controller返回数据用于渲染View,两者之间以Model(VO - ViewModel)的形式进行通信。如下图:

    参考文章地址:https://my.oschina.net/mzdbxqh/blog/865046

     

    展开全文
  • 主动对象计算模型在工业机器人系统中的应用.pdf
  • 第二单元:技术架构视图─面向对象程序设计原则与模式 59 用GRASP模式指导设计 62 领域模型 96 面向对象设计的基本原则 132 第三单元:用UML辅助系统分析与设计 177 UML简介及常见疑难问题辨析 178 借鉴RUP的UML建模...
  • 在此技术架构基础之上,提出了一种基于MDA((model driven architecture)的分布式对象模型框架代码生成方法。该方法以模型为基本输入,通过灵活的转换规则配置,生成具体平台的模型,并依次自动生成框架代码,从而有效提高...
  • Encoder-Decoder 模型架构详解

    千次阅读 2022-03-01 10:03:49
    文章目录概述Seq2Seq( Sequence-to-sequence )Encoder-Decoder的缺陷Attention 机制的引入Transformer中的Encoder-Decoder ...Encoder-Decoder 并不是一个具体的模型,而是一个通用的框架。 Encoder 和

    概述

    • Encoder-Decoder 并不是一个具体的模型,而是一个通用的框架。
    • Encoder 和 Decoder 部分可以是任意文字,语音,图像,视频数据
    • 模型可以是 CNN,RNN,LSTM,GRU,Attention 等等
    • 所谓编码,就是将输入序列转化转化成一个固定长度向量, 解码,就是讲之前生成的固定向量再转化出输出序列。

    注意点:

    1. 不管输入序列和输出序列长度是什么,中间的「向量 c」长度都是固定的。 这是Encoder-decoder框架的的缺点
    2. 不同的任务可以选择不同的编码器和解码器 (RNN,CNN,LSTM,GRU)。
    3. Encoder-Decoder 是一个 End-to-End 的学习算法,以机器翻译为力,可以将法语翻译成英语。这样的模型也可以叫做 Seq2Seq

    Seq2Seq( Sequence-to-sequence )

    • 输入序列和输出序列的长度是可变的
    • Seq2Seq 强调目的,不特指具体方法,满足输入序列,输出序列的目的,都可以统称为 Seq2Seq 模型。
    • Seq2Seq 使用的具体方法基本都是属于 Encoder-Decoder 模型的范畴。

    For example
    在这里插入图片描述

    • 在训练数据集中,我们可以在每个句子后附特殊字符 ”“ (end of sequence) 以表示序列终止
    • 每个句子前用到了特殊字符 “” (begin of seqence) 表示序列开始
    • Encoder 在最终时间步的隐状态作为输入句子表征和编码信息。??
    • Decoder 在各个时间步中使用输入句子的编码信息和上一个时间步的输出以及隐藏状态作为输入。 ??

    案例:英文 it is a cat. 翻译成中文的过程。

    1. 先将整个源句子进行符号化处理,以一个固定的特殊标记作为翻译的开始符号和结束符号。此时句子变成 it is a cat .
    2. 对序列进行建模,得到概率最大的译词,如第一个词为 “这”。将生成的词加入译文序列,重复上述步骤,不断迭代。
    3. 直到终止符号被模型选择出来,停止迭代过程,并进行反符号化处理,得到译文。

    Encoder-Decoder的缺陷

    中间的「向量 c」长度都是固定的

    • RNN 结构的 Encoder-Decoder 模型存在长程梯度消失问题
    • 对于较长的句子,我们很难寄希望于将输入的序列转化为定长的向量而保存所有有效信息
    • 即便 LSTM 加了门控机制可以选择性遗忘和记忆,随着所需翻译的句子难度增加,这个结构的效果仍然不理想

    Attention 机制的引入

    • Attention 就是为了解决信息过长导致信息丢失的问题
    • 在 Attention 模型中,我们翻译当前词,会寻找源语句中相对应的几个词语,然后结合之前已经翻译的序列来翻译下一个词

    在这里插入图片描述

    Attention 如何准确将注意力放在关注的地方呢?

    • 对 RNN 的输出计算注意程度,通过计算最终时刻的向量与任意 i 时刻向量的权重,通过 softmax 计算出得到注意力偏向分数,如果对某一个序列特别注意,那么计算的偏向分数将会比较大。
    • 计算 Encoder 中每个时刻的隐向量 ??
    • 将各个时刻对于最后输出的注意力分数进行加权,计算出每个时刻 i 向量应该赋予多少注意力
    • decoder 每个时刻都会将 ③ 部分的注意力权重输入到 Decoder 中,此时 Decoder 中的输入有:经过注意力加权的隐藏层向量,Encoder 的输出向量,以及 Decoder 上一时刻的隐向量
    • Decoder 通过不断迭代,Decoder 可以输出最终翻译的序列。

    引入 Attention 的 Encoder-Decoder 框架下,完成机器翻译任务的大致流程如下:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    Transformer中的Encoder-Decoder

    • Transformer 中的 Attention 是 Self-Attention (自注意力机制),而且是 Multi-Head Attention (多头注意力机制)

    在这里插入图片描述

    Attention 机制

    • Source 是由一系列 组成,此时给定 Target 中某个元素 Query,通过计算 Query 和 各个 Key 的相似性,得到每个 Key 对 Value 的权重系数,然后对 Value 进行加权求和,即得到最终 Attention 数值。
      在这里插入图片描述

    self-Attention

    • 指的不是 Target 和 Source 之间的 Attention 机制,而是 Source 内部元素之间或者 Target 内部元素之间发生的 Attention 机制,也可以理解为 Target = Source 的特殊情况下的 Attention 机制。
    • Source = Target,也即是 Key = Value = Query
    • Self-Attention 可以捕获同一个句子中单词之间的一些句法特征 (图 1:有一定距离的短语结构) 或语义特征 (图 2:its 指代的对象 Law)。
      在这里插入图片描述
    • 引入 Self-Attention 后会更容易捕获句子中长距离相互依赖特征,因为 Self-Attention 在计算过程中直接将句子任意两个单词的联系起来
    • 由于不依赖时间序列这一特性,Self-Attention 增加了计算的并行性。

    Multi-Head Attention

    • 将模型分为多个头,形成多个子空间,可以让模型去关注不同方向的信息
    • Transformer 或 Bert 的特定层是有独特功能的,底层更偏向于关注语法,顶层更偏向于关注语义
    • 同一层中,总有那么一两个头独一无二,和其它头关注的 Token 不同
    • 下面是两个 Self-Attention 执行同一个句子时候展现的不同的注意力,利用多头机制,明显学会了不同的任务下采取不一样的注意力。

    在这里插入图片描述

    Transformer 中 Encoder 由 6 个相同的层组成,每个层包含 2 个部分:

    • Multi-Head Self-Attention
    • Position-Wise Feed-Forward Network (全连接层)

    Decoder 也是由 6 个相同的层组成,每个层包含 3 个部分:

    • Multi-Head Self-Attention
    • Multi-Head Context-Attention
    • Position-Wise Feed-Forward Network

    上面每个部分都有残差连接 (redidual connection),然后接一个 Layer Normalization。
    在这里插入图片描述

    encoder-decoder的局限性:
    编码和解码之间的唯一联系就是一个固定长度的语义向量C。编码器要将整个序列的信息压缩进一个固定长度的向量中去 。

    • 语义向量无法完全表示整个序列的信息
    • 先输入的内容携带的信息会被后输入的信息稀释掉

    注意力模型
    模型在产生输出的时候,还会产生一个“注意力范围”表示接下来输出的时候要重点关注输入序列中的哪些部分,然后根据关注的区域来产生下一个输出,如此往复。

    在这里插入图片描述

    attention模型最大的区别就在于它不在要求编码器将所有输入信息都编码进一个固定长度的向量之中。

    • 编码器需要将输入编码成一个向量的序列,而在解码的时候,每一步都会选择性的从向量序列中挑选一个子集进行进一步处理。
    • 这样,在产生每一个输出的时候,都能够做到充分利用输入序列携带的信息。、

    编码解码器的表示
    在这里插入图片描述

    几点说明

    • 不论输入和输出的长度是什么,中间的“向量c”长度都是固定的(这是它的缺陷所在)。
    • 根据不同的任务可以选择不同的编码器和解码器(例如,CNN、RNN、LSTM、GRU等)
    • Encoder-Decoder的一个显著特征就是:它是一个end-to-end的学习算法。
    • 只要符合这种框架结构的模型都可以统称为Encoder-Decoder模型。

    Seq2Seq与Encoder-Decoder的关系
    在这里插入图片描述Encoder-Decoder强调的是模型设计(编码-解码的一个过程),Seq2Seq强调的是任务类型(序列到序列的问题)。

    Encoder-Decoder的四种模式
    最简单的解码模式
    在这里插入图片描述

    带输出回馈的解码模式

    在这里插入图片描述

    带编码向量的解码模式

    在这里插入图片描述

    带注意力的解码模式

    在这里插入图片描述
    参考链接:

    1. https://zhuanlan.zhihu.com/p/109585084
    2. https://blog.csdn.net/u014595019/article/details/52826423
    3. https://blog.csdn.net/u010626937/article/details/104819570
    展开全文
  • #资源达人分享计划#
  • 三层架构模型

    千次阅读 2022-02-21 22:10:17
    模型层主要存储的是模型对象实体,这些实体的组合叫做实体类库,它是数据库表的映射对象,在信息系统软件实际开发的过程中,要建立对象实例,将关系数据库表采用对象实体化的方式表现出来,辅助软件开发中对各个系统...
  • 本文将对比分析DDD分层架构、整洁架构、六边形架构。 整洁架构 又名“洋葱架构”(看图就懂),体现了分层思想。 同心圆代表应用软件的不同部分,由...领域模型的主体是实体(可以是一个带方法的对象,也可以是一个数据
  • 软件架构设计|C4模型

    千次阅读 2021-06-17 11:13:18
    在做系统架构设计过程中,有很多工具,今天给大家推荐一款比较简洁具备层次化的设计模型,C4模型;希望能为大家系统设计起到一定的帮助 什么是C4模型 C4 模型是来自 software architecture for developers 一书的...
  • 先来了解一下什么是UML? 统一建模语言(Unified Modeling Language, UML)用于对软件进行可视化描述、构造和建立软件系统...2、适合用于迭代式的开发过程,是为支持大部分现存的面向对象开发过程而设计的,强调在...
  • 本文重在模型之间的比较(优缺点、适用范围等),而不在于模型定义的阐述.^-^ 不过还是要先提几个基本概念滴: 1.软件生存周期:软件是会迭代的,软件从生到死的整个过程被称为软件生命周期(Software Development...
  • 基于数据挖掘和面向对象技术的CAPP工艺知识模型的研究.pdf
  • 文章目录前言一、架构的演变历程二、领域驱动初窥1 传统软件开发中的痛点2 什么是领域驱动设计战略设计战术设计总结3 领域模型4 分层架构模型三层架构四层架构六边形架构三、架构设计进阶1 DDD下的项目目录结构2 ...
  • 一、架构思维概述 对于架构思维本身仍然是类似系统思维,结构化思维,编程思维等诸多思维模式的一个合集。由于架构的核心作用是在业务现实世界和抽象的IT实现之间建立起一道桥梁,因此架构思维最核心的就是要理解到...
  • 软件架构设计分层模型和构图思考

    千次阅读 2021-03-20 00:17:33
    点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台回复“k8s”,可领取k8s资料今天谈下架构设计中的分层思维和分层模型以及基于分层思维下的架构构图逻辑。架...
  • 数仓架构实践2:京东四层模型架构

    千次阅读 2019-05-17 14:21:31
    京东数仓大致分四层架构 BDM:数据缓冲层,与源系统保持一致,相当于传统数仓的ODS。 FDM:基础数据层,按主题设计,数据融合,存放明细历史数据,相当于传统数仓的EDW。 GDM:通用汇总数据层,明细粒度,可以查询到...
  • DDD领域驱动设计四、分层架构和代码模型

    千次阅读 多人点赞 2020-12-23 18:45:13
    通过这些层次划分,我们可以明确微服务各层的职能,划定各领域对象的边界,确定各领域对象的协作方式。。 DDD的分层架构如图:从上到下依次是:用户接口层、应用层、领域层和基础层。 那 DDD 各层的主要职责是什么呢...
  • 架构设计之4+1视图模型

    千次阅读 2021-04-17 17:40:05
    架构设计 架构设计是重某一视角或不同的抽象层面对系统进行表述,描述了从不用角度应该重点关注的方面和应该省略的无关的实体。 每个软件系统都有很多个角色要参与进来:用户、开发人员、MDE、SE、系统集成人员、...
  • API嵌入Power BI 报表报错-无法加载与此报表关联的模型架构 我们使用API嵌入了Power BI 报表,之前的访问、操作等一直都是成功的,然后今天访问其中一个报表时,报错了,报错信息如下: 无法加载模型 无法加载与此...
  • 领域模型管理与AOP

    2021-02-27 12:24:40
    领域模型所需基础架构当中最显著的当然是持久化——通常是持久化到关系型数据库中,也就是对象/关系(O/R)映射出场的地方。但是,情况并不止持久化那么简单。在一个复杂的应用中,用来在运行时管理领域模型对象的...
  • 结合面向对象的分析和设计方法,提出了面向对象的、参数化的通用粒子系统模型架构设计。
  • Thinking in UML 学习笔记(一)——建立对象模型

    千次阅读 多人点赞 2014-04-29 15:01:33
    一、面向对象的本质面向对象的本质是抽象,当系统达到了超越其处理能力的程度,我们可以抽象出我们能够处理的范围来提成抽象级别,这样就可以构建更大、更复杂的系统。现实世界和对象世界之间存在着一道沟壑,这道...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 333,921
精华内容 133,568
热门标签
关键字:

对象模型架构