BERT, ELMo, & GPT-2: 这些上下文相关的表示到底有多上下文化?

BERT: 理解上下文的语言模型 BERT 全名为 Bidrectional Encoder Representations from Transformers, 是 Google 以无监督的方式利用大量无标注文本生成的语言代表模型,起架构为 Transforer 中的 Encoder. BERT 是 Transformer 中的 Encoder, 只是有很多层 (图片来源] 以前在处理不同的 NLP 任务通常需要不同的 Language Model (LM),而设计这些模型并测试其性能需要不少的人力,时间 阅读详情

作者:Kawin Ethayarajh

编译:ronghuaiyang

导读

具有上下文信息的词表示到底有多大程度的上下文化?这里给出了定量的分析。

将上下文信息放到词嵌入中 — 就像BERT,ELMo和GPT-2 — 已经证明了是NLP的一个分水岭的想法了。使用具有上下文信息的词表示来替换静态词向量(例如word2vec),在每个NLP任务上都得到了非常显著的提升。

但是这些上下文化的表达到底有多大程度的上下文化呢?

想想“mouse”这个词。它有多种词义,一个指的是啮齿动物,另一个指的是设备。BERT是否有效地在每个词的意义上创造了一种“mouse”的表达形式?或者BERT创造了无数个“mouse”的形象,每一个都是和特定的上下文相关?

在我们的EMNLP 2019论文“How Contextual are Contextualized Word Representations?”中,我们解决了这些问题,并得出了一些令人惊讶的结论:

  1. 在BERT、ELMo和GPT-2的所有层中,所有的词它们在嵌入空间中占据一个狭窄的锥,而不是分布在整个区域。

  2. 在这三种模型中,上层比下层产生更多特定于上下文的表示,然而,这些模型对单词的上下文环境非常不同。

  3. 如果一个单词的上下文化表示根本不是上下文化的,那么我们可以期望100%的差别可以通过静态嵌入来解释。相反,我们发现,平均而言,只有不到5%的差别可以用静态嵌入来解释。

  4. 我们可以为每个单词创建一种新的静态嵌入类型,方法是将上下文化表示的第一个主成分放在BERT的较低层中。通过这种方式创建的静态嵌入比GloVe和FastText在解决单词类比等基准测试上的表现更好。

回到我们的例子,这意味着BERT创建了与上下文高度相关的单词“mouse”的表示,而不是每个单词都有一个表示。任何“mouse”的静态嵌入都会对其上下文化表示的差异造成很小的影响。然而,如果我们选择的向量确实最大化了可解释的变化,我们将得到一个静态嵌入,这比GloVe或FastText提供的静态嵌入更好。

上下文化的度量

上下文化看起来是什么样的?考虑两个场景:

A panda dog runs.

A dog is trying to get bacon off its back.

 ==  意味着没有上下文化(即我们用word2vec得到的东西)。 != 意味着存在某种上下文化。困难在于量化这种情况发生的程度。由于没有确定的上下文相关性度量,我们提出三个新的度量:

  1. Self-Similarity (SelfSim):一个词在其出现的所有上下文中与自身的平均余弦相似度,其中该词的表示来自给定模型的同一层。例如,我们对所有不一样的cos(, )取平均值来计算('dog')。

  2. Intra-Sentence Similarity (IntraSim): 一个词与其上下文之间的平均余弦相似度。对于第一个句子,其中上下文向量:

    帮助我们辨别上下文化是否朴素 —— 就是简单的让每个单词与其相邻的单词更相似 —— 或者是否更微妙,认识到在相同的上下文中出现的单词可以相互影响,同时仍然具有不同的语义。

  3. Maximum Explainable Variance (MEV): 在一个词的表示法中,可以用它的第一个主成分来解释这个词的变化的比例。例如,(‘dog’)是通过,,以及数据中其他每个'dog'实例的第一个主成分来表示变化的比例。('dog') = 1表示不存在上下文化:静态嵌入可以替换所有上下文化的表示。相反,如果('dog')接近0,则静态嵌入几乎不能解释所有的变化。

注意,这些度量都是针对给定模型的给定层计算的,因为每个层都有自己的表示空间。例如,单词‘dog’在BERT的第一层和第二层有不同的self-similarity值。

