CS 224N总结

news2024/10/6 23:24:10

CS 224N网址:Stanford CS 224N | Natural Language Processing with Deep Learning

Lecture1

PPT网址:PowerPoint Presentation (stanford.edu)

这一讲主要讲了NLP研究的对象,我们如何表示单词的含义,以及Word2Vec方法的基本原理。

这里我们简单介绍一些Word2Vec方法的基本原理:人们认为,一个词往往与其上下文词的含义差不多,因此想要这些词的表达向量也差不多,我们定义一个窗口内的词为中心词和上下文词,如下图所示。

在这里插入图片描述

损失函数可写为:

  • J ( θ ) = − 1 T log ⁡ L ( θ ) = − 1 T ∑ t = 1 T ∑ m ≤ j ≤ m j ≠ 0 log ⁡ P ( w t + j ∣ w t ; θ ) J(\theta)=-\frac{1}{T} \log L(\theta)=-\frac{1}{T} \sum_{t=1}^T \sum_{\substack{m \leq j \leq m \\ j \neq 0}} \log P\left(w_{t+j} \mid w_t ; \theta\right) J(θ)=T1logL(θ)=T1t=1Tmjmj=0logP(wt+jwt;θ)

    • loss改写成对数是为了方便计算,这样所有的乘都会变成相加
  • 为什么每个词要使用两个向量?(Lecture2的PPT中有提到,但不太详细)

    • 为了方便数学计算
      • softmax: P ( o ∣ c ) = exp ⁡ ( u o T v c ) ∑ w ∈ V exp ⁡ ( u w T v c ) P(o \mid c)=\frac{\exp \left(u_o^T v_c\right)}{\sum_{w \in V} \exp \left(u_w^T v_c\right)} P(oc)=wVexp(uwTvc)exp(uoTvc)
      • 可以注意到,在分母上,有这么一项 ∑ w ∈ V u w T v c \sum_{w \in V}u_w^Tv_c wVuwTvc,如果我们将其对 v c v_c vc求导,结果为 ∑ w ∈ V u w \sum_{w \in V} u_w wVuw。然而,如果我们不使用两组向量,则该项应该写为 ∑ w ∈ V v w T v c \sum_{w \in V}v_w^Tv_c wVvwTvc,这里需要注意的是, w w w 可能与 c c c 相同,我们可以写成 ∑ w ∈ V , w ≠ c v w T v c + v c T v c \sum_{w \in V ,w \ne c}v_w^Tv_c + v_c^Tv_c wV,w=cvwTvc+vcTvc,对 v c v_c vc 求导,结果为 ∑ w ∈ V , w ≠ c v w + 2 v c \sum_{w \in V ,w \ne c}v_w + 2v_c wV,w=cvw+2vc,这会导致求导结果不如使用两种向量得到的结果容易理解。
    • 最终两个向量会很相似,但是不相同,我们取两个向量的平均来表达最终的word vector
    • 具体推导:01 Introduction and Word Vectors - The Sun Also Rises

Lecture2

PPT网址:cs224n-2023-lecture02-wordvecs2.pdf (stanford.edu)

Bag of words 模型:模型不考虑词的顺序,对一个词在不同位置的预测都是一样的

  • Word2Vec的两种变体:
    • Skip-grams:给定中心词来预测上下文单词(我们展示的Word2Vec model就是这种形式)
    • Continuous Bag of Words(CBOW):通过上下文单词来预测中心词

可以用来更新的方法:

  • Gradient Descent(GD):在所有样本上计算完梯度之后,再进行一次更新
  • Stochastic Gradient Descent(SGD):每次使用单个样本进行更新
  • Mini-batch Gradient Descent(MBGD):每次使用一批样本进行更新,介于上面两者之间

可以用来训练的 loss function

  • 朴素 softmax(简单,但是当类别比较多的时候,计算量很大)
  • 优化的变种,比如层次softmax
  • 负采样(negative sampling)

在上面,我们使用的loss function是朴素 softmax

  • J ( θ ) = − 1 T log ⁡ L ( θ ) = − 1 T ∑ t = 1 T ∑ m ≤ j ≤ m j ≠ 0 log ⁡ P ( w t + j ∣ w t ; θ ) J(\theta)=-\frac{1}{T} \log L(\theta)=-\frac{1}{T} \sum_{t=1}^T \sum_{\substack{m \leq j \leq m \\ j \neq 0}} \log P\left(w_{t+j} \mid w_t ; \theta\right) J(θ)=T1logL(θ)=T1t=1Tmjmj=0logP(wt+jwt;θ)

    • P ( w t + j ∣ w t ; θ ) = P ( o ∣ c ) P(w_{t+j} |w_t;\theta) = P(o|c) P(wt+jwt;θ)=P(oc),这一项的分母计算量很大,因此在标准的word2vec中,我们不采用这种形式,而是利用负采样方法

    • 负采样的核心思想:训练二元逻辑回归来区分一个真对(中心词与上下文窗口中的词)和一些噪音对(中心词与一些随机的词)

