BERT对于NLP而言无疑是向前迈出的重要一步。诸如主题检测和情感分析之类的业务活动将更易于创建和执行,结果也将更加准确。但是,您是如何找到BERT的,该模型是如何工作的呢?为什么这么强大?最后但并非最不重要的一点是,它可以为业务带来什么好处,以及我们决定将其集成到sandsiv +客户体验平台中。
这次很难,我为自己设定了一个宏伟的目标。向既没有编程知识又没有人工智能背景的人们讲解变压器。挑战很大,我会尽力而为。
今天早上,我想起了学习葡萄牙语的新语言。我喜欢这种语言的声音,我对自己说,让我们学习吧!我想到的第一件事是要用葡萄牙语翻译成葡萄牙语(从我的母语意大利语),以建立第一个基本词汇。
之所以很有趣,是因为某些单词听起来很像意大利语,在意大利语的背景下,我试图将事物理解为同义词和自主语,以使其看起来比它们的真实气味更香。因此,我试图理解单词之间关系的语义或含义。
实际上,我使用一种我熟知的语言-我的母语-然后关联了这些新的葡萄牙语术语并慢慢学习了这种新语言。由于深度的机器学习和计算能力的显着提高,在计算领域已经完成了类似的过程。
计算机只知道一种语言,数学,因此如果要“教”机器对人类语言的解释,则必须参考。
重要的是要记住,深度学习解决的任何问题都是数学问题。例如,借助卷积神经网络,计算机可以“看到”。该CNN接收数学矩阵形式的图像(无论是黑白图像还是彩色图像),然后应用线性代数规则。在诸如主题检测,情感分析等任务中也是如此。
如果有人为您提供对语言敏感的NLP解决方案,但问题出在数学上,而不是语言上,知道它可能已经存在了四代,甚至更糟:关键字搜索解决方案。
在计算机世界中, 向量嵌入程序已解决了将一个未知单词(在我的情况下为葡萄牙语单词)转化为尝试学习的已知语言(意大利语)的问题。诸如FasText,Word2Vec和GloVe之类的算法正是这样做的:将任何语言的单词转换为计算机可以通过线性代数“理解”的数学矢量。再一次,这是一个数学问题,而不是语言问题。
我学习葡萄牙语的下一步是翻译小句子。我仔细听了每个葡萄牙语单词,将其翻译成意大利语。每个新单词的线性运算与我的翻译工作相吻合。在计算机世界中,相同的操作是通过称为Encoder和Decoder的算法完成的。
该系统顺序地“收听”“单词”(数学向量),将其转换为新的指令,包括语言到语言的转换以及“理解”的计算模型。...舌头。
当然,这使我可以将葡萄牙语中的小句子翻译成意大利语,但是当句子变长甚至变成完整的文档时,此时逐词系统已无法很好地工作。我必须提高专心致志的能力,并试图更好地理解葡萄牙语中每个新单词的呈现背景,当然,这与我的意大利语知识相关。
这比我以前使用的逐字方法多了一步。即使在计算世界中,下一步就是在Encoder-Decoder模型中添加所谓的“注意力机制” ,该机制使计算机可以更加关注上下文中的单词。实际上尝试应用线性过程(例如Encoder和Decoder)中缺少的那些语义规则。
尽管关注的程度有所提高,但该方法始终是顺序的,并且清楚地表明了其局限性。就我而言,每一个来自葡萄牙语的新单词,我都会尝试用意大利语阅读它,这引起了很多关注,但是我不得不说,由于语言的某些歧义,我很难正确解释它们。在计算机上,模型很难理解复杂的语义规则的情况也是如此。
我不得不说,我从葡萄牙语到意大利语的翻译水平已大大提高,尽管有一些错误,但我可以翻译比以前使用的方法更长的句子。但是,在这一点上,我需要更多,我想更快,更精确。我想更好地理解上下文。我想减少歧义。我需要某种并行过程以及上下文知识,最后,我需要了解长期依赖关系。
我的计算过程与我的需求完全相同,这就是变形金刚的用武之地。
让我们举个例子,让我们看看这两个句子:
·我去银行开了一个帐户。
·该船已接近银行。
完全相同的单词“ bank”在两种情况下都有两种含义会发生变化。您需要从整体上看这句话,以了解其语法和语义。 语言模型的ELMo嵌入会查看整个句子,以了解语法,语义和上下文,以提高NLP任务的准确性。
为了更好地学习葡萄牙语,我的下一步是阅读大量书籍,收听葡萄牙语电视节目,观看葡萄牙语电影等。我试图显着提高自己的词汇量,了解该语言及其依赖性。
我的电脑做同样的事情。例如,它已经用葡萄牙语“阅读并记住”了所有Wikipedia,从技术上讲,它做了所谓的“转移学习”。这样,当我的计算机必须以葡萄牙语执行任何语言操作时,就不再从头开始,而是以该语言创建了相当广泛的知识。
从大量单词中“学习”到对语言有很强的初步理解的模型称为生成预训练变压器(GPT)。该模型仅使用Transformer的解码器部分。它使用从阅读中学到的知识,例如Wikipedia(转移学习),并从左到右(单向)“阅读”单词。
当您学习语言的不同方面时,您会意识到,接触多种文本对于应用迁移学习非常有用。开始阅读书籍以建立强大的词汇量和对该语言的理解。当句子中的某些单词被掩盖或隐藏时,请依靠您对语言的了解,从左到右和从右到左(双向)阅读整个句子。
现在,您可以更准确地预测被屏蔽的单词(屏蔽语言建模)。这就像填补空白。您还可以预测两个句子何时相关(预测下一个句子)。这是一个简单的BERT-代表来自变压器的双向编码器表示(BERT)-是Google开发的NLP预训练技术。它的工作可以从首字母缩略词一目了然:变压器编码器的双向表示。
你困惑吗?不用担心,我也是。我只会尝试从实际的角度解释BERT的真正优势。
在我们之前看到的所有事情中,BERT是一个巨大的进步。它收集了以前模型的所有功能,从词嵌入到转换器,以及它们实现的所有优点。但这带来了其他非常有趣的实践创新:
BERT是双向的,它不只是从左到右的“读取”,而是相反的。这使它可以更好地“理解”上下文中的单词。不仅对于歧义词,而且对于相关词,例如:Mike登上了舞台。他玩得很开心!BERT理解“他”是指Mike,这对解决语言问题来说不是一件小事。BERT在训练时不仅会“阅读”,而且会隐藏15%的单词并尝试“猜测”它们。
通过这种方式,他尝试创建超越“阅读”范围的知识,但可以帮助BERT根据先前的上下文来预测单词,甚至可以根据先前的上下文来预测句子。例如,在自动问答系统或聊天机器人中,这并不是一件小事。BERT提供了几种通用模型,这些模型可以“上载”,然后进行微调以适应特定情况(例如主题检测或情感分析),而无需海量数据进行微调。
对于那些已经尝试通过标记数据来训练NLP模型的人来说,这不是一件小事。
我从事自然语言处理已经有好几年了-真实的东西,而不是我的竞争对手因文本挖掘而失去的关键字搜索-我对BERT印象深刻。让我给您一个小的实际例子。我建立了一个情感模型,根据这样构成的数据集,最终精度为F1 89%:
·1270快乐
·154淡然
·26生气
·11无聊
·3沮丧
所有这一切都是可能的,因为通过使用Transfer Learning和BERT提供的通用模型,即使是很小的情况(在我们的情况下为FRUSTRATED)也可以进行微调。实际上,就像您可以在大脑中加载一个模型一样,该模型总结了通过阅读所有葡萄牙语获得的Wikipedia所获得的语言知识,然后对要解决的特定情况进行了一些微调。NLP的飞跃!
我忘记了,BERT显然提供了许多用于迁移学习的模型。它显然提供了多种语言。例如,基于BERT的多语言案例模型可使用104种不同的语言“阅读文本”,并且每种语言都可以使用自己的小型数据集进行完善。
BERT很快将在我们的sandisv +解决方案中可用,并且我们的客户将能够利用这项伟大的创新带来的主题检测和情感分析带来的所有这些好处。更多关于自然语言处理的信息,请继续关注中培教育。