各项异性调整

当讨论上下文时,考虑嵌入的各向同性是很重要的。(即它们是否在各个方向均匀地分布)。

在下面的两个图中,('dog') = 0.95。左边的图片显示,“dog”这个词没有很好的上下文化。它的表现形式在它出现的所有上下文中几乎都是相同的,而且表示空间的高各向同性表明0.95的self-similarity是非常高的。右边的图像则恰恰相反:因为任何两个单词的余弦相似度都超过了0.95,所以‘dog’的自相似度达到0.95就没什么了不起了。相对于其他单词,‘dog’会被认为是高度上下文化的!

为了调整各向异性,我们为每个测量值计算各向异性基线,并从相应的原始测量值中减去每个基线。但是有必要对各向异性进行调整吗?有!如下图所示,BERT和GPT-2的上层是极具各向异性的,这表明高的各向异性是上下文化过程的固有特征,或者至少是其结果:

特定上下文

一般来说,在更高的层中,上下文化的表示更特定于上下文。下图所示,自相似度的降低几乎是单调的。这类似于在NLP任务上训练的LSTMs的上层如何学习更多特定于任务的表示(Liu et al., 2019)。GPT-2是最具特定上下文化的,其最后一层中的表示几乎是与上下文相关程度最高的。

**自相似度最低的停止词比如包括“the”。(最特定于上下文表示的词)。**一个词出现在多种上下文中,而不是其固有的一词多义,是其上下文化表示变化的原因。这表明ELMo、BERT和GPT-2并不是简单地为每个词赋予一个表示,否则,就不会这么少的词意表示会有这么多的变化。

**特定上下文表示性在ELMo、BERT和GPT-2中表现得非常不同。**如下图所示,在ELMo中,相同句子中的单词在上层中更相似。在BERT中,同一句话的上层单词之间的相似性更大,但平均而言,它们之间的相似性比两个随机单词之间的相似性更大。相比之下,对于GPT-2,同一句话中的单词表示彼此之间的相似性并不比随机抽样的单词更大。这表明,BERT和GPT-2的上下文化比ELMo的更微妙,因为他们似乎认识到,出现在相同上下文中的单词不一定有相同的意思。

静态 vs. 上下文化

平均而言,在一个词的上下文化表示中,只有不到5%的差异可以用静态嵌入来解释。如果一个单词的上下文化表示完全与上下文无关,那么我们期望它们的第一个主成分能够解释100%的变化。相反,平均不到5%的变化可以被解释。这个5%的阈值代表了最佳情况,其中静态嵌入是第一个主成分。例如,没有理论保证GloVe向量与最大化可解释变化的静态嵌入相似。这表明,BERT、ELMo和GPT-2并不是简单地为每个词意义分配一个嵌入:否则,可解释的变化比例会高得多。

在许多静态嵌入基准上,BERT的低层上下文化表示的主成分表现优于GloVe和FastText。这个方法将之前的发现归结为一个逻辑结论:如果我们通过简单地使用上下文化表示的第一个主成分为每个单词创建一种新的静态嵌入类型,结果会怎样?事实证明,这种方法出奇地有效。如果我们使用来自底层BERT的表示,这些主成分嵌入在涉及语义相似、类比求解和概念分类的基准测试任务上胜过GloVe和FastText(见下表)。

对于所有这三种模型,从低层创建的主成分嵌入比从高层创建的主成分嵌入更有效。那些使用GPT-2的人的表现明显比来自ELMo和BERT的人差。考虑到上层比下层更特定于上下文,考虑到GPT-2的表示更特定于上下文,这表明不太特定于上下文的表示的主成分对这些任务更有效。

总结

在ELMo、BERT和GPT-2中,上层比下层产生更多特定于上下文的表示。但是,这些模型对单词的上下文环境非常不同:在调整了各向异性之后,ELMo中相同句子中的单词之间的相似性最高,而GPT-2中几乎不存在。

平均而言,在一个词的上下文化表示中,只有不到5%的变化可以用静态嵌入来解释。因此,即使在最佳情况下,静态词嵌入也不能很好地替代上下文化的词。尽管如此,上下文化的表示可以用来创建更强大的静态嵌入类型:BERT的低层上下文化表示的主成分比GloVe和FastText要好得多!