负采样的 loss function

  • 最大化 J t ( θ ) = log ⁡ σ ( u o T v c ) + ∑ i = 1 k E j ∼ P ( w ) [ log ⁡ σ ( − u j T v c ) ] J_t(\theta)=\log \sigma\left(u_o^T v_c\right)+\sum_{i=1}^k \mathbb{E}_{j \sim P(w)}\left[\log \sigma\left(-u_j^T v_c\right)\right] Jt(θ)=logσ(uoTvc)+i=1kEjP(w)[logσ(ujTvc)]
    • 我们在第一个对数中使两个词同时出现的概率最大化,在第二个对数中使噪声词的概率最小化
    • k代表采样的负样本个数
  • 这可以写成 J neg-sample  ( u o , v c , U ) = − log ⁡ σ ( u o T v c ) − ∑ k ∈ { K  sampled indices  } log ⁡ σ ( u k T v c ) J_{\text {neg-sample }}\left(\boldsymbol{u}_o, \boldsymbol{v}_c, U\right)=-\log \sigma\left(\boldsymbol{u}_o^T \boldsymbol{v}_c\right)-\sum_{k \in\{K \text { sampled indices }\}} \log \sigma\left(\boldsymbol{u}_k^T \boldsymbol{v}_c\right) Jneg-sample (uo,vc,U)=logσ(uoTvc)k{K sampled indices }logσ(ukTvc)
    • 利用概率分布 P ( w ) = U ( w ) 3 / 4 / Z P(w)=U(w)^{3/4} / Z P(w)=U(w)3/4/Z 来采样, U ( w ) U(w) U(w)是unigram分布

上面主要介绍了Word2Vec模型,它是一种基于local context window的预测模型(Direct prediction),对于学习word vector,还有另一类模型是count based global matrix factorization

  • Direct Prediction优点是可以概括比相关性更为复杂的信息,缺点是对统计信息利用的不够充分
  • Count based模型优点是训练快速,并且有效的利用了统计信息,缺点是对于高频词汇较为偏向,并且仅能概括词组的相关性

count based模型:构建一个词汇的共现矩阵,每一行是一个word,每一列是context。但是矩阵容易太大,我们希望word vector的维度不要太大,因此使用一些降维方法学习word的低维表示。

  • 比较典型的是SVD

  • GloVe(Global Vectors):结合了local context window与(count based)词汇共现矩阵的方法

    • 详细介绍可见:CS224N笔记(二):GloVe - 知乎 (zhihu.com)

    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/539282.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu22 k8s 1.27.1 安装及集群搭建教学(2023.5.16 k8s 最新版本教学,只看这一篇就够了哦!保姆级教程!不行你来找我!)

Ubuntu22 k8s 1.27.1 安装及集群搭建教学(2023.5.16 k8s 最新版,只看这一篇就够了哦!保姆级教程!!不行你来找我!) 温馨提示请仔细阅读:❤️❤️❤️❤️❤️❤️❤️❤️ 1. 由于新版…

Linux系统学习须牢记这几点

工欲善其事须先利其器,想了解Linux技术,先要有一套教学平台,请教同行或者老师来为我们解答,当然也可以下载Cygwin进行学习。但是自主学习的这一过程很困难,因为没有别人的帮助,我们或许会感到迷茫,也会出现…

Spring整合Mybatis、Junit

文章目录 1 Spring整合Mybatis思路分析1.1 环境准备步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:添加Mybatis核心配置文件步骤8:编写应用程序步骤9:运行程序 1.2 整合…

STM32F1定时器(TIM1~TIM8)

一、stm32f1定时器简介 1.1、定时器分类 STM32共11个定时器,2个高级控制定时器TIM1和TIM8,4个通用定时器TIM2~TIM5,两个基本定时器TIM6和TIM7,两个看门狗定时器和一个系统滴答定时器Systick. 高级定时器TIM1和TIM8的时钟由APB1产…

想改进婴儿fNIRS数据分析?基于这些先进方法的评估值得一看!

导读 在过去的十年中,fNIRS提供了一种非侵入性的方法来研究发展人群的神经激活。尽管fNIRS在发展认知神经科学中的应用越来越多,但在如何预处理和分析婴儿fNIRS数据方面却缺乏一致性或共识。本研究考察了对婴儿fNIRS数据应用更高级统计分析的可行性&…

智聚北京!相约全球人力资源数智化峰会

人力资源是推动经济社会发展的第一资源。作为我国经济压舱石的中央企业在对标世界一流企业和管理提升方面的持续创新,各行业领军企业围绕组织变革、管理升级、全球化发展走深走实。人力资源管理正从传统职能管理与管控,向紧贴业务战略实现、组织边界和人…

阿里巴巴-1688-退款退货明细下载(导出)

DUMUZ是什么? Dumuz是一款软件产品,可模拟人在电脑上的不同系统之间操作行为, 替代人在电脑前执行具有规律与重复性高的办公流程。 目前基于实际业务场景在软件搭建了模拟实现天猫/淘宝批量订单发货、备注插旗、页面商品数据采集、已买宝贝订…

