|
|
1 year ago | |
|---|---|---|
| .. | ||
| README.md | 1 year ago | |
| bptt_example.ipynb | 1 year ago | |
| char_mlp.ipynb | 2 years ago | |
| char_rnn.ipynb | 2 years ago | |
| char_rnn_batch.ipynb | 2 years ago | |
| embedding_example.ipynb | 1 year ago | |
| lstm.ipynb | 1 year ago | |
| tokenizer.ipynb | 2 years ago | |
第8章和第9章深入讨论了多层感知器和卷积神经网络。尽管这些模型在结构上存在显著差异,但从数据处理的角度来看,它们都共享一个基本假设:数据之间是相互独立的,模型仅关注当前数据的特征与标签之间的关系。这种类型的模型通常被称为普通神经网络(Vanilla Neural Network)。举例来说,卷积神经网络常被用于图像识别任务,在这个应用场景下,每张图片的识别都是独立的,模型并不会考虑它们之间可能存在的关联关系。除了图像识别,卷积神经网络还可应用于文本分类。例如,它可用于对句子进行情感分析,将其表达的情感划分为正面情感(如“通过加时赛,中国队逆转获胜了”)和负面情感(如“我的眼泪止不住地往下流”)。在这个应用场景下,模型同样是独立地处理每个句子,并不考虑它们之间的依赖关系。
需要注意的是,并非所有数据都满足上述的独立性假设。以句子的情感分析为例,如果要分类的句子来自同一篇文章,那么对某一句子的理解就必须考虑其上下文所提供的信息,因为同样的句子在不同背景下可能表达不同的情感。例如,整段文字是“通过加时赛,中国队逆转获胜了。我的眼泪止不住地往下流”。其中,第二个句子表达的是正面情感。存在相互依赖关系的数据被称为序列数据(Sequential Data或Sequence Data)。典型的例子包括金融市场的价格(时间序列)、文本(文字序列)以及影像(图像序列)。
对于序列数据而言,普通神经网络的建模效果通常不尽如人意。这是因为普通神经网络的结构限制了它们学习数据依赖关系的能力。虽然我们可以通过一些巧妙的设计来增强模型在这方面的学习能力,但这种改进效果往往有限,并且可能引入其他的建模问题。char_mlp.ipynb就将通过一个具体的示例详细讨论使用普通神经网络学习序列数据的方法及其优缺点。
为了克服普通神经网络在处理序列数据时的不足,学术界引入了循环神经网络(Recurrent Neural Network,RNN)。这是一种全新的模型结构,在多种情境下展现出令人惊叹的效果。尤其是在自然语言处理(Natural Language Processing,NLP)领域,这类模型的表现常常超出预期。实际上,令世人惊叹甚至有些恐惧的大语言模型正是基于循环神经网络搭建的。从本章开始,我们将聚焦于自然语言处理和循环神经网络,讨论如何让这一新兴智能体理解人类的语言,获取语言中蕴含的知识。
| 代码 | 说明 |
|---|---|
| tokenizer.ipynb | 分词器对不同语言的分词效果 |
| char_mlp.ipynb | 使用多层感知器进行自然语言的自回归学习(根据背景文本预测下一个字母是什么) |
| embedding_example.ipynb | 通过一个简单的例子,展示文字嵌入的实现细节 |
| char_rnn.ipynb | 使用循环神经网络进行自然语言的自回归学习。这个脚本的实现方式并不太高效,但是很容易理解 |
| char_rnn_batch.ipynb | 使用循环神经网络进行自然语言的自回归学习,但该脚本的实现方式支持批量计算 |
| bptt_example.ipynb | 利用计算图,直观地展示BPTT的算法细节 |
| lstm.ipynb | 使用长短期记忆网络进行自然语言的自回归学习 |