
第二节 人工智能理论与技术
一、自然语言处理技术
1.语音生成与识别
语言是人类最重要的交际工具,是人类进行沟通的主要媒介,而语音是语言的声学表现,让机器可以听懂人的语言并通过语音与人类进行交流是人工智能的一大研究方向,是人类实现人工智能的关键技术之一。这一研究主要涉及两种技术:语音识别和语音合成。近几年随着研究的发展,这两项技术在软件和硬件上都取得了很多突破性的进展,智能语音设备已在日常生活中扮演各种成熟的角色。计算机智能语音技术开始向专业领域发展,其中医疗健康领域是一个重要方向。
随着电子病历技术的发展和逐渐普及,智能语音技术在其中起到了非常关键的作用,如基于语音识别的智能语音录入技术可以帮助医生更加高效书写电子病历,有效解放医生的双手;具有智能语音对话功能的导诊机器人可以将患者的症状描述与后台的诊疗数据库进行对比,为用户提供专业级的医疗咨询、导诊、医学回访等服务,大大减轻了医生的工作压力,提升了医生的工作效率。未来,基于智能语音技术的医疗机器人必将渗透到医疗健康领域的方方面面,成为医生的得力助手。
(1)语音识别
1)语音识别概述:
想让机器与人类之间进行“对话”,首先要让机器“听懂”人类在说什么,这就是语音识别技术,它可以看作是计算机的听觉系统。声音是以波的形式存在于介质中,这种波在计算机中是以一种离散的时序数据被保存。语音识别的目的就是将这样一段记录着各时间点声音强度的序列(图1-2-1)转换成一段文本序列或指令。为了让机器能够“听懂”人话,科学家们做了很多努力,涉及很多学科的融合,包括人工智能、声学、语言学、信号处理、仿生学等多个领域。

图1-2-1 计算机中存储的声波信号
人类对语音识别的研究开始于计算机发明之前,最早的语音识别器是20世纪20年代生产的一款玩具狗,叫“Radio Rex”,当人们对着它呼喊“Radio Rex”,这只玩具狗就能从底座上跳起来。到了20世纪50年代,基于计算机技术的语音识别研究已经可以实现对一些音节和简单孤立词的识别。AT&T贝尔实验室开发的Audrey系统通过跟踪共振峰的方式,能够识别10个英文数字,准确率达到了98%,这是第一个基于电子计算机的语音识别系统。20世纪60年代,线性预测编码(linear predictive coding,LPC)和动态时间规划(dynamic time warping,DTW)等方法出现,使得人们能够更好地处理不定长度的信号系列。到70年代末期,语音识别对孤立词的识别能力已经达到实用要求。20世纪80年代,基于隐马尔可夫模型(hidden Markov model,HMM)的声学建模和基于n元模型(n-gram)的语言模型,人类对语音识别的研究由模板匹配转向了统计方法,并在其后的很长一段时间主导着语音识别技术的发展。至此,语音识别系统开始向大词汇量、非特定人、连续语音进行挑战。之后,语音识别系统开始快速走向实用化,并开始与其他领域结合。同时,说话人自适应、听觉模型、语言模型等方面的研究也越来越受到人们的关注。到了21世纪初,深度学习技术在语音识别中发挥重要作用,使语音识别的研究获得了突破性进展,通用语音的识别结果正确率从原来的85%迅速提高到96%,这个识别率已经高于人耳。至此,语音识别技术开始走向大规模商业化阶段,并且迅速进入人类生活和生产的方方面面。
2)语音识别基本原理:
一个完整的语音识别系统通常包括信号处理与特征提取、声学模型、语言模型和解码搜索四个模块,如图1-2-2所示。

图1-2-2 语音识别系统流程图
3)语音信号处理和特征提取:
在采集声音的过程中,由于环境和硬件设备等因素的影响,很难获取一段高保真、无噪声的语音。所以通常情况下,一个语音识别系统首先要做的是对输入的语音信号进行预处理。
信号预处理工作主要包含静音切除和音频的分帧。静音切除也叫话音激活检测(voice activity detection,VAD),其原理是将音频信号中的长时间静音片段进行提取、识别和消除,并将截取出的有效的语音片段进行后续处理,从而降低静音片段带来的干扰。音频的分帧是把声音分割成小段,每一段称之为一帧。一般来说,经过分帧后,相邻两帧之间是有重合的,如图1-2-3所示。单帧的长度为25ms、相邻两帧之间有15ms的重合,称为帧长25ms、帧移10ms的分帧。