英文原文:https://kawine.github.io/blog/nlp/2020/02/03/contextual.html

(完)


BERT模型:理解上下文的革命 其次,BERT的出现促进了预训练语言模型的研究热潮,激发了XL Net、RoBERTa、ALBERT等一系列改进型模型的开发。通过其创新的双向编码器表示和独特的预训练及微调机制,BERT不仅极大地提高了机器对语言上下文的理解能力,也推动了整个NLP领域的技术进步和应用创新。未来,我们有理由相信,自然语言处理技术将在BERT模型的基础上,继续突破新的高度,为人类社会带来更多的便利和可能性。在传统的语言模型中,文本通常是单向处理的,即从左到右或从右到左进行理解,这种处理方式限制了模型对上下文全面理解的能力。 阅读详情

相关推荐

ELMO/BERT/ERNIE/GPT简单概述

原文链接: http://chenhao.space/post/3b65b065.html Embedding 我们希望给不同意思的token也要给它们不同的embedding。 比如说这里的“bank”,过去我们的做法是,作为“银行”的意思,就给它一个embedding,作为“河岸”的意思,也给它一个embedding。但是人类的语言是很奇妙的,如 The hostpital has its ...

每天起床第一句要给自己打个气 982

一文彻底搞懂Bert(代码+手撕)

在不断发展的自然语言处理(NLP)领域中,一项被称为 BERT 的突破性创新已经崭露头角,成为一场变革的推手。BERT代表双向编码器来自 Transformer 的表示,它不仅仅是机器学习术语浩瀚海洋中的又一个缩写。它代表了机器理解语言方式的转变,使它们能够理解使人类沟通丰富而有意义的复杂细微差异和上下文依赖关系。

python1222_的博客 2233

『NLP学习笔记』图解 BERT、ELMo和GPT(NLP如何破解迁移学习)

2018年是NLP模型发展的转折点。我们不断探索单词和句子的表示方法,以求能最好地捕捉其中潜在的语义和关系。此外,NLP领域已经提出了一些功能强大的组件式模型,你可以免费下载,并在自己的模型和pipeline中使用它们(这被称为NLP领域的ImageNet时刻,类似的发展在几年前,计算机视觉领域的机器学习也是这样加速发展起来的)。

AI新视界 658

Python基于BERT的上下文纠错详解

本文介绍了基于BERT模型的文本纠错技术及其Python实现。BERT凭借双向上下文建模和掩码语言模型优势,能有效处理语义级错误。文章详细讲解了环境配置、模型加载、文本预处理及预测逻辑,并通过示例展示诗句补全效果。优化策略包括多位置纠错、规则过滤和领域适配。应用场景涵盖智能写作、客服对话优化和OCR纠错。随着大模型发展,BERT纠错技术将向更高精度和实时性演进,成为智能应用的基础组件。

得塔云的博客 500

从Word2Vec到BERT:上下文嵌入 (Contextual Embedding) 最新综述论文.pdf

词嵌入表示向量是自然语言处理的重要组成部分。最近来自牛津大学和DeepMind等撰写了关于上下文嵌入表示的综述论文,详述了当前预训练模型的代表性工作等。

5分钟搞定!用MCU GPIO实现零功耗一键开关机电路(附完整原理图)

本文详细介绍了如何利用MCU GPIO设计零功耗一键开关机电路,适用于便携式设备和电池供电项目。通过软硬件结合的方式,实现关机状态下的真正零功耗,同时提供智能开关机控制。文章包含完整原理图、元件选型指南和实际搭建技巧,帮助开发者在5分钟内完成高效电源管理方案。

weixin_28339967的博客 344

BERT, ELMo, GPT-2: 这些上下文相关的表示到底有多上下文化?

作者:Kawin Ethayarajh 编译:ronghuaiyang导读具有上下文信息的词表示到底有多大程度的上下文化?这里给出了定量的分析。将上下文信息放到词嵌入中 — 就...

fengdu78的博客 357

苍穹外卖项目面试总结话术

