Word2Vec-Glove笔记

NLP必学:Word2Vec、Glove和ELMO 文章目录前言一、one-hot表示二、词嵌入表示法三、word embedding的作用1. 迁移学习2.类比推理四、Word2VecSkip-gramCBOWWordVec的优化1. 分级softmax分类器2.负采样五、GloVe六、ELMO总结 前言 词汇表示(Word Representation)一直是自然语言处理(NLP)中最基础也是最重要的任务之一。 深度学习已经给这一领域带来了革命性的变革。其中一个很关键的概念就是词嵌入(word embeddings),这是语言表示的一种方式,我们可以理解 阅读详情

Word2Vec

一、为什么需要词向量

  • 文本数据需要有结构化的表示。
  • 独热编码表示稀疏、且表达能力有限,无法提现词与词之间的相似性。
  • 分布式表示较为灵活,表达能力强,避免稀疏性。

二、 如何得到词向量

  • 词向量作为给定任务,设计模型的副产物。
  • 任务有两种形式:给定句子,用中心词预测周围词、或者周围词预测中心词。
    • P ( w ∣ c o n t e x t ( w ) ) o r P ( c o n t e x t ( w ) ∣ w ) P(w|context(w)) \quad or \quad P(context(w)|w) P(w∣context(w))orP(context(w)∣w)
    • 很明显对于这两个任务,中心词预测周围词难度较大。

三、模型的学习目标是什么

  • 周围词预测中间词、中心词预测周围词。
    P ( w ∣ c o n t e x t ( w ) ) o r P ( c o n t e x t ( w ) ∣ w ) P(w|context(w)) \quad or \quad P(context(w)|w) P(w∣context(w))orP(context(w)∣w)
  • 很明显对于这两个任务,中心词预测周围词难度较大。
  • 对于 P ( w ∣ c o n t e x t ( w ) ) P(w|context(w)) P(w∣context(w)),需要将上下文的映射(也就是词向量)拼接,得到 x w x_w xw​
  • 对于 P ( c o n t e x t ( w ) ∣ w ) P(context(w)|w) P(context(w)∣w), x w x_w xw​就是中心词经过W得到的向量(词向量)。
  • 接下来的操作就是对 x w x_w xw​进行
  • 先看一般的做法:
    在这里插入图片描述
    在这里插入图片描述
  • 这里N是词表的维度。
  • 计算损失就是一个交叉熵。如果是预测中心词,每个样本就是计算一次,如果预测周围词,每个样本就需要计算 s i z e ( c o n t e x t ( w ) ) size(context(w)) size(context(w))次交叉熵。

四、模型设定有什么问题?如何解决?

用输出层softmax进行预测,向量的维度是词表的大小,计算代价大。

4.1 层次softmax

构建哈夫曼树

  • 权重高的比较短的编码,权重少的用长的编码。——词频越高离根节点越近。

  • 所以这样将预测的词编程哈夫曼树,每次走哪边就用二分类器来决定。这样好处在于高频词离根节点近,减小计算。

  • 每个二分类器的参数是不一样的。

  • 想法:感觉这样的做法只适合训练。因为训练的时候,我是知道正确的词所在的位置,我可以停下来。而如果做预测,不知道何时停止。

  • 但没关系,因为这样做的目的是为了提高计算效率,得到训练过程中的权重向量(作为词向量)。

4.2 负采样