图1-2-3 音频的分帧
信号处理完之后就是语言信号的特征提取工作,即把音频信号转换成一个个的特征向量,每个特征向量都是用来量化某个特定的声学特征。从音频信号中提取出特征向量的过程就是语音特征提取。在传统语音识别中,人们在对语音信号进行特征提取时通常使用梅尔频率倒谱系数(Mel-frequency cepstral coefficients,MFCCs)特征。MFCCs特征可以理解为是对人耳生理特征的一种量化表示。它把每一帧音频变成一个向量,如果我们假设该向量是S维,音频的总帧数为T,那么整个音频信号经过转换后就变成了一个S行、T列的矩阵,我们称之为语音特征向量序列或者观察序列(如图1-2-4所示)每一帧都用一个12维的向量表示,色块的颜色深浅表示向量值的大小。

图1-2-4 声音的MFCCs特征
在传统的语音识别中,MFCCs起到了非常重要的作用。但随着深度学习技术的介入和发展,人们开始探索通过深度神经网络模型直接学习一个滤波器来取代MFCCs滤波器组,这个技术在很多场景中已经趋于成熟。
4)声学模型:
在经过语音特征提取之后,需要一个模型将这些提取出来的特征和已有的声学符号(音素)进行匹配。这种模型称之为声学模型。在传统的语音识别系统中,声学模型通过统计建模的方式,把输入的语音特征向量序列X=(x1,x2,…,xT)转化成词序列W=(w1,w2,…,wN)并输出,其中,最为著名的就是基于隐马尔可夫模型(HMM)的声学模型。在机器学习兴起之前,基于HMM的声学模型在语音识别中起了非常重要的作用,并在很长一段时间里成为语音识别的主流。HMM可以模拟人说话的过程,可视作一个双重随机过程:一是利用有限状态数的马尔可夫链模拟语音信号统计特性的隐式随机过程,二是与马尔可夫链各状态相关联的观测序列的随机过程。
然而传统声学模型在音频信号的特征提取效率比较低,促进科学家们探索别的解决途径,于是深度神经网络(deep neural network,DNN)出现了。将DNN网络应用于语音识别模型中发现了新问题,那就是音频信号是一个不定长度的时序信号,而DNN模型需要输入的数据大小却是固定的。为了解决这个问题,在深度学习开始应用于语音识别的早期,人们开发出了一些将HMM模型与DNN模型结合起来的混合模型;随后,又将广泛应用于计算机视觉的卷积神经网络(convolutional neural network,CNN)也运用到声学模型的构建中,这些改进都在后续的研究中得到论证并取得相当不错的效果。
在人类的语言中,一个词的发音往往要结合上下文的语境,很多时候还会出现协同发音(coarticulation)现象,这就要求语音识别必须做到能够对上下文进行分析判断。而在深度神经网络中,循环神经网络(RNN),特别是长短时记忆网络(long short-term memory,LSTM)在处理时序数据时有强大的长时建模能力,因此,基于RNN-LSTM框架的语音识别模型应运而生,该模型完美地匹配了这些功能。长期的研究和实践证明,深度神经网络在语音识别中具有独特的优势,在很多领域的应用中已经成为研究的主流。
当然,在目前的语音识别技术中,每种模型都有自己独有的优势,例如,HMM擅长处理可变长度的输入,CNN适合处理可变声道,RNN适合提取上下文语境。因此,将各个模型通过某种方式结合在一起的混合模型是目前声学建模的主要方法,它不仅可以结合各种模型的优点,还能解决特定场景下的问题。
(2)语音合成
1)语音合成概述:
如果说语音识别是为了让计算机听懂人类的语言,那么语音合成(voice synthesis)则是让计算机能够像人一样说话,它是将任意文本转换成语音的技术。实际上,人类对语音合成的研究要远远早于对语音识别的研究。
早在18到19世纪,科学家就开始研究利用机械装置来模拟人的发声,他们通过设计精巧的气囊和风箱合成出一些原音和单音。20世纪初,贝尔实验室开始了对电子语音合成技术的研究,人们使用电子器件来模拟声音的谐振,并制作出第一个电子语音合成器VODER,开启了近代语音合成技术的道路。之后,语音合成又经历了共振峰合成器阶段、单元挑选合成器阶段以及基于HMM的参数合成阶段,直到近几年,随着深度学习技术的迅速发展,深度神经网络模型开始被广泛应用于语音合成领域,并逐渐取代了传统技术。
随着研究的不断推进,当前语音合成技术在多数场景下发音水平已经接近真人发音,还可实现声音的个性化定制、方言发音等,满足不同应用场景的个性化需求(如各种导航软件的语音包)。现阶段,研究人员关注的重点是如何让合成的语音听起来更加自然和带有情感等问题。
2)波形拼接语音合成法:
波形拼接语音合成是根据所要合成的句子从已有的语音语料库中选择匹配的声音波形片段,并对这些片段进行编辑、数据平滑处理,最后拼接成为完整的一句话。对于一个波形拼接语音合成系统,要完成一套定制化的通用语音语料库的制作,往往需要对录音人进行长达几十个小时的专业录音采集。受此限制,该方法通常只能合成特定语言场景下的有限词汇的语音段,自动报时、交通报站、早期的车载导航等播报系统的语音合成都是采用这种方式。
3)参数语音合成法:
参数语音合成,又称为分析语音合成,其原理是通过分析计算在声音中提取出各种声学参数,并对其进行处理来合成语音。该方法和波形拼接法一样,也需要提前录制语音语料库,并从这些语音中提取出相关的声学参数,然后将这些语音与对应的声学参数组合成一个完整的音库。不同的是,该方法加入了一个韵律模型,用来从文本中提取韵律参数,这使得参数语音合成法相较于波形拼接合成法显得更成熟和专业。
当合成语音的时候,参数语音合成法根据所要合成的文本,从音库中选择合适的声学参数,配合韵律参数,并通过一些特定的算法合成语音。该领域比较成熟的方法是统计参数语音合成方法,“统计”是指这些声学参数由统计模型生成。目前使用最多的统计模型是隐马尔可夫模型。
和上面提到的波形拼接语音合成不同的是,参数语音合成通常只需要10小时左右的记录和采集就可以完成定制语音包的制作。同时,参数语音合成更能适应不同的韵律特征,这让该方法一度成为语音合成领域的主流技术。然而,该方法由于环节过多,参数和算法复杂,在“加工”过程中容易造成信息损失,导致合成的语音音质欠佳,直观的感受就是合成的语音听上去很僵硬,听众轻易就能判断出这种声音是“加工”出来的。
4)端到端语音合成法:
为了解决上述两种语音合成法的弊端,研究人员们逐渐将目光放到了机器学习领域,人们用深度神经网络来建立文本特征和声学特征之间的模型,并取得了极好的效果。深度信念网(deep belief net,DBN)和长短时记忆网络是最早被成功应用于语音合成的两个模型。之后,卷积神经网络也逐渐加入语音合成的行列中。随着技术的发展,又演变出了基于深度学习的端到端的语音合成模型。近几年,随着深度学习的快速发展,一些基于深度神经网络的端到端的语音合成技术逐渐成熟,这样既省去了繁缛的特征提取工程,也免去了文本分析效果对合成结果的不利因素。因此,随后的关于语音合成的工作,大都自然而然地转向了端到端模型的研究。目前市面上常见的手机导航软件便是加载了这种端到端语音合成技术,软件公司邀请特定的人(通常是明星)录取少量关键信息组成语音库,交给机器学习后就会生成完整的语音包供使用者下载,几乎可以达到以假乱真的效果。
2.文本理解与生成
自然语言是人类社会独有的智慧结晶。在日常生活中,几乎所有的人类活动都存在着自然语言理解和生成的过程。然而掌握语言系统对于计算机来说却并非易事。即使是拥有精密大脑系统的人类,学会一门语言仍需要多年的训练与实践。自然语言处理(natural language processing,NLP)应运而生,旨在研究能实现人与计算机自然交互、有效通信的各种理论和方法,让计算机读懂人类语言并能通过人类语言给予反馈。
智慧医疗近年来成为一大研究热点,这与自然语言处理的发展有密不可分的关系。国内众多医院目前已经累积了庞大的医疗数据,然而由于医疗数据结构化不足,不同医疗机构之间存在数据壁垒,医疗大数据始终没有得到充分的挖掘和利用。为了减轻医疗人员的工作负担,更高效准确地为病人提供诊断服务,研究人员尝试通过NLP辅助完成医学领域的知识提炼过程,挖掘其中有用的诊疗信息,并统一规范以方便医疗人员及医疗机构之间共享成果。
自然语言处理主要包括语音识别、文本理解、文本生成等方向。其中,语音识别技术在研究目标和方法上和自然语言处理有较大差异,近年来逐渐单列成一个研究领域。本章节将介绍文本理解与生成的发展情况,并重点介绍基于深度学习的相关算法。
(1)文本理解与生成概述:
从19世纪30年代开始,自然语言处理领域就开始使用人工制定的特殊规则对人类语言进行处理。在19世纪80年代,数据驱动的统计概率方法以及机器学习方法开始受到重视。在深度学习被广泛认可和应用之前,解决NLP问题的机器学习方法主要包括支持向量机(SVM)和逻辑回归。
如果把深度学习架构比作一架火箭,那么数据就是火箭的燃料。随着社会信息化进程的快速发展,人类活动在互联网上产生了大量的数据。同时,业界对于海量数据收集能力也在不断提高。有了充分的燃料,火箭才具备上升的动力。深度学习架构在数据充足的前提下,逐渐展露出优势,在各个领域都有突出的表现。随着硬件技术的进步,计算机的计算与并行能力逐步提升,如今已经达到了人们运用深度学习处理实际问题的标准。算法速度的提升无疑在很大程度上刺激了NLP在市场上的应用,比如机器翻译、对话系统等。
国内近年来开始重视人工智能在各行各业的落地应用,政府相继出台了支持社会信息化、智能化,扶持人工智能初创企业的相关政策。大量AI独角兽企业嗅到商机,其中包括如今在自然语言处理技术方面独树一帜的科大讯飞。腾讯、阿里巴巴、百度也都在智能对话系统上有所部署。在医疗领域,医疗系统智能化显示出必不可挡的趋势,在未来几年内可能会迎来蓬勃发展的小高潮。其中文本理解与生成技术可以在医学文本挖掘、医学决策系统、医学信息提取与分析等方面发挥具体作用。
生物医学文本挖掘可以辅助医疗人员从数量庞大的生物医学文本数据中抽取出实体(比如基因、蛋白质、药物、疾病)以及各实体之间的关系,从而建立起一个完整的生物知识网络,并应用到生物体关系的预测、新药的研制等方面。2020年,武汉发生新型冠状病毒疫情,席卷中国各地。面对突如其来的新型病毒,人工智能在新药筛选的研究工作中也占了一席之地。据《柳叶刀》 2020年2月份最新研究表明,利用人工智能筛选出的某上市药物可能对新型冠状病毒感染有效。可见随着人工智能的成熟,未来医疗行业将更多地借助其加速新药研制和疾病诊断。
医疗决策系统是一种较好的辅助手段,可以指导医务人员的诊疗判断,降低其出错率并提高其工作效率。医疗决策系统的建立一般分为以下三个步骤。
1)知识库的建立:
医学领域有其特殊性,不能使用通用的知识库。因此需要专门针对医学专业词汇、词语常用组合及常见的语句进行建模,建立专用于医学语言处理的知识库。
2)语言处理:
中文相对于英文更加复杂,尤其是在预处理方面,需要考虑更多的情况。一般需要经过分词、分句、语义分析、文本摘要等过程。
3)医疗决策支持系统的生成:
在以上两个步骤的基础上,通过输入的病理描述推理病情,并对病情走向做出判断,帮助医务人员分析病情。
信息抽取是指从文本中抽取出信息,并以结构化的形式储存在库中,以便用户对信息查询使用。人类对信息摄入十分有限,无法掌握海量的医学文献知识。但是借助于信息抽取系统,就可以快速掌握特定的医学信息,比如对某些疑难杂症的治疗方法,从而探索出新的有价值的治疗手段。信息抽取技术在电子病历中也发挥了重要的作用。哥伦比亚大学的Carol Friedman等人设计的MEDLEE系统有效地将病历报告从文本转换成格式化数据,是一个很成功的医学信息抽取系统。
(2)智能文本理解与生成算法:
最近几年,基于神经网络的模型算法在多种NLP任务上都达到了优秀的性能。在2011年,Collobert等人的论文首次提出并证明了简单的深度学习框架能够在多种NLP任务上超越传统方法。自此,NLP逐渐成为人工智能领域的一个研究热点。
在2018年,谷歌发表了一篇基于转换器的双向编码表征(bidirectional encoder representations from transformers,BERT)语言模型论文,是深度学习在自然语言领域的一个重大突破。虽然基于长短期记忆网络的模型已经具有强大的性能。但由于它的单向性,计算机仍然不能最大程度地学习到文本中的信息。BERT提出了一种深度双向变换器模型,不仅解决了单向模型的问题,而且刷新了11种NLP任务的指标,在业界引起了巨大的轰动。
以下梳理了NLP领域发展史上重要的模型算法,并着重介绍近年来NLP领域几个典型的深度学习模型算法。
1)传统语言模型:
在一段文本中,通过前一个单词预测下一个单词的任务是语言模型主要解决的问题。语言模型的历史由来已久,经典的方法是基于n元模型(n-gram model)——利用前n个单词预测下一个单词。简言之,语言模型就是计算一个句子的概率,这个概率代表这个句子的合理度。
用以下两个句子为例:
句1:“今天我超市买菜,碰到了一个朋友。”Prob=0 7。
句2:“爱因斯坦喝水没有人来到这里。”Prob=0 2。
句子1相对较为通顺,因此得到了相对高的概率值。句子2不通顺,因此得到了较低的概率值。句子的概率值通过词序列出现的概率计算,采用链式法则,即第n个词出现的概率取决于前n-1个词。为了简化,通常会采用k阶马尔可夫假设(Markov assumption),即当前词出现的概率取决于前k个词。
在神经语言模型出来之前,人们一直采用的是传统语言模型。假设#(wi,…,wj)表示词序列wi,…,wj在语料中出现的次数。对多个词的概率相乘,就得到了句子的概率。然而传统的基于极大似然估计的语言模型缺少对上下文的泛化能力。比如,语料库中如果出现白衬衫、黑衬衫,而没有出现过蓝衬衫,该语言模型对蓝衬衫的概率估计就会偏低。但是也正因为它的“死板”,在特定的语料库中反而比灵活的模型达到更好的准确度。比如语料库中出现了白马、黑马,那么出现蓝马的概率也会偏低,这反而是我们希望看到的结果。
2)神经语言网络:
为了解决传统语言模型的问题,研究人员提出基于神经网络的语言模型。Bengio等人于2001年提出“前馈神经语言网络(feedforward neural language network)”。随着词嵌入的出现,循环神经网络和长短时记忆网络(LSTM)逐渐取代了前馈神经语言网络。尽管语言模型的核心思想很简单,却为之后各种模型的产生奠定了基础。
3)词嵌入:
大部分监督机器学习模型,都可以归结为此公式:f(x)→ y。
假设有一对(x,y)的样本,x为一个句子中一个词,y为x附近的k个词。通过语言模型f,判断(x,y)这个样本是否符合自然语言的规则,更通俗点说就是:词语x和词语y放在一起,是不是一句能为人所理解的句子。word2vec是词嵌入模型的经典之作,它的最终目的不是要训练一个完美准确的语言模型f,而是获得模型训练完后的副产物模型参数,即神经网络的权重。通过模型参数,输入的x可以输出向量化的数据表示,这个数据表示便叫作词向量。连续词袋模型(continuous bag-ofwords,Cbow)和跳字模型(Skip-Gram)是两种不同的解决方式。它们一个是根据周围的词语预测中心词语,另一个则是根据中心词语预测周围词语,如图1-2-5所示。