小米AI实验室多模态图片翻译论文入选自然语言处理领域顶级会议ACL 2023

近日,ACL 2023的论文录用结果公布,小米AI实验室机器翻译团队联合厦门大学苏劲松教授团队在多模态图片翻译方向的最新研究成果已被ACL 2023主会录用,标志着小米在多模态机器翻译方向取得了重要进展。 ACL(Annual Meeting of the As…

单片机--实战练习

目录 【1】GPIO 1.定义 2.应用 I - Input - 输入采集 O - Output - 输出控制 ​编辑​编辑 3.GPIO结构框图 4.功能描述 输入功能 输出功能 5.相关寄存器 【2】点亮一盏LED灯 1.实验步骤 2.编程实现 3.编译下载 4.复位上电 练习:实现LED灯闪烁…

Cocos Shader 转场特效合集!卡牌必备,免费开源!

接前两期,孙二喵的 AIGC 卡牌接近尾声了!链接: AIGC 制作卡牌1AIGC 制作卡牌2 最近,二喵遇到一个很头疼的问题!就是如何实现既流畅、又生动的转场特效。 经过一番大战之后,我实验了多个效果,一共…

记录--vue3优雅的使用element-plus的dialog

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 如何优雅的基于 element-plus,封装一个梦中情 dialog 优点 摆脱繁琐的 visible 的命名,以及反复的重复 dom。 想法 将 dialog 封装成一个函数就能唤起的组件。如下: addDialog(…

Python每日一练(20230518) 螺旋矩阵 I\II\III\IV Spiral Matrix

目录 1. 螺旋矩阵 I Spiral Matrix i 🌟🌟 2. 螺旋矩阵 II Spiral Matrix ii 🌟🌟 3. 螺旋矩阵 III Spiral Matrix iii 🌟🌟 4. 螺旋矩阵 IV Spiral Matrix iv 🌟🌟 &#…

探索Vue的组件世界-组件通信

目录 组件跨层级访问 访问外层组件 定向消息 ref(父组件访问子组件) 依赖注入 依赖注入,vue2.0实现源码 组件封装 组件二次封装 小结 组件跨层级访问 访问外层组件 // 获取 根组件 的数据 this.$root.pri;// 写入 根组件 的数据 t…

人机融合智能的测量、计算与评价

老子在《道德经》第二十一章写道:"道之为物,惟恍惟惚。惚兮恍兮,其中有象;恍兮惚兮,其中有物。窈兮冥兮,其中有精;其精甚真,其中有信。"(“道”这个东西,没有清楚的固定实体。它是那样的恍恍惚惚啊,其中却有形象。它是那样的恍恍惚…

怎样才能做好企业内部wiki知识库呢?

企业内部wiki知识库是一种常用的知识管理方式。通过建立企业内部wiki知识库,企业可以更好的管理和共享知识,提高员工的工作效率和生产力。 详解如何做好企业内部wiki知识库的方法: 一、设计知识库架构 企业内部wiki知识库的架构设计是非常…

抖音seo源码优化/企业号搜索排名/开源搭建

什么是抖音seo? 抖音SEO是指通过提高在抖音平台的关键词排名,来获取流量、获取客户的目的。抖音的流量主要分为付费流量、推荐流量和搜索流量,其中搜索流量因为付费太贵、上热门太累而成为另一种进入方式1。抖音拥有庞大的用户基数&#xff…

shell命令以及运行原理,命令行解释器/bash,Linux Kernel与Shell简单理解等

引入 输入指令的过程本质上就是在输入一个字符串,然后指令的本质就是编译好的程序.exe与脚本。它们都是在系统的特定路径之下放着呢。然后我们所有指令最终都是要到操作系统内部去运行的,也就是说各种各样的指令都需要操作系统的参与。我们有各种各样的…

WordPress 如何开启多站点 含Apache和Nginx伪静态规则

WordPress 3.0以上的版本支持直接开启多站点模式,这样一来,你可以在一个后台切换多个站点进行管理。 最近打算折腾一个主题演示站,给每个主题使用独立的子站点来搭建演示,如果是Apache环境,配置就比较容易,但是倡萌使用的是 Nginx,花了大量的时间测试了N多网络上的伪静…

什么是无头浏览器?如何使用Golang实现无头浏览器截图?

前言 在Web开发中,有时需要对网页进行截图,以便进行页面预览、测试等操作。 而使用无头浏览器来实现截图功能,可以避免手动操作的繁琐和不稳定性。 这篇文章将介绍:使用Golang进行无头浏览器的截图,轻松实现页面预览…

苹果电脑PS Raw增效工具:Camera Raw 15中文版

Camera Raw 15是Adobe公司开发的一款用于处理RAW格式图像的插件软件,它可以帮助用户在Photoshop、Lightroom等软件中对RAW格式图像进行调整和优化。Camera Raw 15提供了丰富的调整工具,包括白平衡、曝光、色彩、锐化、噪点、透视等,可以让用户…