精华内容
下载资源
问答
  • 5G:关键技术介绍

    万次阅读 2017-11-27 21:24:13
    毫米波关键技术   2016.9.25 19:37  4-2 毫米波的其他应用  2016.9.25 20:35  4-3 毫米波信道测量与建模  2016.9.28 9:33 5低时延高可靠技术 5-0 低时延高可靠技术  2016.10.11 19:30 ...

    转载链接:http://bbs.c114.net/thread-920549-6-1.html

    【更新】
    1. 到底是什么是5G                                      2016.8.18   10:23
    2. 自包含帧结构         
    2-1. 自包含(Self-contained)帧结构 - 1   2016.8.18   23:07
    2-2. 自包含子帧 - 2                                    2016.8.19   23:10
    2-3. 自包含子帧 - 3                                    2016.8.20   17:35
    3.多址
    3-1 多址 - 引子                                          2016.8.26   16:14
    3-2 多址 - 2                                               2016.9.6     22:04
    3-3 多址 - 3                                               2016.9.10   22:46 
    3-4 多址 - 4                                               2016.9.11   9:58 
    3-5 多址 - SCMA                                       2016.11.24   22:16  
    4.毫米波
    4-0 毫米波                                                 2016.9.17  20:20
    4-1 毫米波关键技术                                   2016.9.25  19:37 
    4-2 毫米波的其他应用                                2016.9.25  20:35        
    4-3 毫米波信道测量与建模                         2016.9.28  9:33
    5低时延高可靠技术
    5-0 低时延高可靠技术                                2016.10.11 19:30
    5-1 资源分配 - 预留还是共享                      2016.10.22 13:59


    1. 到底啥是5G

    5G是正经5G,可惜被玩儿坏了。现在到处都说是5G技术,例如全双工,已经明确的被排除出5G的备选技术。还有一些技术(重灾区是多址)注定会被大量淘汰,据说现在在提案中出现八种多址技术,楼主估计NR最终最多接受三种:eMBB两种(DL、UL),IoT接受一种(UL)。其他还有一些其他备选技术也有点悬,例如编码。

    5G的正式定义来自于ITU。ITU的技术报告给出明确的三个场景、需求(KPI)、时间表(标准制定、提交、验证)。

    任何的标准组织(包括3GPP、IEEE、甚至CCSA)都可以按照要求的时间(2020年Q3)提交完整的解决方案,通过ITU指定的第三方机构验证后,能够满足ITU需求的的方案就被认定为5G标准。

    在3G阶段,通过验证,满足需求的标准有几个(CDMA 2000,WCDMA,TD-SCDMA,WiMAX),所以被称为IMT-2000 family。

    到了4G(IMT-Advanced),虽然3GPP2和IEEE都有各自的计划,但是因为缺乏运营商支持,最终都没得到实行。实际的4G标准只有来自3GPP的LTE-Advanced (Release 10 and forward)。

    5G的正式名字是IMT-2020,值得一提的是,这个名字最早是国内提出的。CAICT(信通院)领导的5G推进组英明的首创了IMT-2020这个名字(据说还注册了商标),最终被ITU采纳。

    2015年6月,ITU定义了IMT-2020的需求,目前已经进入评估准备阶段。在ITU-R WP5D工作组下设立了评估工作组,正在制定评估方法和报告模板。再次值得一提的是,评估组的co-chair是中国代表彭莹。

    ITU制定了计划、需求,5G还是需要具体的标准组织(SDO)落地的。目前,只有3GPP公布了完整的5G标准制定计划。计划在2019年完成全部标准,满足ITU的3个场景(eMBB、Massive IoT和URLLC)的全部KPI。其他标准组织里,IEEE近期也提出了5G计划(两种方案):采用双连接(或多连接)的方式接入3GPP 5G NR空口和提供融合了IEEE802.1多种接入方式(11ax、11ay等)的独立接入网。

    对应于LTE,3GPP的5G空口技术被称为New Radio(NR)。如果没有意外,未来的5G空口技术将被称为5G NR。


    2 - 1. 自包含(Self-contained)帧结构 - 1


    想来想去,还是先写帧结构吧,毕竟这个对中国标准界和我都有特殊的含义。

    不得不从LTE TDD的帧结构说起。

    LTE项目在3GPP启动之后,国内也开始了研究工作。主要思路之一就是延续TD-SCDMA的思路,设计LTE TDD方式的技术方案。由于LTE TDD比较拗口,同时也为了和TD-S统一,改称为TD-LTE。开始老外不太明白TD-LTE是啥,后来慢慢也就认可了,现在还有一个全球性的TD-LTE推进论坛,就叫Global TD-LTE Initiatives,简称GTI。

    当时的设计思路是与TD-S共享频谱,需要考虑邻频共存。由于TDD最大的干扰是交叉干扰(干扰源BS发送干扰受害BS接收),所以邻频共存就得到了一个必然的结果:TD-L的帧结构必须与TD-S完全一致 - 即0.625ms的子帧。这个设计在3GPP研究报告存在了很长时间,直到欧洲公司为了保证LTE FDD和TD-LTE设计的最大一致性,强行revise结论。TD-L的子帧被设计为和LTE FDD一致的1ms,相应的符号长度和CP长度也用了完全一样的设计。期间还有个小插曲,国内的某些领导不太满意TD-L帧结构被称为Alternative Frame structure,认为Alternative显得TD-L和LTE FDD似乎不对等,要求3GPP改为type 2 Frame Structure.




    2-2. 自包含子帧 - 2 

    在3G、4G时代,TDD系统虽然是主流标准之一,但由于TDD频段偏高,网络覆盖较差、运营商投资高,除了中国的特殊国情以外,其他地区主流运营商采用TDD系统独立组网、运营的并不多。

    话说到了5G时代,情况不太一样了。首先是新的FDD频率实在太难找了,唯一的可能就是二次数字红利(DD,Digital Dividend)广播业务退出的频段(600MHz),但这个频段涉及到广电清频这种多个行业协调问题,推动缓慢,目前只有美国进入了拍卖阶段。其次,1.8GHz – 2.6GHz之间这段频率基本都处于3G或4G的现网运营状态,何时重耕需要看政府的策略和运营商的商业计划。但是5G需要的频率量之大前所未遇,DD和重耕都不能解决实质问题,更多新频率只能在3.5GHz以上发挥了。从3.5GHz到70GHz,几乎所有的IMT备选频率都是TDD划分。

    总结成一句话:5G时代真的要看TDD了。

    吸取4G时代TD-LTE的设计经验,结合被广泛看好的Massive MIMO技术,5G时代TDD系统设计主要有两个目标:
    1. 更快的系统反馈:为了提供更低的端到端传输时延,5G系统需要更低的RTT (消息往返时间,Round Trip Time)。在TD-LTE帧结构的七种配置中,最快的反馈大约是1ms;如果不幸的配置成了8:1的配置,最慢的系统反馈将是9ms。
    2. 更快的信道测量:MIMO在TDD频段使用最大的优点是利用信道互易性,通过测量上行导频获得下行信道部分信息(波束方向)。考虑到毫米波频段的信道快速变化,5G的 TDD系统需要提供更多的上行导频发送时机。

    从快速反馈的需求出发,最直接的设计就是同一个子帧里同时包含DL、UL和GP。下图是RAN1 #85会议提案中的示意图。

    self-contained.JPG

    2016-8-19 23:13 上传
    下载附件 (44.35 KB)



    图(a)是自包含子帧,具备三个特点 :
    •        同一子帧内包含DL、UL和GP
    •        同一子帧内包含对DL数据和相应的HARQ反馈
    •        同一子帧内传输UL的调度信息和对应的数据信息

    考虑到自包含子帧对硬件处理能力的要求很高,低端手机可能不具备相应的硬件能力,提案中也包含了图(b)中的较低要求方案。这种方案中HARQ反馈和调度都有更多的时间余量,对终端硬件的处理能力要求较低。而且,自包含子帧很容易通过信令指示终端支持这种配置。

    在Verizon的V5G方案中关注到了MIMO信道测量这个问题。通过在同一个子帧内同时包含DL、UL和GP,利用UL发送RS进行信道测量。但是V5G对HARQ反馈时延要求不高,不必在同一子帧内反馈。

    TD-LTE帧结构设计主要考虑了两个问题:当相邻小区UL/DL不能对齐时相邻小区的交叉干扰和GP对于小区覆盖的影响。相比于传统TDD帧结构设计,自包含子帧提供了更大的灵活性,但它是否会面临TD-LTE设计时同样的挑战呢?
    •        首先是相邻小区的交叉干扰。如果相邻小区采用不能完全对齐的UL/DL配置,会有一个时间片段存在交叉部分。自包含子帧在设计时考虑了一些措施:首先将DL控制部分完全对齐,避免最重要的控制部分受到干扰;其次在数据部分通过纠错编码、HARQ等技术对抗干扰带来的影响。
    •        其次是较小的GP限制了小区覆盖范围。小区的覆盖范围取决于GP的大小,即小区半径R=C(电磁波速度,即光速)* GP/2。但高频率无线电波在空气中传播损耗大,本身覆盖范围有限,相应的GP长度很小。也就是说,这个问题在载频变高后就不再是主要矛盾了。

    在5月的南京RAN1会议,自包含子帧的基本设计在E、Q、Z、D几家公司共同的推动下获得了通过。可以预测,自包含子帧对5G物理层的设计会起到支柱性作用,3GPP将以此为基础,结合sub-carrier spacing等参数,尽快完成帧结构设计。

    self-contained2.JPG


    2-3. 自包含子帧 - 3

    直面自包含子帧时延挑战 – Scaled Symbol Control Design

    ITU的IMT-2020.VISION对5G(IMT-2020)空中信号传输时延提出了1ms要求:
    “IMT-2020 would be able to provide 1 ms over-the-air latency, capable of supporting services with very low latency requirements.”

    自包含子帧的设计目标之一就是在同一子帧内通过反馈UL ACK,保证低时延。可是,问题来了,手机是否真的能那么快的处理信号、并生成反馈呢?

    20160814 - 0.JPG



    自包含子帧示意图(DL Centric)


    在示意图中,为了通过快速反馈降低时延,UE会在同一个子帧内的UL符号传输针对DL数据的ACK。假设DL数据占用T0 -> T1的全部符号(蓝色),一个能够充分利用流水处理接收信号的UE会在接收到每一个DL符号之后,马上开始开始解调,解码等处理(充分流水处理也即是自包含子帧的设计理念之一)。UE将在T1 + TLatency (BS到UE的空口传输时延)时刻接收全部DL数据,在这之后大致还需要一个符号的时间来处理最后一个DL符号的数据。

    为了保证小区内各个UE信号同时到达BS,UE需要在T2 - TLatency时刻发送UL ACK。也就是说,留给UE处理数据的时间大约是T2 – T1 – 2×TLatency。为保证UE有足够的处理时间,似乎必须得在帧结构里预留一个额外的符号作为数据处理时间。

    举个例子:假设UE处理DL数据的时间TD较大(即TD > T2 – T1 – 2× TLatency),在帧结构设计时需要预留灰色部分来保证UE有足够的时间处理DL数据,即T22 – T1 – TLatency ≥ TD。假设小区半径1公里,空口往返延时大约6us,数据处理时间大致为一个符号35us,数据处理时间远远大于空口往返延时。

    20160814 - 1.jpg

    2016-8-20 17:38 上传
    下载附件 (22.29 KB)



    很自然的想到,难道大部分灰色部分只能空着吗?能不能传点有用的数据呢?能想到这个,就必须给你点赞了。

    仔细分析控制信道设计会发现,控制信道总可以归纳为两部分,一部分没有数据依赖性,另一部分则具有数据依赖性。UE可以在这个灰色时间区间发送与DL数据接收无关的信息,例如导频。把UL ACK分成两个较短的符号传输。第一个符号传输与DL数据接收无关的导频可以在数据处理的同时发送,第二个符号传输ACK在数据处理完成后再发送。这时,只要保证缩短符号(Scaled Symbol)的长度小于TD就可以了,既给UE留了足够的时间接收DL数据、生成ACK,又充分利用了时间资源。不仅如此,Ack到下一个子帧之间又留出了时间,这样不仅自包含同帧Ack实现了,子帧间无间断的HARQ处理也成为了可能!

    20160814 - 2.jpg

    2016-8-20 17:38 上传
    下载附件 (23.98 KB)



    再看复杂度,缩短符号相应的FFT  size 变小了,也更便于基站接收UL  ACK的流水作业(即在原本只收到半个符号的时间点就可以开始处理导频信号了),总的复杂度不增反降,真可谓两全其美。

    那么,这样做有什么代价吗?会不会影响UL传输性能呢?

    假设缩短符号是按比例缩短,即CP也缩短一半,这时对抗(多径造成的)时延扩展能力会相应下降。对于UL控制信道(导频和ACK),这个影响有多大呢?

    30KHz符号和60KHz符号的设计参数
    20160814 - 4.JPG

    2016-8-20 17:39 上传
    下载附件 (28.94 KB)



    下图是信道时延扩展为300ns时的Geometry分布。可以看到:在Geometry较大的区域(大于22dB),Scaled CP性能开始下降。但是,采用UL缩短符号传输控制信道需要传输的仅仅是1个比特,码率非常低,Geometry工作点远远低于22dB。因此,缩短符号对控制信道的影响可以基本忽略。


    3-1 多址 - 引子

    5G多址有两个特点:

    第一是从来没有这么公司观点如此统一:5G需要新的多址;

    第二是从来没有一个技术有这么多竞争方案。

    先卖个关子,说一下现有的多址技术。

    教科书上写了不少,就不多说TDMA了。

    到了3G时代,作为主要的技术创新点,多址技术被提到了前所未有重要程度,甚至系统都用多址技术来命名 - CDMA、TD-SCDMA、WCDMA。这三种技术本质都是使用不同的码字来区分用户地址,最初的来源都是一位美女发明家海蒂.拉玛(Hedy Lamarr)的一个想法。民用CDMA技术最大的贡献者是Qualcomm,主要解决了组网问题。关键的技术包括功率控制、软切换、Rake接收等等。在CDMA IS-95出现后,欧洲的ETSI也意识到了下一代技术的趋势会是CDMA。但是,作为后来者的ETSI面临着技术先行者Qualcomm设置的巨大专利池。为了尽量绕开专利,WCDMA采用了不同的码字设计,但是并不能避开基本的CDMA组网专利(功率控制、软切换、Rake接收等),这也是Qualcomm在3G时代声称具有核心专利的原因。

    在2007年,WiMAX赶上了3G时代的尾巴,进入了IMT-2000 family。它最大的贡献就是将OFDMA技术引入了蜂窝通信系统。相比于CDMA这种窄带多址技术,OFDMA对于可扩展的宽带系统支持更好。同时,相比于传统的FDMA,OFDMA通过完全正交的相邻子载波1/2重叠,提供更高的频谱效率。OFDMA很快引起了业界的极大关注,俨然成为4G的重要备选方案。换句话说,OFDMA此时已经成为最大的移动通信技术“网红”。

    IEEE力推WiMAX进入IMT-2000 family有两层含义:首先是为了使用ITU为3G划分的频率;更深一层的含义是在4G时代与3GPP正面竞争。IEEE推出的4G技术是WiMAX(802.16e)的演进版本 – 802.16m。出身较晚的WiMAX标准由于采用了OFDMA等技术,在物理层设计显示出了强大的竞争力。3GPP再次感受到了来自WiMAX的挑战和4G时代的危机。为了迎接来自16m的挑战,3GPP在LTE系统中引入OFDMA和MIMO技术,显著的提升了系统的频谱效率。同时,3GPP在自己擅长的电信网络架构方面提出了“扁平化”的低时延设计。故事的结果相信各位读者已经很熟悉了,16m由于缺少运营商的支持,最终被终止了。

    虽然IEEE的802.16m失败了,但是WiMAX和16m带来的多址技术 – OFDMA取得了巨大的成功。这也是迄今为止,我们能找到的最好的移动宽带系统多址方式。

    那么,为什么还会有那么多5G的备选多址技术出现呢?且听下回分解。


    3-2 多址 - 2

    真心后悔没有及时写完多址技术,最近三次RAN1的会议的多址技术居然呈现线性增长,搞得越写越多了。

    到了八月下旬的RAN1#86,居然出现了十五种多址提案。上次会议(RAN1#85)还只有不到10种,再上次会议才几种...

    这些多址技术有一个共同点,都是非正交多址,目前简称NOMA。

    先分辨一个小概念 - NOMA。截止目前为止,出现过两次NOMA,分别是rel-13的LTE和rel-14的5G NR。

    在Rel-13的时候,日本的NTT DoCoMo推动了一种功率域的非正交多址技术,叫NOMA。主要思路是把信道质量(SNR)相差很大的两个用户(UE1、UE2)配对,在同一个时频资源块上发送。假设UE1离基站很近,UE2离基站很远。UE2需要做串行干扰消除(SIC),把另一个UE的信号减去,得到本身的信号。好处很明显,资源利用率提高了,缺点就是UE需要引入SIC接收机,复杂度提高了。这种NOMA其实还有个学术的名字叫superposition coding,后来3GPP立项就用了这个名字叫MUST - Multi-User Superposition Transmission。根据理论分析,功率域的superposition可以把信道容量提升一些,画成图形就是直线被上拉成了抛物线。

    另一个就是rel-14 5G的NOMA了。这次是一类技术的名称,就是指Non-Orthgnal MA。为什么要在5G提NOMA呢?主要是针对物联网(IoT/MTC)场景提出的。对于IoT来说,每次传输的数据量非常小,按照传统的UL资源请求、传输方式非常不划算。就是说建立连接需要的控制信令数据量已经超过payload本身了,划不来啊。而且时延也挺大,更关键的是IoT重要指标之一是省电,NB-IoT提出的指标是5W/H的电池用10年。传统的资源请求、传输的流程增加了耗电。很自然的提出一个问题:能不能减少两个步骤,变成直接竞争传输呢?这就是Grant Free或者叫Contention Based概念 - UE不请求资源,直接在UL发送。这样碰撞的概率就会增加,需要设计一种方法,在碰撞的情况下也能正确解出信号,这就需要NOMA技术了。因为NOMA可以提供非常大(比正交多址大很多)的地址空间,这样随机选择地址并碰撞的概率就大大降低了。

    华为的SCMA、ZTE的MUSA、大唐的PDMA都是这类技术。其实本质都是构造一个非正交向量空间,供UE选择并传输。国内很看重多址的创新,也作为主要技术创新点大力推动。但是这种非正交多址技术其实并不是第一次提出,最早在移动通信系统中应用是CDMA2000时代,当时也是为了解决地址不够的问题,高通提出了非正交CDMA技术。这次,高通提出的RSMA技术就是非正交CDMA技术的升级技术。区别只是在于构造非正交向量的空间方法不同。


    3-3 多址 - 3

    如果问主席:问君能有几多愁。主席肯定说看看多址方案就知道了。

    在今年四月的RAN1#84bis上,主席报告归纳了所有的NOMA方案,一共是八种。

    • For UL, Multi-user shared access (MUSA) (e.g., R1-162226)
    • Resource spread multiple access (RSMA) (e.g., R1-163510)
    • Sparse code multiple access (SCMA) (e.g., R1-162153)
    • Pattern defined multiple access (PDMA) (e.g., R1-163383)
    • Non-orthogonal coded multiple access (NCMA) (e.g., R1-162517)
    • Low code rate spreading (e.g., R1-162385)
    • Frequency domain spreading (e.g., R1-162385)
    • Non-orthogonal multiple access (NOMA) (e.g., R1-163111)


    到了八月的RAN1#86会议上,主席报告再次归纳了所有的NOMA方案,就变成15种了。

    • Sparsecode multiple access (SCMA) (e.g., R1-162153)
    • Multi-usershared access (MUSA) (e.g., R1-162226)
    • Lowcode rate spreading (e.g., R1-162385)
    • Frequencydomain spreading (e.g., R1-162385)
    • Non-orthogonalcoded multiple access (NCMA) (e.g., R1-162517)
    • Non-orthogonalmultiple access (NOMA) (e.g., R1-163111)
    • Patterndivision multiple access (PDMA) (e.g., R1-163383)
    • Resourcespread multiple access (RSMA) (e.g., R1-163510)
    • Interleave-GridMultiple Access (IGMA), (e.g., R1-163992)
    • Lowdensity spreading with signature vector extension (LDS-SVE) (e.g., R1-164329)
    • Lowcode rate and signature based shared access (LSSA), (e.g., R1-164869)
    • Non-orthogonalcoded access (NOCA), (e.g., R1-165019)
    • InterleaveDivision Multiple Access (IDMA), (e.g., R1-165021)
    • Repetitiondivision multiple access (RDMA), (e.g., R1-167535)
    • GroupOrthogonal Coded Access (GOCA), (e.g., R1-167535)


    主席哭了,不带你们这样的。不但没有按说好的down selection,还增加了7种。于是,主席生气了,在会场说,下次会议(RAN1#86bis)是最后一次讨论多址了,必须得有结论。大家听到后也凌乱了。

    这么多多址技术既然都是CDMA扩展技术,怎么分析、比较呢?

    R1-166358给出了一些分析方法。按照扩频序列来区分:伪随机长扩频码和固定码本短扩频码。

    伪随机长扩频码的代表是RSMA;
    固定码本短扩频码的代表是:



      • Sparse code multiple access (SCMA) (e.g., R1-162153)
      • Pattern defined multiple access (PDMA) (e.g., R1-163383)
      • Non-orthogonal coded multiple access (NCMA) (e.g., R1-162517)
      • Low code rate spreading (e.g., R1-162385)



    对于NOMA技术来说,长码空间更大,碰撞概率更低,同时伪随机特性也更好,但短码可以简化多用户检测,简化接收端接收机设计。从缺点角度看,短码首先需要预先设计和优化,在传输中可能需要进行额外的功率回退避免码字不够随机而造成的PAPR,影响链路预算。


    很多文献都进行了仿真比较,篇幅所限,这里就不放了。

    但通过分析后结论是类似的:

    1. 伪随机扩频性能更好一些,这个在CDMA时代就证明了;
    2. 固定码本的扩频方法由于码字短,需要预先搜索定义优化码本。


    3-4 多址 - 4

    说了这么久,都是NOMA技术,难道OFDMA和SC-FDMA就不用了吗?

    恰恰相反,NR正是要在eMBB场景继续用OFDMA和SC-FDMA。

    下行OFDMA没什么悬念,唯一的悬念在于上行是用SC-FDMA还是OFDMA。

    用OFDMA的好处在做LTE D2D的时候就讨论过,如果上行也用OFDMA,那么手机在发送D2D信号时就比较简单,可以和宏蜂窝的上行信号完全正交,并同时FTT发送。

    但是缺点也比较明显,就是为了避免PAPR带来的功率回退(Power Backoff)会导致上行的覆盖(链路预算)减小。据当前分析,大概会有1-2dB的链路预算损失。

    因此,预计上行采用SC-FDMA的可能性较大,毕竟已经被LTE验证过了。


    展开全文
  • C#实现软键盘的几个关键技术介绍

    万次阅读 2012-05-15 07:46:51
    本文将讲解自己实现软键盘时涉及到的几个关键技术。 一、浮动窗体的实现 软键盘的窗体和普通窗体不一样,这个窗体在成为当前窗体时,不会影响其它进程的窗体的光标焦点。也就是说虽然这个窗体现在为当前激活的前台...

    在嵌入式应用和一些安全软件中经常需要不通过物理键盘输入,虽然微软提供了也一个软键盘,但这个软件盘不能定制界面不能自动感应当前光标是否处于输入状态,所以有时候我们还是需要自己来实现这个软键盘。本文将讲解自己实现软键盘时涉及到的几个关键技术。

    一、浮动窗体的实现

    软键盘的窗体和普通窗体不一样,这个窗体在成为当前窗体时,不会影响其它进程的窗体的光标焦点。也就是说虽然这个窗体现在为当前激活的前台窗体,但光标仍然停在其他进程的窗体上。

    image

    如上图所示,虽然软键盘在记事本的前面,但光标仍然在记事本上。

    要实现这个技术,我们必须要把当前窗体设置为浮动工具条才行。这里我给出 C# Winform 的实现方法:

     

            private const int WS_EX_TOOLWINDOW = 0x00000080;
            private const int WS_EX_NOACTIVATE = 0x08000000;
    
            protected override CreateParams CreateParams
            {
                get
                {
                    CreateParams cp = base.CreateParams;
                    cp.ExStyle |= (WS_EX_NOACTIVATE | WS_EX_TOOLWINDOW);
                    cp.Parent = IntPtr.Zero; // Keep this line only if you used UserControl
                    return cp;
    
                    //return base.CreateParams;
                }
            } 

    如上代码就是将 Winform 指定为浮动工具条窗体。只要在winform 的类中重载 CreateParams 函数,并按上述代码编写就可以了。

     

    二、如何检测当前处于输入状态

    在一些嵌入式设备中,我们没有物理键盘,所有的输入都是通过触摸屏和软键盘输入。那么这个时候,我们必须要做到只有处于输入状态时才弹出软键盘,否则如果软键盘一直在界面上,既不美观也妨碍其他程序的正常使用。

    要实现这个功能,我们能想到的最直接的方法是 windows 是否会在当前处于输入状态下时发一个什么事件,或者通过什么钩子程序来实现。但我研究了很久,没有找到这种方法。如果哪位知道这种方法,不妨在回复中告诉我。

    我目前找到的方法是定时询问 windows 的当前窗体是否处于输入状态。

                IntPtr hWnd = GetForegroundWindow();
    
                uint processId;
                uint threadid = GetWindowThreadProcessId(hWnd, out processId);
    
                GUITHREADINFO lpgui = new GUITHREADINFO();
                lpgui.cbSize = Marshal.SizeOf(lpgui);
    
                if (GetGUIThreadInfo(threadid, ref lpgui))
                {
                    if (lpgui.hwndCaret != 0)
                    {
                        return hWnd;
                    }
                }

    如上面代码所示

    首先我们通过 GetForegroundWindows API 得到当前窗体的句柄。然后我们再通过 GetGUIThreadInfo 得到当前窗体的一些属性。这些属性在 GUITHREADINFO 中定义

            public struct GUITHREADINFO
            {
                public int cbSize;
                public int flags;
                public int hwndActive;
                public int hwndFocus;
                public int hwndCapture;
                public int hwndMenuOwner;
                public int hwndMoveSize;
                public int hwndCaret;
                public System.Drawing.Rectangle rcCaret;
            }

    上面是 GUITHREADINFO 结构。我们可以通过这个信息得到当前窗体中当前焦点的子窗口句柄,当前获得光标的子窗口句柄,当前正激活的子窗体句柄等等。这里我们只要用到当前获得光标的子窗口句柄,就是 hwndCaret 。如果hwndCaret 不为0,则表示当前窗体处于可输入状态。

     

    相关API函数的 C# 定义如下:

            [DllImport("user32.dll")]
            [return: MarshalAs(UnmanagedType.Bool)]
            public static extern bool GetGUIThreadInfo(uint idThread, ref GUITHREADINFO lpgui);
            [DllImport("user32.dll")]
            public static extern IntPtr GetForegroundWindow();
            [DllImport("user32.dll", SetLastError = true)]
            static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
    

     

    三、模拟键盘输入

    模拟键盘输入比较简单,.Net 提供了一个静态函数来模拟键盘输入

    System.Windows.Forms.SendKeys.Send

    这个函数很简单,而且微软的帮助也很全面了,我这里就不多说了。

    另外我们还可以用更加底层的 API 函数来模拟键盘的输入

            [DllImport("user32.dll")]
            static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,
               int dwExtraInfo);

    这个函数是 keybd_event,关于这个函数的使用,微软的帮助也写的很清楚,这里也不重述了。

    作者:eaglet
    展开全文
  • 知识图谱关键技术与应用案例

    万次阅读 多人点赞 2018-11-06 11:50:18
    在知识图谱关键技术概念与工具的实践应用中,本课程也会讲解知识图谱的构建经验;以及达观在各行业领域系统中的产品开发和系统应用。 报名地址: https://edu.csdn.net/huiyiCourse/detail/844 作者简介:桂洪冠,...

    本课程从知识图谱的历史由来开展,讲述知识图谱与人工智能的关系与现状;知识图谱辐射至各行业领域的应用;在知识图谱关键技术概念与工具的实践应用中,本课程也会讲解知识图谱的构建经验;以及达观在各行业领域系统中的产品开发和系统应用。

    报名地址:

    https://edu.csdn.net/huiyiCourse/detail/844


    作者简介:桂洪冠,达观数据联合创始人,中国计算机学会 CCF 会员,自然语言处理技术专家。在参与创办达观数据前,曾在腾讯文学、阿里巴巴、新浪微博等知名企业担任数据挖掘高级技术管理工作。

    桂洪冠在数据技术领域拥有6项国家发明专利,中国科学技术大学计算机硕士学位。在 AI 大数据架构与核心算法以及 NLP、知识图谱等领域有深厚的积累和丰富的实战经验。

    前言

    本文分如下几个部分:

    1. 知识图谱的相关概述;

    2. 知识图谱的基本概念;

    3. 知识图谱行业方面的应用和场景介绍,着重讲一下知识图谱构建的相关技术;

    4. 达观在知识图谱构建方面的经验、心得和相关案例。

    一、知识图谱的概述

    我们先直观的来看一下什么是知识图谱,下面有一张图,从这张图里可以看到,这个图里圆圈是节点,节点之间有一些带箭头的边来连成,这个节点实际上相当于知识图谱里的实体或者概念,边连线表示实体之间的关系。

    知识图谱本质上是一种大型的语义网络,它旨在描述客观世界的概念实体事件以及及其之间的关系。以实体概念为节点,以关系为边,提供一种从关系的视角来看世界。

    enter image description here

    语义网络已经不是什么新鲜事,早在上个世纪就已经出现了,但为什么重新又提到知识图谱?

    知识图谱本质上是一种语义网络,但是它最主要的特点是一个非常大规模的语义网络,之前的语义网络受限于我们处理的方法,更多是依赖于专家的经验规则去构建,在规模方面受限于特定领域的数据。大规模网络,谷歌在 2012 年首先提出知识图谱的概念,在 freebase 的基础上扩展了大量来自互联网的实体数据和关系数据。据说目前实体的数据已经达到数十亿级,有达到千亿级的实例关系,规模是非常巨大的。

    enter image description here

    我们再看一下,知识图谱背后是怎么表示的,我们看到的是一个巨大的语义网,背后是怎么存储或者表示的呢?

    首先,它是由三元组构成的,构成知识图谱的核心其实就是三元组,三元组是由实体、属性和关系组成的(由 Entity、Attribute、Relation 组成)。

    具体表示方法为,实体 1 跟实体 2 之间有某种关系,或者是实体属性、属性词。

    举个例子,“ 达观数据是一家人工智能公司 ”,其实就可以表示成这样的三元组:

    <达观数据,is-a,人工智能公司>。“人工智能公司是一种高科技公司”可以表示成:<人工智能公司,subclass,高科技公司>。“达观数据成立于2015年”,也可以把这个属性表示成一个三元组,就是:<达观数据,start-time,2015年>。

    基于已有的三元组,它可以推导出新的关系,这个对构建知识图谱来说是非常重要的。我们知道,知识图谱要有丰富的实体关系,才能真正达到它实用的价值。完全靠人工去做的话是不太现实的,所以内部一定有一个自动推理的机制,可以不断的去推理出新的关系数据出来,不断的丰富知识图谱。来看一些具体的例子。

    “ 人工智能公司是一种高科技公司 ”,subclass 的关系。

    还有一个三元组是谷歌是一家人工智能公司,<Google is-a人工智能公司>,可以由这两个三元组推导出谷歌是一家高科技公司,<Google is-a高科技公司>。因为 subclass 的实例之间是一种继承的关系。

    <翅膀part-of鸟><麻雀kind-of鸟>,可以推导出 <翅膀part-of麻雀>

    为什么要用三元组来描述知识图谱?

    三元组是一个人和计算机都易于理解的结构,人是可以解读的,计算机也可以通过三元组去处理,所以它是一个既容易被人类解读,又容易被计算机来处理和加工的结构,而且它也足够的简单,如果说你扩充成四元组、五元组,它整个结构就会变得比较复杂,那是综合的一种复杂性和人的易理解性、和计算机的易出理性来综合的考虑,决定用三元组的结构来去作为它的一个存储。

    那么,AI 为什么需要知识图谱?

    人工智能分为三个阶段,从机器智能到感知智能,再到认知智能。机器智能更多强调这些机器的运算的能力,大规模的集群的处理能力,GPU 的处理的能力。

    在这个基础之上会有感知智能,感知智能就是语音识别、图像识别,从图片里面识别出一个猫,识别人脸,是感知智能。感知智能并非人类所特有,动物也会有这样的一些感知智能。

    再往上一层的认知智能,是人类所特有的,是建立在思考的基础之上的,认知的建立是需要思考的能力,而思考是建立在知识的基础之上,必须有知识的基础、有一些常识,才能建立一些思考,形成一个推理机制。

    enter image description here

    AI 需要从感知智能迈向认知智能,本质上知识是一个基础,然后基于知识的推理,刚好知识图谱其实是具备这样的一个属性。

    知识图谱在达观的知识问答当中的应用

    我们的智能问答是融合了是知识图谱问答和基于检索的问答两种方法进行融合。

    首先,左边会把用户的语音经过语音转成文字以后,进行一个预处理,预处理主要是做了分词、纠错、词性标注、实体属性的识别,对这个句子进行依存句法树的结构分析。

    预处理完了以后,引擎会首先尝试根据问句的句法结构进行问句模板的匹配,如果说能够匹配到合适的问句模板,这个时候再根据在预处理阶段得到的问句的实体属性和关系,对匹配到的问题模板进行实例化,然后再根据实例化以后的问句模板来生成知识图谱的图数据库的查询语言,然后在图数据库里面就可以把这个答案查出来了。

    另外一种情况是没有匹配到合适的问句模板,这个时候会进入到基于检索的问答模块,最后是把基于知识图谱和基于检索的两种的结果进行融合。

    在 HR 人岗精准匹配里面的应用

    HR 创建的 JD 能够自动的匹配到简历库里面最合适的候选人的简历,也即把 JD 的内容和简历库里面简历的内容做语义的匹配。

    这里有一个问题,JD 对技能的描述和不同的人的简历中对技能的描述存在很多表达方式造成的语义方面的差异。我们分别对 JD 和简历构建技能图谱,通过技能图谱的子图匹配,就可以比较好地来解决语义匹配的问题。

    我们在知识图谱建设当中的一些经验:
    • 第一,界定好范围,就是要有一个明确的场景和问题的定义,不能说为了知识图谱而知识图谱。如果没有想清楚知识图谱有什么样的应用的场景,或者能解决什么样的问题,这样的知识图谱是比较难以落地的。一些明确的场景,比如解决商品数据的搜索问题,或者从产品说明书里面做相关问题的回答。

    • 第二,做好 schema 的定义,就是上面讲到的对于 schema 或者本体的定义。第一步确定好场景和问题以后,就基于这样的场景或者问题,再进行相关领域的 schema 的定义。定义这个领域里概念的层次结构、概念之间的关系的类型,这样做是确保整个知识图谱是比较严谨的,知识的准确性是比较可靠的。知识的模型的定义,或者 schema 的定义,大部分情况下是通过这个领域的知识专家的参与,自上而下的方式去定义的。

    • 第三,数据是知识图谱构建基础。数据的梳理就比较重要,最需要什么样的数据?依赖于我们要解决的问题是什么,或者我们的应用场景是什么?基于问题和场景,梳理出领域相关的问题、相关的数据,包括结构化的数据、半结构化数据、无结构化的数据,结合百科跟这个领域相关的数据,领域的词典,或者领域专家的经验的规则。

    • 第四,不要重复去造轮子,很多百科的数据和开放知识图谱的数据,是可以融合到我们的领域知识图谱中。

    • 第五,要有验证和反馈机制,需要有管理后台,用户可以不断的和知识图谱系统进行交互,不断的进行确认和验证,确保知识图谱每一步推理和计算都是准确的。

    • 第六,知识图谱构建是持续迭代的系统工程,不可能一蹴而就。

    知识图谱其实是富含有实体、属性、概念、事件和关系等信息,它能够基于一定的推理。且比较关键的是,它能够基于一定的推理为 AI 的可解释性,带来全新的一个视角。

    可解释性已被一些领域 AI 大规模使用,比如医疗领域,AI 进行癌症的诊断的结果,如果没有给出一个合理的一个理由,或者是给出一个解释的一个方法,医生是不敢贸然的用 AI 给出的癌症诊断的结果去给病人直接做下一步的措施。包括金融领域也一样,AI 如果给投资人推荐了一个投资的方案,但是没有给出任何的一个解释跟说明的话,也会存在巨大的一个风险。

    同样,在司法领域也是一样,用 AI 进行判案,AI 给一个案件判定一个结果,但是没有给出任何的一个解释,也是不能作为结果来采用的,因为司法强调的就是一种可解释性,对法律的解释性、可推理性。

    为什么说知识图谱可以做这样一个可解释性呢?

    举个例子,我们问 “ C 罗为什么那么牛?”

    C 罗为什么那么牛?这个是一个问题,要解释回答这个问题,人通常是怎么样去回答这样的问题呢?上图,通过知识图谱的简单的推理,就可以回答这样一个问题,因为 C 罗获得过金球奖,C 罗跟金球奖之间的关系是获得奖项的一个关系,金球奖跟影响力最大的足球评选奖项之一有这样一个地位的关系,它具有这样的一个非常高的地位,C 罗又获得过这个奖项,所以可以得出,C 罗是很牛的。

    这是一种知识图谱来解释、来回答这样一个 “ 为什么 ” 的一个问题。同样还有一些问题,比如,“ 鳄鱼为什么那么可怕?”

    人类是有一样这样的常识,所有的大型的食肉动物都是很可怕,这是个常识。鳄鱼是一种大型的食薄动物,鳄鱼跟大型食肉动物概念之间是一种 instance 的关系。通过这样的一个常识和概念之间的关系,可以推导出鳄鱼是很可怕的。同样的,“ 鸟儿为什么会飞?”因为它有翅膀,鸟儿这个实体它的属性是有翅膀,利用一个实体跟属性之间的关系,可以做这样一个推理。

    之前微博上关晓彤跟鹿晗非常的火,经常被刷屏,这是为什么?

    因为关晓彤跟鹿晗之间是男女朋友这样的关系,明星之间的男女朋友的关系就最容易被大家追捧,也最容易被刷屏。这个就是通过关系也好,通过实体的属性也好,通过实体的概念也好,就可以去解释、去回答一些问题。这些是知识图谱在AI在可解释性方面的一些具体的例子。

    深度学习的可解释性非常差的,深度学习里面内部的语义表达、向量的表达都是一些浮点数,人类是非常难以理解的。深度学习出来的结果,它的可解释性也是非常少的。

    尽管我们现在在研究可视化的技术,把中间的它的结果呈现出来、可视化出来,但是真正能达到对人有效的解释性进展还是比较缓慢的。知识图谱实际上是有望能够消除人类的自然语言跟深度学习黑盒之间的语义鸿沟。也就是深度学习的底层的特征空间和上层的人的自然语言空间这种巨大的语义鸿沟,通过深度学习跟知识图谱结合起来,有望能够消除。这也是为什么AI要结合知识图谱的一个原因。

    二、知识图谱的典型行业应用介绍

    金融行业的应用

    enter image description here

    知识图谱在金融行业里面比较典型的应用就是风控反欺诈。

    1. 知识图谱可以进行信息的不一致性检查,来确定是不是存在可能的借款人欺诈的风险,比如第一个图里面的借款人甲和乙来自于不同的公司,但是他却非常诡异地留下了相同的公司的电话号码,这时审核人员就要格外留意了,有可能会存在欺诈的风险。

    2. 组团欺诈,甲乙丙三个借款人同一天向银行发起借款,他们是互不相关的人,但是他们留了相同的地址,这时有可能是组团的欺诈。

    3. 静态的异常检测,它表示的是在某个时间点突然发现图中的某几个节点的联系异常的紧密,原来是互相联系都比较少、比较松散的,突然间有几个点之间密集的联系,有可能会出现欺诈组织。

    4. 动态的异常检测(第二行中间图),是随着时间的变化,它的几个节点之间图的结构发生明显的变化,原来它是比较稳定的,左边黑色的上三角、下三角,然后中间连线,但过了一段时间之后,它整个图的结构变成了右边的这样结构,此时很可能是异常的关系的变化,会出现一个欺诈组织。

    5. 客户关系管理。怎么样去做失联客户的管理?图中的例子有一个借款的用户,银行可能现在没有办法直接找到他,甚至通过他的直接联系人也没办法找到他,那这个时候是不是可以再进一步的通过他的二度联系人来间接的来找到他?通过这样的图结构是可以快速找到他的二度联系人,比如张小三或者是王二,再去联系他们,尝试把李四这个人给找到。

    辅助信贷审核和投研分析

    enter image description here

    左边是辅助审贷

    知识图谱会融合多个数据源,从多个维度来维护关联人员的信息,来避免数据不全与数据孤岛,把它整合到一个大的网络结构里面去,借助知识图谱的搜索,审核人员可以快速的获取到信贷申请人张三的相关的信息,住址、配偶、就职公司、他的朋友等等。这比原来到各个异构且散落的数据源去进行搜集的效率要高得多,且能够从整体上来看到关键实体相互之间的关联关系。

    第二个是用于辅助投研的

    知识图谱能够实时地串联起来这个公司相关的上下游公司,供应商的关系、竞争者的关系、客户的关系、投融资那些关系等,然后进行快速实时的定位。中信通讯这家公司前不久被美国政府进行合规性审查,这个时候投研人员通过知识图谱搜索到中兴通讯公司实体,进而可以非常快地得到跟中兴通讯相关的上下游公司实体,包括关联的子公司、供应商、客户、竞争对手、合作伙伴,有助于投研人员快速的做决策。

    精准营销应用

    enter image description here

    知识图谱能够比较全面的记录客户的非常详细的信息,包括名字,住址,经常和什么样的人进行互动,还认识其它什么样的人,网上的行为习惯、行为方式是什么样的,这样就可以知识图谱挖掘出更多的用户的属性标签和兴趣标签,以及社会的属性标签,形成全面的用户洞察,基于知识图谱就可以进行个性化的商品或者活动的推送,或者基于用户的分群分组做定向营销,从而实现精准营销。

    知识图谱在搜索引擎里面的应用,最典型的就是在谷歌搜索引擎里面应用

    enter image description here

    谷歌是在 2012 年率先提出来知识图谱的概念。提出这个概念的最主要的目的就是改善它的搜索引擎的体验。从这个图就可以看到,用户搜索的是泰姬陵,泰姬陵是印度的非常著名的,也是世界八大奇迹之一的景点。

    不一样的地方,在搜索引擎的右侧,会以知识卡片的形式来呈现跟泰姬陵相关的结构化的信息,包括泰姬陵的地图、图片、景点的描述、开放时间门票等等,甚至在下面会列出跟泰姬陵相类似或者相关联的景点,比如中国的万里长城,同样是世界的几大奇迹,还有金字塔等等。同时,它还可以进行知识的扩展,比如泰姬陵不光是印度的景点,它还可以是一张音乐专辑,它甚至是国外某城市的街区街道。

    这样通过知识图谱可以不断的去探索发现新的非常新奇的东西,让用户在搜索引擎里面能够不断的去进行知识的关联和发现,激发起用户的搜索的欲望。原来我们搜索引擎讲究的是说快速的找到它的结果,然后关掉就完了,谷歌通过知识图谱,实际上是把搜索引擎变成了知识的探索和发现引擎,这是概念和理念上的非常大的变迁与升级。

    知识图谱应用于推荐系统

    enter image description here

    我们比较熟悉的是个性化推荐,即所谓的千人千面,比如根据游戏来推荐游戏的道具。对于小白用户和骨灰级的用户,推荐的东西显然是不一样的,这是个性化的推荐。个性化推荐之外,还有场景化的推荐,比如用户购买了沙滩鞋,存在用户可能要去海边度假这样的场景,基于这样的场景可以继续给他推荐游泳衣、防晒霜或者其它的海岛旅游度假的产品。

    任务型的推荐。比如用户买了牛肉卷或者羊肉卷,假设他实际上是要为了做一顿火锅。,这时候系统可以给他推荐火锅底料或者是电磁炉。

    冷启动问题。推荐系统的冷启动一直是比较难以处理的问题,通常的做法是根据新用户的设备类型,或者他当前的时间位置等等,或者外面的关联数据来做推荐。可以基于知识图谱的语义关联标签进行推荐,比如旅游和摄影实际上是语义相近的两个标签,再比如相同的导演或者相同演员的电影在语义上也是比较相近的。

    跨领域的推荐问题。微博的信息流里会推荐淘宝的商品,然而微博和淘宝是两个不同的领域,它是怎么做到的呢?新浪微博有些用户会经常去晒黄山、九寨沟、泰山等这些照片,这个时候我们就知道他有可能是一位登山的爱好者,这个时候淘宝就会可以给他推荐登山的装备,登山杖、登山鞋等等这些装备,利用这些背景知识,能够打通不同的平台之间的语义鸿沟。

    知识型的推荐,是基于知识的。比如清华大学、北京大学都是顶级名校,复旦大学也同样是,这个时候是可以推荐复旦大学,再比如百度、阿里和腾讯都属于 BAT 级互联网公司,基于百度、阿里就可以推荐腾讯。

    有了知识图谱以后,我们可以从基于行为的推荐,发展到行为跟语义相融合的智能推荐。

    三、如何构建知识图谱

    构建知识图谱是包括这样的生命周期或这样的部分,包括定义、知识的抽取、知识的融合、存储、知识的推理、知识的应用,这样的循环迭代的过程。

    我们先来理解一下本体的概念,本体是用于描述事物的本质的,维基百科里面对于计算机科学领域当中的本体给出的定义是这样的,即:对于特定领域真实存在的实体的类型、属性,以及它们之间的相互关系的一种定义。

    enter image description here

    我们再来看看知识图谱和本体的关系,下面这张图,我们看到有两个层,就下面是本体层,上面是事实层,那本体层是基于特定领域的概念的定义,包括概念的属性,概念之间的关系,一般概念之间的关系是一种父子关系,也有叫做上下位的关系。

    事实层是具体的真实存在的实体,包括实体的属性以及实体之间的关系,每个实体都会映射到本体层相应的概念。面向对面大家都比较熟悉,给大家举例说明一下,本体层的概念就好比面向对象里面的类的概念,然后事实层的实体就好比面向对象里面的对象,对象是从类当中派生出来的,同时继承了类的一些属性和关系。这就是本体的概念。

    enter image description here

    为什么要讲本体的概念?一个更直观的例子,就是要对知识图谱来进行模式或者 Schema 的定义。这里的领域是科技,在这科技领域下面是我们划分的若干个主题,比如互联网主题、通讯主题、手机主题,在每个主题下面又有若干的概念,就是下面的概念层,比如互联网里面有深度学习、人工智能等等这些概念,然后通讯里面有智能手机这些概念。

    在概念下面就是具体的事实层面,就是实体层,比如特斯拉 modelS、苹果 iPhone7、华为 P10 等等,这些都是具体的实体,然后实体之间有关系,它继承的概念之间的关系。最下面一层是事件层,这就是整个本体层的例子。

    enter image description here

    给大家介绍一款比较好的开源本体编辑工具,叫 Protégé。这个工具是斯坦福大学开源的,它的功能非常强大,也是目前最流行的本体编辑工具,有网页版和桌面版,桌面版是免安装的,大家直接下载下来就可以试用。

    它的好处是什么?它屏蔽了具体的本体描述语言,用户只需要在概念层次上面进行本体的模型构建,同时也比较灵活,能够支持各种插件来扩展特定的功能。比如推理的功能可以基于插件来扩展。不过这个工具对中文的支持不是很友好。

    enter image description here

    下面一个非常重要的关键的步骤就是知识的抽取,首先要抽取实体,然后是实体之间的关系。我们看一下 NER 实体的抽取,我们知道NER可以转化为序列标注的问题,传统的机器学习的方法,CRF 等都可以做,而且 CFR 做的效果还是不错的。不过 CRF 通常只能学习到相邻词位置比较近的上下文的特征,它无法获取整个句子甚至更长的上下文的特征。

    目前业界比较主流的,包括学术界比较主流的一种做法是什么?是深度循环神经网络加上结合 CRF,这样的做法更多的是双向的循环神经网络,它可以分别从前往后以及从后往前这两个方向来去学习上下文的特征,然后进行序列信号的记忆和传递,这是一种比较常见的做法。

    enter image description here

    华为发布了新一代的麒麟处理,通过从前往后就可以推理出最后面的文字,然后从后往前也可以推理出最前面的文字,第一个字 “ 朝 ” 实际上是从后往前去进行预测推理。顶层用 CRF 对循环神经网络的结果进行约束就可以,对这个输出进行更好的控制。然后输入层通常是词向量或者字向量,embedding 能可以把单个字或者词转化为低维的稠密的语义向量。

    enter image description here

    下面讲一下关系抽取的技术。它有几种方法,第一种是基于有监督的方法,把关系抽取当做分类问题来看待,根据训练数据设计有效的特征,来学习各种分类模型,这是传统的分类。这个方法不好的地方,是需要大量的人工标注的训练语料,语料的标注是非常的耗时耗力的。

    所以在有监督的基础上,又提出了一种半监督的方式,半监督的方式主要采用方式进行关系的抽取,具体来说就是要对于要抽取的关系,首先基于手工设定若干的种子的实例,然后迭代性的从数据当中抽取关系对应的关系模板和更多的实例,通过不断迭代的方式来抽取越来越多的这些实例。

    还有一种是无监督的方法。无监督的方法本质上是一种聚类的方法,用拥有相同语义关系的实体,它拥有相似上下文的信息是它的假设,因此它可以利用每个实体的上下文的信息来代表实体的语义关系,对实体进行语义关系的聚类。

    这三种方法当中,有监督的方法能够抽取出有效的特征,然后在准确率和召回率方面是更有优势的,半监督和无监督的方法一般情况下,效果都不是特别的好,所以业界现在用的比较多的还是有监督的学习的方法。

    我们刚刚提到有监督学习方法,比较困难的地方就是怎么样获取大量分类的训练样本,完全通过人工去标注的方式显然不是比较好的方式。

    有什么样好的处理的方法?用远程监督的一种方法,典型的工具 Deepdive,也是斯坦福大学 InfoLab 实验室开源的知识抽取的系统,通过弱监督学习的方法,从非结构化的文本当中可以抽取出结构化的关系的数据。

    开发者不需要理解它里面的具体的算法,只要在概念层次进行思考基本的特征就可以了,然后也可以使用已有的领域知识进行推理,也能够对用户的反馈进行处理,可以进行实时反馈的一种机制,这样能够提高整个预测的质量。背后用的是也是一种远程监督的技术,只要少量的运训练的数据就可以了。

    enter image description here

    我们来具体来看一下它是怎么样来做这样一件事情的。首先,下面看到 Mention 的句子就是 “ 奥巴马和米歇尔结婚 ”,它是句子,但 Mention 就是这些词的标记,奥巴马米歇尔都是 Mention,我们要推测它之间是不是配偶的关系。这个时候要对 Mention:奥巴马和米歇尔,去对应到知识图谱里面具体的实体,看一下这两个实体在知识图谱里面是不是存在着配偶的关系?如果是的话,就把它拿过来作为正的训练样本,如果不是,它就是负的样本。

    前提假设就是知识图谱里面的它的实体之间的关系都是正确的,以这个为依据,去做样本的标注。

    enter image description here

    目前进行实体关系抽取有两大类方法,有一类是基于流水线式的抽取,输入一个句子,首先抽取这实体,再对实体进行两两组合,然后再进行分类,最后识别出实体之间的关系。

    这种做法是有缺点的:

    第一,它容易造成错误的传播,比如在第一步的时候,实体如果识别错误了,后面的关系肯定也是错误的。

    第二,会产生没有必要冗余的信息,因为要对实体进行两两的配对,然后再进行关系的分类,很多配对之间实际上就没有这样的关系,就是它会带来了这样非常多的冗余的信息,错误率也会被放大、被提升。

    现在用的比较多的另一种方法,是联合学习的方法,输入一个句子,通过实体识别和关系抽取的联合模型,可以直接得到有效的三元组。通常我们是基于神经网络的联合标注的学习的方法,里面涉及到两个关键的工作,一个是模型的参数共享的问题,还有一个就是标注策略,怎么样进行有效的标注。模型共享是指的是在实体训练的时候能够进行实体识别和关系分类这两个任务,都会通过反向传播来匹配来进行关系的分类,然后同时来实现这两个参数之间的依赖,两个子任务之间的依赖。

    参数共享的方法,它本质上还是两个子任务,只是说它们这两个任务之间通过参数共享有了交互,而且在训练的时候还要预先进行实体识别,识别实体之后再根据预测信息进行两两匹配,来进行关系的分类,所以仍然会产生无关系时候冗余的信息存在。

    enter image description here

    现在我们新提出了一种端到端序列标注的策略,把原来涉及到序列标注和分类的两个任务变成了完全的端到端的序列标注的问题,通过端到端的神经网络模型,可以直接得到关系的三元组,即实体关系的三元组。

    新的标注策略是像下面这张图里面有三个部分来组成的,第一部分是实体中的词的位置,比如 b 是表示开始,i 表示是在实体的内部,e 表示是实体的结尾,s 表示是单个的实体。第二部分就是关系类型的信息,预定义的关系类型的编码,比如里面的 CP、CF,CP 是国家总统,CF 是公司创立者,这样两种的关系。还有实体的角色的信息,它表示是实体 1 还是实体 2?实体跟关系之外的其它的这些字符都用 O 来表示,这样就进行了实体的标注。

    enter image description here

    接下来我们讲一下实体的融合,这里最主要就是实体的对齐。

    首先是实体对齐,也叫实体归一化,是把具有不同的标识的实体,但是在现实世界当中可能是表达同样意思的,把它做归一化。比如中华人民共和国、中国和 China,这个三个指的是同一实体,尽管它的表述方式不一样,就把它归一化为具有全局唯一标识的实例对象,然后添加到知识图谱当中去。

    现在实体对齐普遍采用的还是一种聚类的方法,关键在于定义合适的相似度的阈值,一般从三个维度来依次来考察的,首先会从字符的相似度的维度,基于的假设是具有相同描述的实体更有可能代表同实体。第二个维度,是从属性的相似度的维度来看的,就是具有相同属性的和以及属性词的这些实体,有可能会代表是相同的对象。第三个维度,是从结构相似度的维度来看,基于的假设是具有相同邻居的实体更有可能指向同对象。

    进行融合的时候要考虑各个数据源的数据的可靠性,以及在各个不同数据源当中出现的频度来综合决定选用哪个类别或者哪个属性词。还有一种方法就是是用来自 LD(LinkedData),LD 是很多人工标记好的数据,是非常准确的,其中有种关联叫 owl:sameAs,它表示前后两个是同实体的,利用这个作为训练数据来发现更多相同的实体对,是比较好的方法。最后要说的是,无论用哪种方法,都不能保证百分之百的准确率,所以最后也要有人工审核和过滤。

    enter image description here

    知识存储,就是如何选择数据库,从选择层面,我们有图数据库,有 NoSQL 的数据库,也有关系型数据库,数据库有很多选择。具体什么样的情况下选择什么样的数据库?通常是如果说知识图谱的关系结构非常的复杂、关系非常的多,这时候建议使用这个图数据库,比如 Neo4J 这样的数据库。另外一种就是它的关系并不是很复杂,关系可能也就是 1 度、2 度的关系,更多的它是有非常多的属性的数据,这个时候可以考虑关系式数据库,或者是 ES 这样的存储。如果要考虑到知识图谱的性能、可扩展性、可分布式,是可以结合 NoSQL 的数据库,比如 TiTan。根据实际的情况,一般是综合起来使用的,根据我们的经验,我们会结合 Neo4J 和 ES 来综合来使用,同时还结合这关系型数据库 MySQL 等等,根据不同的数据的特点来进行选型,而不是说一味的追求图数据库。

    顺便了解一下目前主流的几款图数据库,Titan、Graph Engine、Neo4J 这个三个分别都是开源的,然后 Titan 是 Apache 旗下的,Graph Engine 是 MIT 的 License,Neo4J 是 GPL 开源的,既有商业版,也有也有开源免费版。

    然后它们的平台,像 Titan 是 Linux,Graph 是 windows。而数据的支撑量级,像 Titan 是后端存储,基于 Cassandra/Hbase/BDB 这样的分布式存储引擎,可以支持更大的数据量,千亿级的数据量级;Neo4J 商业版也可以支持到百亿级的,但是它的非商业版在数据量级比较大的时候,一般是在几千万级的时候就可能会出现一些问题。

    enter image description here

    再看一下知识推理,知识推理这边有几种方法,首先是基于符号推理,我们上面说的三元组的结构,比如左边的 RDF,有概念,然后基于概念符号进行推理。

    enter image description here

    这个是基于 OWL 进行本体推理的例子,这个背后是基于 OWL 本体的推理,最常见的 OWL 推理工具是 Jena,Jena 2 支持基于规则的简单推理,它的推理机制支持将推理器(inference reasoners)导入 Jena,创建模型时将推理器与模型关联以实现推理。

    enter image description here

    还有一种是基于图(PRA)的推理的方法,更直观的一种方法,思想是比较简单的,就是以连接两个实体的已有路径作为特征构建分类器,来预测它们之间可能存在的潜在关系。

    比如左边这个图里面 Charlotte Bronte,我们要预测他的职业是不是作家。在这个图里面已知存在关系是什么呢?他写过一篇小说,它写过一篇小说 Jane Eyre,然后双城记也是一部小说,狄更斯是写了双城记这部小说,狄更斯是作家,同时它下面还有他的父亲职业也是作家,所以基于这样图之间的关系,就可以较大概率的推理出 Charlotte Bronte 的职业很有可能就是作家,这就是基于图之间的关系的特征构建分类器来进行预测的。

    PRA 提取特征的方法主要有随机游走、广度优先和深度优先遍历,特征值计算方法有随机游走 probability,路径出现/不出现的二值特征以及路径的出现频次等。PRA 方法的优点是直观、解释性好,但缺点也很明显,有三个主要缺点:首先,很难处理关系稀疏的数据,其次,很难处理低连通度的图,最后,是路径特征提取的效率低且耗时。

    enter image description here

    还有是基于分布式的知识语义表示的方法,比如像 Trans 系列的模型,在这个模型基础上进行语义的推理。TransE 这个模型的思想也比较直观,它是将每个词表示成向量,然后向量之间保持一种类比的关系。比如上面这个图里面的北京中国,然后类比巴黎法国,就是北京加上首都的关系就等于中国,然后巴黎加上 capital 的关系等于 France。所以它是无限的接近于伪实体的 embed]ding。这个模型的特点是比较简单的,但是它只能处理实体之间一对一的关系,它不能处理多对一与多对多的关系。

    enter image description here

    后来提出了 TransR 的模型了,TransR 实际上是解决了上面提到的一对多或者多对一、多对多的问题,它分别将实体和关系投射到不同的空间里面。一个实体的空间和一个关系的空间,然后在实体空间和关系空间来构建实体和关系的嵌入,就对于每个元组 <h,r,t> 首先将实体空间中实体通过 Mr 向关系空间进行投影得到 hr 和 Tr,然后 Hr 加上 r 是不是约等于或者近似的等于 Tr,通过它们在关系空间里面的距离,来判断在实体空间里面,H 和 T 之间是不是具有这样的关系?

    除了 TransE、TransR,还有更多的 Trans 系列的,像 TransH、TransN、TransG 等等这些模型。清华大学的自然语言处理实验室发布了一款这个叫 openKE 的平台,openKE 它是开源的知识表示学习的平台,是基于 Tanserflow 的工具包来开发的。它整合了 Trans 系列的很多算法,提供统一的接口。它也是面向了预训练的数据来表示模型的。

    enter image description here

    最后介绍一种基于深度学习的推理模型, 这个模型利用了卷积神经网络对实体进行关系的分类的,把句子的依存树作为输入,就是将词在树中的不同的位置的嵌入式的表示拼接到这个词向量当中来学习,同时对面相树结构设计了独特的卷积核。这种方法在实体分类的任务上,相较于未使用位置关系的信息,效果会有一定的提升。

    四、达观经验与案例

    知识图谱在达观的知识问答当中的应用

    我们的智能问答是融合了是知识图谱问答和基于检索的问答两种方法进行融合。

    首先,左边会把用户的语音经过语音转成文字以后,进行一个预处理,预处理主要是做了分词、纠错、词性标注、实体属性的识别,对这个句子进行依存句法树的结构分析。

    enter image description here

    预处理完了以后,引擎会首先尝试根据问句的句法结构进行问句模板的匹配,如果说能够匹配到合适的问句模板,这个时候再根据在预处理阶段得到的问句的实体属性和关系,对匹配到的问题模板进行实例化,然后再根据实例化以后的问句模板来生成知识图谱的图数据库的查询语言,然后在图数据库里面就可以把这个答案查出来了。

    另外一种情况是没有匹配到合适的问句模板,这个时候会进入到基于检索的问答模块,最后是把基于知识图谱和基于检索的两种的结果进行融合。

    在 HR 人岗精准匹配里面的应用

    HR 创建的 JD 能够自动的匹配到简历库里面最合适的候选人的简历,也即把 JD 的内容和简历库里面简历的内容做语义的匹配。这里有一个问题,JD 对技能的描述和不同的人的简历中对技能的描述存在很多表达方式造成的语义方面的差异。我们分别对 JD 和简历构建技能图谱,通过技能图谱的子图匹配,就可以比较好地来解决语义匹配的问题。

    我们在知识图谱建设当中的一些经验:
    • 第一,界定好范围,就是要有一个明确的场景和问题的定义,不能说为了知识图谱而知识图谱。如果没有想清楚知识图谱有什么样的应用的场景,或者能解决什么样的问题,这样的知识图谱是比较难以落地的。一些明确的场景,比如解决商品数据的搜索问题,或者从产品说明书里面做相关问题的回答。

    • 第二,做好 schema 的定义,就是上面讲到的对于schema或者本体的定义。第一步确定好场景和问题以后,就基于这样的场景或者问题,再进行相关领域的 schema 的定义。定义这个领域里概念的层次结构、概念之间的关系的类型,这样做是确保整个知识图谱是比较严谨的,知识的准确性是比较可靠的。知识的模型的定义,或者 schema 的定义,大部分情况下是通过这个领域的知识专家的参与,自上而下的方式去定义的。

    • 第三,数据是知识图谱构建基础。数据的梳理就比较重要,最需要什么样的数据?依赖于我们要解决的问题是什么,或者我们的应用场景是什么?基于问题和场景,梳理出领域相关的问题、相关的数据,包括结构化的数据、半结构化数据、无结构化的数据,结合百科跟这个领域相关的数据,领域的词典,或者领域专家的经验的规则。

    • 第四,不要重复去造轮子,很多百科的数据和开放知识图谱的数据,是可以融合到我们的领域知识图谱中。

    • 第五,要有验证和反馈机制,需要有管理后台,用户可以不断的和知识图谱系统进行交互,不断的进行确认和验证,确保知识图谱每一步推理和计算都是准确的。

    • 第六,知识图谱构建是持续迭代的系统工程,不可能一蹴而就。


    本文首发于GitChat,未经授权不得转载,转载需与GitChat联系。

    阅读全文: http://gitbook.cn/gitchat/activity/5b6449785c59d07c6486c236

    您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。

    FtooAtPSkEJwnW-9xkCLqSTRpBKX

    展开全文
  • 这里自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...

    一、传感器概述

      物联网系统中的海量数据信息来源于终端设备,而终端设备数据来源可归根于传感器,传感器赋予了万物“感官”功能,如人类依靠视觉、听觉、嗅觉、触觉感知周围环境,同样物体通过各种传感器也能感知周围环境。且比人类感知更准确、感知范围更广。例如人类无法通过触觉准确感知某物体具体温度值,也无法感知上千高温,也不能辨别细微的温度变化。

      传感器定义为将物理、化学、生物等信息变化按照某些规律转换成电参量(电压、电流、频率、相位、电阻、电容、电感等)变化的一种器件或装置。

      传感器一般由敏感元件、转换元件和基本电路组成。敏感元件是直接感知被测量的元件,将被测量变化转换成该敏感材料特性参数的变化。某些敏感元件为无源器件,无法直接输出电压或电流,所以需要通过转换元件特性参数的变化转换成电压或电流。基本电路将转换元件输出的信号进行放大、整形及编码输出。

      传感器种类繁多,按照被测量类型可分为温度传感器、湿度传感器、位移传感器、加速度传感器、压力传感器、流量传感器等。按照传感器工作原理可分为物理性传感器(基于力、热、声、光、电、磁等效应)、化学性传感器(基于化学反应原理)和生物性传感器(基于霉、抗体、激素等分子识别)。以下将简述基于物理性的常见传感器工作原理。

    二、传感器原理

    1、电阻式传感器

      电阻式传感器基本原理是敏感元件电导率随外界环境变化而变化的传感器,大致可分为电位计式传感器与应变式传感器。

    • 电位计式传感器
        将机械的线位移或角位移转变成电阻或电压输出。通过位移变化改变电阻器结构参数(一般是长度变化)从而使得电阻值发生相应变化。
      Δ R ( l ) = ρ Δ l s \Delta R(l) =\frac{\rho\Delta l }{s} ΔR(l)=sρΔl

      应用举例:汽车中座椅位置检测(旋转或平移触点位置使有效电阻发生变化)。

    • 应变式传感器

    金属应变效应
      将一根固定长度的金属导线使用外力拉伸时,其导线长度会增加,横切面积减小(假定各部分变化均匀且温度恒定)则根据电阻的结构参数定义可得电阻会发生相应变化(应变效应)。变化规律为:
    R = ρ l s R =\frac{\rho l }{s} R=sρl
    d R = ∂ R ∂ l d l + ∂ R ∂ s d s = ρ s d l − R s d s dR = \frac{\partial R}{\partial l}dl+ \frac{\partial R}{\partial s}ds= \frac{\rho }{s}dl - \frac{R}{s}ds dR=lRdl+sRds=sρdlsRds
    d R R = d l l − d s s = d l l − 2 d r r = ( 1 − 2 d r r / d l l ) d l l \frac{dR}{R} = \frac{dl}{l}-\frac{ds}{s}= \frac{dl}{l}-\frac{2dr}{r}=(1-\frac{2dr}{r}/\frac{dl}{l})\frac{dl}{l} RdR=ldlsds=ldlr2dr=(1r2dr/ldl)ldl
    μ = 2 d r r / d l l ( 泊 松 比 ) \mu =\frac{2dr}{r}/\frac{dl}{l}(泊松比) μ=r2dr/ldl()
    d R R = ( 1 − μ ) d l / l \frac{dR}{R} = (1-\mu)dl/l RdR=(1μ)dl/l

      利用该效应将机械形变(dl/l横向应变、dr/r纵向应变)直接转变为电阻值变化的传感器可检测位移、压力、加速度、扭矩等物理量,并且能在高温、强磁等恶劣环境下工作。一般在实际应用中采用多个应变片(紧贴被测物体)组成电桥电路将电阻变化转换成电压输出。
    在这里插入图片描述

    半导体应变效应
      半导体在受外力作用时,几何尺寸在微小的形变下,电阻值也能有较大变化(压阻效应)。利用半导体压阻效应可用来测量水位情况。

    2、电容式传感器

      电容式传感器是将被测量变化转换成电容量变化的传感器,通过电路转换将电容量变化转换成电压或频率等信号输出。
      电容式传感器工作原理以平板电容为例,平板电容结构参数式为:
    在这里插入图片描述
    C = ε S d C =\tfrac{\varepsilon S}{d} C=dεS
    ε : 介 质 介 电 常 数 ; S 极 板 有 效 面 积 ; d 极 板 间 距 \varepsilon :介质介电常数;S极板有效面积;d极板间距 ε:Sd

      通过改变面积、介电常数、间距等任意之一参数,均可改变电容量,选择变化的参数不同,其传感器特性也不同。
    在这里插入图片描述
    在这里插入图片描述

    3、电感式传感器

      电感式传感器利用自感或互感系数的变化来检测非电量的变化。通过基本电路将自感或互感系数的变化转变成电压或频率信号输出。电感式传感器种类很多,常见的有自感式传感器,互感式传感器和电涡流式传感器三种。

    • 自感式
        线圈中磁通量与线圈电流的比值为一个恒定值,即为自感系数,他与线圈匝数、磁芯材料等有关。通过改变磁芯材料或磁芯材料位置即可改变自感系数,然后通过转换电路将自感系数的变化转换为电信号的变化。
      在这里插入图片描述

    • 互感式
        互感式传感器工作原理类似于变压器(电-磁-电转换),两组线圈中的磁芯位置的变化将引起两组线圈耦合强度的变化,即互感系数的变化。
      在这里插入图片描述

    • 涡流式
         将金属块放置与变化的磁场中或在匀强磁场中运动时,会在金属块中行成闭合电流,这种现象称为涡流效应。产生的电流称为涡流。涡流式传感器基本结构为一个线圈,给线圈通高频电流时,当有金属块靠近线圈时,会在金属块中产生涡流(涡流的大小与导体磁导率、电阻率、励磁电流角频率、导体位置等有关),同时涡流产生的磁场会阻碍线圈磁场的变化,即线圈等效电感或等效阻抗会发生变化。通过检测参数的变化即可测量出金属块位移、厚度、材料类别等信息。
      在这里插入图片描述

    4、压电式传感器

       在某些晶体材料上施加外力而发生形变时,会在晶体相应表面上分布等量异种电荷这种现象称为正压电效应,相反在晶体极化方向上施加电场时,会使晶体发生形变称为逆压电效应。利用晶体这一特性可制作压力传感器、超声波传感器等。
    在这里插入图片描述
    在这里插入图片描述

    5、磁敏传感器

      磁敏传感器是利用磁电转化原理,将磁场信号转换为电信号,主要用来检测磁场。典型的磁敏传感器为利用霍尔效应制成的霍尔式传感器。
      通有电流的金属片放置与磁场中时,在垂直于磁场与电流的方向将产生电动势,电动势大小正比于磁场与电流的乘积。这种现象称为霍尔效应。
    在这里插入图片描述
      霍尔效应的本质原因是电子在磁场中运动时受到磁场力(洛伦兹力)的作用,即电子向金属表面运动,结果金属片将在表面分布等量异种电荷。

    6、光电式传感器

      光电式传感器是利用光电效应将光信号转换成电信号的一种传感器。光电效应一般分为外光电效应、内光电效应。

    • 外光电效应
        在光照情况下,电子获得能量溢出物体表面的现象。基于该效应的器件有光电二极管、光电倍增管等。
      在这里插入图片描述
    • 内光电效应
        光电导效应:在光照情况下,电子获得能量后从键合状态过渡到自由状态,从而引起材料电阻率的变化。基于这种效应的器件有光敏电阻。
      在这里插入图片描述
        光伏效应:光照射半导体PN结时,在结区附近激发出电子-空穴对,形成持续电场。光电池就是利用这一原理。
      在这里插入图片描述

    7、热电偶与热电阻

      热电偶与热电阻常用来检测温度,热电偶基于热电效应,热电阻是利用金属导体电阻随温度变化原理实现检测温度。

    • 热电偶
        将两种不同导体两端连接在一起组成闭合回路,并将两端置于不同的温度环境中,在闭合回路中将产生电动势并形成电流。
        电动势由温差电势与接触电势两部分组成。温差电动势的产生是由于温度不同,高温端的电子能量比低温端电子能量大,因而高温端电子跑到低温端电子数目要比低温端电子跑到高温端电子数目多,结果高温端失去电子而带正电,低温端得到多余电子而得负电,形成温差电动势。接触电势原因为不同材料在接触端由于自由电子密度不同,高密度电子向低密度电子扩散形,扩散运动稳定后形成接触电动势。
        将热电偶一端置于恒温环境,另一端置于被检测环境中,通过测量回路中电流大小即可检测环境温度。

    • 热电阻
        热电阻利用导体或半导体电阻率随温度变化而变化的原理来感知温度。一般选取具有正温度系数的材料。

    三、传感器数据处理

    1、温度补偿

      传感器在实际应用中,温度的变化会引起传感器特性参数变化,从而会改变传感器静动态特性(大多数电子元器件材料为半导体,半导体导电性能温度起决定作用),所以温度是影响传感器精度的重要因素之一。

    • 温度补偿方法
      假设被测量为x,传感器输出为y,环境温度为T,零点输出为Y0,传感器灵敏度为K,则线性传感器特性可表示为:
      y = Y 0 ( T ) + K ( T ) x y=Y_{0}(T)+K(T)x y=Y0(T)+K(T)x
        式中可以看出,传感器零点与灵敏度均受温度影响。则传感器温度灵敏度可表示为:
      S T = d y d T = d Y 0 ( T ) d T + d K ( T ) d T x S_{T}=\frac{\mathrm{dy} }{\mathrm{d} T}=\frac{\mathrm{dY_{0}(T)} }{\mathrm{d} T}+\frac{\mathrm{dK(T)} }{\mathrm{d} T}x ST=dTdy=dTdY0(T)+dTdK(T)x
        温度补偿实质就是令ST=0即可。该式包括了对零点温度漂移补偿和灵敏度的补偿。实际应用中可采用传感器本身的特性满足温度补偿,例如,利用具有正负温度系数特性的电阻,使电阻随温度变化的增量相等,从而抵消温度对输出影响,或者利用电路结构上特性,使温度干扰信号转换为共模信号输入,然后做差分运算互相抵消。

    2、非线性补偿

      传感器输入输出非线性主要体现在两方面,敏感元件在转换原理上非线性,例如热电偶热端温度与热电动势是非线性的关系,采用测量电路非线性,列如电桥测量电路,桥臂元件参数的变化使电桥失去平衡,导致输入输出关系非线性。
      非线性补偿方法有硬件法、和软件法,前者是增加非线性补偿环节,利用某些元器件非线性特性,组成各种、指数、对数、开方等运算。以实现对传感器输入输出非线性补偿。软件法补偿相比于硬件来说更简单,无需增加非线性环节,降低硬件复杂度。软件补偿主要有两种方法:
      查表法:有些传感器输入和输出高度非线性,输入和输出的关系很复杂,可能涉及到指数、对数、微积分等复杂运算,由于受处理器限制,无法快速完成这些运算,或者输入和输出根本无法建立数学模型,为解决这类问题,可采用查表法。查表法就是将具体输入与输出记录下来并建立一张关系表,实际应用时,通过查表来输出。
      计算法:当传感器输出与输入的关系有确定的数学表达式时,可以在程序中编制一段实现这个数学表达式的程序,被测量经过检测、AD采样、标度变化后进入计算机根据数学关系计算,计算后的值就是线性化处理后的输出。建立数学模型可采用数据拟合的方式实现,首先采集输入输出数据序列,然后通过线性插值或多项式插值方式找出数据模型。

    • 线性插值
      假设输入输出特性为非线性关系,关系为y=f(x),当x=xi时,y=yi,x=xk时,y=yk,则当xn=xi+△x(xi<xn<xk)时,yn可表示为:
      y n = y i + y k − y i x k − x i Δ x y_{n}=y_{i}+\frac{y_{k}-y_{i}}{x_{k}-x_{i}}\Delta x yn=yi+xkxiykyiΔx
    • 多项式插值
        多项式插值方式是设法用一个多项式p(x)去逼近传感器实际特性y=f(x),使得p(xn) =f(xn)。如图示,用p(x)近似替代传感器实际特性f(x)

    在这里插入图片描述

    3、标度变换

      数字传感器采集的数据并不定于原来带有量纲的参数值,它仅仅对应于被测参数的大小,必须把它转换成带有量纲的数值后才能显示应用,这种变换称为标度变换。
       如温度传感器监测-40℃ ~ 120℃温度时,传感器输出为0 ~ 5V电压,经过AD转换后得到0 ~ 255数字量,则0 ~ 255数字量则是对应-40 ~ 120℃温度信号。
      若被测物理量变化范围为A0 ~ Am,对应数字量为D0 ~ Dm,实际输入An对应数字量为Dn,则An可表示为:
    A n = A 0 + D n − D 0 D m − D 0 ( A m − A 0 ) A_{n} = A_{0}+\frac{D_{n}-D_{0}}{D_{m}-D_{0}}(A_{m}-A_{0}) An=A0+DmD0DnD0(AmA0)

    展开全文
  • 5G:认识5G关键技术

    万次阅读 2018-09-27 23:52:40
    软件定义的无线电(Software Defined Radio,SDR) 是一种无线电广播通信技术,它基于软件定义的无线通信协议而非通过硬连线实现。频带、空中接口协议和功能可通过软件下载和更新来升级,而不用完全更换硬件。 ...
  • 系统环境变量设置关键技术

    千次阅读 2004-07-29 13:59:00
    系统环境变量设置关键技术 ...下面我简单介绍一下设置环境变量的关键技术。 设置环境变量通过程序可以分两步来操作: 1、通过修改注册表项来修改环境变量存储的数据 用户环境变量列表的注册表
  • 知识图谱简介(二)——关键技术

    千次阅读 2019-05-08 11:27:14
    在知识图谱的简介(一)中已经描述过知识图谱,在本文中即对于知识图谱的一些关键技术做简要阐述。 大规模知识库的构建与应用需要多种技术的支持。依据知识图谱构建的过程,主要分为四个部分:信息抽取、知识表示、...
  • 网络安全风险评估关键技术研究

    千次阅读 2018-02-05 10:15:00
    攻击概率计算的准确性不仅影响了对网络安全状况和攻击预测的判断,并影响风险值的计算结果,以及后续的风险控制措施的选择,因此,攻击概率计算的准确性是网络安全定量评估的关键问题之一。 状态攻击图中:攻击图的...
  • 一文彻底读懂物联网关键技术之——ZigBee!   本文采用问答形式向你详细地介绍了方方面面,不夸口的说,你所需要知道的关于 ZigBee的一切,在这里基本可以了解到! 在智能硬件和物联网领域,时下大名鼎鼎的...
  • 【转自知乎】5G关键技术之波束成形

    万次阅读 多人点赞 2016-12-19 18:34:39
    偶然读到知乎上的一个文章,关于[波束成形]概念,的很...5G关键技术之波束成型 原作者:李一雷 · 2016年8月 本文首发于雷锋网 经典通讯问题:如何才能让很多人在一个房间内说话互不干扰 在上一期文章
  • 摘要:更为深入地介绍了GaussDB(openGauss)的关键特性、成功案例。 GaussDB(openGauss)是深度融合华为在数据库领域多年的经验,结合企业级场景需求,推出的新一代企业级分布式数据库,支持集中式和分布式两种部署...
  • 本文是工信部信通院《数据流通关键技术白皮书》解读之二。 实现数据流通又不泄露用户隐私信息,是白皮书的目标。实现这个目标,手段有多种,比如安全多方计算,区块链等都是技术手段之一。 由于目前还在技术选型...
  • spooling技术介绍

    千次阅读 多人点赞 2018-06-07 09:30:59
    SPOOLing(Simultaneous Peripheral Operation On-Line)技术,即外部设备联机并行操作,是为实现低速输入输出设备与高速的主机之间的高效率数据交换而设计的。通常称为“假脱机技术”,又称为排队转储技术。 具体...
  • 技术书是怎么出来的

    千次阅读 多人点赞 2014-09-15 07:50:44
    我想说:爱过,过,失落过,高兴过,低徊过,迷惘过,兴奋过,不管怎样,我从未对那些流过的汗水、付出的精力后悔过,如果还有机会,我还愿意再这样走上一遭。
  • 先简要介绍一下HTML富文本编辑器实现原理,如果是非所见即所得,那么用 textarea就可以搞定了,如果要实现所见即所得,尤其是你想插入图片之类的,那么就要考虑用其他方式来替换 textarea了,毕竟textarea不能实现...
  • DPDK技术介绍(一)

    万次阅读 多人点赞 2020-04-17 21:03:31
    DPDK是INTEL公司开发的一款高性能的网络驱动组件,旨在为数据面应用程序提供一个简单方便的,完整的,快速的数据包处理解决方案,主要技术有用户态、轮询取代中断、零拷贝、网卡RSS、访存DirectIO等。 1、UIO(Linux...
  • 上篇博文:【小家Spring】高性能关键技术之—体验Spring MVC的异步模式(Callable、WebAsyncTask、DeferredResult) 基础使用篇 介绍了Spring MVC异步模式的基本使用,相信小伙伴们基本的使用都能运用自如了。 那么...
  • 分享下写技术文章的思路

    千次阅读 2018-09-29 14:49:01
    摘要: 我一直认为,程序员应该多写技术博客… 原文:写技术文章能帮助大家理顺学习的思路,更能促进自己不断学习——分享下写技术文章的思路 链接:https://www.cnblogs.com/JavaArchitect/p/9602411.html 作者:...
  • 在之前的文章中,我介绍了分库分表的几种表现形式和玩法,也重点介绍了垂直分库所带来的问题和解决方法。本篇中,我们将继续聊聊水平分库分表的一些技巧。分片技术的由来关系型数据库本身比较容易成为系统性能瓶颈,...
  • 最全NFC芯片技术厂商介绍及应用介绍   NFC由非接触式射频识别(RFID)演变而来,由飞利浦半导体(现恩智浦半导体公司)、诺基亚和索尼共同研制开发,其基础是RFID及互连技术。目前这项技术在日韩被广泛应用,他们...
  • 数据重删技术介绍

    千次阅读 2016-11-28 09:37:37
    一:数据重删技术概述 1.源端去重 && 宿端去重 源端去重(Source Deduplication)首先在客户端计算待传输数据的指纹并通过与服务端进行指纹比对发现和消除重复内容,然后仅向服务端发送非重复数据内容 , 从而达到...
  • 人脸识别技术 介绍,现况以及应用

    千次阅读 2018-12-13 11:51:31
    最近几年国内外吹起了了一场AI风,AI技术浪潮也成为了一种趋势. 人脸识别作为最近几年发展的还算成熟的一项ai技术,也引起了众多人的...技术介绍 通俗点来讲就是,使用深度学习的框架,通过大量的图片人脸数据来训练...
  • 区块链主流开源技术体系介绍

    万次阅读 2016-09-27 11:52:15
    介绍主流的区块链开源技术体系,包括比特币体系、以太坊ETH、IBM HyperLedger fabric、比特股BitShare、公证通Factom、瑞波Ripple、未来币NXT,帮你分析各个系统的特点和性能。
  • 用创业思维复盘从写技术博客到出书
  • 怎么才能技术文档

    千次阅读 2006-09-23 19:28:00
    有很多人都觉得我文档的好。这不是一两个人说了。 我记得大概是在创业工作的时候,从业绩点文档开始的。... 有朋友说让我介绍介绍经验。那我就在这里说说。其实,世上无难事,是怕有心人啊。要做好一
  • 介绍几种容灾复制技术

    千次阅读 2016-11-11 11:11:58
    组建容灾的重要基础之一是数据复制技术。在操作上简单来讲就是通过复制软件实时地将数据从一个主机(或磁盘)复制到另一个主机(磁盘),生成一个数据副本。  数据复制有多种分类方法,依据复制启动点的不同,可...
  • 手把手教你专利申请书/如何申请专利

    万次阅读 多人点赞 2008-12-10 10:46:00
    手把手教你专利申请书·如何申请专利   摘要 小前言 (一)申请前的准备工作  1、申请前查询  2、其他方面的考虑  3、申请文件准备 (二)填写专利申请系列文档  1、实际操作步骤  2、具体操作  3、经验...
  • 如何软件项目技术

    千次阅读 2011-08-13 20:25:48
    技术标作为一个初期评价软件供应商的重要标准之一,需要覆盖多方面的考虑因素,从需求的理解,到系统的设计,到项目的实施与管理,以及项目的... 项目情况的一个综合介绍,这是一个综述,通过这个综述说明项目的背景
  • Java分布式应用技术架构介绍

    万次阅读 多人点赞 2014-06-19 20:30:12
    分布式服务下的关键技术:服务框架架构 服务框架通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务启用 服务框架是一个点对点模型 服务框架面向同构系统 适合:移动应用、互联网应用、外部...
  • 如何一篇可实施的技术方案?

    万次阅读 多人点赞 2020-05-11 23:28:27
    为何要这篇博文? 一个错误的方案设计 重点是什么? 拿模板说说 总结

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 239,469
精华内容 95,787
关键字:

关键技术介绍怎么写