图1-2-5 Cbow和Skip-Gram架构
由于神经网络只能接受数值化的输入,因此需要对单词进行数字化表示。可以基于训练数据构建一个词汇表,再对词汇表中的单词进行独热编码(one-hot encoding)。这样每一个单词都能对应一个数值化的向量。
通常的做法是,从训练数据中找出出现频率超过比如5次的单词,将这些单词组成一个词汇表。假设一共抽取了10 000个不重复的单词,可以对这个词汇表中的单词进行one-hot编码。每个单词都是一个10 000维的向量,向量每个维度的值只有0或者1。假如单词apple在词汇表中的出现位置为第3个,那么apple的向量就可以表示为在其第三维度取值为1,其他维都为0的10 000维的向量(apple=[0,0,1,0,0,……,0])。模型的输出同样是一个10 000维度的向量,每一个维度都是一个0到1的概率值,每一个概率代表着当前词是输入样本中输出字(output word)的概率大小。
以Skip-Gram模型为例,假如有一个句子“The present is talking in the public”。
首先选取第一个词“The”作为输入词。有了输入词以后,再定义一个叫作skip_window的参数,它代表着从当前输入词的两侧选取词的数量。假设skip_window参数设为1,那么就得到了(the,present)这对词。接着选取单词“present”,就得到了(present,the)(present,is)两对词。以此类推,得到整个句子的词对。
那么神经网络参数如何训练呢?以talking为例,将形成2组训练数据(talking,is)和(talking,in)。talking的one-hot编码向量输入神经网络后,得到的output也是一个10 000维的向量。这个output通过softmax函数转换成了10 000个概率值,这10 000个概率值的总和为1。以(talking,is)为例,将这个output和is的one-hot编码向量求交叉熵,即损失值。最终的目标是最小化损失函数。通过反向传播(back propagation),使用随机梯度下降法(SGD)进行模型权重的优化,最终得到优化过的模型。Cbow模型与Skip-Gram模型类似,只是训练数据的提取方式有所区别。
词嵌入在自然语言处理领域最大的贡献,并不是训练出的语言模型,而是训练出的词嵌入矩阵。研究发现,用预训练的词嵌入用来初始化模型,可以提高许多下游任务的性能。
4)长短期记忆网络:
2013年,自然语言处理领域正式步入神经网络时代。在处理动态输入序列时,自然而然会想到使用循环神经网络模型。但自从长短时记忆网络(LSTM)出现后,循环神经网络模型很快就被替换掉了。在RNN中,随着网络深度的增加,模型会因为梯度消失和梯度爆炸逐渐忘记前期的数据。而LSTM模型能更好地解决这个问题。
5)序列到序列模型:
序列到序列模型最典型的应用,就是机器翻译。机器翻译目前已经达到了商用标准,多家公司都推出过相关的软件。其中谷歌翻译在业界享有较高的声誉,归功于其较早地用神经机器翻译模型取代基于短语的整句机器翻译模型。2014年,Sutskever等人提出了序列到序列学习。在这个模型中,一个神经网络作为编码器,压缩输入的句子向量;另一个神经网络作为解码器,根据编码器的输出逐个预测出新的序列,并将前一个预测得到的输出符号作为预测下一个输出符号的输入。解码器与编码器可以选用异构的神经网络架构,具有相当的灵活性。模型如图1-2-6所示。