美食速递这个项目最初是我参与制作的大创项目,是一款为中南学生提供校园外卖送至宿舍服务的软件,包含系统管理后台和小程序端两部分。其中系统管理后台主要提供给食堂内部员工使用,可以对食堂各个窗口、员工、订单、菜品等进行维护管理;小程序端可以在线浏览菜品、添加购物车、下单等,由学生兼职做跑腿送餐上门服务。这是个前后端分离的项目,我主要是负责后端的用户登录、员工管理,菜品管理,订单管理模块的编码实现。

qq_45195447的博客 1万+

xx是一个类型 这在给定的上下文_BERT, ELMo, & GPT-2: 这些上下文相关的表示到底有多上下文化?...

作者:Kawin Ethayarajh编译:ronghuaiyang (AI公园)具有上下文信息的词表示到底有多大程度的上下文化?这里给出了定量的分析。将上下文信息放到词嵌入中 — 就像BERT,ELMo和GPT-2 — 已经证明了是NLP的一个分水岭的想法了。使用具有上下文信息的词表示来替换静态词向量(例如word2vec),在每个NLP任务上都得到了非常显著的提升。但是这些上下文化的表达到底有...

weixin_39609500的博客 118

【C语言项目合集】这十个入门必备练手项目,让C语言对你来说不再难学!

适合刚入门C语言的编程学习小白的十个练手项目,每个都很经典且实用,让你学完C语言不再迷茫!

kxtxdy的博客 3万+

基于STM32的宠物智能照护嵌入式系统设计

嵌入式系统是实现物联网终端设备本地化感知、决策与执行的核心技术载体,其关键在于多传感器融合、低功耗执行控制与轻量级云边协同。本文围绕环境监测(温湿度、烟雾、余粮)、机电执行(步进电机食盘、继电器风扇)和可靠通信(MQTT+ESP8266)三大技术主线,深入解析STM32F103在资源约束下的外设调度策略、ADC采样抗干扰设计、DHT11时序精准控制及HX711称重滤波算法等工程实践要点。系统强调本地闭环优先原则,确保离线基础功能可用,同时通过阿里云IoT平台实现远程监控与告警联动,为中小型智能硬件项目提供可

weixin_29155599的博客 296

ELMo论文阅读

本文详细阅读了ELMO论文,并对该模型的特点、模型架构和思路进行了分析,包括其BiLSTM结构特点、模型优势、模型意义以及其背后的重要思想等。

UIBE_day_day_up的博客 553

ADSP-21565的SigmaStudio图形化编程实战:从FW工程改造到音频通道打通

本文详细介绍了如何将ADSP-21569的SigmaStudio图形化编程固件工程改造,以适配ADSP-21565的纯片内SRAM内存架构。通过修改内存映射和链接文件,打通了音频输出通道,并成功利用SigmaStudio进行图形化编程,实现了从白噪声生成到音频输出的完整验证流程。

weixin_29169505的博客 381

Transformer BERT KG-BERT

第二次组会 10.26 研究方向:知识表示学习 两个重要的知识表示学习综述: 知乎: 1. KG笔记十、知识图谱嵌入(KG Embedding)https://zhuanlan.zhihu.com/p/354867179 2. 刘知远大神《知识表示学习研究进展》的学习小结https://zhuanlan.zhihu.com/p/356147538 3. 知识图谱最新权威综述论文解读:知识表示学习部分https://zhuanlan.zhihu.com/p/141396088 下次讨论的论文: Interac

weixin_43235829的博客 2430

【AIGC】Qwen3-Embedding:Embedding与Rerank模型新标杆

Qwen3-Embedding:文本嵌入与重排序模型的技术解析与应用实践

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 3100

Spring Boot Jar包加密实战:用ClassFinal与Jasypt打造代码安全堡垒

Spring Boot代码加密与配置保护方案 针对Spring Boot项目源码和配置易被反编译的风险,本文提出ClassFinal字节码加密+Jasypt配置加密的组合方案。ClassFinal通过Maven插件对核心代码加密,运行时需JavaAgent加载,反编译后仅保留空方法体;Jasypt则采用强加密算法保护敏感配置。方案优势包括: 双重保护:ClassFinal加密业务逻辑,Jasypt加密数据库密码等配置 灵活部署:支持密码启动、机器绑定等安全策略 平滑集成:兼容Spring生态,动态解密结合配

