Deep Learning for Nature Language Processing --- 第七讲

本文深入探讨了循环神经网络(RNN)在语言模型中的应用,包括传统语言模型、RNN语言模型、训练策略、挑战及解决方法。重点介绍了双向RNNs在分类任务中的应用,如命名实体识别、情感分析和观点表达。同时,阐述了如何通过双向RNNs整合前后文信息,以及在问答系统中的局限性和改进策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Overview

传统语言模型

RNNs

RNN 语言模型

一些训练时重要的策略和技巧

梯度消失和梯度爆炸的问题

双向RNNs

其他序列问题中的RNNs

Language Models

语言模型计算的是一连串词的概率:P(w1,w2…wT);其中的w1,w2…wT都是词向量。

这种语言模型有利于机器翻译,例如:

1.词序:p(the cat is small) > p(small the is cat)
2.词的选取:p(walking home after school) > p(walking house after school)

Traditional Language Models

在传统的语言模型中,计算的概率P通常取决于之前的一个包含n个词的窗(window)中的词。

传统语言模型可以理解为一个不准确但是必要的马尔科夫假设:

这里写图片描述

以基于单个词和两个词为例(一元和二元),估计接下来出现的词的概率:

这里写图片描述

更高的元(grams)能获得更好结果

单个这样的传统的语言模型存在非常多的n-grams(n元),所以要求巨大的RAM。

目前处于领先地位的研究:

论文题目:Scalable Modified Kneser-­‐Ney Language Model Estimation by Heafield et.建立了一个基于126 billion tokens的模型,在140GB的机器上训练了2.8天。

Recurrent Neural Networks!

RNN模型在每一个(时间节点)time step都有一个相应的权重(weights)

RNN模型考虑到了前面出现的所有词

对RAM的需求仅仅是特定数目的词

这里写图片描述

Recurrent Neural Network Language Model

词向量:x1…xt-1,xt,xt+1…xT

对于单个时间节点(time step):

这里写图片描述

RNN Language Model的中心思想:在所有的time step上使用同一组weights。而对于每个time step,其计算公式不变:

这里写图片描述

那么总的y就是基于整个词汇表V的概率分布

交叉熵公式是相同的:

这里写图片描述

Training RNNs is hard

RNN训练困难,可以体现在以下几点:

1)在每次的前向传播中,都需要乘以一个矩阵W
2)理论上,在RNN模型中,很久以前的time step上的输入也会影响RNN的输出y
3)试试求一下RNN模型中,连续两个time step对的导数

这里写图片描述

The vanishing gradient problem

在反向传播过程中,对于每一个time step都要乘以同一个矩阵W

剖析造成RNN vanishing gradient problem的原因:

这里写图片描述

1)每个time step上的计算公式:

这里写图片描述

2)全局的误差等于每个time step上的误差之和:

这里写图片描述

3)又因为链式法则:

这里写图片描述

4)观察下面红色框中的公式:

这里写图片描述

5)又因为:

这里写图片描述
这里写图片描述
原因是之前time step的h会对后面的time step的h产生影响

6)而前面累乘号里面的式子即导数,有事一个雅克比(jacobian)矩阵:

这里写图片描述

7)要计算雅克比行列式,需要对其中的每个元素进行求导:

这里写图片描述

8)而梯度则是雅克比矩阵的乘积,这样的话到最后,梯度会变得特别大或者特别小,造成vanishing gradient problem:

这里写图片描述

理论上,单个time step上的误差error在反向传播时,会影响之前很多time step的改变,所以vanishing gradient 是一个problem:

这里写图片描述

vanishing gradient problem对问答系统等的影响:对于当前语句涉及到的单词,模型不会考虑离这些单词的很远的time step上的单词。例如:

这里写图片描述

IPython Notebook with vanishing gradient example

这里写图片描述

Trick for exploding gradient: clipping trick

伪代码:

这里写图片描述
这样修改直接改变了梯度公式本身
这里写图片描述

For vanishing gradients: Initialization + ReLus!

将W初始化为单位矩阵,并且使用max(x,0)作为非线性函数:

这里写图片描述

这是只有一个节点的RNN的梯度下降图。蓝色实线是没做trick的梯度轨迹,撞到那堵墙后就被弹飞了;做了trick后的轨迹是虚线,同样遇到那堵墙后,新的梯度不会被乱弹。每一步的W会用梯度更新,梯度爆了的话,新W就离老W远很多了,局部性就被打破了