图1-2-6 序列到序列模型
2016年,谷歌宣布他们将用神经机器翻译模型取代基于短语的整句机器翻译模型。也就是说用500行神经网络模型代码达到的效果可以超过50万行基于短语的机器翻译代码。序列到序列(seq2seq)模型不仅提高了机器翻译的准确率,更是在很大程度上简化了代码的开发量。
6)注意力机制:
序列到序列学习有一个缺点,就是需要输入固定大小的向量,这会导致压缩过程中损失一部分信息。众所周知,一个由30个词组成的句子序列与一个由10个词组成的句子序列所携带的信息量是不同的,而注意力机制通过增加有效关键信息的权重,减少序列中的信息损失。如今,注意力机制已经被应用于情感分析、文本理解、图像理解等任务中。注意力机制还有一个附加作用,它可以通过注意力权重来检测出输入位置与特定的输出有关,从而窥探到模型内部的运作机制。
7)预训练的语言模型
语言模型的训练是无监督学习,因此可以使用海量的原始数据。2015年预训练的语言模型首次被提出,最近它被证明能在大量不同类型的任务中发挥作用。BERT是2018年10月的最新技术水平(state of the art)模型,对比之前的预训练模型,它使用了机器翻译模型(transformer),相对循环神经网络(RNN)更加高效,并且能捕捉到更长距离的依赖。
如图1-2-7所示,假如输入第一句“my dog is cute”和第二句“he likes playing”这两个句子。词的输入(token embeddings)部分是对每个单词进行词嵌入向量的转化,其中[sep]是两个句子间的分割符,前半句在句子的输入(segment embeddings)部分编码为A,后半句为B。为了感知词间的位置关系,模型通过词位置的输入(position embeddings)编码了各个词的位置信息。

图1-2-7 BERT编码信息
尽管BERT性能惊人,但是模型需要大量计算力和冗长的训练时间。用33亿词量的数据集训练一个高性能的BERT Large模型,在8块P100上可能需要1年的时间。自然语言处理发展到现在,虽然在许多任务上达到了较好的性能,但是在应用领域上还是有许多不够成熟的地方。其最关键的原因仍在于研究界与工业界存在的知识壁垒和数据壁垒。不过随着大数据共享时代的来临,可以预见自然语言处理在医疗领域的应用,必然会对智慧医疗的发展带来很大的推进作用。