墨夶的博客 1092

【论文泛读104】使用上下文词表示进行语义框架归纳的动词意义聚类

贴一下汇总贴:论文阅读记录 论文链接:《Verb Sense Clustering using Contextualized Word Representations for Semantic Frame Induction》 一、摘要 语境化的词表示已被证明对各种自然语言处理任务很有用。然而,尚不清楚这些表示可以在多大程度上覆盖手工编码的语义信息,例如语义框架,这些语义框架指定了与谓词相关的参数的语义角色。在本文中,我们专注于根据上下文唤起不同框架的动词,我们研究了上下文化的词表示如何识别同一动词引起的框

scu-liu的博客 623

Linux内核驱动模型--PCIe(PCI Express)驱动​​

本文系统介绍了Linux内核中PCIe驱动的设计与实现。首先从架构定位入手,指出PCIe驱动基于PCI子系统扩展支持高速、低功耗特性。核心数据结构struct pci_driver包含设备匹配表id_table、生命周期函数probe/remove等关键组件。文章详细解析了驱动与设备的绑定流程、资源管理机制,并重点阐述了MSI-X中断、电源管理、热插拔和多队列等高级特性实现方案。最后提供了lspci、dmesg等调试工具的使用方法,总结了PCIe驱动在支持高性能设备中的关键作用。全文通过架构设计、核心结构、

amy_mhd的博客 429

BERT及相关模型发展图谱

这张图很好地展示了现代NLP模型的发展脉络,反映了领域的快速发展和多样化趋势。每个分支都针对特定问题或应用场景进行了优化,推动了整个领域的进步。

u014177256的博客 409

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

什么是 ELMo?它在预训练语言模型发展中的贡献是什么?

ELMo(Embeddings from Language Models)是2018年提出的深度上下文词向量表示方法,采用双向LSTM语言模型架构。其核心创新在于使词向量成为输入句子的函数,解决了传统静态词向量无法处理多义词的问题。ELMo通过字符级CNN处理未登录词,多层BiLSTM捕获不同层次的语言特征,并加权融合各层隐状态生成上下文相关的词表示。该模型确立了"预训练+微调"的两阶段范式,在多项NLP任务上取得显著提升,为后续Transformer架构模型奠定了基础。尽管存在LSTM长距离依赖建模较弱等

weixin_45422672的博客 155

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Word Embeddings 学习笔记

contextual语言模型的总结 完成日期:2019.08.12   GloVe,CBOW,SkipGram等浅层模型学习的Embedding存在一个严重的问题,那就是每个词只有一个固定的Embedding,完全忽略了词上下文环境的不同对语义的影响。   比如说:你别打扰他,他正在算账呢! 好了,这回算你赢,下回我再跟你算账!   又比如:这些苹果又大又红。 你刚刚买的苹果手机真不错。 明显...

fyinh_的博客 2394

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

再读bert(Bidirectional Encoder Representations from Transformers)

再读 BERT,仿佛在数字丛林中邂逅一位古老而智慧的先知。初次相见时,惊叹于它以 Transformer 架构为罗盘,在预训练与微调的星河中精准导航,打破 NLP 领域长久以来的迷雾。而如今,书页间跃动的不再仅是 Attention 机制精妙的数学公式,更是一场关于语言本质的哲学思辨 —— 它让我看见,那些被编码的词向量,恰似人类思维的碎片,在双向语境的熔炉中不断重组、淬炼,将离散的文字升华为可被计算的意义。

年轻即出发, 1406

中文任务全面超越BERT:百度正式发布NLP预训练模型ERNIE

近日,百度提出知识增强的语义表示模型 ERNIE(Enhanced Representation through kNowledge IntEgration),并发布了基...

PaddlePaddle 1638
上一篇: 15个超有趣的Python文章,速度收藏(附有详细代码哦)
下一篇: 肆虐非洲的蝗灾,为什么在中国几近绝迹?
Wang_AI
博客等级 码龄12年 997粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值