Problem: Softmax is huge and slow

策略:基于类的单词预测

即:

这里写图片描述

类的数量越多,则复杂性更大,速度也越低。

Sequence modeling for other tasks

分类:

1)NER(命名实体识别,如车辆,地点等等)
2)情感分析
3)观点表达

可以参考下面这篇论文:

这里写图片描述

Opinion Mining with Deep Recurrent Nets

目标:通过以下两种方法给每个单词进行分类

这里写图片描述
这里写图片描述
这两张slides我没有理解,欢迎留言指导讨论

Approach: Recurrent Neural Network

标记:

这里写图片描述

其中:

1)x代表一个单词(token)所表示的词向量
2)y代表模型输出的label(B,I或者O),上图中的g=softmax
3)h是记忆单元(可以理解为隐含层),是由之前的记忆单元和当前的词向量计算得到,可以说概括了直到这个time step的一段话

Bidirectional RNNs

对于分类问题,如果想要当前的time step包含之前和之后的词的信息,则可以考虑使用双向RNN:

这里写图片描述
这里写图片描述

Data

这里写图片描述
这里写图片描述

<think>好的,我现在需要帮助用户解决在MATLAB中安装Deep Learning Toolbox Model for ResNet-50网络的问题。首先,我得回忆一下MATLAB的相关工具箱和模型安装步骤。Deep Learning Toolbox本身是MATLAB的一个扩展工具箱,用于深度学习任务,但ResNet-50可能需要额外的模型包或支持包。 用户提到的是“Deep Learning Toolbox Model for ResNet-50 Network”,这应该是指MATLAB提供的预训练模型。通常,MATLAB的预训练模型可以通过附加功能资源库或者通过支持包来安装。我需要确认正确的安装方法,可能有两种途径:一种是通过MATLAB的Add-On Explorer直接搜索安装,另一种是使用命令行函数,例如resnet50函数会自动提示下载。 接下来,我需要检查用户可能遇到的常见问题,比如是否需要先安装Deep Learning Toolbox,或者是否需要特定的MATLAB版本。ResNet-50模型可能对MATLAB版本有要求,比如R2020a或更新版本,这需要确认。另外,安装过程是否需要互联网连接,以及用户是否有权限在系统上安装附加组件。 然后,用户可能需要验证安装是否成功,比如通过运行resnet50函数或加载模型进行预测。这部分也需要在回答中提及,帮助用户确认安装结果。 另外,参考引用中的信息可能有帮助吗?例如引用[1]提到AlexNet/VGG-F的可视化,引用[3]提到MobileNet-v2的使用,这些可能和模型加载相关,但用户的问题是关于ResNet-50的安装,所以引用可能关联不大。不过可能需要确保用户安装正确版本的工具箱,并正确调用预训练模型。 最后,生成相关问题需要考虑用户可能的后续需求,比如如何使用ResNet-50、与其他模型的比较、微调方法以及系统要求等。</think>### 安装Deep Learning Toolbox Model for ResNet-50网络的步骤 1. **确认MATLAB版本要求** ResNet-50模型需要MATLAB R2017b或更高版本,并已安装以下组件: - Deep Learning Toolbox - 支持包的对应版本(如MATLAB的附加功能资源库)[^1]。 2. **通过Add-On Explorer安装** - 打开MATLAB,点击菜单栏的 **HOME** → **Add-Ons** → **Get Add-Ons**。 - 在搜索栏输入 `ResNet-50`,找到 **Deep Learning Toolbox Model for ResNet-50 Network** 并点击安装。 3. **通过命令行安装** 直接调用预训练模型函数时,MATLAB会提示自动下载: ```matlab net = resnet50; % 若未安装,MATLAB会弹出安装提示 ``` 根据提示完成下载即可。 4. **验证安装** ```matlab net = resnet50; analyzeNetwork(net); % 查看网络结构 ``` 若成功显示网络层信息(如输入尺寸为$224 \times 224 \times 3$),则安装完成[^3]。 --- ### 常见问题 - **Q1: 安装过程中提示“缺少依赖项”** 需确保已安装 **Deep Learning Toolbox** 和 **MATLAB Support Package for Webcam**(若需摄像头输入)。 - **Q2: 如何加载ResNet-50进行预测?** 示例代码: ```matlab im = imread('image.jpg'); imResized = imresize(im, [224 224]); label = classify(net, imResized); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值