将 P ( w ∣ c o n t e x t ( w ) ) P(w|context(w)) P(w∣context(w))定义为是否选择该词(二分类问题)。因此目标是选择该词的概率尽可能大,选择其他词的概率尽可能小。 ( w , c o n t e x t ( w ) (w,context(w) (w,context(w)就是正样本,其他词就是负样本。
负样本自然不可能是所有其他词,需要有一定的采样方式。

负采样的方法:

  • 思路很简单,根据词频来,高频词更容易被选到,低频词更难。
  • 首先将词频映射到一个线段,长度为 l e n ( w ) len(w) len(w):
    在这里插入图片描述
  • 显然,所有线段长度之和为1,而且这些线段是不等距的。
  • 接着再画一条长度为1的线段,等距切成M份,M远大于线段的个数(也就是词典的词数N)
    在这里插入图片描述
  • 采样的方式就是从 [ 1 , M − 1 ] [1,M-1] [1,M−1]的区间随机取一个整数,看其落在哪个区间。【源码中 M = 1 0 8 M=10^8 M=108】
  • 如果正好选到正样本词,跳过去,再选一次。
  • 在源码中, l e n ( w ) len(w) len(w)的计算为:
    在这里插入图片描述

五、 如何做优化

最大化似然概率,就是随机梯度上升。

六、 SkipGram V.S CBOW

一般而言,skipgram效果比CBOW要好。

  • 数据量:同样的数据,skip-gram生成的样本比CBOW更多
  • 难易度:由中心词预测周围词的任务更难
  • 低频词:直观理解:
    • 周围词预测中心词,一群学生从一个老师学东西,而且这一群人学的东西还是类似于平均,出现少次数少的学生学到就比较少。
    • 中心词预测周围词:一个学生从一群老师学东西,学的肯定更多
  • Skip-gram训练速度更慢,CBOW更快。

七、 得到的词向量有什么问题?

  • 固定的词向量,无法解决一词多义的问题;
  • 静态表示,无法将预训练的模型拼接到下游任务。也就是迁移时,只能将词向量作为特征输入进新的模型。

---------------7.20更新-------------------------

Glove

一、 Glove的思想是什么?

  • Glove是为了克服全局矩阵分解和局部上下文窗口的缺陷
  • word2vec只用到了局部的上下文信息(滑动窗口内),虽然说负采样也会用到其他词,但真正概率最大的部分还是希望模型学到滑动窗口内的信息。
  • Glove根据滑动窗口统计共现信息,得到全局的共现矩阵
  • glove可以被看作是更换了目标函数和权重函数的全局word2vec

二、如何构建Glove?

  • 根据语料库得到共现矩阵 X X X,其中 X i j X_{ij} Xij​表示单词 i i i 和上下文单词 j j j 在特定大小的滑动窗口共现的次数。【一般来说,最小次数是1,但在Glove认为在窗口内距离越远的单词占总计数权重越小,所以有个衰减函数1/d。】

  • 设词向量为 ω i \omega_i ωi​, ω ^ i \hat \omega_i ω^i​,其损失函数为:

    • J = ∑ i , j V f ( X i j ) ( ω i T ω ^ j + b i + b j − l o g X i j ) 2 J = \sum_{i,j}^Vf(X_{ij})(\omega_i^T\hat \omega_j + b_i + b_j - logX_{ij})^2 J=∑i,jV​f(Xij​)(ωiT​ω^j​+bi​+bj​−logXij​)2
    • 其中 f ( x ) = { ( x / x m a x ) α x < x m a x 1 o t h e r w i s e f(x)=\left\{ \begin{aligned} &(x/x_{max})^\alpha & x<x_{max}\\ &1 & otherwise \\ \end{aligned} \right. f(x)={​(x/xmax​)α1​x<xmax​otherwise​
    • α \alpha α也是取0.75效果最好
    • 与word2vec想比,这边损失函数带权重的mean loss(word2vec损失函数实质上是带权重的交叉熵,权重固定)
  • 虽然语料是没有标注的,但是从优化目标的角度来看。模型的要学习的词向量 ω \omega ω, ω ^ \hat \omega ω^是参数,label是 l o g X i j logX_{ij} logXij​。因此,训练的时候还是有监督的。

  • 采用Adagrad优化方法,对矩阵 X X X中的所有非零元素进行随机采样,学习曲率为0.05,在vector size小于300的情况下迭代了50次,其他大小的vectors上迭代了100次,直至收敛。

  • 学出来的的 ω \omega ω, ω ^ \hat \omega ω^词向量理论上是对称的-可以等价拿来使用,因为 X X X是对称的。但因为初始化的值不一样,所以最终值会有区别。但是为了提高鲁棒性,我们最终会选择两者之和 ω \omega ω+ ω ^ \hat \omega ω^作为最终的vector(两者的初始化不同相当于加了不同的随机噪声,所以能提高鲁棒性)。

三、如何理解损失函数

  • 损失函数如何构造核心是:利用共现矩阵 X X X,可以计算单词 j j j 出现在单词 i i i 上下文中的概率 P i j P_{ij} Pij​。
  • 文章认为,概率的比例 P i k P j k \frac{P_{ik}}{P_{jk}} Pjk​Pik​​更能反映出单词 k k k与单词 i , j i,j i,j哪个更相关。
  • 因此,通过概率的比例而不是概率本身去学习词向量可能是一个更恰当的方法。
  • 具体步骤:Glove详解

四、如何衡量词向量的好坏?

五、Glove的应用

现在讨论glove,似乎显得有点过时?当下第二代预训练模型确实很火热,但是在近两年的顶会文章中,依旧有使用词向量作为语义表征。其原因我觉得在一定程度上是想绕开与bert这类预训练模型做比较。不然有可能审稿人觉得模型的效果是来源于Bert而不是你自己设计的模型。

台湾大学深度学习课程 学习笔记 lecture4 Word Embeddings 以下内容和图片均来自台湾大学深度学习课程。 课程地址:https://www.csie.ntu.edu.tw/~yvchen/f106-adl/syllabus.html 在之前 lecture2-2 Word Representation 的课程中简单讲解了 Word 处理的传统方法。通过传统方法的局限性引入新的方法 Word Embeddings,从而直接学习得到低维结果,而... 阅读详情

相关推荐

学习笔记:从词向量到Transformer模型

是一种基于自注意力机制(Self-Attention)的神经网络模型,广泛应用于自然语言处理任务中。它摒弃了传统的循环神经网络(RNN)结构,通过并行处理序列中的所有元素,大大提高了计算效率。Transformer的核心组件编码器-解码器架构:Transformer由编码器和解码器组成,编码器负责处理输入序列,解码器负责生成输出序列。自注意力机制:通过计算序列中所有元素之间的关联权重,为每个元素生成一个加权表示,从而捕捉全局依赖关系。位置编码。

m0_73571587的博客 1038

word2vec、GloVe、LSA算法的共同特点和区别和优缺点

Word2vec是一种基于神经网络的模型,它通过训练一个前馈神经网络,学习到词汇在向量空间上的表示。GloVe是一种基于全局统计信息和矩阵分解的模型,它通过对整个语料库中的词汇共现矩阵进行矩阵分解,得到词汇的向量表示。LSA是一种基于奇异值分解的模型,它将所有词汇表示为文档-词矩阵的奇异值分解结果。Word2vec和GloVe具有更好的扩展性,而LSA的计算量较大。Word2vec、GloVe和LSA都是常见的词向量表示算法,它们的共同点是都是将词汇表示为低维空间向量,并用这些向量来描述词汇之间的关系。

程序猿视角 1113

CS224n, winter, 2019习题内容及解答

贴一个Readme.md吧,大部分代码和习题解答我已经放到github上了,链接在此处 CS224n-winter19 Solutions for CS224n, winter, 2019. Welcome to discuss problems appearing in assigments, please submit to issue. Also take notes for the ke...

Zac_B的博客 4007

word2vec、Glove比较

Glove 它是一个基于全局词频统计(count-based & overall statistics)的词表征(word representation)工具,它可以把一个单词表达成一个由实数组成的向量,这些向量捕捉到了单词之间一些语义特性,比如相似性(similarity)、类比性(analogy)等。我们通过对向量的运算,比如欧几里得距离或者cosine相似度,可以计算出两个单词之间的语义相似性。 word2vec vs glove 1.word2vec是局部语料库训练的,其特征提取是基于

真心乖宝宝的博客 4444

CS224N学习笔记(2):skip-gram和negative sampling

CS224N学习笔记(2)Word2Vec简介Skip-gram Word2Vec 简介 相比Onehotting编码方式: 不能展示语义关系(不同词之间的点积为0) 修正方法: 分布相似性,通过理解上下文理解单词的含义(predict between every word and its context words) 构建dense vector来预测上下文 算法: skip-gram...

Neways的博客 886

吴恩达Coursera深度学习课程 deeplearning.ai (5-2) 自然语言处理与词嵌入--课程笔记

2.1 词汇表征 前面内容中,我们直接使用英文单词来表征词汇,但是对于计算机来说,是无法直接认识单词的。 为了让计算机能够能更好地理解我们的语言,建立更好的语言模型。 这就需要将词汇进行表征。下面是几种不同的词汇表征方式。 one-hot 表征 利用one-hot向量,将单词表示为词典大小的向量,字典中对应该单词的位置为1,其余位置为0。 缺点:将每个词孤立了起来,泛化能力不强...

浩宇天罡 1666

词嵌入(Word Embedding)之Word2Vec、GloVe、FastText

本文详细介绍了词嵌入(Word Embedding)中的Word2Vec、GloVe、FastText ,包括原理和相关python代码实现。

m0_66890670的博客 4128

词向量经典模型:从word2vec、glove、ELMo到BERT

前言 词向量技术将自然语言中的词转化为稠密的向量,相似的词会有相似的向量表示,这样的转化方便挖掘文字中词语和句子之间的特征。生成词向量的方法从一开始基于统计学的方法(共现矩阵、SVD分解)到基于不同结构的神经网络的语言模型方法。这里总结一下比较经典的语言模型方法:word2vec、glove、ELMo、BERT。 其中BERT是最新Google发表的模型,在11个经典的NLP任务中全面超越最佳模型...

xiayto的博客 3万+

NLP自然语言处理中Word2Vec和GloVe概述

GloVe(Global Vectors for Word Representation)和Word2Vec是两种广泛使用的词嵌入方法,它们都旨在将词语转换为高维向量表示,以便于在各种自然语言处理任务中使用。尽管这两种方法的目标相似,但它们的实现方式和理论基础有所不同。是由Google在2013年提出的一种用于生成词向量的技术。它基于分布假说,即上下文相似的词往往具有相似的意义。(Global Vectors for Word Representation)由斯坦福大学的研究人员在2014年提出。

小小默:进无止境 1725

BDD测试之Behave使用入门

BDD测试(Behavior-Driven Development Testing)是一种基于“行为驱动开发”(BDD)理念。

想要成为酷盖但是失败的小明 580

Imputation Methods for scRNA Sequencing Data

越来越多的研究者使用单细胞RNA测序(scRNA-seq)技术来表征单细胞水平的转录图谱。他们用它来研究复杂组织的异质性、转录组动力学和未知生物的多样性。然而,在基因表达模式随机性的scRNA-seq数据中普遍存在许多技术和生物学上的噪音。这些数据通常具有高维、稀疏和大量“dropout”值的特点,并且受批处理效应的影响。scRNA-seq数据中大量的“dropout”值严重掩盖了基因之间的重要关系,阻碍了下游分析。因此,scRNA-seq数据dropout值的估算就显得尤为重要。

qq_34179307的博客 542

LLM 笔记 —— 08 Embeddings(One-hot、Word、Word2Vec、Glove、FastText)

本文介绍了四种常见的文本表示方法:One-hot编码、Word Embeddings、Word2Vec和FastText。One-hot编码通过创建对角矩阵表示分类变量,避免数值间的序关系误导模型。Word Embeddings将词汇转化为数字向量,通过神经网络优化词向量表示。Word2Vec(包括CBOW和Skip-gram)利用上下文信息构建词向量,并通过负采样提高效率。Glove引入全局共现矩阵捕获词间关系。FastText通过子词结构解决未登录词问题,提升词向量质量。这些方法各具优势,为自然语言处理

Celeste的博客 1046

5. SAP UI5 视图控制器(Controller)初探

本教程的前一个步骤也就是第四个步骤,我们了解了 SAP UI5 XML 视图的使用方法。在该步骤里,我们在 XML 视图里声明了一个 Text 控件实例,该控件位于 sap.m 这个命名空间内。 本步骤会继续接触 SAP UI5 MVC 框架中三大基石的另一块:C - Controller,即控制器。 先看看本步骤完成之后,我们得到的 SAP UI5 应用能实现一个什么样的效果。 访问如下 url: http://localhost:8080/webapp/index.html 能看到一个 Say Hell

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4598

CS224n 2019 Winter 笔记(一):Word Embedding:Word2vec and Glove

CS224n笔记:Word2Vec:CBOW and Skip-Gram一、语言模型(Language Model)(一)一元模型(Unary Language Model)(二)二元模型(Bigram Model)二、如何表示“word”——词向量(Word Vector)三、Word2Vec模型(一)Word2vec的作用(二)Continuous Bag of Words Model (CB...

lairongxuan的博客 446

OpenHarmony WebView引擎:从Chromium魔改到分布式渲染的终极解析

ArkWeb框架提供了强大的Web应用开发能力,但同时也需要注意网络安全问题,尤其是跨域请求方面。

m0_67505153的博客 1196

用业务语义织就企业数据之网:SAP Datasphere 的定位、架构与落地场景全解析

SAP Datasphere作为SAP业务数据云的核心组件,通过语义层整合企业内外部数据,支持实时分析与AI应用。其核心功能包括数据集成、语义建模、虚拟化与仓库能力,通过Spaces实现资源隔离,Data Builder和Business Builder分别面向技术和业务建模。该平台与SAP HANA Cloud、SAC等深度集成,支持财务统一分析、供应链可视化等典型场景,并可通过BW bridge实现传统BW资产云化迁移。Datasphere强调开放互联,能与Databricks等生态伙伴协同,为企业提供

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1365

2019斯坦福CS224n深度学习自然语言处理笔记(1)Word2Vec与Glove

向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayx斯坦福大学CS224n(全称:深度学习与自然语言处理)是自然语言处理领域很受欢迎的课程,由 Chris Manning 和 Richard Socher 主讲。但是自 2017 年以来,NLP 有了很多重大的变化,包括 Transformer 和预训练语言模型等。以前开放的是 17 年年初的课程,很多激动人心的前沿...

datayx的文章 1075

使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统

这是一本关于使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统的详细书籍,全文约 10 万字。《Production-Grade Agentic AI System Design and Implementation: Building Agentic AI Systems Using FastAPI and LangGraph》随着人工智能(AI)技术的迅猛发展,智能体(Agent)作为能够自主感知、推理、决策和行动的实体,正逐渐成为构建复杂智能系统的核心。从个性化推荐、客户服务到

AI天才研究院 348

CS224n-Lecture2-Word Vectors 2 and Word Senses

写在前面 就是自己的课程笔记而已。我看的其实是2020版的ppt和2019的视频,因为实在是啃不动全英文的视频。另外复制图片太麻烦了,于是用的富文本编辑器。 文档作业相关内容推荐:https://github.com/xixiaoyao/CS224n-winter-together 视频推荐:https://b23.tv/vPwFWk 综述 Lecture 2: Word Vectors and Word Senses 1. Finish looking at word vectors.

咸鱼的小站 458

RK3568实现蓝牙音箱功能

A2DP旨在通过蓝牙连接传输高质量的立体声音频流。它使用的基本压缩算法是SBC(Sub-Band Coding)来减小音频数据的大小,同时保持高音质,SBC压缩虽然效率较低,但是是必须支持的基本备用方案。A2DP还支持其他高级编解码器,例如AAC、aptX和LDAC,这些编解码器比SBC提供更好的音质,但这些编解码器的支持取决于设备本身的支持情况。注意A2DP协议要与AVRCP协议区分开。A2DP是传输音频的,而AVRCP是用来控制音频的。这里我用到的是RK3568 Android11。

leikko的博客 1175

【AI智能体】Docker 部署 Coze应用服务实战操作详解

Docker 部署 Coze应用服务实战操作详解

congge 4874

吴恩达DeepLearning学习笔记 第五门课第二周

300维嵌入到2维空间 300维特征表示叫做嵌入(embeddings)被嵌入到向量空间的一个点。最小化处理 防止xij=0,前面加了一项 这个f很多细节防止高频词权重过大、低频词权重过小。求和或求平均 300维特征向量给到softmax 可以用在不同长度的评论。一个注意点 独立组成部分不一定是那么能直观理解的 可能是个斜着的向量。榴莲培育家 大数据集(无标签文本) 学到词的相近 迁移到小数据集。1-hot把词孤立了 这是因为1-hot之间做内积为0。给定上下文做预测 通过这个学好的词嵌入模型。

WaibiJiangzhi的博客 1778

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

吴恩达Coursera深度学习课程 DeepLearning.ai 提炼笔记(5-2)-- NLP和词嵌入

序列模型 --- NLP和词嵌入

大树先生的博客 7378

SAP B1中文培訓教材_SDK

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

深度学习工具包 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")

CS224随便做的一些笔记

慕课学院出了有中文字幕的CS224啦点击打开链接第一课:感觉没什么,就是在介绍第二课:    定义每个单词的分布相似度。反之就是one-hot word    word2vec(skipgram,)。视频里skipgram讲的很不好,这个是别人写的比较好的帮助理解点击打开链接...

weixin_38104825的博客 251

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

记录学习《手动学习深度学习》这本书的笔记(十)

因为最近在做《语音与语言理解综合处理》的实验,所以打算先看第14章:自然语言处理:预训练和第15章:自然语言处理:应用,之后再来看第13章:计算机视觉。

s478527548的博客 787

[个人笔记]吴恩达深度学习lesson5 week2自然语言处理与词嵌入(Natural Language Processing and Word Embeddings)

这是一篇个人向的笔记。 推荐学习顺序: (可选)最好掌握线性代数、微积分、概率论的一些基本知识 学习吴恩达机器学习课程 学习吴恩达深度学习的前4课(也可以选择性学习部分内容)即第五课第一周 然后可以学习本课,即吴恩达深度学习第五课的第二周内容 本课程视频 本课程文字版 目录2.1 词汇表征(Word Representation) 2.1 词汇表征(Word Representation) ...

YuQiao0303的博客 321
上一篇: 模型的学习方式-迁移学习、多任务学习、小样本学习、元学习
下一篇: 论文笔记:Hybrid Attention-Based Prototypical Networks for Noisy Few-Shot Relation Classification
Matt_sh
博客等级 码龄8年 19粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值